diff --git a/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/downgrades.ql b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/downgrades.ql new file mode 100644 index 000000000000..973fdeaba7c5 --- /dev/null +++ b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/downgrades.ql @@ -0,0 +1,161 @@ +class Accessible extends @accessible { + string toString() { none() } +} + +class Container extends @container { + string toString() { none() } +} + +class Expr extends @expr { + string toString() { none() } +} + +class Initialiser extends @initialiser { + string toString() { none() } +} + +class Location extends @location_default { + string toString() { none() } +} + +class Stmt extends @stmt { + string toString() { none() } +} + +predicate isLocationDefault(Location l) { + diagnostics(_, _, _, _, _, l) + or + macroinvocations(_, _, l, _) + or + fun_decls(_, _, _, _, l) + or + var_decls(_, _, _, _, l) + or + type_decls(_, _, l) + or + namespace_decls(_, _, l, _) + or + namespace_decls(_, _, _, l) + or + usings(_, _, l, _) + or + static_asserts(_, _, _, l, _) + or + enumconstants(_, _, _, _, _, l) + or + concept_templates(_, _, l) + or + attributes(_, _, _, _, l) + or + attribute_args(_, _, _, _, l) + or + derivations(_, _, _, _, l) + or + frienddecls(_, _, _, l) + or + comments(_, _, l) + or + namequalifiers(_, _, _, l) + or + lambda_capture(_, _, _, _, _, _, l) + or + preprocdirects(_, _, l) + or + xmllocations(_, l) + or + locations_default(l, _, 0, 0, 0, 0) // For containers. +} + +predicate isLocationExpr(Location l) { + initialisers(_, _, _, l) + or + exprs(_, _, l) +} + +predicate isLocationStmt(Location l) { stmts(_, _, l) } + +newtype TExprOrStmtLocation = + TExprLocation(Location l, Container c, int startLine, int startColumn, int endLine, int endColumn) { + isLocationExpr(l) and + (isLocationDefault(l) or isLocationStmt(l)) and + locations_default(l, c, startLine, startColumn, endLine, endColumn) + } or + TStmtLocation(Location l, Container c, int startLine, int startColumn, int endLine, int endColumn) { + isLocationStmt(l) and + (isLocationDefault(l) or isLocationExpr(l)) and + locations_default(l, c, startLine, startColumn, endLine, endColumn) + } + +module Fresh = QlBuiltins::NewEntity; + +class NewLocationBase = @location_default or Fresh::EntityId; + +class NewLocation extends NewLocationBase { + string toString() { none() } +} + +query predicate new_locations_default( + NewLocation l, Container c, int startLine, int startColumn, int endLine, int endColumn +) { + isLocationDefault(l) and + locations_default(l, c, startLine, startColumn, endLine, endColumn) +} + +query predicate new_locations_expr( + NewLocation l, Container c, int startLine, int startColumn, int endLine, int endColumn +) { + exists(Location l_old | + isLocationExpr(l_old) and + locations_default(l_old, c, startLine, startColumn, endLine, endColumn) + | + if not isLocationDefault(l_old) and not isLocationStmt(l) + then l = l_old + else l = Fresh::map(TExprLocation(l_old, c, startLine, startColumn, endLine, endColumn)) + ) +} + +query predicate new_locations_stmt( + NewLocation l, Container c, int startLine, int startColumn, int endLine, int endColumn +) { + exists(Location l_old | + isLocationStmt(l_old) and + locations_default(l_old, c, startLine, startColumn, endLine, endColumn) + | + if not isLocationDefault(l_old) and not isLocationExpr(l) + then l = l_old + else l = Fresh::map(TStmtLocation(l_old, c, startLine, startColumn, endLine, endColumn)) + ) +} + +query predicate new_exprs(Expr e, int kind, NewLocation l) { + exists(Location l_old, Container c, int startLine, int startColumn, int endLine, int endColumn | + exprs(e, kind, l_old) and + locations_default(l_old, c, startLine, startColumn, endLine, endColumn) + | + if not isLocationDefault(l_old) and not isLocationStmt(l) + then l = l_old + else l = Fresh::map(TExprLocation(l_old, c, startLine, startColumn, endLine, endColumn)) + ) +} + +query predicate new_initialisers(Initialiser i, Accessible v, Expr e, NewLocation l) { + exists(Location l_old, Container c, int startLine, int startColumn, int endLine, int endColumn | + initialisers(i, v, e, l_old) and + locations_default(l_old, c, startLine, startColumn, endLine, endColumn) + | + if not isLocationDefault(l_old) and not isLocationStmt(l) + then l = l_old + else l = Fresh::map(TExprLocation(l_old, c, startLine, startColumn, endLine, endColumn)) + ) +} + +query predicate new_stmts(Stmt s, int kind, NewLocation l) { + exists(Location l_old, Container c, int startLine, int startColumn, int endLine, int endColumn | + stmts(s, kind, l_old) and + locations_default(l_old, c, startLine, startColumn, endLine, endColumn) + | + if not isLocationDefault(l_old) and not isLocationExpr(l) + then l = l_old + else l = Fresh::map(TStmtLocation(l_old, c, startLine, startColumn, endLine, endColumn)) + ) +} diff --git a/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/old.dbscheme b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/old.dbscheme new file mode 100644 index 000000000000..e70d0b653187 --- /dev/null +++ b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/old.dbscheme @@ -0,0 +1,2475 @@ + +/** + * 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 +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * 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_default ; + +/** + * 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( + /** 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 +); + +/** 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 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 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 +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function 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) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype 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 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 +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr 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 ref +); +var_def(unique int id: @var_decl ref); +var_specialized(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); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location ref, + int bodylocation: @location ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location ref, + int kind: int 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 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: @parameterized_element 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 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 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the 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. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 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 deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +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 +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr 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 +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype 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 +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr 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 +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location 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 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 +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +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 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 ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@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 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 + | @c11_generic + ; + +/* +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 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 + +/* + Binary encoding of the allocator form. + + 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 +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * 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 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 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 +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@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 + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +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, + boolean is_designated: boolean 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, + boolean is_designated: boolean 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 +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @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, + boolean has_explicit_parameter_list: 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 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 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 +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +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 +); + +type_is_vla(unique int type_id: @derivedtype 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 +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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 +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@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 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 +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +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/e70d0b653187b93d9688f21c9db46bb1cd46ab78/semmlecode.cpp.dbscheme b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..7bc12b02a436 --- /dev/null +++ b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/semmlecode.cpp.dbscheme @@ -0,0 +1,2509 @@ + +/** + * 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 +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * 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 +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function 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) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype 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 +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr 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_specialized(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); +var_requires( + int id: @var_decl ref, + int constraint: @expr 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 +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int 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: @parameterized_element 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 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the 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. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 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 deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +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 +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr 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 +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype 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 +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr 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 +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr 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 +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +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 + | @concept_template; + +@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 + | @c11_generic + ; + +/* +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 + +/* + Binary encoding of the allocator form. + + 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 +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * 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 +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@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 + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +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, + boolean is_designated: boolean 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, + boolean is_designated: boolean 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 +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @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, + boolean has_explicit_parameter_list: 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 +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +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 +); + +type_is_vla(unique int type_id: @derivedtype 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 +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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 +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@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 +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +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/e70d0b653187b93d9688f21c9db46bb1cd46ab78/upgrade.properties b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/upgrade.properties new file mode 100644 index 000000000000..25f408d9b7e5 --- /dev/null +++ b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/upgrade.properties @@ -0,0 +1,8 @@ +description: Merge location tables +compatibility: partial +locations_default.rel: run downgrades.ql new_locations_default +locations_expr.rel: run downgrades.ql new_locations_expr +locations_stmt.rel: run downgrades.ql new_locations_stmt +exprs.rel: run downgrades.ql new_exprs +initialisers.rel: run downgrades.ql new_initialisers +stmts.rel: run downgrades.ql new_stmts diff --git a/cpp/ql/lib/change-notes/2025-06-27-locations.md b/cpp/ql/lib/change-notes/2025-06-27-locations.md new file mode 100644 index 000000000000..55acf55ee87e --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-06-27-locations.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* The `UnknownDefaultLocation`, `UnknownExprLocation`, and `UnknownStmtLocation` classes have been deprecated. Use `UnknownLocation` instead. diff --git a/cpp/ql/lib/experimental/quantum/Language.qll b/cpp/ql/lib/experimental/quantum/Language.qll index 168c25cdfaa0..ac446b092c44 100644 --- a/cpp/ql/lib/experimental/quantum/Language.qll +++ b/cpp/ql/lib/experimental/quantum/Language.qll @@ -8,7 +8,7 @@ module CryptoInput implements InputSig { class LocatableElement = Language::Locatable; - class UnknownLocation = Language::UnknownDefaultLocation; + class UnknownLocation = Language::UnknownLocation; LocatableElement dfn_to_element(DataFlow::Node node) { result = node.asExpr() or diff --git a/cpp/ql/lib/semmle/code/cpp/Function.qll b/cpp/ql/lib/semmle/code/cpp/Function.qll index cb3b00b64ade..a4d0cff2c379 100644 --- a/cpp/ql/lib/semmle/code/cpp/Function.qll +++ b/cpp/ql/lib/semmle/code/cpp/Function.qll @@ -901,7 +901,7 @@ class BuiltInFunction extends Function { /** Gets a dummy location for the built-in function. */ override Location getLocation() { suppressUnusedThis(this) and - result instanceof UnknownDefaultLocation + result instanceof UnknownLocation } } diff --git a/cpp/ql/lib/semmle/code/cpp/Location.qll b/cpp/ql/lib/semmle/code/cpp/Location.qll index c7579f5710a7..1af519b6698e 100644 --- a/cpp/ql/lib/semmle/code/cpp/Location.qll +++ b/cpp/ql/lib/semmle/code/cpp/Location.qll @@ -53,9 +53,7 @@ class Location extends @location { predicate fullLocationInfo( Container container, int startline, int startcolumn, int endline, int endcolumn ) { - locations_default(this, unresolveElement(container), startline, startcolumn, endline, endcolumn) or - locations_expr(this, unresolveElement(container), startline, startcolumn, endline, endcolumn) or - locations_stmt(this, unresolveElement(container), startline, startcolumn, endline, endcolumn) + locations_default(this, unresolveElement(container), startline, startcolumn, endline, endcolumn) } /** @@ -146,30 +144,32 @@ class Locatable extends Element { } * expressions, one for statements and one for other program elements. */ class UnknownLocation extends Location { - UnknownLocation() { this.getFile().getAbsolutePath() = "" } + UnknownLocation() { + this.getFile().getAbsolutePath() = "" and locations_default(this, _, 0, 0, 0, 0) + } } /** * A dummy location which is used when something doesn't have a location in * the source code but needs to have a `Location` associated with it. + * + * DEPRECATED: use `UnknownLocation` */ -class UnknownDefaultLocation extends UnknownLocation { - UnknownDefaultLocation() { locations_default(this, _, 0, 0, 0, 0) } -} +deprecated class UnknownDefaultLocation extends UnknownLocation { } /** * A dummy location which is used when an expression doesn't have a * location in the source code but needs to have a `Location` associated * with it. + * + * DEPRECATED: use `UnknownLocation` */ -class UnknownExprLocation extends UnknownLocation { - UnknownExprLocation() { locations_expr(this, _, 0, 0, 0, 0) } -} +deprecated class UnknownExprLocation extends UnknownLocation { } /** * A dummy location which is used when a statement doesn't have a location * in the source code but needs to have a `Location` associated with it. + * + * DEPRECATED: use `UnknownLocation` */ -class UnknownStmtLocation extends UnknownLocation { - UnknownStmtLocation() { locations_stmt(this, _, 0, 0, 0, 0) } -} +deprecated class UnknownStmtLocation extends UnknownLocation { } diff --git a/cpp/ql/lib/semmle/code/cpp/Macro.qll b/cpp/ql/lib/semmle/code/cpp/Macro.qll index bd916d4bc4e8..cbffc90d17c1 100644 --- a/cpp/ql/lib/semmle/code/cpp/Macro.qll +++ b/cpp/ql/lib/semmle/code/cpp/Macro.qll @@ -154,8 +154,9 @@ class MacroInvocation extends MacroAccess { * well. */ Locatable getAnAffectedElement() { - inmacroexpansion(unresolveElement(result), underlyingElement(this)) or - macrolocationbind(underlyingElement(this), result.getLocation()) + inmacroexpansion(unresolveElement(result), underlyingElement(this)) + or + macrolocationbind(underlyingElement(this), result.getLocation()) and this != result } /** @@ -259,7 +260,8 @@ predicate inMacroExpansion(Locatable element) { inmacroexpansion(unresolveElement(element), _) or macroLocation(element.getLocation()) and - not topLevelMacroAccess(element) + not topLevelMacroAccess(element) and + not element.getLocation() instanceof UnknownLocation } /** diff --git a/cpp/ql/lib/semmle/code/cpp/Namespace.qll b/cpp/ql/lib/semmle/code/cpp/Namespace.qll index b63beef3f4a0..b545f9381974 100644 --- a/cpp/ql/lib/semmle/code/cpp/Namespace.qll +++ b/cpp/ql/lib/semmle/code/cpp/Namespace.qll @@ -40,7 +40,7 @@ class Namespace extends NameQualifyingElement, @namespace { override Location getLocation() { if strictcount(this.getADeclarationEntry()) = 1 then result = this.getADeclarationEntry().getLocation() - else result instanceof UnknownDefaultLocation + else result instanceof UnknownLocation } /** Gets the simple name of this namespace. */ diff --git a/cpp/ql/lib/semmle/code/cpp/Specifier.qll b/cpp/ql/lib/semmle/code/cpp/Specifier.qll index 28ba21956561..f7af9501fb26 100644 --- a/cpp/ql/lib/semmle/code/cpp/Specifier.qll +++ b/cpp/ql/lib/semmle/code/cpp/Specifier.qll @@ -13,7 +13,7 @@ class Specifier extends Element, @specifier { /** Gets a dummy location for the specifier. */ override Location getLocation() { exists(this) and - result instanceof UnknownDefaultLocation + result instanceof UnknownLocation } override string getAPrimaryQlClass() { result = "Specifier" } diff --git a/cpp/ql/lib/semmle/code/cpp/TemplateParameter.qll b/cpp/ql/lib/semmle/code/cpp/TemplateParameter.qll index e4efb4e4636b..6ece9cb82a46 100644 --- a/cpp/ql/lib/semmle/code/cpp/TemplateParameter.qll +++ b/cpp/ql/lib/semmle/code/cpp/TemplateParameter.qll @@ -105,7 +105,7 @@ class AutoType extends TypeTemplateParameter { override string getAPrimaryQlClass() { result = "AutoType" } - override Location getLocation() { result instanceof UnknownDefaultLocation } + override Location getLocation() { result instanceof UnknownLocation } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/Type.qll b/cpp/ql/lib/semmle/code/cpp/Type.qll index 0256349972b3..35b56882d7be 100644 --- a/cpp/ql/lib/semmle/code/cpp/Type.qll +++ b/cpp/ql/lib/semmle/code/cpp/Type.qll @@ -290,7 +290,7 @@ class Type extends Locatable, @type { */ Type stripType() { result = this } - override Location getLocation() { result instanceof UnknownDefaultLocation } + override Location getLocation() { result instanceof UnknownLocation } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll index 2b9fb2649d51..60e2635f338a 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll @@ -91,13 +91,13 @@ class Expr extends StmtParent, @expr { */ private Location getExprLocationOverride() { // Base case: the parent has a better location than `this`. - this.getDbLocation() instanceof UnknownExprLocation and + this.getDbLocation() instanceof UnknownLocation and result = this.getParent().(Expr).getDbLocation() and not result instanceof UnknownLocation or // Recursive case: the parent has a location override that's better than // what `this` has. - this.getDbLocation() instanceof UnknownExprLocation and + this.getDbLocation() instanceof UnknownLocation and result = this.getParent().(Expr).getExprLocationOverride() and not result instanceof UnknownLocation } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll index 39cc58d54b0e..d776985720af 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll @@ -182,7 +182,7 @@ abstract class InstructionNode0 extends Node0Impl { override Location getLocationImpl() { if exists(instr.getAst().getLocation()) then result = instr.getAst().getLocation() - else result instanceof UnknownDefaultLocation + else result instanceof UnknownLocation } final override predicate isGLValue() { exists(getInstructionType(instr, true)) } @@ -227,7 +227,7 @@ abstract class OperandNode0 extends Node0Impl { override Location getLocationImpl() { if exists(op.getDef().getAst().getLocation()) then result = op.getDef().getAst().getLocation() - else result instanceof UnknownDefaultLocation + else result instanceof UnknownLocation } final override predicate isGLValue() { exists(getOperandType(op, true)) } 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 ab6a9da6d85d..c72614ac5c32 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 @@ -847,7 +847,7 @@ class BodyLessParameterNodeImpl extends Node, TBodyLessParameterNodeImpl { result = unique( | | p.getLocation()) or count(p.getLocation()) != 1 and - result instanceof UnknownDefaultLocation + result instanceof UnknownLocation } final override string toStringImpl() { @@ -1115,7 +1115,7 @@ private module RawIndirectNodes { final override Location getLocationImpl() { if exists(this.getOperand().getLocation()) then result = this.getOperand().getLocation() - else result instanceof UnknownDefaultLocation + else result instanceof UnknownLocation } override string toStringImpl() { @@ -1161,7 +1161,7 @@ private module RawIndirectNodes { final override Location getLocationImpl() { if exists(this.getInstruction().getLocation()) then result = this.getInstruction().getLocation() - else result instanceof UnknownDefaultLocation + else result instanceof UnknownLocation } override string toStringImpl() { @@ -1257,7 +1257,7 @@ class FinalParameterNode extends Node, TFinalParameterNode { result = unique( | | p.getLocation()) or not exists(unique( | | p.getLocation())) and - result instanceof UnknownDefaultLocation + result instanceof UnknownLocation } override string toStringImpl() { result = stars(this) + p.toString() } @@ -1629,7 +1629,7 @@ class VariableNode extends Node, TGlobalLikeVariableNode { result = unique( | | v.getLocation()) or not exists(unique( | | v.getLocation())) and - result instanceof UnknownDefaultLocation + result instanceof UnknownLocation } override string toStringImpl() { result = stars(this) + v.toString() } 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 7799081eae34..863825b375e3 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 @@ -516,7 +516,7 @@ class FinalParameterUse extends UseImpl, TFinalParameterUse { result = unique( | | p.getLocation()) or not exists(unique( | | p.getLocation())) and - result instanceof UnknownDefaultLocation + result instanceof UnknownLocation } override BaseIRVariable getBaseSourceVariable() { result.getIRVariable().getAst() = p } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRConsistency.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRConsistency.qll index 67a6965ae9bb..c29d743dadbf 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRConsistency.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRConsistency.qll @@ -45,7 +45,7 @@ module InstructionConsistency { private class MissingIRFunction extends OptionalIRFunction, TMissingIRFunction { override string toString() { result = "" } - override Language::Location getLocation() { result instanceof Language::UnknownDefaultLocation } + override Language::Location getLocation() { result instanceof Language::UnknownLocation } } private OptionalIRFunction getInstructionIRFunction(Instruction instr) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/ValueNumbering.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/ValueNumbering.qll index 279b43a1ca8b..b436bc8ccf11 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/ValueNumbering.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/ValueNumbering.qll @@ -26,7 +26,7 @@ class ValueNumber extends TValueNumber { l.getFile().getAbsolutePath(), l.getStartLine(), l.getStartColumn(), l.getEndLine(), l.getEndColumn() ) - else result instanceof Language::UnknownDefaultLocation + else result instanceof Language::UnknownLocation } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRConsistency.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRConsistency.qll index 67a6965ae9bb..c29d743dadbf 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRConsistency.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRConsistency.qll @@ -45,7 +45,7 @@ module InstructionConsistency { private class MissingIRFunction extends OptionalIRFunction, TMissingIRFunction { override string toString() { result = "" } - override Language::Location getLocation() { result instanceof Language::UnknownDefaultLocation } + override Language::Location getLocation() { result instanceof Language::UnknownLocation } } private OptionalIRFunction getInstructionIRFunction(Instruction instr) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/ValueNumbering.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/ValueNumbering.qll index 279b43a1ca8b..b436bc8ccf11 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/ValueNumbering.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/ValueNumbering.qll @@ -26,7 +26,7 @@ class ValueNumber extends TValueNumber { l.getFile().getAbsolutePath(), l.getStartLine(), l.getStartColumn(), l.getEndLine(), l.getEndColumn() ) - else result instanceof Language::UnknownDefaultLocation + else result instanceof Language::UnknownLocation } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRConsistency.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRConsistency.qll index 67a6965ae9bb..c29d743dadbf 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRConsistency.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRConsistency.qll @@ -45,7 +45,7 @@ module InstructionConsistency { private class MissingIRFunction extends OptionalIRFunction, TMissingIRFunction { override string toString() { result = "" } - override Language::Location getLocation() { result instanceof Language::UnknownDefaultLocation } + override Language::Location getLocation() { result instanceof Language::UnknownLocation } } private OptionalIRFunction getInstructionIRFunction(Instruction instr) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll index 279b43a1ca8b..b436bc8ccf11 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll @@ -26,7 +26,7 @@ class ValueNumber extends TValueNumber { l.getFile().getAbsolutePath(), l.getStartLine(), l.getStartColumn(), l.getEndLine(), l.getEndColumn() ) - else result instanceof Language::UnknownDefaultLocation + else result instanceof Language::UnknownLocation } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/internal/ASTValueNumbering.qll b/cpp/ql/lib/semmle/code/cpp/ir/internal/ASTValueNumbering.qll index 2dd51d391512..4a40c90a1dd9 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/internal/ASTValueNumbering.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/internal/ASTValueNumbering.qll @@ -76,7 +76,7 @@ class GVN extends TValueNumber { l.getFile().getAbsolutePath(), l.getStartLine(), l.getStartColumn(), l.getEndLine(), l.getEndColumn() ) - else result instanceof UnknownDefaultLocation + else result instanceof UnknownLocation } final string getKind() { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/internal/IRCppLanguage.qll b/cpp/ql/lib/semmle/code/cpp/ir/internal/IRCppLanguage.qll index 28bbd40f8bf5..a0e74f785e5e 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/internal/IRCppLanguage.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/internal/IRCppLanguage.qll @@ -22,8 +22,6 @@ class Location = Cpp::Location; class UnknownLocation = Cpp::UnknownLocation; -class UnknownDefaultLocation = Cpp::UnknownDefaultLocation; - class File = Cpp::File; class AST = Cpp::Locatable; diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/RangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/RangeAnalysis.qll index 6bd7615d37b7..845a71b2a502 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/RangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/RangeAnalysis.qll @@ -89,7 +89,7 @@ class ZeroBound extends Bound instanceof IRBound::ZeroBound { result = super.getInstruction(delta).getUnconvertedResultExpression() } - override Location getLocation() { result instanceof UnknownDefaultLocation } + override Location getLocation() { result instanceof UnknownLocation } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/Bound.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/Bound.qll index 27883aedf3e7..4d873e8e3b3e 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/Bound.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/Bound.qll @@ -61,7 +61,7 @@ class ZeroBound extends Bound, TBoundZero { result.(ConstantValueInstruction).getValue().toInt() = delta } - override Location getLocation() { result instanceof UnknownDefaultLocation } + override Location getLocation() { result instanceof UnknownLocation } } /** diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index 7bc12b02a436..e70d0b653187 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -218,10 +218,10 @@ extractor_version( string frontend_version: string ref ) -@location = @location_stmt | @location_expr | @location_default ; +@location = @location_default ; /** - * The location of an element that is not an expression or a statement. + * 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 @@ -237,40 +237,6 @@ locations_default( 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; @@ -287,7 +253,7 @@ diagnostics( string error_tag: string ref, string error_message: string ref, string full_error_message: string ref, - int location: @location_default ref + int location: @location ref ); files( @@ -332,7 +298,7 @@ case @macroinvocation.kind of macroinvocations( unique int id: @macroinvocation, int macro_id: @ppd_define ref, - int location: @location_default ref, + int location: @location ref, int kind: int ref ); @@ -453,7 +419,7 @@ fun_decls( int function: @function ref, int type_id: @type ref, string name: string ref, - int location: @location_default ref + int location: @location ref ); fun_def(unique int id: @fun_decl ref); fun_specialized(unique int id: @fun_decl ref); @@ -505,7 +471,7 @@ var_decls( int variable: @variable ref, int type_id: @type ref, string name: string ref, - int location: @location_default ref + int location: @location ref ); var_def(unique int id: @var_decl ref); var_specialized(int id: @var_decl ref); @@ -522,7 +488,7 @@ var_requires( type_decls( unique int id: @type_decl, int type_id: @type ref, - int location: @location_default ref + int location: @location ref ); type_def(unique int id: @type_decl ref); type_decl_top( @@ -536,8 +502,8 @@ type_requires( namespace_decls( unique int id: @namespace_decl, int namespace_id: @namespace ref, - int location: @location_default ref, - int bodylocation: @location_default ref + int location: @location ref, + int bodylocation: @location ref ); case @using.kind of @@ -549,7 +515,7 @@ case @using.kind of usings( unique int id: @using, int element_id: @element ref, - int location: @location_default ref, + int location: @location ref, int kind: int ref ); @@ -563,7 +529,7 @@ static_asserts( unique int id: @static_assert, int condition : @expr ref, string message : string ref, - int location: @location_default ref, + int location: @location ref, int enclosing : @element ref ); @@ -619,7 +585,7 @@ enumconstants( int index: int ref, int type_id: @type ref, string name: string ref, - int location: @location_default ref + int location: @location ref ); @variable = @localscopevariable | @globalvariable | @membervariable; @@ -980,7 +946,7 @@ template_template_argument_value( concept_templates( unique int concept_id: @concept_template, string name: string ref, - int location: @location_default ref + int location: @location ref ); concept_instantiation( unique int to: @concept_id ref, @@ -1084,7 +1050,7 @@ attributes( int kind: int ref, string name: string ref, string name_space: string ref, - int location: @location_default ref + int location: @location ref ); case @attribute.kind of @@ -1101,7 +1067,7 @@ attribute_args( int kind: int ref, int attribute: @attribute ref, int index: int ref, - int location: @location_default ref + int location: @location ref ); case @attribute_arg.kind of @@ -1190,7 +1156,7 @@ derivations( int sub: @type ref, int index: int ref, int super: @type ref, - int location: @location_default ref + int location: @location ref ); derspecifiers( @@ -1224,7 +1190,7 @@ frienddecls( unique int id: @frienddecl, int type_id: @type ref, int decl_id: @declaration ref, - int location: @location_default ref + int location: @location ref ); @declaredtype = @usertype ; @@ -1281,7 +1247,7 @@ frienddecls( comments( unique int id: @comment, string contents: string ref, - int location: @location_default ref + int location: @location ref ); commentbinding( @@ -1403,7 +1369,7 @@ namequalifiers( unique int id: @namequalifier, unique int qualifiableelement: @namequalifiableelement ref, int qualifyingelement: @namequalifyingelement ref, - int location: @location_default ref + int location: @location ref ); varbind( @@ -1672,7 +1638,7 @@ initialisers( unique int init: @initialiser, int var: @accessible ref, unique int expr: @expr ref, - int location: @location_expr ref + int location: @location ref ); braced_initialisers( @@ -1691,7 +1657,7 @@ expr_ancestor( exprs( unique int id: @expr, int kind: int ref, - int location: @location_expr ref + int location: @location ref ); expr_reuse( @@ -2165,7 +2131,7 @@ lambda_capture( int field: @membervariable ref, boolean captured_by_reference: boolean ref, boolean is_implicit: boolean ref, - int location: @location_default ref + int location: @location ref ); @funbindexpr = @routineexpr @@ -2193,7 +2159,7 @@ fold( stmts( unique int id: @stmt, int kind: int ref, - int location: @location_stmt ref + int location: @location ref ); case @stmt.kind of @@ -2378,7 +2344,7 @@ jumpinfo( preprocdirects( unique int id: @preprocdirect, int kind: int ref, - int location: @location_default ref + int location: @location ref ); case @preprocdirect.kind of 0 = @ppd_if diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 165dde802e5d..2681f0441578 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,7 +2,7 @@ @compilation - 236162 + 12644 @externalDataElement @@ -16,53 +16,45 @@ @svnentry 575525 - - @location_default - 187588827 - - - @location_stmt - 9188352 - - - @location_expr - 18007924 - @diagnostic - 2936 + 1484 @file - 230754 + 65216 @folder - 22981 + 12390 + + + @location_default + 47502960 @macro_expansion - 179869820 + 40257313 @other_macro_reference - 1944932 + 300694 @function - 7629848 + 4053070 @fun_decl - 7853714 + 4206777 @var_decl - 22872100 + 9391611 @type_decl - 5742010 + 1634963 @namespace_decl @@ -70,15 +62,15 @@ @using_declaration - 500989 + 267964 @using_directive - 22100 + 6473 @using_enum_declaration - 16 + 1 @static_assert @@ -86,11 +78,11 @@ @parameter - 15008695 + 7026196 @membervariable - 6289561 + 1496814 @globalvariable @@ -98,291 +90,291 @@ @localvariable - 1444946 + 726278 @enumconstant - 1205579 + 345733 @errortype - 969 + 124 @unknowntype - 969 + 124 @void - 969 + 124 @boolean - 969 + 124 @char - 969 + 124 @unsigned_char - 969 + 124 @signed_char - 969 + 124 @short - 969 + 124 @unsigned_short - 969 + 124 @signed_short - 969 + 124 @int - 969 + 124 @unsigned_int - 969 + 124 @signed_int - 969 + 124 @long - 969 + 124 @unsigned_long - 969 + 124 @signed_long - 969 + 124 @long_long - 969 + 124 @unsigned_long_long - 969 + 124 @signed_long_long - 969 + 124 @float - 969 + 124 @double - 969 + 124 @long_double - 969 + 124 @complex_float - 969 + 124 @complex_double - 969 + 124 @complex_long_double - 969 + 124 @imaginary_float - 969 + 124 @imaginary_double - 969 + 124 @imaginary_long_double - 969 + 124 @wchar_t - 969 + 124 @decltype_nullptr - 969 + 124 @int128 - 969 + 124 @unsigned_int128 - 969 + 124 @signed_int128 - 969 + 124 @float128 - 969 + 124 @complex_float128 - 969 + 124 @decimal32 - 969 + 124 @decimal64 - 969 + 124 @decimal128 - 969 + 124 @char16_t - 969 + 124 @char32_t - 969 + 124 @std_float32 - 969 + 124 @float32x - 969 + 124 @std_float64 - 969 + 124 @float64x - 969 + 124 @std_float128 - 969 + 124 @char8_t - 969 + 124 @float16 - 969 + 124 @complex_float16 - 969 + 124 @fp16 - 969 + 124 @std_bfloat16 - 969 + 124 @std_float16 - 969 + 124 @complex_std_float32 - 969 + 124 @complex_float32x - 969 + 124 @complex_std_float64 - 969 + 124 @complex_float64x - 969 + 124 @complex_std_float128 - 969 + 124 @mfp8 - 969 + 124 @scalable_vector_count - 969 + 124 @complex_fp16 - 969 + 124 @complex_std_bfloat16 - 969 + 124 @complex_std_float16 - 969 + 124 @pointer - 1517635 + 452880 @type_with_specifiers - 1660095 + 693866 @array - 561118 + 90401 @routineptr - 684113 + 684108 @reference - 2667006 + 968191 @gnu_vector - 11174 + 676 @routinereference - 1804 + 374 @rvalue_reference - 1313151 + 291306 @block - 1016 + 10 @scalable_vector @@ -390,23 +382,23 @@ @type_operator - 21466 + 7961 @decltype - 317468 + 102349 @usertype - 6052127 + 4151872 @mangledname - 12739995 + 6370038 @type_mention - 19988012 + 5902896 @concept_template @@ -414,19 +406,19 @@ @routinetype - 792462 + 604318 @ptrtomember - 24227 + 9728 @specifier - 60085 + 7741 @gnuattribute - 3255016 + 559629 @stdattribute @@ -434,7 +426,7 @@ @declspec - 3611894 + 330047 @msattribute @@ -446,15 +438,15 @@ @attribute_arg_token - 1092168 + 16693 @attribute_arg_constant_expr - 422211 + 71909 @attribute_arg_expr - 82735 + 1404 @attribute_arg_empty @@ -466,55 +458,55 @@ @attribute_arg_type - 1290 + 460 @derivation - 695371 + 476900 @frienddecl - 11664613 + 700455 @comment - 68615333 + 11241963 @namespace - 55509 + 8651 @specialnamequalifyingelement - 969 + 124 @namequalifier - 3041980 + 3042067 @value - 14027056 + 13474604 @initialiser - 5596945 + 2251034 @address_of - 730977 + 595217 @indirect - 453518 + 404153 @array_to_pointer - 3302753 + 1953751 @parexpr - 5451268 + 4915208 @arithnegexpr @@ -526,15 +518,15 @@ @complementexpr - 142292 + 38199 @notexpr - 847791 + 355764 @postincrexpr - 599725 + 84581 @postdecrexpr @@ -542,7 +534,7 @@ @preincrexpr - 115589 + 96714 @predecrexpr @@ -554,7 +546,7 @@ @addexpr - 786845 + 571553 @subexpr @@ -562,19 +554,19 @@ @mulexpr - 810567 + 435793 @divexpr - 188452 + 52393 @remexpr - 80415 + 16012 @paddexpr - 361060 + 118669 @psubexpr @@ -582,15 +574,15 @@ @pdiffexpr - 57367 + 43951 @lshiftexpr - 589376 + 551696 @rshiftexpr - 247934 + 200554 @andexpr @@ -598,11 +590,11 @@ @orexpr - 574546 + 194055 @xorexpr - 117340 + 73961 @eqexpr @@ -614,15 +606,15 @@ @gtexpr - 199369 + 111149 @ltexpr - 201611 + 139429 @geexpr - 105701 + 81368 @leexpr @@ -630,19 +622,19 @@ @assignexpr - 1873384 + 1281144 @assignaddexpr - 194702 + 85634 @assignsubexpr - 93350 + 15307 @assignmulexpr - 11189 + 11186 @assigndivexpr @@ -650,23 +642,23 @@ @assignremexpr - 4667 + 874 @assignlshiftexpr - 20590 + 3703 @assignrshiftexpr - 38673 + 6882 @assignandexpr - 48479 + 6528 @assignorexpr - 111126 + 19606 @assignxorexpr @@ -674,15 +666,15 @@ @assignpaddexpr - 122317 + 18628 @assignpsubexpr - 10123 + 1575 @andlogicalexpr - 358253 + 346589 @orlogicalexpr @@ -690,27 +682,27 @@ @commaexpr - 281043 + 168440 @subscriptexpr - 765638 + 435142 @callexpr - 239780 + 239778 @vastartexpr - 11600 + 4979 @vaargexpr - 4740 + 1303 @vaendexpr - 11600 + 2941 @vacopyexpr @@ -718,11 +710,11 @@ @varaccess - 9157418 + 8254631 @runtime_sizeof - 776529 + 402047 @runtime_alignof @@ -730,11 +722,11 @@ @expr_stmt - 202820 + 148364 @routineexpr - 5732446 + 5732629 @type_operand @@ -750,35 +742,35 @@ @literal - 7985912 + 7967932 @aggregateliteral - 1397521 + 1397523 @c_style_cast - 6026986 + 6026998 @temp_init - 1115901 + 992092 @errorexpr - 94210 + 45686 @reference_to - 2774640 + 1903048 @ref_indirect - 2856354 + 2107314 @vacuous_destructor_call - 15900 + 7835 @assume @@ -834,23 +826,23 @@ @thisaccess - 1602283 + 1558309 @new_expr - 94223 + 46197 @delete_expr - 33039 + 11481 @throw_expr - 92879 + 24156 @condition_decl - 408922 + 408935 @braced_init_list @@ -858,11 +850,11 @@ @type_id - 229949 + 47901 @sizeof_pack - 1781 + 1737 @hasassignexpr @@ -878,7 +870,7 @@ @hasnothrowconstr - 87 + 3 @hasnothrowcopy @@ -886,15 +878,15 @@ @hastrivialassign - 3 + 2 @hastrivialconstr - 23 + 7 @hastrivialcopy - 87 + 2 @hasuserdestr @@ -922,7 +914,7 @@ @isemptyexpr - 8995 + 8865 @isenumexpr @@ -930,11 +922,11 @@ @ispodexpr - 5904 + 834 @ispolyexpr - 35 + 3 @isunionexpr @@ -946,7 +938,7 @@ @hastrivialdestructor - 4701 + 2793 @uuidof @@ -954,19 +946,19 @@ @delete_array_expr - 41539 + 1246 @new_array_expr - 44190 + 6653 @foldexpr - 2481 + 1248 @ctordirectinit - 131710 + 112837 @ctorvirtualinit @@ -974,15 +966,15 @@ @ctorfieldinit - 206698 + 206399 @ctordelegatinginit - 8703 + 3621 @dtordirectdestruct - 52507 + 39452 @dtorvirtualdestruct @@ -990,15 +982,15 @@ @dtorfielddestruct - 41790 + 39826 @static_cast - 355280 + 348369 @reinterpret_cast - 79930 + 40089 @const_cast @@ -1010,11 +1002,11 @@ @lambdaexpr - 23413 + 19057 @param_ref - 164014 + 163951 @noopexpr @@ -1046,7 +1038,7 @@ @istrivialexpr - 7757 + 3367 @isstandardlayoutexpr @@ -1054,7 +1046,7 @@ @istriviallycopyableexpr - 3876 + 1373 @isliteraltypeexpr @@ -1074,7 +1066,7 @@ @isconstructibleexpr - 4613 + 3621 @isnothrowconstructibleexpr @@ -1118,19 +1110,19 @@ @noexceptexpr - 28356 + 28345 @builtinshufflevector - 727 + 1 @builtinchooseexpr - 21326 + 20701 @builtinaddressof - 15822 + 15483 @vec_fill @@ -1138,7 +1130,7 @@ @builtinconvertvector - 307 + 1 @builtincomplex @@ -1158,7 +1150,7 @@ @isassignable - 664 + 408 @isaggregate @@ -1174,15 +1166,15 @@ @builtinshuffle - 10127 + 612 @blockassignexpr - 177 + 1 @issame - 5390 + 4540 @isfunction @@ -1234,7 +1226,7 @@ @isintegral - 8 + 2 @islvaluereference @@ -1258,7 +1250,7 @@ @ispointer - 1182 + 2 @isreference @@ -1282,7 +1274,7 @@ @isvoid - 30 + 2 @isvolatile @@ -1290,7 +1282,7 @@ @reuseexpr - 847042 + 847070 @istriviallycopyassignable @@ -1302,7 +1294,7 @@ @referencebindstotemporary - 14582 + 2 @issameas @@ -1398,11 +1390,11 @@ @compound_requirement - 10951 + 10952 @concept_id - 90434 + 90437 @lambdacapture @@ -1410,7 +1402,7 @@ @stmt_expr - 3215944 + 2031614 @stmt_if @@ -1418,51 +1410,51 @@ @stmt_while - 46675 + 39647 @stmt_goto - 291728 + 157918 @stmt_label - 283522 + 78029 @stmt_return - 1710123 + 1241901 @stmt_block - 2399400 + 1729360 @stmt_end_test_while - 551349 + 233641 @stmt_for - 121083 + 84389 @stmt_switch_case - 836154 + 836182 @stmt_switch - 411869 + 411883 @stmt_asm - 562106 + 64199 @stmt_decl - 1426776 + 772440 @stmt_empty - 817301 + 429420 @stmt_continue @@ -1470,11 +1462,11 @@ @stmt_break - 590166 + 137937 @stmt_try_block - 26698 + 26748 @stmt_microsoft_try @@ -1482,11 +1474,11 @@ @stmt_set_vla_size - 1222 + 35 @stmt_vla_decl - 267 + 30 @stmt_assigned_goto @@ -1494,15 +1486,15 @@ @stmt_range_based_for - 17217 + 6385 @stmt_handler - 43746 + 43790 @stmt_constexpr_if - 818798 + 106134 @stmt_co_return @@ -1522,51 +1514,51 @@ @ppd_if - 3008135 + 591478 @ppd_ifdef - 1135803 + 214363 @ppd_ifndef - 754594 + 158651 @ppd_elif - 392006 + 21918 @ppd_else - 1396495 + 235118 @ppd_endif - 4825227 + 889777 @ppd_plain_include - 491786 + 318582 @ppd_define - 21491110 + 2752616 @ppd_undef - 581469 + 100515 @ppd_pragma - 2256101 + 406555 @ppd_include_next - 28235 + 170 @ppd_line - 743302 + 18828 @ppd_error @@ -1594,7 +1586,7 @@ @link_target - 11917 + 816 @xmldtd @@ -1624,15 +1616,15 @@ compilations - 236162 + 12644 id - 236162 + 12644 cwd - 1391 + 10 @@ -1646,7 +1638,7 @@ 1 2 - 236162 + 12644 @@ -1660,34 +1652,9 @@ 12 - 120 - 157 - 103 - - - 160 - 161 - 721 - - - 164 - 165 - 257 - - - 168 - 169 - 51 - - - 184 - 185 - 154 - - - 188 - 341 - 103 + 1197 + 1198 + 10 @@ -1697,19 +1664,19 @@ compilation_args - 20454453 + 1012270 id - 236162 + 12644 num - 4997 + 1468 arg - 328227 + 29270 @@ -1721,29 +1688,79 @@ 12 - 84 - 85 - 134876 + 36 + 42 + 1003 - 86 - 87 - 45645 + 42 + 43 + 1098 - 92 - 93 - 28593 + 43 + 44 + 718 + + + 44 + 45 + 507 + + + 45 + 51 + 950 + + + 51 + 70 + 485 + + + 71 + 72 + 707 + + + 72 + 90 + 897 94 - 95 - 9531 + 96 + 390 - 95 - 98 - 17516 + 98 + 99 + 1341 + + + 100 + 102 + 95 + + + 103 + 104 + 1996 + + + 104 + 119 + 1066 + + + 120 + 138 + 929 + + + 139 + 140 + 454 @@ -1757,29 +1774,74 @@ 12 - 74 - 75 - 134876 + 34 + 38 + 591 - 75 - 76 - 45645 + 38 + 39 + 1499 - 79 - 80 - 28593 + 39 + 40 + 982 - 80 - 81 - 9531 + 40 + 42 + 1087 - 81 - 83 - 17516 + 42 + 53 + 602 + + + 53 + 54 + 707 + + + 54 + 63 + 897 + + + 64 + 67 + 401 + + + 67 + 68 + 1404 + + + 68 + 70 + 971 + + + 70 + 71 + 1404 + + + 73 + 79 + 950 + + + 79 + 89 + 1130 + + + 89 + 90 + 10 @@ -1793,19 +1855,59 @@ 12 - 85 - 526 - 257 + 43 + 90 + 63 + + + 90 + 108 + 116 + + + 108 + 183 + 105 + + + 198 + 422 + 116 + + + 422 + 595 + 126 - 1080 - 1967 - 412 + 595 + 605 + 126 - 4584 - 4585 - 4327 + 605 + 749 + 116 + + + 750 + 778 + 116 + + + 781 + 883 + 116 + + + 930 + 1190 + 84 + + + 1197 + 1198 + 380 @@ -1820,48 +1922,73 @@ 1 - 2 - 978 + 5 + 126 - 2 - 3 - 206 + 5 + 7 + 116 - 3 - 4 - 463 + 9 + 12 + 73 - 4 - 5 - 360 + 12 + 15 + 116 - 5 - 6 - 1597 + 15 + 18 + 95 - 6 - 60 - 360 + 18 + 22 + 116 - 85 - 125 - 412 + 22 + 27 + 126 + + + 27 + 29 + 84 + + + 29 + 34 + 116 + + + 34 + 44 + 126 + + + 45 + 63 + 116 + + + 67 + 94 + 116 - 135 - 430 - 412 + 94 + 164 + 116 - 558 - 2624 - 206 + 171 + 199 + 21 @@ -1877,17 +2004,22 @@ 1 2 - 281705 + 13404 2 - 27 - 22410 + 3 + 12686 - 27 - 4585 - 24110 + 3 + 103 + 2197 + + + 104 + 1198 + 982 @@ -1903,17 +2035,17 @@ 1 2 - 291751 + 19383 2 - 4 - 29932 + 3 + 8725 - 4 - 13 - 6542 + 3 + 62 + 1161 @@ -1923,15 +2055,15 @@ compilation_build_mode - 2 + 12644 id - 2 + 12644 mode - 2 + 10 @@ -1945,7 +2077,7 @@ 1 2 - 2 + 12644 @@ -1959,9 +2091,9 @@ 12 - 1 - 2 - 2 + 1197 + 1198 + 10 @@ -1971,19 +2103,19 @@ compilation_compiling_files - 236162 + 15739 id - 236162 + 2723 num - 51 + 4520 file - 7882 + 13670 @@ -1997,7 +2129,42 @@ 1 2 - 236162 + 1361 + + + 2 + 3 + 163 + + + 3 + 4 + 163 + + + 4 + 5 + 326 + + + 5 + 8 + 163 + + + 8 + 9 + 163 + + + 9 + 13 + 217 + + + 21 + 84 + 163 @@ -2013,7 +2180,42 @@ 1 2 - 236162 + 1361 + + + 2 + 3 + 163 + + + 3 + 4 + 163 + + + 4 + 5 + 326 + + + 5 + 8 + 163 + + + 8 + 9 + 163 + + + 9 + 13 + 217 + + + 21 + 84 + 163 @@ -2027,9 +2229,29 @@ 12 - 4584 - 4585 - 51 + 1 + 2 + 2396 + + + 2 + 3 + 980 + + + 3 + 4 + 490 + + + 4 + 13 + 381 + + + 13 + 51 + 272 @@ -2043,9 +2265,29 @@ 12 - 153 - 154 - 51 + 1 + 2 + 2396 + + + 2 + 3 + 980 + + + 3 + 4 + 490 + + + 4 + 13 + 381 + + + 13 + 49 + 272 @@ -2059,24 +2301,19 @@ 12 - 3 - 4 - 103 - - - 4 - 5 - 5564 + 1 + 2 + 12308 - 16 - 17 - 257 + 2 + 4 + 1143 - 107 - 108 - 1957 + 4 + 6 + 217 @@ -2092,7 +2329,17 @@ 1 2 - 7882 + 12526 + + + 2 + 4 + 1089 + + + 4 + 5 + 54 @@ -2102,23 +2349,23 @@ compilation_time - 944650 + 62959 id - 236162 + 2723 num - 51 + 4520 kind - 206 + 217 seconds - 10200 + 19824 @@ -2132,7 +2379,42 @@ 1 2 - 236162 + 1361 + + + 2 + 3 + 163 + + + 3 + 4 + 163 + + + 4 + 5 + 326 + + + 5 + 8 + 163 + + + 8 + 9 + 163 + + + 9 + 13 + 217 + + + 21 + 84 + 163 @@ -2148,7 +2430,7 @@ 4 5 - 236162 + 2723 @@ -2161,20 +2443,50 @@ 12 - - 2 - 3 - 2060 - 3 4 - 125448 + 1143 4 5 - 108653 + 217 + + + 6 + 8 + 217 + + + 8 + 11 + 217 + + + 11 + 12 + 217 + + + 13 + 18 + 163 + + + 18 + 20 + 217 + + + 20 + 44 + 217 + + + 51 + 133 + 108 @@ -2188,9 +2500,29 @@ 12 - 4584 - 4585 - 51 + 1 + 2 + 2396 + + + 2 + 3 + 980 + + + 3 + 4 + 490 + + + 4 + 13 + 381 + + + 13 + 51 + 272 @@ -2206,7 +2538,7 @@ 4 5 - 51 + 4520 @@ -2220,9 +2552,49 @@ 12 - 198 - 199 - 51 + 3 + 4 + 1524 + + + 4 + 5 + 871 + + + 5 + 6 + 272 + + + 6 + 7 + 490 + + + 7 + 8 + 272 + + + 8 + 9 + 217 + + + 9 + 15 + 381 + + + 15 + 47 + 381 + + + 51 + 97 + 108 @@ -2236,9 +2608,9 @@ 12 - 4584 - 4585 - 206 + 50 + 51 + 217 @@ -2252,9 +2624,9 @@ 12 - 1 - 2 - 206 + 83 + 84 + 217 @@ -2268,24 +2640,24 @@ 12 - 5 - 6 - 51 + 4 + 5 + 54 - 7 - 8 - 51 + 5 + 6 + 54 - 162 - 163 - 51 + 191 + 192 + 54 - 184 - 185 - 51 + 213 + 214 + 54 @@ -2301,67 +2673,22 @@ 1 2 - 978 + 14214 2 - 6 - 824 - - - 6 - 9 - 772 - - - 9 - 16 - 875 - - - 16 - 20 - 772 - - - 20 - 25 - 772 - - - 25 - 31 - 824 - - - 31 - 38 - 824 - - - 38 - 45 - 772 - - - 45 - 54 - 824 - - - 54 - 71 - 772 + 3 + 3594 - 71 - 326 - 772 + 3 + 5 + 1742 - 338 - 2995 - 412 + 5 + 39 + 272 @@ -2377,7 +2704,22 @@ 1 2 - 10200 + 13125 + + + 2 + 3 + 3866 + + + 3 + 4 + 1579 + + + 4 + 56 + 1252 @@ -2393,12 +2735,12 @@ 1 2 - 1957 + 17155 2 3 - 8243 + 2668 @@ -2408,23 +2750,23 @@ diagnostic_for - 5770 + 4152 diagnostic - 2936 + 1484 compilation - 2885 + 1355 file_number - 51 + 21 file_number_diagnostic_number - 103 + 107 @@ -2438,12 +2780,12 @@ 1 2 - 2885 + 1441 - 56 - 57 - 51 + 63 + 64 + 43 @@ -2459,7 +2801,7 @@ 1 2 - 2936 + 1484 @@ -2475,7 +2817,7 @@ 1 2 - 2936 + 1484 @@ -2489,9 +2831,14 @@ 12 - 2 - 3 - 2885 + 3 + 4 + 1312 + + + 5 + 6 + 43 @@ -2507,7 +2854,7 @@ 1 2 - 2885 + 1355 @@ -2521,9 +2868,14 @@ 12 - 2 - 3 - 2885 + 3 + 4 + 1312 + + + 5 + 6 + 43 @@ -2537,9 +2889,9 @@ 12 - 57 - 58 - 51 + 69 + 70 + 21 @@ -2553,9 +2905,9 @@ 12 - 56 - 57 - 51 + 63 + 64 + 21 @@ -2569,9 +2921,9 @@ 12 - 2 - 3 - 51 + 5 + 6 + 21 @@ -2587,12 +2939,17 @@ 1 2 - 51 + 43 - 56 - 57 - 51 + 2 + 3 + 43 + + + 63 + 64 + 21 @@ -2606,9 +2963,14 @@ 12 - 56 - 57 - 103 + 2 + 3 + 43 + + + 63 + 64 + 64 @@ -2624,7 +2986,7 @@ 1 2 - 103 + 107 @@ -2634,19 +2996,19 @@ compilation_finished - 236162 + 12644 id - 236162 + 12644 cpu_seconds - 16331 + 9496 elapsed_seconds - 463 + 211 @@ -2660,7 +3022,7 @@ 1 2 - 236162 + 12644 @@ -2676,7 +3038,7 @@ 1 2 - 236162 + 12644 @@ -2692,67 +3054,17 @@ 1 2 - 1648 + 7996 2 3 - 1545 + 1098 3 - 4 - 1494 - - - 4 - 5 - 927 - - - 5 - 6 - 1339 - - - 6 - 7 - 1133 - - - 7 - 9 - 1236 - - - 9 - 11 - 1494 - - - 11 - 13 - 1391 - - - 13 - 16 - 1339 - - - 16 - 22 - 1287 - - - 22 - 54 - 1236 - - - 76 - 599 - 257 + 35 + 401 @@ -2768,32 +3080,12 @@ 1 2 - 2472 + 8799 2 3 - 3554 - - - 3 - 4 - 3451 - - - 4 - 5 - 3606 - - - 5 - 6 - 2421 - - - 6 - 8 - 824 + 697 @@ -2809,47 +3101,72 @@ 1 2 - 51 + 42 - 8 - 9 - 51 + 2 + 3 + 10 - 67 - 68 - 51 + 3 + 4 + 21 - 206 - 207 - 51 + 6 + 7 + 21 - 314 - 315 - 51 + 10 + 11 + 10 - 480 - 481 - 51 + 12 + 13 + 21 + + + 14 + 15 + 10 + + + 16 + 17 + 10 - 638 - 639 - 51 + 29 + 30 + 10 + + + 53 + 54 + 10 + + + 171 + 172 + 10 + + + 241 + 242 + 10 - 1370 - 1371 - 51 + 296 + 297 + 10 - 1500 - 1501 - 51 + 319 + 320 + 10 @@ -2865,47 +3182,72 @@ 1 2 - 51 + 42 - 8 - 9 - 51 + 2 + 3 + 10 - 51 - 52 - 51 + 3 + 4 + 21 - 66 - 67 - 51 + 6 + 7 + 21 - 105 - 106 - 51 + 10 + 11 + 10 - 144 - 145 - 51 + 12 + 13 + 21 - 191 - 192 - 51 + 14 + 15 + 10 - 213 - 214 - 51 + 16 + 17 + 10 - 221 - 222 - 51 + 29 + 30 + 10 + + + 52 + 53 + 10 + + + 160 + 161 + 10 + + + 162 + 163 + 10 + + + 225 + 226 + 10 + + + 249 + 250 + 10 @@ -3131,11 +3473,11 @@ sourceLocationPrefix - 969 + 124 prefix - 969 + 124 @@ -4629,15 +4971,15 @@ extractor_version - 969 + 124 codeql_version - 969 + 124 frontend_version - 969 + 124 @@ -4651,7 +4993,7 @@ 1 2 - 969 + 124 @@ -4667,7 +5009,7 @@ 1 2 - 969 + 124 @@ -4677,31 +5019,31 @@ locations_default - 187588827 + 47502960 id - 187588827 + 47502960 container - 133737 + 40955 startLine - 59692684 + 7507420 startColumn - 192854 + 21975 endLine - 59688807 + 7508544 endColumn - 290734 + 53441 @@ -4715,7 +5057,7 @@ 1 2 - 187588827 + 47502960 @@ -4731,7 +5073,7 @@ 1 2 - 187588827 + 47502960 @@ -4747,7 +5089,7 @@ 1 2 - 187588827 + 47502960 @@ -4763,7 +5105,7 @@ 1 2 - 187588827 + 47502960 @@ -4779,7 +5121,7 @@ 1 2 - 187588827 + 47502960 @@ -4794,68 +5136,73 @@ 1 - 22 - 10660 + 15 + 3121 - 23 - 62 - 10660 + 15 + 42 + 3121 - 62 - 87 - 10660 + 42 + 73 + 3121 - 88 - 115 - 11629 + 75 + 114 + 3121 - 117 - 152 - 10660 + 114 + 142 + 3246 - 152 - 200 - 10660 + 142 + 213 + 3121 - 202 - 283 - 10660 + 213 + 304 + 3121 - 299 - 365 - 10660 + 310 + 423 + 3121 + + + 429 + 598 + 3121 - 372 - 474 - 10660 + 598 + 834 + 3121 - 507 - 795 - 10660 + 838 + 1314 + 3121 - 864 - 1798 - 10660 + 1328 + 2780 + 3121 - 1880 - 4620 - 10660 + 2844 + 23269 + 3121 - 12195 - 59051 - 4845 + 30790 + 57883 + 249 @@ -4870,68 +5217,68 @@ 1 - 22 - 11629 + 13 + 3371 - 29 - 46 - 10660 + 13 + 31 + 3371 - 47 - 61 - 11629 + 31 + 47 + 3121 - 62 - 81 - 10660 + 47 + 64 + 3121 - 81 - 101 - 11629 + 64 + 84 + 3121 - 102 - 128 - 10660 + 85 + 115 + 3121 - 128 - 164 - 10660 + 116 + 160 + 3246 - 168 - 237 - 10660 + 160 + 206 + 3121 - 246 - 381 - 10660 + 206 + 291 + 3121 - 385 - 550 - 10660 + 298 + 388 + 3121 - 568 - 1104 - 10660 + 395 + 527 + 3121 - 1195 - 7434 - 10660 + 561 + 1339 + 3121 - 12075 - 58993 - 2907 + 1375 + 57764 + 2871 @@ -4946,73 +5293,68 @@ 1 - 4 - 5814 - - - 4 - 6 - 9691 + 5 + 3745 - 6 + 5 9 - 10660 + 3121 9 15 - 10660 + 3246 15 - 17 - 8722 - - - 17 20 - 8722 + 3246 20 - 24 - 11629 - - - 26 - 29 - 10660 + 28 + 3246 - 29 - 34 - 10660 + 28 + 36 + 3246 36 42 - 11629 + 3121 42 - 56 - 11629 + 53 + 3371 - 56 - 75 - 10660 + 53 + 62 + 3246 - 75 - 127 - 10660 + 62 + 81 + 3121 - 136 - 195 - 1938 + 81 + 95 + 3121 + + + 95 + 111 + 3121 + + + 112 + 156 + 1997 @@ -5027,68 +5369,68 @@ 1 - 22 - 11629 + 13 + 3371 - 29 - 46 - 10660 + 13 + 31 + 3371 - 47 - 61 - 11629 + 31 + 46 + 3121 - 62 - 78 - 10660 + 46 + 63 + 3121 - 80 - 101 - 11629 + 63 + 84 + 3121 - 102 - 128 - 10660 + 84 + 114 + 3121 - 128 - 164 - 10660 + 118 + 160 + 3246 - 168 - 237 - 10660 + 160 + 206 + 3121 - 246 - 381 - 10660 + 207 + 291 + 3121 - 385 - 550 - 10660 + 300 + 390 + 3121 - 568 - 1104 - 10660 + 395 + 562 + 3121 - 1195 - 7436 - 10660 + 564 + 1350 + 3121 - 12075 - 58993 - 2907 + 1420 + 57764 + 2871 @@ -5104,67 +5446,67 @@ 1 12 - 10660 + 3371 13 - 29 - 10660 + 26 + 3496 - 29 - 35 - 10660 + 26 + 34 + 3246 - 35 - 40 - 11629 + 34 + 42 + 3246 - 41 - 45 - 11629 + 42 + 50 + 3246 - 45 - 48 - 10660 + 50 + 61 + 3121 - 49 - 60 - 10660 + 61 + 67 + 3246 - 60 - 68 - 10660 + 67 + 76 + 3496 - 68 - 77 - 10660 + 76 + 88 + 3246 - 77 - 87 - 10660 + 89 + 102 + 3121 - 91 - 103 - 10660 + 102 + 116 + 3496 - 103 - 155 - 10660 + 116 + 133 + 3121 - 171 - 292 - 3876 + 136 + 363 + 1498 @@ -5180,32 +5522,32 @@ 1 2 - 38141488 + 4961952 2 3 - 6285684 + 779523 3 4 - 4993853 + 542407 4 - 6 - 4742852 + 12 + 570876 - 6 - 26 - 4508326 + 12 + 97 + 564008 - 26 - 176 - 1020478 + 97 + 645 + 88653 @@ -5221,27 +5563,27 @@ 1 2 - 38608602 + 5024009 2 3 - 10020656 + 1222414 3 - 4 - 5546249 + 6 + 640549 - 4 - 16 - 4591670 + 6 + 57 + 563509 - 16 - 139 - 925505 + 57 + 329 + 56937 @@ -5257,27 +5599,27 @@ 1 2 - 44882657 + 5646454 2 3 - 4052842 + 483596 3 - 4 - 3421947 - - - 4 7 - 4558720 + 582613 7 - 43 - 2776516 + 25 + 566256 + + + 25 + 94 + 228500 @@ -5293,12 +5635,12 @@ 1 2 - 58650884 + 7041179 2 - 14 - 1041799 + 85 + 466240 @@ -5314,32 +5656,32 @@ 1 2 - 38587281 + 5031001 2 3 - 6118996 + 740066 3 4 - 5025834 + 540284 4 - 6 - 4782586 + 12 + 587482 - 6 - 27 - 4485067 + 12 + 72 + 565257 - 27 - 67 - 692917 + 72 + 250 + 43327 @@ -5355,67 +5697,67 @@ 1 2 - 19382 + 1623 2 - 3 - 15505 + 6 + 1997 - 3 - 5 - 16474 + 6 + 12 + 1872 - 5 - 11 - 15505 + 12 + 37 + 1748 - 11 - 15 - 14536 + 40 + 114 + 1748 - 15 - 28 - 14536 + 128 + 241 + 1748 - 28 - 58 - 14536 + 253 + 599 + 1748 - 60 - 136 - 14536 + 712 + 1234 + 1748 - 138 - 281 - 14536 + 1268 + 1902 + 1748 - 329 - 448 - 14536 + 1952 + 2390 + 1748 - 463 - 807 - 14536 + 2424 + 3237 + 1748 - 815 - 1929 - 14536 + 3272 + 7577 + 1748 - 2561 - 109994 - 9691 + 8002 + 121166 + 749 @@ -5431,138 +5773,67 @@ 1 2 - 33919 + 1997 2 - 3 - 23258 - - - 3 4 - 13567 + 1748 4 - 6 - 14536 - - - 6 - 11 - 16474 + 7 + 1748 - 11 - 17 - 14536 + 7 + 18 + 1872 19 - 26 - 15505 - - - 27 - 46 - 16474 - - - 46 - 55 - 14536 + 43 + 1748 - 55 - 65 - 14536 + 44 + 60 + 1748 66 - 137 - 14536 - - - 138 - 139 - 969 - - - - - - - startColumn - startLine - - - 12 - - - 1 - 2 - 20351 - - - 2 - 3 - 15505 - - - 3 - 5 - 16474 - - - 5 - 11 - 15505 - - - 11 - 15 - 14536 - - - 15 - 28 - 14536 - - - 28 - 58 - 14536 + 93 + 1748 - 60 - 135 - 14536 + 96 + 117 + 1748 - 137 - 316 - 14536 + 117 + 150 + 1748 - 323 - 425 - 14536 + 150 + 169 + 1748 - 432 - 713 - 14536 + 169 + 181 + 1748 - 729 - 2052 - 14536 + 182 + 217 + 1872 - 2140 - 60974 - 8722 + 243 + 329 + 499 @@ -5570,7 +5841,7 @@ startColumn - endLine + startLine 12 @@ -5578,3536 +5849,67 @@ 1 2 - 20351 + 1872 2 - 3 - 15505 - - - 3 5 - 16474 + 1872 5 11 - 15505 + 1748 11 - 15 - 14536 - - - 15 - 28 - 14536 - - - 28 - 58 - 14536 - - - 60 - 135 - 14536 - - - 137 - 316 - 14536 - - - 323 - 425 - 14536 - - - 432 - 713 - 14536 - - - 729 - 2052 - 14536 - - - 2141 - 60975 - 8722 - - - - - - - startColumn - endColumn - - - 12 - - - 1 - 2 - 24227 - - - 2 - 3 - 17444 - - - 3 - 4 - 9691 - - - 4 - 6 - 12598 - - - 6 - 8 - 13567 - - - 8 - 12 - 15505 - - - 12 - 18 - 17444 - - - 18 - 25 - 14536 - - - 25 - 38 - 15505 - - - 38 - 42 - 14536 - - - 42 - 53 - 15505 - - - 53 - 70 - 14536 - - - 72 - 300 - 7752 - - - - - - - endLine - id - - - 12 - - - 1 - 2 - 38096909 - - - 2 - 3 - 6353522 - - - 3 - 4 - 4967687 - - - 4 - 6 - 4754481 - - - 6 - 26 - 4502511 - - - 26 - 178 - 1013695 - - - - - - - endLine - container - - - 12 - - - 1 - 2 - 38559177 - - - 2 - 3 - 10061359 - - - 3 - 4 - 5555940 - - - 4 - 16 - 4585855 - - - 16 - 139 - 926474 - - - - - - - endLine - startLine - - - 12 - - - 1 - 2 - 58619873 - - - 2 - 6 - 1068934 - - - - - - - endLine - startColumn - - - 12 - - - 1 - 2 - 44876842 - - - 2 - 3 - 4054780 - - - 3 - 4 - 3421947 - - - 4 - 7 - 4554844 - - - 7 - 43 - 2780393 - - - - - - - endLine - endColumn - - - 12 - - - 1 - 2 - 38542702 - - - 2 - 3 - 6188773 - - - 3 - 4 - 4997729 - - - 4 - 6 - 4793246 - - - 6 - 28 - 4525770 - - - 28 - 67 - 640585 - - - - - - - endColumn - id - - - 12 - - - 1 - 2 - 52332 - - - 2 - 5 - 22289 - - - 5 - 12 - 25197 - - - 12 - 18 - 24227 - - - 18 - 29 - 22289 - - - 29 - 64 - 22289 - - - 66 - 142 - 22289 - - - 146 - 405 - 22289 - - - 433 - 904 - 22289 - - - 921 - 1929 - 22289 - - - 1937 - 3068 - 22289 - - - 3091 - 32212 - 10660 - - - - - - - endColumn - container - - - 12 - - - 1 - 2 - 64930 - - - 2 - 3 - 17444 - - - 3 - 4 - 18413 + 36 + 1748 - 4 - 5 - 15505 + 36 + 101 + 1748 - 5 - 6 - 24227 + 108 + 217 + 1748 - 6 - 10 - 25197 + 226 + 543 + 1748 - 10 - 24 - 22289 + 633 + 1057 + 1748 - 24 - 45 - 23258 + 1072 + 1409 + 1748 - 49 - 65 - 23258 + 1416 + 1614 + 1748 - 68 - 88 - 23258 + 1615 + 1810 + 1748 - 88 - 108 - 22289 + 1826 + 3777 + 1748 - 111 - 139 - 10660 - - - - - - - endColumn - startLine - - - 12 - - - 1 - 2 - 53301 - - - 2 - 5 - 22289 - - - 5 - 11 - 21320 - - - 11 - 16 - 22289 - - - 16 - 24 - 23258 - - - 24 - 52 - 22289 - - - 55 - 131 - 22289 - - - 132 - 279 - 22289 - - - 301 - 707 - 22289 - - - 720 - 1623 - 22289 - - - 1623 - 1989 - 22289 - - - 2040 - 30655 - 14536 - - - - - - - endColumn - startColumn - - - 12 - - - 1 - 2 - 86251 - - - 2 - 3 - 17444 - - - 3 - 4 - 15505 - - - 4 - 6 - 22289 - - - 6 - 11 - 21320 - - - 11 - 18 - 22289 - - - 18 - 28 - 22289 - - - 28 - 35 - 22289 - - - 35 - 41 - 19382 - - - 41 - 45 - 22289 - - - 45 - 52 - 19382 - - - - - - - endColumn - endLine - - - 12 - - - 1 - 2 - 53301 - - - 2 - 5 - 23258 - - - 5 - 11 - 20351 - - - 11 - 16 - 22289 - - - 16 - 24 - 23258 - - - 24 - 52 - 22289 - - - 55 - 131 - 22289 - - - 132 - 279 - 22289 - - - 301 - 706 - 22289 - - - 718 - 1623 - 23258 - - - 1629 - 2041 - 22289 - - - 2181 - 30652 - 13567 - - - - - - - - - locations_stmt - 9188352 - - - id - 9188352 - - - container - 225335 - - - startLine - 3533 - - - startColumn - 250 - - - endLine - 3438 - - - endColumn - 463 - - - - - id - container - - - 12 - - - 1 - 2 - 9188352 - - - - - - - id - startLine - - - 12 - - - 1 - 2 - 9188352 - - - - - - - id - startColumn - - - 12 - - - 1 - 2 - 9188352 - - - - - - - id - endLine - - - 12 - - - 1 - 2 - 9188352 - - - - - - - id - endColumn - - - 12 - - - 1 - 2 - 9188352 - - - - - - - container - id - - - 12 - - - 1 - 6 - 9990 - - - 6 - 9 - 18036 - - - 9 - 12 - 15392 - - - 12 - 17 - 19300 - - - 17 - 22 - 19707 - - - 22 - 26 - 18519 - - - 26 - 32 - 18850 - - - 32 - 39 - 17724 - - - 39 - 46 - 18137 - - - 46 - 57 - 17285 - - - 57 - 70 - 17074 - - - 70 - 91 - 17214 - - - 91 - 241 - 16916 - - - 241 - 421 - 1185 - - - - - - - container - startLine - - - 12 - - - 1 - 6 - 10006 - - - 6 - 9 - 18470 - - - 9 - 12 - 15844 - - - 12 - 17 - 18953 - - - 17 - 21 - 15743 - - - 21 - 25 - 19715 - - - 25 - 30 - 18055 - - - 30 - 37 - 19081 - - - 37 - 44 - 17781 - - - 44 - 54 - 17443 - - - 54 - 66 - 17500 - - - 66 - 86 - 17247 - - - 86 - 199 - 16907 - - - 199 - 406 - 2582 - - - - - - - container - startColumn - - - 12 - - - 1 - 2 - 5210 - - - 2 - 3 - 55357 - - - 3 - 4 - 47143 - - - 4 - 5 - 40292 - - - 5 - 6 - 25778 - - - 6 - 7 - 29309 - - - 7 - 8 - 16953 - - - 8 - 28 - 5289 - - - - - - - container - endLine - - - 12 - - - 1 - 4 - 7103 - - - 4 - 6 - 16413 - - - 6 - 9 - 19553 - - - 9 - 13 - 17623 - - - 13 - 17 - 18014 - - - 17 - 20 - 14674 - - - 20 - 24 - 16865 - - - 24 - 29 - 18049 - - - 29 - 35 - 18170 - - - 35 - 42 - 19204 - - - 42 - 51 - 17983 - - - 51 - 64 - 18099 - - - 64 - 113 - 16995 - - - 113 - 336 - 6585 - - - - - - - container - endColumn - - - 12 - - - 1 - 3 - 8796 - - - 3 - 4 - 21553 - - - 4 - 6 - 15873 - - - 6 - 7 - 12300 - - - 7 - 8 - 13583 - - - 8 - 9 - 13255 - - - 9 - 10 - 11270 - - - 10 - 11 - 14178 - - - 11 - 12 - 15506 - - - 12 - 13 - 15344 - - - 13 - 14 - 12794 - - - 14 - 16 - 18290 - - - 16 - 18 - 14990 - - - 18 - 26 - 18235 - - - 26 - 33 - 17959 - - - 33 - 68 - 1400 - - - - - - - startLine - id - - - 12 - - - 1 - 2 - 1330 - - - 2 - 3 - 500 - - - 3 - 4 - 248 - - - 4 - 23 - 265 - - - 23 - 220 - 265 - - - 229 - 1001 - 265 - - - 1014 - 4600 - 265 - - - 4642 - 30796 - 265 - - - 31255 - 49199 - 125 - - - - - - - startLine - container - - - 12 - - - 1 - 2 - 1699 - - - 2 - 3 - 353 - - - 3 - 16 - 267 - - - 16 - 135 - 265 - - - 141 - 891 - 265 - - - 896 - 3568 - 265 - - - 3704 - 25127 - 265 - - - 26034 - 46240 - 149 - - - - - - - startLine - startColumn - - - 12 - - - 1 - 2 - 1374 - - - 2 - 3 - 553 - - - 3 - 4 - 267 - - - 4 - 7 - 281 - - - 7 - 10 - 243 - - - 10 - 14 - 298 - - - 14 - 25 - 287 - - - 25 - 36 - 226 - - - - - - - startLine - endLine - - - 12 - - - 1 - 2 - 1980 - - - 2 - 3 - 292 - - - 3 - 8 - 270 - - - 8 - 23 - 292 - - - 23 - 47 - 281 - - - 47 - 70 - 272 - - - 70 - 112 - 144 - - - - - - - startLine - endColumn - - - 12 - - - 1 - 2 - 1387 - - - 2 - 3 - 526 - - - 3 - 4 - 228 - - - 4 - 11 - 285 - - - 11 - 38 - 274 - - - 38 - 63 - 270 - - - 63 - 94 - 272 - - - 94 - 149 - 265 - - - 149 - 179 - 21 - - - - - - - startColumn - id - - - 12 - - - 1 - 2 - 41 - - - 2 - 3 - 21 - - - 3 - 4 - 26 - - - 4 - 5 - 8 - - - 5 - 6 - 17 - - - 6 - 8 - 17 - - - 8 - 12 - 19 - - - 12 - 90 - 19 - - - 140 - 606 - 19 - - - 681 - 1645 - 19 - - - 3968 - 11561 - 19 - - - 11584 - 1372189 - 17 - - - - - - - startColumn - container - - - 12 - - - 1 - 2 - 48 - - - 2 - 3 - 28 - - - 3 - 4 - 30 - - - 4 - 5 - 17 - - - 5 - 6 - 10 - - - 6 - 8 - 19 - - - 8 - 39 - 19 - - - 45 - 220 - 19 - - - 233 - 1699 - 19 - - - 1861 - 5687 - 19 - - - 9654 - 100221 - 15 - - - - - - - startColumn - startLine - - - 12 - - - 1 - 2 - 41 - - - 2 - 3 - 21 - - - 3 - 4 - 26 - - - 4 - 5 - 8 - - - 5 - 6 - 17 - - - 6 - 8 - 17 - - - 8 - 11 - 19 - - - 12 - 52 - 19 - - - 53 - 125 - 19 - - - 131 - 177 - 19 - - - 179 - 386 - 19 - - - 423 - 904 - 17 - - - - - - - startColumn - endLine - - - 12 - - - 1 - 2 - 41 - - - 2 - 3 - 21 - - - 3 - 4 - 26 - - - 4 - 5 - 10 - - - 5 - 7 - 21 - - - 7 - 9 - 17 - - - 9 - 14 - 19 - - - 14 - 71 - 19 - - - 88 - 140 - 19 - - - 140 - 191 - 19 - - - 232 - 543 - 19 - - - 559 - 899 - 10 - - - - - - - startColumn - endColumn - - - 12 - - - 1 - 2 - 54 - - - 2 - 3 - 43 - - - 3 - 4 - 37 - - - 4 - 5 - 28 - - - 5 - 6 - 15 - - - 6 - 8 - 21 - - - 8 - 12 - 19 - - - 13 - 74 - 19 - - - 93 - 198 - 8 - - - - - - - endLine - id - - - 12 - - - 1 - 2 - 1150 - - - 2 - 3 - 606 - - - 3 - 4 - 202 - - - 4 - 15 - 270 - - - 15 - 144 - 259 - - - 149 - 881 - 261 - - - 959 - 3635 - 259 - - - 3657 - 22005 - 259 - - - 22053 - 43062 - 171 - - - - - - - endLine - container - - - 12 - - - 1 - 2 - 1664 - - - 2 - 3 - 353 - - - 3 - 20 - 259 - - - 20 - 196 - 259 - - - 207 - 842 - 259 - - - 846 - 3913 - 259 - - - 3933 - 24449 - 259 - - - 24521 - 35597 - 125 - - - - - - - endLine - startLine - - - 12 - - - 1 - 2 - 1824 - - - 2 - 3 - 298 - - - 3 - 8 - 283 - - - 8 - 24 - 267 - - - 24 - 41 - 267 - - - 41 - 57 - 276 - - - 57 - 84 - 219 - - - - - - - endLine - startColumn - - - 12 - - - 1 - 2 - 1227 - - - 2 - 3 - 627 - - - 3 - 4 - 259 - - - 4 - 7 - 272 - - - 7 - 10 - 245 - - - 10 - 14 - 285 - - - 14 - 24 - 261 - - - 24 - 36 - 259 - - - - - - - endLine - endColumn - - - 12 - - - 1 - 2 - 1321 - - - 2 - 3 - 570 - - - 3 - 5 - 278 - - - 5 - 17 - 270 - - - 17 - 45 - 261 - - - 45 - 74 - 267 - - - 74 - 108 - 261 - - - 108 - 180 - 206 - - - - - - - endColumn - id - - - 12 - - - 1 - 11 - 37 - - - 11 - 42 - 35 - - - 43 - 63 - 35 - - - 63 - 95 - 35 - - - 98 - 184 - 35 - - - 184 - 223 - 35 - - - 223 - 526 - 35 - - - 573 - 1737 - 35 - - - 2000 - 4203 - 35 - - - 4363 - 9065 - 35 - - - 9539 - 29497 - 35 - - - 35135 - 64752 - 35 - - - 66007 - 337354 - 35 - - - 475678 - 685070 - 4 - - - - - - - endColumn - container - - - 12 - - - 1 - 6 - 35 - - - 6 - 23 - 35 - - - 24 - 51 - 37 - - - 51 - 72 - 37 - - - 72 - 154 - 35 - - - 158 - 200 - 35 - - - 207 - 389 - 35 - - - 397 - 1388 - 35 - - - 1419 - 2381 - 35 - - - 2453 - 5497 - 35 - - - 5825 - 14041 - 35 - - - 14633 - 22330 - 35 - - - 23082 - 73454 - 35 - - - 100181 - 100182 - 2 - - - - - - - endColumn - startLine - - - 12 - - - 1 - 3 - 35 - - - 3 - 10 - 37 - - - 10 - 14 - 35 - - - 14 - 38 - 35 - - - 38 - 57 - 35 - - - 57 - 67 - 35 - - - 69 - 125 - 35 - - - 129 - 191 - 35 - - - 191 - 255 - 35 - - - 261 - 318 - 37 - - - 320 - 407 - 35 - - - 410 - 451 - 37 - - - 459 - 583 - 35 - - - - - - - endColumn - startColumn - - - 12 - - - 1 - 2 - 142 - - - 2 - 3 - 32 - - - 3 - 4 - 41 - - - 4 - 5 - 32 - - - 5 - 6 - 32 - - - 6 - 8 - 30 - - - 8 - 11 - 37 - - - 11 - 13 - 39 - - - 13 - 16 - 41 - - - 16 - 29 - 30 - - - - - - - endColumn - endLine - - - 12 - - - 1 - 3 - 35 - - - 3 - 10 - 37 - - - 10 - 14 - 35 - - - 14 - 38 - 35 - - - 38 - 57 - 37 - - - 57 - 70 - 35 - - - 70 - 130 - 35 - - - 134 - 192 - 35 - - - 197 - 262 - 37 - - - 262 - 321 - 35 - - - 322 - 406 - 35 - - - 408 - 451 - 35 - - - 459 - 566 - 35 - - - - - - - - - locations_expr - 18007924 - - - id - 18007924 - - - container - 6359 - - - startLine - 262734 - - - startColumn - 3376 - - - endLine - 262706 - - - endColumn - 3826 - - - - - id - container - - - 12 - - - 1 - 2 - 18007924 - - - - - - - id - startLine - - - 12 - - - 1 - 2 - 18007924 - - - - - - - id - startColumn - - - 12 - - - 1 - 2 - 18007924 - - - - - - - id - endLine - - - 12 - - - 1 - 2 - 18007924 - - - - - - - id - endColumn - - - 12 - - - 1 - 2 - 18007924 - - - - - - - container - id - - - 12 - - - 1 - 2 - 562 - - - 2 - 6 - 478 - - - 6 - 11 - 478 - - - 12 - 26 - 506 - - - 27 - 87 - 478 - - - 95 - 514 - 478 - - - 525 - 1401 - 478 - - - 1526 - 2343 - 478 - - - 2404 - 3615 - 478 - - - 3668 - 5162 - 478 - - - 5341 - 7345 - 478 - - - 7399 - 9307 - 478 - - - 9382 - 16759 - 478 - - - 18811 - 18812 - 28 - - - - - - - container - startLine - - - 12 - - - 1 - 2 - 675 - - - 2 - 4 - 478 - - - 4 - 10 - 534 - - - 10 - 20 - 506 - - - 20 - 66 - 478 - - - 67 - 162 - 478 - - - 166 - 362 - 478 - - - 376 - 591 - 478 - - - 593 - 929 - 478 - - - 960 - 1269 - 478 - - - 1291 - 1782 - 478 - - - 1851 - 2492 - 478 - - - 2594 - 4241 - 337 - - - - - - - container - startColumn - - - 12 - - - 1 - 2 - 675 - - - 2 - 4 - 506 - - - 4 - 7 - 534 - - - 7 - 16 - 478 - - - 16 - 34 - 506 - - - 36 - 59 - 478 - - - 59 - 66 - 506 - - - 66 - 68 - 365 - - - 68 - 69 - 281 - - - 69 - 70 - 422 - - - 70 - 71 - 253 - - - 71 - 72 - 422 - - - 72 - 74 - 365 - - - 74 - 92 - 506 - - - 94 - 109 - 56 - - - - - - - container - endLine - - - 12 - - - 1 - 2 - 675 - - - 2 - 4 - 478 - - - 4 - 10 - 534 - - - 10 - 20 - 506 - - - 20 - 68 - 478 - - - 68 - 163 - 478 - - - 166 - 362 - 478 - - - 376 - 592 - 478 - - - 593 - 931 - 478 - - - 960 - 1273 - 478 - - - 1292 - 1786 - 478 - - - 1855 - 2501 - 478 - - - 2593 - 4416 - 337 - - - - - - - container - endColumn - - - 12 - - - 1 - 2 - 619 - - - 2 - 4 - 478 - - - 4 - 7 - 506 - - - 7 - 15 - 478 - - - 15 - 36 - 478 - - - 36 - 62 - 478 - - - 62 - 71 - 534 - - - 71 - 73 - 281 - - - 73 - 75 - 450 - - - 75 - 76 - 168 - - - 76 - 77 - 562 - - - 77 - 79 - 478 - - - 79 - 84 - 478 - - - 84 - 116 - 365 - - - - - - - startLine - id - - - 12 - - - 1 - 5 - 22061 - - - 5 - 9 - 22567 - - - 9 - 15 - 21948 - - - 15 - 23 - 20682 - - - 23 - 32 - 20738 - - - 32 - 44 - 20541 - - - 44 - 60 - 20203 - - - 60 - 80 - 20344 - - - 80 - 103 - 20006 - - - 103 - 130 - 20147 - - - 130 - 159 - 19950 - - - 159 - 194 - 20006 - - - 194 - 297 - 13534 - - - - - - - startLine - container - - - 12 - - - 1 - 2 - 32191 - - - 2 - 3 - 21385 - - - 3 - 4 - 15532 - - - 4 - 6 - 22398 - - - 6 - 8 - 18656 - - - 8 - 11 - 22483 - - - 11 - 16 - 23749 - - - 16 - 21 - 22567 - - - 21 - 28 - 22736 - - - 28 - 35 - 21695 - - - 35 - 43 - 21835 - - - 43 - 61 - 17502 - - - - - - - startLine - startColumn - - - 12 - - - 1 - 4 - 21864 - - - 4 - 7 - 24002 - - - 7 - 11 - 22848 - - - 11 - 16 - 23833 - - - 16 - 21 - 23974 - - - 21 - 26 - 20625 - - - 26 - 31 - 22145 - - - 31 - 36 - 24171 - - - 36 - 40 - 21526 - - - 40 - 44 - 22680 - - - 44 - 49 - 22820 - - - 49 - 63 - 12240 - - - - - - - startLine - endLine - - - 12 - - - 1 - 2 - 139344 - - - 2 - 3 - 61286 - - - 3 - 4 - 37790 - - - 4 - 6 - 20035 - - - 6 - 23 - 4277 - - - - - - - startLine - endColumn - - - 12 - - - 1 - 4 - 23214 - - - 4 - 7 - 22792 - - - 7 - 11 - 22483 - - - 11 - 16 - 22201 - - - 16 - 21 - 22511 - - - 21 - 27 - 22933 - - - 27 - 33 - 22539 - - - 33 - 38 - 19809 - - - 38 - 43 - 21357 - - - 43 - 47 - 20006 - - - 47 - 52 - 23102 - - - 52 - 66 - 19725 - - - 68 - 69 - 56 - - - - - - - startColumn - id - - - 12 - - - 1 - 2 - 422 - - - 2 - 4 - 253 - - - 4 - 8 - 281 - - - 8 - 26 - 281 - - - 43 - 253 - 253 - - - 278 - 844 - 253 - - - 949 - 1891 - 253 - - - 2093 - 4169 - 253 - - - 4251 - 7004 - 253 - - - 7173 - 11370 - 253 - - - 12331 - 15107 - 253 - - - 15374 - 30162 - 253 - - - 30211 - 49563 - 112 - - - - - - - startColumn - container - - - 12 - - - 1 - 2 - 450 - - - 2 - 3 - 168 - - - 3 - 4 - 196 - - - 4 - 6 - 253 - - - 7 - 32 - 253 - - - 43 - 99 - 253 - - - 101 - 121 - 253 - - - 121 - 130 - 253 - - - 130 - 138 - 253 - - - 138 - 142 - 281 - - - 142 - 144 - 225 - - - 144 - 150 - 281 - - - 151 - 158 - 253 - - - - - - - startColumn - startLine - - - 12 - - - 1 - 2 - 422 - - - 2 - 4 - 253 - - - 4 - 7 - 253 - - - 7 - 19 - 253 - - - 20 - 152 - 253 - - - 199 - 588 - 253 - - - 633 - 1287 - 253 - - - 1365 - 2343 - 253 - - - 2576 - 3504 - 253 - - - 3522 - 4709 - 253 - - - 4736 - 5298 - 253 - - - 5332 - 5999 - 253 - - - 6157 - 6996 - 168 - - - - - - - startColumn - endLine - - - 12 - - - 1 - 2 - 422 - - - 2 - 4 - 253 - - - 4 - 7 - 253 - - - 7 - 19 - 253 - - - 20 - 152 - 253 - - - 199 - 588 - 253 - - - 648 - 1289 - 253 - - - 1365 - 2347 - 253 - - - 2579 - 3510 - 253 - - - 3529 - 4710 - 253 - - - 4739 - 5323 - 253 - - - 5346 - 6023 - 253 - - - 6201 - 7039 - 168 + 3834 + 59554 + 749 @@ -9115,159 +5917,83 @@ startColumn - endColumn - - - 12 - - - 1 - 2 - 450 - - - 2 - 3 - 168 - - - 3 - 5 - 253 - - - 5 - 9 - 253 - - - 9 - 13 - 253 - - - 13 - 20 - 253 - - - 20 - 30 - 253 - - - 30 - 42 - 253 - - - 44 - 60 - 281 - - - 60 - 69 - 253 - - - 69 - 74 - 253 - - - 74 - 84 - 309 - - - 84 - 96 - 140 - - - - - - - endLine - id + endLine 12 1 - 5 - 22089 + 2 + 1872 - 5 - 9 - 22567 + 2 + 5 + 1872 - 9 - 15 - 21638 + 5 + 11 + 1748 - 15 - 23 - 20654 + 11 + 36 + 1748 - 23 - 32 - 21413 + 36 + 102 + 1748 - 32 - 44 - 20175 + 109 + 218 + 1748 - 44 - 60 - 19838 + 225 + 545 + 1748 - 60 - 80 - 20935 + 631 + 1055 + 1748 - 80 - 103 - 19866 + 1074 + 1407 + 1748 - 103 - 130 - 20063 + 1425 + 1611 + 1748 - 130 - 159 - 20006 + 1614 + 1807 + 1748 - 159 - 193 - 19725 + 1827 + 3760 + 1748 - 193 - 296 - 13731 + 3827 + 59562 + 749 - endLine - container + startColumn + endColumn 12 @@ -9275,67 +6001,67 @@ 1 2 - 32191 + 2122 2 - 3 - 21301 + 5 + 1498 - 3 - 4 - 15532 + 5 + 8 + 1623 - 4 - 6 - 21976 + 8 + 13 + 1748 - 6 - 8 - 18459 + 13 + 23 + 1997 - 8 - 11 - 22567 + 23 + 33 + 1872 - 11 - 15 - 19838 + 34 + 44 + 1748 - 15 - 20 - 22877 + 45 + 57 + 1748 - 20 - 26 - 20513 + 58 + 74 + 1997 - 26 - 33 - 21976 + 77 + 86 + 1872 - 33 - 40 - 19950 + 86 + 98 + 1748 - 40 - 49 - 20091 + 98 + 160 + 1748 - 49 - 61 - 5430 + 258 + 299 + 249 @@ -9343,7 +6069,7 @@ endLine - startLine + id 12 @@ -9351,27 +6077,32 @@ 1 2 - 130621 + 4959829 2 3 - 68406 + 782020 3 4 - 40267 + 543156 4 - 6 - 21441 + 12 + 568129 - 6 - 11 - 1969 + 12 + 95 + 564383 + + + 95 + 628 + 91025 @@ -9379,70 +6110,92 @@ endLine - startColumn + container 12 1 - 4 - 21667 + 2 + 5021137 - 4 - 7 - 23890 + 2 + 3 + 1224911 - 7 - 11 - 22567 + 3 + 6 + 633932 - 11 - 16 - 23749 + 6 + 52 + 564632 - 16 - 21 - 23693 + 52 + 329 + 63930 + + + + + + endLine + startLine + + + 12 + - 21 - 26 - 20738 + 1 + 2 + 7057911 - 26 - 31 - 22342 + 2 + 18 + 450632 + + + + + + endLine + startColumn + + + 12 + - 31 - 36 - 24143 + 1 + 2 + 5645580 - 36 - 40 - 20935 + 2 + 3 + 480974 - 40 - 44 - 22651 + 3 + 7 + 587607 - 44 - 49 - 23214 + 7 + 25 + 569752 - 49 - 63 - 13112 + 25 + 89 + 224629 @@ -9457,63 +6210,33 @@ 1 - 4 - 23524 - - - 4 - 7 - 22989 - - - 7 - 11 - 22483 - - - 11 - 16 - 23102 - - - 16 - 21 - 21920 - - - 21 - 26 - 19866 - - - 26 - 32 - 22117 + 2 + 5029628 - 32 - 38 - 23946 + 2 + 3 + 744436 - 38 - 43 - 22173 + 3 + 4 + 540034 - 43 - 47 - 19838 + 4 + 12 + 588107 - 47 - 52 - 22820 + 12 + 72 + 563509 - 52 - 69 - 17924 + 72 + 250 + 42828 @@ -9529,67 +6252,52 @@ 1 2 - 309 + 15732 2 - 4 - 309 - - - 4 - 10 - 281 - - - 10 - 16 - 337 - - - 16 - 51 - 309 + 3 + 5618 - 56 - 618 - 309 + 3 + 7 + 4245 - 841 - 2290 - 309 + 7 + 17 + 4120 - 2328 - 4142 - 309 + 17 + 33 + 4120 - 4177 - 7140 - 309 + 33 + 107 + 4120 - 8235 - 11725 - 309 + 116 + 696 + 4120 - 12344 - 15458 - 309 + 726 + 2478 + 4120 - 15684 - 18219 - 309 + 2622 + 4791 + 4120 - 18696 - 19124 - 112 + 4798 + 33780 + 3121 @@ -9605,67 +6313,52 @@ 1 2 - 450 + 18604 2 - 4 - 281 - - - 4 - 6 - 281 - - - 6 - 12 - 309 - - - 12 - 41 - 309 + 3 + 5618 - 50 - 114 - 309 + 3 + 5 + 3621 - 115 - 128 - 309 + 5 + 7 + 3745 - 128 - 137 - 281 + 7 + 16 + 4370 - 137 - 142 - 337 + 16 + 80 + 4120 - 142 - 146 - 281 + 81 + 152 + 4245 - 146 - 148 - 281 + 158 + 212 + 4245 - 148 - 152 - 309 + 212 + 265 + 4120 - 152 - 163 - 84 + 265 + 329 + 749 @@ -9681,67 +6374,52 @@ 1 2 - 422 + 15982 2 - 4 - 225 + 3 + 5993 - 4 + 3 8 - 337 + 4245 8 - 15 - 309 + 18 + 4370 18 - 54 - 309 - - - 74 - 489 - 309 - - - 511 - 1338 - 309 - - - 1390 - 2420 - 309 + 42 + 4120 - 2767 - 3740 - 309 + 43 + 218 + 4120 - 3802 - 4530 - 309 + 235 + 759 + 4120 - 4643 - 5303 - 309 + 768 + 2177 + 4120 - 5379 - 5736 - 309 + 2209 + 2884 + 4120 - 5747 - 5806 - 56 + 2885 + 30763 + 2247 @@ -9757,62 +6435,52 @@ 1 2 - 365 + 17231 2 + 3 + 6243 + + + 3 4 - 281 + 3246 4 - 9 - 337 + 7 + 4245 - 9 + 7 14 - 337 + 4245 14 - 22 - 337 - - - 23 28 - 309 + 4120 28 - 36 - 309 - - - 36 - 41 - 309 - - - 41 - 47 - 309 + 45 + 4245 - 47 - 56 - 309 + 45 + 69 + 4120 - 56 - 64 - 309 + 69 + 81 + 4245 - 64 - 72 - 309 + 81 + 117 + 1498 @@ -9828,67 +6496,52 @@ 1 2 - 422 + 15982 2 - 4 - 225 + 3 + 5993 - 4 + 3 8 - 337 + 4245 8 - 15 - 309 - - - 17 - 54 - 309 - - - 74 - 471 - 309 - - - 500 - 1307 - 309 + 18 + 4370 - 1356 - 2389 - 309 + 18 + 41 + 4120 - 2629 - 3660 - 309 + 43 + 217 + 4120 - 3731 - 4490 - 309 + 233 + 756 + 4120 - 4640 - 5281 - 309 + 768 + 2177 + 4120 - 5368 - 5729 - 309 + 2208 + 2858 + 4120 - 5734 - 5796 - 56 + 2868 + 30757 + 2247 @@ -9898,23 +6551,23 @@ numlines - 1153975 + 808616 element_id - 1153975 + 807492 num_lines - 41381 + 39456 num_code - 35794 + 34087 num_comment - 16762 + 18230 @@ -9928,7 +6581,12 @@ 1 2 - 1153975 + 806368 + + + 2 + 3 + 1123 @@ -9944,7 +6602,12 @@ 1 2 - 1153975 + 806368 + + + 2 + 3 + 1123 @@ -9960,7 +6623,12 @@ 1 2 - 1153975 + 807242 + + + 2 + 3 + 249 @@ -9976,37 +6644,27 @@ 1 2 - 21825 + 26720 2 3 - 5238 + 3745 3 - 4 - 3317 - - - 4 5 - 2968 + 3371 5 - 9 - 3492 - - - 9 - 60 - 3317 + 35 + 2996 - 139 - 1502 - 1222 + 39 + 1983 + 2622 @@ -10022,32 +6680,27 @@ 1 2 - 23746 + 27220 2 3 - 6635 + 4120 3 4 - 3492 + 2497 4 - 5 - 3841 - - - 5 - 8 - 3492 + 7 + 3496 - 8 - 9 - 174 + 7 + 12 + 2122 @@ -10063,27 +6716,27 @@ 1 2 - 23397 + 26845 2 3 - 7508 + 4120 3 4 - 4539 + 2372 4 - 5 - 3142 + 6 + 3246 - 5 + 6 10 - 2793 + 2871 @@ -10099,37 +6752,32 @@ 1 2 - 18857 + 21851 2 3 - 4190 + 3621 3 4 - 3841 + 2372 4 - 7 - 2793 - - - 7 - 18 - 2793 + 13 + 2871 - 18 - 928 - 2793 + 14 + 198 + 2622 - 1043 - 1509 - 523 + 204 + 2092 + 749 @@ -10145,32 +6793,32 @@ 1 2 - 19905 + 22225 2 3 - 5238 + 3621 3 4 - 4015 + 2122 4 6 - 2793 + 1872 6 - 10 - 3142 + 9 + 2746 - 10 - 12 - 698 + 9 + 13 + 1498 @@ -10186,32 +6834,27 @@ 1 2 - 20079 + 21975 2 3 - 4888 + 4245 3 - 4 - 4365 - - - 4 5 - 1746 + 2871 5 - 7 - 2793 + 8 + 3121 - 7 - 11 - 1920 + 8 + 12 + 1872 @@ -10227,37 +6870,32 @@ 1 2 - 7857 + 11112 2 3 - 2269 + 2122 3 4 - 1396 + 1123 4 7 - 1396 - - - 7 - 9 - 1047 + 1498 - 9 - 19 - 1396 + 8 + 21 + 1373 - 22 - 5980 - 1396 + 21 + 3651 + 998 @@ -10273,42 +6911,32 @@ 1 2 - 7857 + 11112 2 3 - 2269 + 2122 3 4 - 1396 + 1123 4 - 6 - 1396 - - - 6 - 8 - 349 + 7 + 1623 8 - 9 - 1222 - - - 9 - 17 - 1396 + 21 + 1373 - 17 - 54 - 873 + 26 + 48 + 874 @@ -10324,37 +6952,32 @@ 1 2 - 7857 + 11112 2 3 - 2269 + 2122 3 4 - 1396 + 1373 4 - 6 - 1396 - - - 6 - 9 - 1396 + 7 + 1373 - 9 - 16 - 1396 + 7 + 21 + 1373 - 18 - 51 - 1047 + 23 + 42 + 874 @@ -10364,31 +6987,31 @@ diagnostics - 2936 + 1484 id - 2936 + 1484 severity - 51 + 21 error_tag - 103 + 43 error_message - 103 + 150 full_error_message - 103 + 150 location - 103 + 64 @@ -10402,7 +7025,7 @@ 1 2 - 2936 + 1484 @@ -10418,7 +7041,7 @@ 1 2 - 2936 + 1484 @@ -10434,7 +7057,7 @@ 1 2 - 2936 + 1484 @@ -10450,7 +7073,7 @@ 1 2 - 2936 + 1484 @@ -10466,7 +7089,7 @@ 1 2 - 2936 + 1484 @@ -10480,9 +7103,9 @@ 12 - 57 - 58 - 51 + 69 + 70 + 21 @@ -10498,7 +7121,7 @@ 2 3 - 51 + 21 @@ -10512,9 +7135,9 @@ 12 - 2 - 3 - 51 + 7 + 8 + 21 @@ -10528,9 +7151,9 @@ 12 - 2 - 3 - 51 + 7 + 8 + 21 @@ -10544,9 +7167,9 @@ 12 - 2 - 3 - 51 + 3 + 4 + 21 @@ -10560,14 +7183,14 @@ 12 - 1 - 2 - 51 + 6 + 7 + 21 - 56 - 57 - 51 + 63 + 64 + 21 @@ -10583,7 +7206,7 @@ 1 2 - 103 + 43 @@ -10599,7 +7222,12 @@ 1 2 - 103 + 21 + + + 6 + 7 + 21 @@ -10615,7 +7243,12 @@ 1 2 - 103 + 21 + + + 6 + 7 + 21 @@ -10631,7 +7264,12 @@ 1 2 - 103 + 21 + + + 2 + 3 + 21 @@ -10647,12 +7285,12 @@ 1 2 - 51 + 129 - 56 - 57 - 51 + 63 + 64 + 21 @@ -10668,7 +7306,7 @@ 1 2 - 103 + 150 @@ -10684,7 +7322,7 @@ 1 2 - 103 + 150 @@ -10700,7 +7338,7 @@ 1 2 - 103 + 150 @@ -10716,7 +7354,7 @@ 1 2 - 103 + 150 @@ -10732,12 +7370,12 @@ 1 2 - 51 + 129 - 56 - 57 - 51 + 63 + 64 + 21 @@ -10753,7 +7391,7 @@ 1 2 - 103 + 150 @@ -10769,7 +7407,7 @@ 1 2 - 103 + 150 @@ -10785,7 +7423,7 @@ 1 2 - 103 + 150 @@ -10801,7 +7439,7 @@ 1 2 - 103 + 150 @@ -10815,14 +7453,14 @@ 12 - 1 - 2 - 51 + 3 + 4 + 43 - 56 - 57 - 51 + 63 + 64 + 21 @@ -10838,7 +7476,7 @@ 1 2 - 103 + 64 @@ -10854,7 +7492,7 @@ 1 2 - 103 + 64 @@ -10870,7 +7508,12 @@ 1 2 - 103 + 21 + + + 3 + 4 + 43 @@ -10886,7 +7529,12 @@ 1 2 - 103 + 21 + + + 3 + 4 + 43 @@ -10896,15 +7544,15 @@ files - 230754 + 65216 id - 230754 + 65216 name - 230754 + 65216 @@ -10918,7 +7566,7 @@ 1 2 - 230754 + 65216 @@ -10934,7 +7582,7 @@ 1 2 - 230754 + 65216 @@ -10944,15 +7592,15 @@ folders - 22981 + 12390 id - 22981 + 12390 name - 22981 + 12390 @@ -10966,7 +7614,7 @@ 1 2 - 22981 + 12390 @@ -10982,7 +7630,7 @@ 1 2 - 22981 + 12390 @@ -10992,15 +7640,15 @@ containerparent - 231298 + 77585 parent - 548 + 12390 child - 231298 + 77585 @@ -11014,72 +7662,42 @@ 1 2 - 32 + 6031 2 - 4 - 48 - - - 4 - 14 - 41 - - - 16 - 17 - 4 - - - 18 - 19 - 54 - - - 19 - 55 - 41 - - - 63 - 159 - 41 - - - 164 - 345 - 41 + 3 + 1521 - 352 - 697 - 41 + 3 + 4 + 665 - 774 - 931 - 21 + 4 + 6 + 1003 - 946 - 949 - 41 + 6 + 10 + 971 - 950 - 983 - 39 + 10 + 16 + 1003 - 984 - 985 - 74 + 16 + 44 + 929 - 992 - 1009 - 21 + 44 + 151 + 264 @@ -11095,7 +7713,7 @@ 1 2 - 231298 + 77585 @@ -11105,23 +7723,23 @@ fileannotations - 29052092 + 4200790 id - 219955 + 5767 kind - 4 + 21 name - 10170 + 58720 value - 1159 + 39516 @@ -11132,10 +7750,15 @@ 12 + + 1 + 2 + 200 + 2 3 - 219955 + 5566 @@ -11149,64 +7772,64 @@ 12 - 39 - 40 - 45059 + 1 + 86 + 433 - 40 - 41 - 3627 + 88 + 206 + 433 - 41 - 42 - 35646 + 212 + 291 + 443 - 42 - 44 - 8027 + 291 + 359 + 433 - 56 - 57 - 22807 + 362 + 401 + 433 - 57 - 58 - 14290 + 402 + 479 + 433 - 58 - 59 - 18547 + 480 + 549 + 253 - 59 - 89 - 18022 + 550 + 551 + 1330 - 89 - 173 - 17311 + 553 + 628 + 433 - 174 - 178 - 18488 + 631 + 753 + 454 - 179 - 276 - 18055 + 753 + 1231 + 443 - 276 - 277 - 70 + 1234 + 2155 + 242 @@ -11220,64 +7843,69 @@ 12 - 48 - 49 - 45059 + 1 + 98 + 433 - 49 - 51 - 3155 + 102 + 244 + 433 - 51 - 52 - 35828 + 244 + 351 + 433 - 52 - 54 - 8317 + 352 + 434 + 443 - 69 - 70 - 22807 + 434 + 490 + 443 - 70 - 72 - 14261 + 490 + 628 + 433 - 72 - 73 - 18514 + 632 + 702 + 63 - 73 - 102 - 18051 + 706 + 707 + 1330 - 102 - 409 - 17344 + 710 + 939 + 433 - 411 - 416 - 18132 + 939 + 1038 + 433 - 417 - 528 - 18411 + 1066 + 1853 + 433 - 528 - 529 - 70 + 1853 + 3292 + 433 + + + 3423 + 3742 + 21 @@ -11291,9 +7919,14 @@ 12 - 100172 - 100173 - 4 + 527 + 528 + 10 + + + 546 + 547 + 10 @@ -11309,12 +7942,12 @@ 2 3 - 2 + 10 - 4630 - 4631 - 2 + 5557 + 5558 + 10 @@ -11330,12 +7963,12 @@ 1 2 - 2 + 10 - 528 - 529 - 2 + 3741 + 3742 + 10 @@ -11351,22 +7984,62 @@ 1 2 - 72 + 11027 - 3 - 4 - 5911 + 2 + 3 + 4362 - 4 + 3 5 - 3442 + 5059 - 18 - 100173 - 744 + 5 + 7 + 4098 + + + 7 + 9 + 4594 + + + 9 + 16 + 4330 + + + 16 + 19 + 4890 + + + 19 + 27 + 4256 + + + 27 + 47 + 4837 + + + 47 + 128 + 4922 + + + 128 + 459 + 4626 + + + 459 + 546 + 1711 @@ -11382,7 +8055,7 @@ 1 2 - 10170 + 58720 @@ -11398,17 +8071,57 @@ 1 2 - 9202 + 11587 2 - 24 - 797 + 3 + 7689 - 24 - 397 - 171 + 3 + 4 + 4098 + + + 4 + 6 + 4066 + + + 6 + 8 + 3422 + + + 8 + 11 + 4742 + + + 11 + 17 + 5397 + + + 17 + 23 + 4700 + + + 23 + 41 + 4679 + + + 41 + 95 + 4468 + + + 95 + 1726 + 3866 @@ -11422,54 +8135,74 @@ 12 - 32 - 33 - 2 + 1 + 2 + 3359 - 960 - 961 - 109 + 2 + 4 + 1637 - 1014 - 2296 - 87 + 4 + 5 + 3190 - 2419 - 16676 - 63 + 5 + 8 + 2461 - 18355 - 18356 - 513 + 8 + 14 + 2968 - 18395 - 20335 - 94 + 14 + 17 + 1933 - 20388 - 25553 - 68 + 17 + 24 + 3042 - 26531 - 58110 - 103 + 24 + 51 + 3538 - 60781 - 79652 - 10 + 51 + 58 + 3031 - 100172 - 100173 - 105 + 58 + 80 + 2978 + + + 81 + 151 + 3084 + + + 151 + 334 + 2978 + + + 334 + 473 + 2999 + + + 473 + 547 + 2313 @@ -11485,12 +8218,12 @@ 1 2 - 1157 + 39505 2 3 - 2 + 10 @@ -11506,77 +8239,72 @@ 1 2 - 2 + 3401 2 - 3 - 109 - - - 3 - 8 - 65 + 4 + 1911 - 8 - 9 - 59 + 4 + 5 + 3052 - 9 - 10 - 68 + 5 + 8 + 2482 - 10 - 11 - 109 + 8 + 14 + 3485 - 11 - 12 - 85 + 14 + 18 + 3454 - 12 - 14 - 105 + 18 + 28 + 3200 - 14 - 16 - 76 + 28 + 34 + 3147 - 16 - 18 - 90 + 34 + 41 + 3200 - 18 - 21 - 103 + 41 + 66 + 2989 - 21 - 24 - 92 + 66 + 92 + 3073 - 24 - 27 - 76 + 92 + 113 + 2989 - 27 - 33 - 92 + 113 + 145 + 3031 - 33 - 4319 - 21 + 145 + 172 + 95 @@ -11586,15 +8314,15 @@ inmacroexpansion - 149995978 + 149995954 id - 24670878 + 24670874 inv - 3705265 + 3705264 @@ -11613,7 +8341,7 @@ 3 5 - 1474978 + 1474977 5 @@ -11623,12 +8351,12 @@ 6 7 - 6582546 + 6582545 7 8 - 8719002 + 8719001 8 @@ -11714,15 +8442,15 @@ affectedbymacroexpansion - 73932090 + 48735840 id - 5343163 + 7044740 inv - 9717793 + 3803121 @@ -11736,47 +8464,37 @@ 1 2 - 2178250 + 3846709 2 3 - 606526 + 766305 3 4 - 335791 + 361841 4 - 7 - 434209 - - - 7 - 18 - 471017 - - - 18 - 25 - 458480 + 5 + 772736 - 25 - 35 - 449158 + 5 + 12 + 535160 - 35 - 488 - 401009 + 12 + 50 + 556267 - 489 - 4499 - 8720 + 50 + 9900 + 205719 @@ -11791,48 +8509,68 @@ 1 - 2 - 474340 - - - 2 4 - 713165 + 313248 4 - 6 - 786996 - - - 6 7 - 601737 + 316607 7 - 8 - 1284648 - - - 8 9 - 3310258 + 301088 9 - 11 - 733734 - - - 11 12 - 1408336 + 342938 12 - 185 - 404576 + 13 + 456004 + + + 13 + 14 + 226099 + + + 14 + 15 + 408038 + + + 15 + 16 + 166429 + + + 16 + 17 + 377677 + + + 17 + 18 + 200636 + + + 18 + 20 + 344255 + + + 20 + 25 + 285393 + + + 25 + 207 + 64702 @@ -11842,23 +8580,23 @@ macroinvocations - 180467764 + 40338463 id - 180467764 + 40338463 macro_id - 704547 + 182070 location - 29969904 + 5912754 kind - 1938 + 108 @@ -11872,7 +8610,7 @@ 1 2 - 180467764 + 40338463 @@ -11888,7 +8626,7 @@ 1 2 - 180467764 + 40338463 @@ -11904,7 +8642,7 @@ 1 2 - 180467764 + 40338463 @@ -11920,57 +8658,47 @@ 1 2 - 176379 + 60781 2 3 - 100788 + 27558 3 4 - 39733 + 17972 4 - 6 - 52332 + 5 + 10021 - 6 - 8 - 44579 + 5 + 7 + 13779 - 8 + 7 13 - 56208 + 14705 13 - 25 - 55239 - - - 25 - 56 - 53301 - - - 56 - 134 - 54270 + 33 + 13779 - 136 - 844 - 53301 + 33 + 180 + 13670 - 846 - 19520 - 18413 + 181 + 72144 + 9803 @@ -11986,47 +8714,42 @@ 1 2 - 231618 + 77283 2 3 - 116293 + 30553 3 4 - 52332 + 14323 4 - 6 - 61054 - - - 6 - 9 - 54270 + 5 + 10293 - 9 - 16 - 58146 + 5 + 8 + 14105 - 16 - 43 - 54270 + 8 + 18 + 14160 - 44 - 262 - 53301 + 18 + 88 + 13670 - 263 - 6926 - 23258 + 89 + 12189 + 7679 @@ -12042,12 +8765,12 @@ 1 2 - 678381 + 177495 2 3 - 26166 + 4574 @@ -12063,12 +8786,17 @@ 1 2 - 29347732 + 5255926 2 - 19520 - 622172 + 4 + 422362 + + + 4 + 72144 + 234464 @@ -12084,12 +8812,12 @@ 1 2 - 29966997 + 5890587 2 - 3 - 2907 + 37 + 22166 @@ -12105,7 +8833,7 @@ 1 2 - 29969904 + 5912754 @@ -12119,14 +8847,14 @@ 12 - 617 - 618 - 969 + 1490 + 1491 + 54 - 185602 - 185603 - 969 + 739164 + 739165 + 54 @@ -12140,14 +8868,14 @@ 12 - 70 - 71 - 969 + 282 + 283 + 54 - 684 - 685 - 969 + 3145 + 3146 + 54 @@ -12161,14 +8889,14 @@ 12 - 577 - 578 - 969 + 1069 + 1070 + 54 - 30348 - 30349 - 969 + 107495 + 107496 + 54 @@ -12178,15 +8906,15 @@ macroparent - 153017561 + 33655979 id - 153017561 + 33655979 parent_id - 67977654 + 15926377 @@ -12200,7 +8928,7 @@ 1 2 - 153017561 + 33655979 @@ -12216,27 +8944,27 @@ 1 2 - 28392183 + 7806497 2 3 - 5737165 + 1595448 3 4 - 23312079 + 4702906 4 5 - 10038100 + 1295464 5 - 14 - 498125 + 205 + 526061 @@ -12246,15 +8974,15 @@ macrolocationbind - 6882831 + 6882576 id - 4222159 + 4221836 location - 2747013 + 2747083 @@ -12268,22 +8996,22 @@ 1 2 - 2459695 + 2459327 2 3 - 1326280 + 1326313 3 4 - 8261 + 8262 4 5 - 413549 + 413560 5 @@ -12304,12 +9032,12 @@ 1 2 - 1393989 + 1394024 2 3 - 907158 + 907181 3 @@ -12319,12 +9047,12 @@ 4 5 - 410838 + 410849 5 522 - 26291 + 26292 @@ -12334,19 +9062,19 @@ macro_argument_unexpanded - 205272282 + 82502296 invocation - 104596662 + 26286169 argument_index - 15505 + 697 text - 4863022 + 343289 @@ -12360,27 +9088,22 @@ 1 2 - 64885206 + 9682354 2 3 - 1060212 + 9771190 3 4 - 19056692 + 5002549 4 - 5 - 19214657 - - - 6 - 17 - 379893 + 67 + 1830075 @@ -12396,27 +9119,22 @@ 1 2 - 64952075 + 9865000 2 3 - 1029200 + 9788735 3 4 - 19161356 + 4845877 4 - 5 - 19075105 - - - 6 - 16 - 378924 + 67 + 1786555 @@ -12430,79 +9148,19 @@ 12 - 2 - 3 - 969 - - - 5 - 6 - 969 + 46457 + 46458 + 612 - 7 - 8 - 969 - - - 17 - 18 - 969 - - - 294 - 295 - 969 - - - 315 - 316 - 969 - - - 320 - 321 - 969 - - - 329 - 330 - 969 - - - 360 - 361 - 969 - - - 372 - 373 - 969 - - - 392 - 393 - 1938 - - - 20219 - 20220 - 969 - - - 39883 - 39884 - 969 - - - 40977 - 40978 - 969 + 46659 + 173253 + 52 - 107930 - 107931 - 969 + 646840 + 2488495 + 31 @@ -12516,79 +9174,19 @@ 12 - 1 - 2 - 969 - - - 4 - 5 - 969 - - - 5 - 6 - 969 - - - 9 - 10 - 969 - - - 166 - 167 - 969 - - - 190 - 191 - 969 - - - 200 - 201 - 1938 - - - 203 - 204 - 969 - - - 204 - 205 - 969 - - - 206 - 207 - 969 - - - 210 - 211 - 969 - - - 283 - 284 - 969 - - - 1168 - 1169 - 969 + 2 + 3 + 612 - 1403 - 1404 - 969 + 13 + 1115 + 52 - 1903 - 1904 - 969 + 7702 + 22873 + 31 @@ -12604,37 +9202,57 @@ 1 2 - 2082629 + 39706 2 3 - 1045675 + 62332 3 4 - 323684 + 21031 4 5 - 393460 + 34583 5 - 8 - 351789 + 6 + 39252 - 8 - 17 - 371171 + 6 + 9 + 30875 - 17 - 19520 - 294611 + 9 + 15 + 28985 + + + 15 + 26 + 25890 + + + 26 + 57 + 27147 + + + 57 + 517 + 25995 + + + 518 + 486610 + 7489 @@ -12650,17 +9268,17 @@ 1 2 - 4290275 + 243193 2 - 4 - 380862 + 3 + 89881 - 4 - 13 - 191884 + 3 + 9 + 10214 @@ -12670,19 +9288,19 @@ macro_argument_expanded - 205272282 + 82502296 invocation - 104596662 + 26286169 argument_index - 15505 + 697 text - 1150340 + 207944 @@ -12696,27 +9314,22 @@ 1 2 - 64885206 + 9682354 2 3 - 1060212 + 9771190 3 4 - 19056692 + 5002549 4 - 5 - 19214657 - - - 6 - 17 - 379893 + 67 + 1830075 @@ -12732,12 +9345,22 @@ 1 2 - 102448132 + 12641200 2 - 14 - 2148529 + 3 + 8428949 + + + 3 + 4 + 4225571 + + + 4 + 9 + 990447 @@ -12751,79 +9374,19 @@ 12 - 2 - 3 - 969 - - - 5 - 6 - 969 - - - 7 - 8 - 969 - - - 17 - 18 - 969 - - - 294 - 295 - 969 - - - 315 - 316 - 969 - - - 320 - 321 - 969 - - - 329 - 330 - 969 - - - 360 - 361 - 969 - - - 372 - 373 - 969 + 46457 + 46458 + 612 - 392 - 393 - 1938 - - - 20219 - 20220 - 969 - - - 39883 - 39884 - 969 - - - 40977 - 40978 - 969 + 46659 + 173253 + 52 - 107930 - 107931 - 969 + 646840 + 2488495 + 31 @@ -12839,77 +9402,17 @@ 1 2 - 969 - - - 4 - 5 - 969 - - - 5 - 6 - 969 - - - 7 - 8 - 969 - - - 13 - 14 - 969 - - - 14 - 15 - 969 - - - 17 - 18 - 969 - - - 18 - 19 - 969 - - - 20 - 21 - 969 - - - 22 - 23 - 969 - - - 28 - 29 - 1938 - - - 50 - 51 - 969 - - - 57 - 58 - 969 + 602 - 179 - 180 - 969 + 2 + 96 + 52 - 997 - 998 - 969 + 950 + 16176 + 42 @@ -12925,37 +9428,57 @@ 1 2 - 539797 + 21833 2 3 - 242278 + 26861 3 4 - 31980 + 43498 4 5 - 116293 + 15908 5 - 9 - 93035 + 6 + 3263 - 9 - 43 - 88189 + 6 + 7 + 18400 - 44 - 83453 - 38764 + 7 + 10 + 18971 + + + 10 + 19 + 18326 + + + 19 + 51 + 15781 + + + 51 + 252 + 15601 + + + 252 + 1169400 + 9496 @@ -12971,17 +9494,17 @@ 1 2 - 996250 + 105092 2 3 - 120170 + 88920 3 - 13 - 33919 + 66 + 13932 @@ -12991,19 +9514,19 @@ functions - 7629848 + 4053070 id - 7629848 + 4053070 name - 4518986 + 1694897 kind - 5814 + 998 @@ -13017,7 +9540,7 @@ 1 2 - 7629848 + 4053070 @@ -13033,7 +9556,7 @@ 1 2 - 7629848 + 4053070 @@ -13049,12 +9572,17 @@ 1 2 - 4307719 + 1448541 2 - 2658 - 211267 + 4 + 139097 + + + 4 + 3162 + 107257 @@ -13070,7 +9598,12 @@ 1 2 - 4518986 + 1692025 + + + 2 + 3 + 2871 @@ -13084,34 +9617,44 @@ 12 - 2 - 3 - 969 + 8 + 9 + 124 - 7 - 8 - 969 + 13 + 14 + 124 - 36 - 37 - 969 + 47 + 48 + 124 - 88 - 89 - 969 + 83 + 84 + 124 - 2770 - 2771 - 969 + 691 + 692 + 124 - 4970 - 4971 - 969 + 4453 + 4454 + 124 + + + 5230 + 5231 + 124 + + + 21935 + 21936 + 124 @@ -13127,32 +9670,42 @@ 2 3 - 969 + 124 - 4 - 5 - 969 + 13 + 14 + 124 - 16 - 17 - 969 + 18 + 19 + 124 - 24 - 25 - 969 + 41 + 42 + 124 - 35 - 36 - 969 + 43 + 44 + 124 + + + 302 + 303 + 124 + + + 504 + 505 + 124 - 4582 - 4583 - 969 + 12674 + 12675 + 124 @@ -13162,15 +9715,15 @@ function_entry_point - 1141563 + 1141555 id - 1137815 + 1137808 entry_point - 1141563 + 1141555 @@ -13184,7 +9737,7 @@ 1 2 - 1134613 + 1134605 2 @@ -13205,7 +9758,7 @@ 1 2 - 1141563 + 1141555 @@ -13215,15 +9768,15 @@ function_return_type - 7629848 + 4070551 id - 7629848 + 4053070 return_type - 1538955 + 619822 @@ -13237,7 +9790,12 @@ 1 2 - 7629848 + 4035589 + + + 2 + 3 + 17480 @@ -13253,22 +9811,27 @@ 1 2 - 94973 + 310161 2 3 - 1308306 + 213891 3 - 29 - 116293 + 5 + 48072 - 32 - 1445 - 19382 + 5 + 365 + 46574 + + + 432 + 9944 + 1123 @@ -13559,33 +10122,33 @@ function_deleted - 88088 + 88091 id - 88088 + 88091 function_defaulted - 51682 + 51684 id - 51682 + 51684 function_prototyped - 7627910 + 4051572 id - 7627910 + 4051572 @@ -13665,15 +10228,15 @@ member_function_this_type - 687951 + 674762 id - 687951 + 674762 this_type - 173971 + 176182 @@ -13687,7 +10250,7 @@ 1 2 - 687951 + 674762 @@ -13703,42 +10266,37 @@ 1 2 - 49909 + 47198 2 3 - 49542 + 36959 3 4 - 24587 + 32714 4 5 - 9670 + 20103 5 6 - 6786 + 12860 6 - 8 - 15829 - - - 8 - 21 - 13253 + 10 + 14484 - 21 - 868 - 4394 + 10 + 65 + 11862 @@ -13748,27 +10306,27 @@ fun_decls - 7853714 + 4212770 id - 7853714 + 4206777 function - 7627910 + 4028472 type_id - 1538955 + 611831 name - 4517048 + 1693399 location - 6410700 + 2815797 @@ -13782,7 +10340,7 @@ 1 2 - 7853714 + 4206777 @@ -13798,7 +10356,12 @@ 1 2 - 7853714 + 4200784 + + + 2 + 3 + 5993 @@ -13814,7 +10377,7 @@ 1 2 - 7853714 + 4206777 @@ -13830,7 +10393,7 @@ 1 2 - 7853714 + 4206777 @@ -13846,12 +10409,12 @@ 1 2 - 7405013 + 3864776 2 - 4 - 222896 + 5 + 163696 @@ -13867,7 +10430,12 @@ 1 2 - 7627910 + 4009992 + + + 2 + 3 + 18479 @@ -13883,7 +10451,7 @@ 1 2 - 7627910 + 4028472 @@ -13899,12 +10467,12 @@ 1 2 - 7405013 + 3885253 2 4 - 222896 + 143218 @@ -13920,22 +10488,27 @@ 1 2 - 93035 + 295427 2 3 - 1309275 + 220758 3 - 30 - 116293 + 5 + 48447 - 32 - 1445 - 20351 + 5 + 364 + 45949 + + + 364 + 10292 + 1248 @@ -13951,22 +10524,27 @@ 1 2 - 94973 + 305541 2 3 - 1308306 + 212018 3 - 29 - 116293 + 5 + 48072 - 32 - 1445 - 19382 + 5 + 1163 + 45949 + + + 1483 + 9893 + 249 @@ -13982,17 +10560,22 @@ 1 2 - 1376144 + 491962 2 - 9 - 116293 + 3 + 52942 - 9 - 1445 - 46517 + 3 + 7 + 50195 + + + 7 + 2238 + 16731 @@ -14008,17 +10591,22 @@ 1 2 - 1385835 + 455377 2 - 15 - 116293 + 3 + 69548 - 16 - 1445 - 36826 + 3 + 6 + 56063 + + + 6 + 4756 + 30841 @@ -14034,12 +10622,22 @@ 1 2 - 4178827 + 1332543 2 - 2658 - 338221 + 3 + 194662 + + + 3 + 11 + 129608 + + + 11 + 3169 + 36585 @@ -14055,12 +10653,17 @@ 1 2 - 4305781 + 1448042 2 - 2658 - 211267 + 4 + 139597 + + + 4 + 3162 + 105759 @@ -14076,12 +10679,12 @@ 1 2 - 4457932 + 1603497 2 - 1335 - 59116 + 1596 + 89901 @@ -14097,12 +10700,17 @@ 1 2 - 4180765 + 1368504 2 - 1342 - 336283 + 3 + 208522 + + + 3 + 1592 + 116372 @@ -14118,17 +10726,17 @@ 1 2 - 5098517 + 2422477 2 3 - 1270510 + 251724 3 - 9 - 41671 + 211 + 141595 @@ -14144,17 +10752,17 @@ 1 2 - 5098517 + 2441207 2 3 - 1270510 + 233494 3 - 9 - 41671 + 211 + 141095 @@ -14170,12 +10778,12 @@ 1 2 - 6382596 + 2701297 2 - 6 - 28104 + 211 + 114499 @@ -14191,12 +10799,12 @@ 1 2 - 6386472 + 2776590 2 8 - 24227 + 39207 @@ -14217,11 +10825,11 @@ fun_specialized - 11966 + 7936 id - 11966 + 7936 @@ -14239,15 +10847,15 @@ fun_decl_specifiers - 12889239 + 4283568 id - 4543214 + 1749837 name - 9691 + 1373 @@ -14261,22 +10869,22 @@ 1 2 - 336283 + 363228 2 3 - 246155 + 262463 3 4 - 3782458 + 1101171 4 5 - 178317 + 22974 @@ -14290,54 +10898,59 @@ 12 - 3 - 4 - 969 - - - 11 - 12 - 969 + 15 + 16 + 124 19 20 - 969 + 124 - 79 - 80 - 969 + 224 + 225 + 124 - 168 - 169 - 969 + 261 + 262 + 124 - 201 - 202 - 969 + 561 + 562 + 124 + + + 826 + 827 + 124 - 1344 - 1345 - 969 + 1032 + 1033 + 124 + + + 1093 + 1094 + 124 - 2847 - 2848 - 969 + 8148 + 8149 + 124 - 4300 - 4301 - 969 + 11028 + 11029 + 124 - 4328 - 4329 - 969 + 11099 + 11100 + 124 @@ -14468,26 +11081,26 @@ fun_decl_empty_throws - 2670882 + 420457 fun_decl - 2670882 + 420457 fun_decl_noexcept - 141830 + 141829 fun_decl - 141830 + 141829 constant - 141353 + 141352 @@ -14501,7 +11114,7 @@ 1 2 - 141830 + 141829 @@ -14517,7 +11130,7 @@ 1 2 - 140911 + 140910 2 @@ -14543,15 +11156,15 @@ fun_decl_typedef_type - 30057 + 2763 fun_decl - 30057 + 2763 typedeftype_id - 2879 + 124 @@ -14565,7 +11178,7 @@ 1 2 - 30057 + 2763 @@ -14581,57 +11194,57 @@ 1 2 - 856 + 40 2 3 - 505 + 12 3 4 - 92 + 12 - 4 - 5 - 175 + 5 + 13 + 8 - 5 - 6 - 185 + 16 + 17 + 12 - 6 - 7 - 92 + 17 + 18 + 4 - 7 - 9 - 258 + 21 + 22 + 8 - 9 - 14 - 206 + 25 + 43 + 8 - 14 - 20 - 237 + 46 + 55 + 8 - 20 - 84 - 216 + 89 + 128 + 8 158 - 256 - 51 + 159 + 4 @@ -14641,11 +11254,11 @@ fun_requires - 29111 + 29112 id - 10112 + 10113 kind @@ -14653,7 +11266,7 @@ constraint - 28875 + 28876 @@ -14771,7 +11384,7 @@ 1 2 - 28638 + 28639 2 @@ -14792,7 +11405,7 @@ 1 2 - 28875 + 28876 @@ -14802,19 +11415,19 @@ param_decl_bind - 15313967 + 7317003 id - 15313967 + 7317003 index - 16474 + 7991 fun_decl - 7378847 + 3534886 @@ -14828,7 +11441,7 @@ 1 2 - 15313967 + 7317003 @@ -14844,7 +11457,7 @@ 1 2 - 15313967 + 7317003 @@ -14860,82 +11473,32 @@ 2 3 - 969 + 3995 6 7 - 1938 + 1997 - 8 - 9 - 969 - - - 11 - 12 - 969 - - - 19 + 16 20 - 969 - - - 37 - 38 - 969 - - - 53 - 54 - 969 - - - 79 - 80 - 969 - - - 118 - 119 - 969 - - - 198 - 199 - 969 + 624 - 352 - 353 - 969 - - - 667 - 668 - 969 - - - 1189 - 1190 - 969 - - - 2056 - 2057 - 969 + 25 + 147 + 624 - 3387 - 3388 - 969 + 343 + 16215 + 624 - 7614 - 7615 - 969 + 28310 + 28311 + 124 @@ -14951,82 +11514,32 @@ 2 3 - 969 + 3995 6 7 - 1938 + 1997 - 8 - 9 - 969 - - - 11 - 12 - 969 - - - 19 + 16 20 - 969 - - - 37 - 38 - 969 + 624 - 53 - 54 - 969 - - - 79 - 80 - 969 - - - 118 - 119 - 969 - - - 198 - 199 - 969 - - - 352 - 353 - 969 - - - 667 - 668 - 969 - - - 1189 - 1190 - 969 - - - 2056 - 2057 - 969 + 25 + 147 + 624 - 3387 - 3388 - 969 + 343 + 16215 + 624 - 7614 - 7615 - 969 + 28310 + 28311 + 124 @@ -15042,32 +11555,27 @@ 1 2 - 4096452 + 1510349 2 3 - 1289893 + 977182 3 4 - 840223 + 602591 4 5 - 505878 + 290932 5 - 9 - 569840 - - - 9 - 18 - 76560 + 65 + 153831 @@ -15083,32 +11591,27 @@ 1 2 - 4096452 + 1510349 2 3 - 1289893 + 977182 3 4 - 840223 + 602591 4 5 - 505878 + 290932 5 - 9 - 569840 - - - 9 - 18 - 76560 + 65 + 153831 @@ -15118,27 +11621,27 @@ var_decls - 22872100 + 9398478 id - 22872100 + 9391611 variable - 22563921 + 9042867 type_id - 4098390 + 1457781 name - 6304097 + 853317 location - 19941494 + 6280261 @@ -15152,7 +11655,7 @@ 1 2 - 22872100 + 9391611 @@ -15168,7 +11671,12 @@ 1 2 - 22872100 + 9384743 + + + 2 + 3 + 6867 @@ -15184,7 +11692,7 @@ 1 2 - 22872100 + 9391611 @@ -15200,7 +11708,7 @@ 1 2 - 22872100 + 9391611 @@ -15216,12 +11724,12 @@ 1 2 - 22257681 + 8711604 2 - 4 - 306240 + 5 + 331262 @@ -15237,12 +11745,12 @@ 1 2 - 22542601 + 8989300 2 3 - 21320 + 53566 @@ -15258,12 +11766,12 @@ 1 2 - 22498991 + 8937357 2 - 3 - 64930 + 4 + 105509 @@ -15279,12 +11787,12 @@ 1 2 - 22258650 + 8791017 2 4 - 305271 + 251849 @@ -15300,22 +11808,27 @@ 1 2 - 3346356 + 850695 2 - 4 - 352758 + 3 + 284314 - 4 - 30 - 313993 + 3 + 5 + 127485 - 30 - 3217 - 85282 + 5 + 11 + 113251 + + + 11 + 2944 + 82035 @@ -15331,22 +11844,27 @@ 1 2 - 3351202 + 871547 2 - 4 - 348881 + 3 + 269330 - 4 - 30 - 313993 + 3 + 5 + 122865 - 30 - 3216 - 84313 + 5 + 11 + 113126 + + + 11 + 2860 + 80911 @@ -15362,17 +11880,22 @@ 1 2 - 3635153 + 1120525 2 - 6 - 314962 + 3 + 192789 - 6 - 1438 - 148274 + 3 + 7 + 115373 + + + 7 + 1038 + 29093 @@ -15388,22 +11911,27 @@ 1 2 - 3373491 + 986297 2 - 4 - 335314 + 3 + 219260 - 4 - 33 - 309147 + 3 + 6 + 133728 - 33 - 3217 - 80436 + 6 + 95 + 109380 + + + 97 + 2622 + 9115 @@ -15419,27 +11947,32 @@ 1 2 - 3481063 + 466365 2 3 - 1496314 + 165943 3 4 - 342097 + 59684 4 7 - 552395 + 65927 7 - 2958 - 432225 + 25 + 64179 + + + 25 + 27139 + 31215 @@ -15455,27 +11988,32 @@ 1 2 - 3501415 + 479351 2 3 - 1486623 + 165194 3 4 - 341128 + 54690 4 - 7 - 549488 + 8 + 71671 - 7 - 2958 - 425441 + 8 + 45 + 64304 + + + 45 + 26704 + 18105 @@ -15491,17 +12029,22 @@ 1 2 - 5168294 + 655283 2 3 - 826655 + 110878 3 - 2713 - 309147 + 11 + 65553 + + + 11 + 3463 + 21601 @@ -15517,27 +12060,27 @@ 1 2 - 3498507 + 494209 2 3 - 1513758 + 183424 3 4 - 337252 + 51693 4 - 7 - 536890 + 8 + 65053 - 7 - 309 - 417688 + 8 + 22619 + 58935 @@ -15553,12 +12096,17 @@ 1 2 - 19860088 + 5780058 2 - 2651 - 81405 + 21 + 472733 + + + 21 + 2943 + 27469 @@ -15574,12 +12122,12 @@ 1 2 - 19860088 + 5860969 2 - 2651 - 81405 + 2935 + 419291 @@ -15595,12 +12143,12 @@ 1 2 - 19909513 + 5981463 2 - 2637 - 31980 + 2555 + 298798 @@ -15616,12 +12164,12 @@ 1 2 - 19929865 + 6267899 2 5 - 11629 + 12361 @@ -15631,11 +12179,11 @@ var_def - 9039911 + 3770379 id - 9039911 + 3770379 @@ -15653,15 +12201,15 @@ var_decl_specifiers - 572469 + 490339 id - 572469 + 490339 name - 23 + 499 @@ -15675,7 +12223,7 @@ 1 2 - 572469 + 490339 @@ -15689,24 +12237,24 @@ 12 - 220 - 221 - 5 + 16 + 17 + 124 - 279 - 280 - 5 + 77 + 78 + 124 - 1747 - 1748 - 5 + 653 + 654 + 124 - 94425 - 94426 - 5 + 3181 + 3182 + 124 @@ -15716,11 +12264,11 @@ is_structured_binding - 15452 + 946 id - 15452 + 946 @@ -15785,19 +12333,19 @@ type_decls - 5742010 + 1634963 id - 5742010 + 1634963 type_id - 5711968 + 1615983 location - 5568539 + 1548807 @@ -15811,7 +12359,7 @@ 1 2 - 5742010 + 1634963 @@ -15827,7 +12375,7 @@ 1 2 - 5742010 + 1634963 @@ -15843,12 +12391,12 @@ 1 2 - 5685802 + 1599626 2 - 7 - 26166 + 10 + 16357 @@ -15864,12 +12412,12 @@ 1 2 - 5685802 + 1599751 2 - 7 - 26166 + 10 + 16232 @@ -15885,12 +12433,12 @@ 1 2 - 5560786 + 1526706 2 64 - 7752 + 22100 @@ -15906,12 +12454,12 @@ 1 2 - 5560786 + 1526831 2 64 - 7752 + 21975 @@ -15921,22 +12469,22 @@ type_def - 2304557 + 1096551 id - 2304557 + 1096551 type_decl_top - 3550840 + 673602 type_decl - 3550840 + 673602 @@ -15947,11 +12495,11 @@ id - 2043 + 2044 constraint - 7659 + 7660 @@ -16382,23 +12930,23 @@ usings - 504409 + 272115 id - 504409 + 272115 element_id - 307661 + 59068 location - 11328 + 26851 kind - 7 + 21 @@ -16412,7 +12960,7 @@ 1 2 - 504409 + 272115 @@ -16428,7 +12976,7 @@ 1 2 - 504409 + 272115 @@ -16444,7 +12992,7 @@ 1 2 - 504409 + 272115 @@ -16460,22 +13008,17 @@ 1 2 - 220283 + 51336 2 - 3 - 45055 - - - 3 - 4 - 20366 + 5 + 5387 - 4 - 768 - 21955 + 5 + 134 + 2345 @@ -16491,22 +13034,17 @@ 1 2 - 220283 + 51336 2 - 3 - 45055 - - - 3 - 4 - 20366 + 5 + 5387 - 4 - 768 - 21955 + 5 + 134 + 2345 @@ -16522,7 +13060,7 @@ 1 2 - 307661 + 59068 @@ -16538,27 +13076,22 @@ 1 2 - 8405 + 21178 2 4 - 880 + 2292 4 - 12 - 895 - - - 12 - 400 - 869 + 132 + 1954 - 410 - 3162 - 277 + 145 + 367 + 1426 @@ -16574,27 +13107,22 @@ 1 2 - 8405 + 21178 2 4 - 880 + 2292 4 - 12 - 895 - - - 12 - 400 - 869 + 132 + 1954 - 410 - 3162 - 277 + 145 + 367 + 1426 @@ -16610,7 +13138,7 @@ 1 2 - 11328 + 26851 @@ -16624,14 +13152,14 @@ 12 - 936 - 937 - 3 + 393 + 394 + 10 - 137090 - 137091 - 3 + 25368 + 25369 + 10 @@ -16645,14 +13173,14 @@ 12 - 62 - 63 - 3 + 214 + 215 + 10 - 84126 - 84127 - 3 + 5378 + 5379 + 10 @@ -16666,14 +13194,14 @@ 12 - 936 - 937 - 3 + 356 + 357 + 10 - 2164 - 2165 - 3 + 2186 + 2187 + 10 @@ -16683,15 +13211,15 @@ using_container - 580180 + 580209 parent - 21896 + 21897 child - 272102 + 272115 @@ -16756,27 +13284,27 @@ 1 2 - 96615 + 96620 2 3 - 120286 + 120292 3 4 - 20100 + 20101 4 5 - 26712 + 26714 5 65 - 8386 + 8387 @@ -17394,23 +13922,23 @@ params - 15008695 + 7067151 id - 15008695 + 7026196 function - 7181147 + 3408025 index - 16474 + 7991 type_id - 3532426 + 1221415 @@ -17424,7 +13952,7 @@ 1 2 - 15008695 + 7026196 @@ -17440,7 +13968,7 @@ 1 2 - 15008695 + 7026196 @@ -17456,7 +13984,12 @@ 1 2 - 15008695 + 6985241 + + + 2 + 3 + 40955 @@ -17472,32 +14005,27 @@ 1 2 - 3972405 + 1474513 2 3 - 1245313 + 927111 3 4 - 815995 + 579241 4 5 - 501032 + 281067 5 - 9 - 569840 - - - 9 - 18 - 76560 + 65 + 146090 @@ -17513,32 +14041,27 @@ 1 2 - 3972405 + 1474513 2 3 - 1245313 + 927111 3 4 - 815995 + 579241 4 5 - 501032 + 281067 5 - 9 - 569840 - - - 9 - 18 - 76560 + 65 + 146090 @@ -17554,27 +14077,22 @@ 1 2 - 4210807 + 1783301 2 3 - 1300553 + 1031622 3 4 - 915814 + 437896 4 - 6 - 629925 - - - 6 - 13 - 124046 + 11 + 155205 @@ -17590,82 +14108,32 @@ 2 3 - 969 + 3995 6 7 - 1938 - - - 8 - 9 - 969 + 1997 - 11 - 12 - 969 - - - 19 - 20 - 969 - - - 37 - 38 - 969 - - - 53 - 54 - 969 - - - 79 - 80 - 969 - - - 118 - 119 - 969 - - - 198 - 199 - 969 - - - 352 - 353 - 969 - - - 667 - 668 - 969 - - - 1184 - 1185 - 969 + 14 + 18 + 624 - 2026 - 2027 - 969 + 23 + 138 + 624 - 3311 - 3312 - 969 + 320 + 15486 + 624 - 7410 - 7411 - 969 + 27294 + 27295 + 124 @@ -17681,82 +14149,32 @@ 2 3 - 969 + 3995 6 7 - 1938 - - - 8 - 9 - 969 - - - 11 - 12 - 969 - - - 19 - 20 - 969 - - - 37 - 38 - 969 - - - 53 - 54 - 969 - - - 79 - 80 - 969 - - - 118 - 119 - 969 + 1997 - 198 - 199 - 969 - - - 352 - 353 - 969 - - - 667 - 668 - 969 - - - 1184 - 1185 - 969 + 14 + 18 + 624 - 2026 - 2027 - 969 + 23 + 138 + 624 - 3311 - 3312 - 969 + 320 + 15486 + 624 - 7410 - 7411 - 969 + 27294 + 27295 + 124 @@ -17772,82 +14190,32 @@ 1 2 - 969 + 3995 2 3 - 1938 + 1997 4 - 5 - 969 - - - 5 - 6 - 969 - - - 8 - 9 - 969 - - - 15 - 16 - 969 - - - 19 - 20 - 969 - - - 23 - 24 - 969 - - - 42 - 43 - 969 - - - 49 - 50 - 969 - - - 71 - 72 - 969 - - - 115 - 116 - 969 - - - 165 - 166 - 969 + 7 + 624 - 270 - 271 - 969 + 9 + 55 + 624 - 449 - 450 - 969 + 116 + 2703 + 624 - 3202 - 3203 - 969 + 7497 + 7498 + 124 @@ -17863,22 +14231,27 @@ 1 2 - 2967432 + 738193 2 - 4 - 270383 + 3 + 240612 - 4 - 80 - 265537 + 3 + 5 + 93273 - 83 - 1228 - 29073 + 5 + 13 + 93897 + + + 13 + 2574 + 55439 @@ -17894,17 +14267,27 @@ 1 2 - 2991660 + 820353 2 - 5 - 303333 + 3 + 179803 - 5 - 869 - 237433 + 3 + 6 + 106258 + + + 6 + 27 + 92274 + + + 27 + 2562 + 22725 @@ -17920,17 +14303,17 @@ 1 2 - 3212618 + 996036 2 - 6 - 279105 + 3 + 166942 - 6 - 15 - 40702 + 3 + 65 + 58436 @@ -18018,19 +14401,19 @@ membervariables - 6289561 + 1499265 id - 6289561 + 1496814 type_id - 816964 + 456075 name - 3334727 + 641686 @@ -18044,7 +14427,12 @@ 1 2 - 6289561 + 1494473 + + + 2 + 4 + 2341 @@ -18060,7 +14448,7 @@ 1 2 - 6289561 + 1496814 @@ -18076,27 +14464,22 @@ 1 2 - 595037 + 338326 2 3 - 66868 + 72218 3 - 6 - 62992 - - - 6 - 23 - 62992 + 10 + 35401 - 28 - 1989 - 29073 + 10 + 4444 + 10130 @@ -18112,22 +14495,22 @@ 1 2 - 654153 + 355917 2 - 4 - 64930 + 3 + 64321 - 4 - 13 - 62023 + 3 + 49 + 34311 - 13 - 1164 - 35857 + 56 + 2185 + 1524 @@ -18143,22 +14526,22 @@ 1 2 - 2136900 + 421164 2 3 - 808242 + 122542 3 5 - 251000 + 57785 5 - 165 - 138583 + 656 + 40193 @@ -18174,17 +14557,17 @@ 1 2 - 2906378 + 524318 2 3 - 348881 + 72817 3 - 165 - 79467 + 660 + 44550 @@ -18380,19 +14763,19 @@ localvariables - 1444946 + 726278 id - 1444946 + 726278 type_id - 22638 + 53441 name - 744 + 101531 @@ -18406,7 +14789,7 @@ 1 2 - 1444946 + 726278 @@ -18422,7 +14805,7 @@ 1 2 - 1444946 + 726278 @@ -18438,22 +14821,37 @@ 1 2 - 11068 + 28885 2 3 - 6883 + 7838 3 4 - 3847 + 4029 4 - 100799 - 838 + 6 + 4053 + + + 6 + 12 + 4145 + + + 12 + 165 + 4009 + + + 165 + 19323 + 480 @@ -18469,12 +14867,22 @@ 1 2 - 21894 + 38385 2 - 49 - 744 + 3 + 6700 + + + 3 + 5 + 4465 + + + 5 + 3502 + 3889 @@ -18490,72 +14898,32 @@ 1 2 - 39 + 62453 2 - 4 - 63 - - - 4 - 15 - 50 - - - 17 - 18 - 43 - - - 18 - 21 - 68 - - - 22 - 25 - 57 - - - 26 - 46 - 61 - - - 48 - 56 - 59 - - - 62 - 103 - 57 - - - 110 - 256 - 57 + 3 + 16032 - 273 - 1333 - 61 + 3 + 4 + 6524 - 1350 - 2860 - 59 + 4 + 8 + 8146 - 2889 - 23413 - 57 + 8 + 132 + 7617 - 26766 - 207143 - 8 + 132 + 7547 + 756 @@ -18571,32 +14939,22 @@ 1 2 - 439 + 84485 2 3 - 111 + 8414 3 - 6 - 57 - - - 6 - 22 - 43 - - - 22 - 25 - 57 + 15 + 7677 - 25 - 2365 - 35 + 15 + 1509 + 953 @@ -18606,15 +14964,15 @@ autoderivation - 427202 + 229374 var - 427202 + 229374 derivation_type - 51 + 624 @@ -18628,7 +14986,7 @@ 1 2 - 427202 + 229374 @@ -18641,45 +14999,30 @@ 12 - - 11 - 12 - 6 - - - 26 - 27 - 6 - 38 39 - 6 - - - 140 - 141 - 6 + 124 - 641 - 642 - 6 + 79 + 80 + 124 - 744 - 745 - 6 + 454 + 455 + 124 - 28896 - 28897 - 6 + 530 + 531 + 124 - 35445 - 35446 - 6 + 736 + 737 + 124 @@ -18689,15 +15032,15 @@ orphaned_variables - 88222 + 44323 var - 88222 + 44323 function - 57936 + 41052 @@ -18711,7 +15054,7 @@ 1 2 - 88222 + 44323 @@ -18727,17 +15070,12 @@ 1 2 - 33347 + 40201 2 - 3 - 20728 - - - 3 - 21 - 3860 + 47 + 851 @@ -18747,31 +15085,31 @@ enumconstants - 1205579 + 345733 id - 1205579 + 345733 parent - 159904 + 41337 index - 118232 + 13942 type_id - 159904 + 54 name - 1197827 + 345351 location - 1201703 + 318338 @@ -18785,7 +15123,7 @@ 1 2 - 1205579 + 345733 @@ -18801,7 +15139,7 @@ 1 2 - 1205579 + 345733 @@ -18817,7 +15155,7 @@ 1 2 - 1205579 + 345733 @@ -18833,7 +15171,7 @@ 1 2 - 1205579 + 345733 @@ -18849,7 +15187,7 @@ 1 2 - 1205579 + 345733 @@ -18865,47 +15203,57 @@ 1 2 - 18413 + 1524 2 3 - 21320 + 5773 3 4 - 28104 + 8714 4 5 - 22289 + 5500 5 6 - 22289 + 4574 6 + 7 + 2559 + + + 7 8 - 11629 + 1960 8 - 11 - 14536 + 10 + 2941 - 11 - 21 - 12598 + 10 + 15 + 3322 - 21 - 123 - 8722 + 15 + 32 + 3104 + + + 32 + 257 + 1361 @@ -18921,47 +15269,57 @@ 1 2 - 18413 + 1524 2 3 - 21320 + 5773 3 4 - 28104 + 8714 4 5 - 22289 + 5500 5 6 - 22289 + 4574 6 + 7 + 2559 + + + 7 8 - 11629 + 1960 8 - 11 - 14536 + 10 + 2941 - 11 - 21 - 12598 + 10 + 15 + 3322 - 21 - 123 - 8722 + 15 + 32 + 3104 + + + 32 + 257 + 1361 @@ -18977,7 +15335,7 @@ 1 2 - 159904 + 41337 @@ -18993,47 +15351,57 @@ 1 2 - 18413 + 1524 2 3 - 21320 + 5773 3 4 - 28104 + 8714 4 5 - 22289 + 5500 5 6 - 22289 + 4574 6 + 7 + 2559 + + + 7 8 - 11629 + 1960 8 - 11 - 14536 + 10 + 2941 - 11 - 21 - 12598 + 10 + 15 + 3322 - 21 - 123 - 8722 + 15 + 32 + 3104 + + + 32 + 257 + 1361 @@ -19049,93 +15417,57 @@ 1 2 - 18413 + 2124 2 3 - 21320 + 5990 3 4 - 28104 + 8768 4 5 - 22289 + 5446 5 6 - 22289 + 4574 6 + 7 + 2505 + + + 7 8 - 11629 + 1851 8 11 - 14536 + 3757 11 - 21 - 12598 + 17 + 3104 - 21 + 17 123 - 8722 - - - - - - - index - id - - - 12 - - - 1 - 2 - 21320 - - - 2 - 3 - 39733 - - - 3 - 5 - 8722 - - - 5 - 6 - 23258 - - - 6 - 16 - 10660 - - - 16 - 50 - 9691 + 3104 - 72 - 166 - 4845 + 164 + 257 + 108 @@ -19143,7 +15475,7 @@ index - parent + id 12 @@ -19151,129 +15483,47 @@ 1 2 - 21320 + 2777 2 3 - 39733 + 2232 3 - 5 - 8722 - - - 5 - 6 - 23258 - - - 6 - 16 - 10660 - - - 16 - 50 - 9691 - - - 72 - 166 - 4845 - - - - - - - index - type_id - - - 12 - - - 1 - 2 - 21320 - - - 2 - 3 - 39733 + 4 + 2287 - 3 + 4 5 - 8722 + 1198 5 - 6 - 23258 - - - 6 - 16 - 10660 - - - 16 - 50 - 9691 - - - 72 - 166 - 4845 - - - - - - - index - name - - - 12 - - - 1 - 2 - 21320 - - - 2 - 3 - 39733 - - - 3 - 5 - 8722 + 9 + 1143 - 5 - 6 - 23258 + 9 + 12 + 1089 - 6 - 16 - 10660 + 12 + 20 + 1143 - 16 - 50 - 9691 + 20 + 59 + 1089 - 72 - 159 - 4845 + 64 + 760 + 980 @@ -19281,53 +15531,7 @@ index - location - - - 12 - - - 1 - 2 - 21320 - - - 2 - 3 - 39733 - - - 3 - 5 - 8722 - - - 5 - 6 - 23258 - - - 6 - 16 - 10660 - - - 16 - 50 - 9691 - - - 72 - 162 - 4845 - - - - - - - type_id - id + parent 12 @@ -19335,71 +15539,55 @@ 1 2 - 18413 + 2777 2 3 - 21320 + 2232 3 4 - 28104 + 2287 4 5 - 22289 + 1198 5 - 6 - 22289 - - - 6 - 8 - 11629 + 9 + 1143 - 8 - 11 - 14536 + 9 + 12 + 1089 - 11 - 21 - 12598 + 12 + 20 + 1143 - 21 - 123 - 8722 + 20 + 59 + 1089 - - - - - - type_id - parent - - - 12 - - 1 - 2 - 159904 + 64 + 760 + 980 - type_id - index + index + type_id 12 @@ -19407,54 +15595,14 @@ 1 2 - 18413 - - - 2 - 3 - 21320 - - - 3 - 4 - 28104 - - - 4 - 5 - 22289 - - - 5 - 6 - 22289 - - - 6 - 8 - 11629 - - - 8 - 11 - 14536 - - - 11 - 21 - 12598 - - - 21 - 123 - 8722 + 13942 - type_id + index name @@ -19463,54 +15611,54 @@ 1 2 - 18413 + 2777 2 3 - 21320 + 2232 3 4 - 28104 + 2287 4 5 - 22289 + 1198 5 - 6 - 22289 + 9 + 1143 - 6 - 8 - 11629 + 9 + 12 + 1089 - 8 - 11 - 14536 + 12 + 20 + 1143 - 11 - 21 - 12598 + 20 + 59 + 1089 - 21 - 123 - 8722 + 64 + 757 + 980 - type_id + index location @@ -19519,68 +15667,127 @@ 1 2 - 18413 + 2777 2 3 - 21320 + 2232 3 4 - 28104 + 2287 4 5 - 22289 + 1198 5 - 6 - 22289 + 9 + 1143 - 6 - 8 - 11629 + 9 + 12 + 1089 - 8 - 11 - 14536 + 12 + 20 + 1143 - 11 - 21 - 12598 + 20 + 59 + 1089 - 21 - 123 - 8722 + 64 + 760 + 980 - name + type_id id 12 - 1 - 2 - 1194919 + 6348 + 6349 + 54 + + + + + + type_id + parent + + + 12 + - 3 - 6 - 2907 + 759 + 760 + 54 + + + + + + + type_id + index + + + 12 + + + 256 + 257 + 54 + + + + + + + type_id + name + + + 12 + + + 6341 + 6342 + 54 + + + + + + + type_id + location + + + 12 + + + 5845 + 5846 + 54 @@ -19588,7 +15795,7 @@ name - parent + id 12 @@ -19596,12 +15803,12 @@ 1 2 - 1194919 + 344970 - 3 - 6 - 2907 + 2 + 3 + 381 @@ -19609,7 +15816,7 @@ name - index + parent 12 @@ -19617,12 +15824,12 @@ 1 2 - 1196857 + 344970 2 3 - 969 + 381 @@ -19630,7 +15837,7 @@ name - type_id + index 12 @@ -19638,12 +15845,23 @@ 1 2 - 1194919 + 345351 + + + + + + name + type_id + + + 12 + - 3 - 6 - 2907 + 1 + 2 + 345351 @@ -19659,12 +15877,12 @@ 1 2 - 1195888 + 344970 - 3 - 4 - 1938 + 2 + 3 + 381 @@ -19680,12 +15898,12 @@ 1 2 - 1200734 + 317303 - 5 - 6 - 969 + 2 + 205 + 1034 @@ -19701,12 +15919,7 @@ 1 2 - 1200734 - - - 5 - 6 - 969 + 318338 @@ -19722,7 +15935,12 @@ 1 2 - 1201703 + 317303 + + + 2 + 205 + 1034 @@ -19738,12 +15956,7 @@ 1 2 - 1200734 - - - 5 - 6 - 969 + 318338 @@ -19759,7 +15972,12 @@ 1 2 - 1201703 + 317303 + + + 2 + 205 + 1034 @@ -19769,31 +15987,31 @@ builtintypes - 59116 + 7616 id - 59116 + 7616 name - 59116 + 7616 kind - 59116 + 7616 size - 6783 + 874 sign - 2907 + 374 alignment - 4845 + 624 @@ -19807,7 +16025,7 @@ 1 2 - 59116 + 7616 @@ -19823,7 +16041,7 @@ 1 2 - 59116 + 7616 @@ -19839,7 +16057,7 @@ 1 2 - 59116 + 7616 @@ -19855,7 +16073,7 @@ 1 2 - 59116 + 7616 @@ -19871,7 +16089,7 @@ 1 2 - 59116 + 7616 @@ -19887,7 +16105,7 @@ 1 2 - 59116 + 7616 @@ -19903,7 +16121,7 @@ 1 2 - 59116 + 7616 @@ -19919,7 +16137,7 @@ 1 2 - 59116 + 7616 @@ -19935,7 +16153,7 @@ 1 2 - 59116 + 7616 @@ -19951,7 +16169,7 @@ 1 2 - 59116 + 7616 @@ -19967,7 +16185,7 @@ 1 2 - 59116 + 7616 @@ -19983,7 +16201,7 @@ 1 2 - 59116 + 7616 @@ -19999,7 +16217,7 @@ 1 2 - 59116 + 7616 @@ -20015,7 +16233,7 @@ 1 2 - 59116 + 7616 @@ -20031,7 +16249,7 @@ 1 2 - 59116 + 7616 @@ -20047,32 +16265,32 @@ 2 3 - 1938 + 249 8 9 - 969 + 124 9 10 - 969 + 124 11 12 - 969 + 124 14 15 - 969 + 124 15 16 - 969 + 124 @@ -20088,32 +16306,32 @@ 2 3 - 1938 + 249 8 9 - 969 + 124 9 10 - 969 + 124 11 12 - 969 + 124 14 15 - 969 + 124 15 16 - 969 + 124 @@ -20129,32 +16347,32 @@ 2 3 - 1938 + 249 8 9 - 969 + 124 9 10 - 969 + 124 11 12 - 969 + 124 14 15 - 969 + 124 15 16 - 969 + 124 @@ -20170,12 +16388,12 @@ 1 2 - 1938 + 249 3 4 - 4845 + 624 @@ -20191,12 +16409,12 @@ 1 2 - 3876 + 499 2 3 - 2907 + 374 @@ -20212,17 +16430,17 @@ 6 7 - 969 + 124 12 13 - 969 + 124 43 44 - 969 + 124 @@ -20238,17 +16456,17 @@ 6 7 - 969 + 124 12 13 - 969 + 124 43 44 - 969 + 124 @@ -20264,17 +16482,17 @@ 6 7 - 969 + 124 12 13 - 969 + 124 43 44 - 969 + 124 @@ -20290,12 +16508,12 @@ 5 6 - 1938 + 249 7 8 - 969 + 124 @@ -20311,7 +16529,7 @@ 5 6 - 2907 + 374 @@ -20327,22 +16545,22 @@ 8 9 - 969 + 124 10 11 - 969 + 124 13 14 - 1938 + 249 17 18 - 969 + 124 @@ -20358,22 +16576,22 @@ 8 9 - 969 + 124 10 11 - 969 + 124 13 14 - 1938 + 249 17 18 - 969 + 124 @@ -20389,22 +16607,22 @@ 8 9 - 969 + 124 10 11 - 969 + 124 13 14 - 1938 + 249 17 18 - 969 + 124 @@ -20420,7 +16638,7 @@ 2 3 - 4845 + 624 @@ -20436,7 +16654,7 @@ 3 4 - 4845 + 624 @@ -20446,23 +16664,23 @@ derivedtypes - 8224885 + 3033684 id - 8224885 + 3033684 name - 6556068 + 1461902 kind - 5814 + 749 type_id - 3912320 + 1948495 @@ -20476,7 +16694,7 @@ 1 2 - 8224885 + 3033684 @@ -20492,7 +16710,7 @@ 1 2 - 8224885 + 3033684 @@ -20508,7 +16726,7 @@ 1 2 - 8224885 + 3033684 @@ -20524,12 +16742,17 @@ 1 2 - 6495982 + 1345279 2 - 523 - 60085 + 28 + 110004 + + + 29 + 4302 + 6617 @@ -20545,7 +16768,7 @@ 1 2 - 6556068 + 1461902 @@ -20561,12 +16784,17 @@ 1 2 - 6496951 + 1345404 2 - 523 - 59116 + 28 + 109879 + + + 29 + 4302 + 6617 @@ -20580,34 +16808,34 @@ 12 - 522 - 523 - 969 + 724 + 725 + 124 - 579 - 580 - 969 + 2333 + 2334 + 124 - 1355 - 1356 - 969 + 3627 + 3628 + 124 - 1566 - 1567 - 969 + 4301 + 4302 + 124 - 1713 - 1714 - 969 + 5557 + 5558 + 124 - 2752 - 2753 - 969 + 7754 + 7755 + 124 @@ -20623,32 +16851,32 @@ 1 2 - 969 + 124 - 546 - 547 - 969 + 671 + 672 + 124 - 1094 - 1095 - 969 + 1613 + 1614 + 124 - 1346 - 1347 - 969 + 2429 + 2430 + 124 - 1520 - 1521 - 969 + 2654 + 2655 + 124 - 2258 - 2259 - 969 + 4340 + 4341 + 124 @@ -20662,34 +16890,34 @@ 12 - 164 - 165 - 969 + 207 + 208 + 124 - 522 - 523 - 969 + 2333 + 2334 + 124 - 1355 - 1356 - 969 + 3623 + 3624 + 124 - 1562 - 1563 - 969 + 4301 + 4302 + 124 - 1650 - 1651 - 969 + 5492 + 5493 + 124 - 2752 - 2753 - 969 + 7754 + 7755 + 124 @@ -20705,27 +16933,22 @@ 1 2 - 2377240 + 1318683 2 3 - 172502 + 376213 3 4 - 380862 + 123365 4 - 5 - 917752 - - - 5 - 124 - 63961 + 137 + 130232 @@ -20741,27 +16964,22 @@ 1 2 - 2388870 + 1320182 2 3 - 172502 + 376213 3 4 - 369233 + 121866 4 - 5 - 917752 - - - 5 - 124 - 63961 + 137 + 130232 @@ -20777,27 +16995,22 @@ 1 2 - 2393715 + 1320556 2 3 - 185101 + 376838 3 4 - 380862 + 123614 4 - 5 - 911937 - - - 5 6 - 40702 + 127485 @@ -20807,19 +17020,19 @@ pointerishsize - 6003672 + 2249416 id - 6003672 + 2249416 size - 1938 + 249 alignment - 1938 + 249 @@ -20833,7 +17046,7 @@ 1 2 - 6003672 + 2249416 @@ -20849,7 +17062,7 @@ 1 2 - 6003672 + 2249416 @@ -20865,12 +17078,12 @@ 3 4 - 969 + 124 - 6192 - 6193 - 969 + 18012 + 18013 + 124 @@ -20886,7 +17099,7 @@ 1 2 - 1938 + 249 @@ -20902,12 +17115,12 @@ 3 4 - 969 + 124 - 6192 - 6193 - 969 + 18012 + 18013 + 124 @@ -20923,7 +17136,7 @@ 1 2 - 1938 + 249 @@ -20933,23 +17146,23 @@ arraysizes - 521384 + 80661 id - 521384 + 80661 num_elements - 124046 + 17855 bytesize - 136645 + 20227 alignment - 4845 + 624 @@ -20963,7 +17176,7 @@ 1 2 - 521384 + 80661 @@ -20979,7 +17192,7 @@ 1 2 - 521384 + 80661 @@ -20995,7 +17208,7 @@ 1 2 - 521384 + 80661 @@ -21011,37 +17224,37 @@ 1 2 - 3876 + 249 2 3 - 84313 + 10863 3 4 - 3876 + 249 4 5 - 11629 + 3496 5 9 - 9691 + 1498 - 10 - 34 - 9691 + 9 + 42 + 1373 - 65 - 66 - 969 + 56 + 57 + 124 @@ -21057,22 +17270,22 @@ 1 2 - 95942 + 11737 2 3 - 13567 + 3995 3 - 6 - 10660 + 5 + 998 - 6 - 13 - 3876 + 5 + 11 + 1123 @@ -21088,22 +17301,22 @@ 1 2 - 95942 + 11737 2 3 - 12598 + 3995 3 4 - 7752 + 749 4 6 - 7752 + 1373 @@ -21119,37 +17332,37 @@ 1 2 - 5814 + 624 2 3 - 93035 + 12736 3 4 - 2907 + 499 4 5 - 11629 + 2746 5 - 9 - 11629 + 7 + 1498 - 9 - 21 - 10660 + 7 + 17 + 1623 - 32 - 33 - 969 + 24 + 45 + 499 @@ -21165,22 +17378,22 @@ 1 2 - 109510 + 14609 2 3 - 11629 + 3621 3 - 5 - 10660 + 6 + 1872 - 5 + 6 7 - 4845 + 124 @@ -21196,17 +17409,22 @@ 1 2 - 111448 + 14858 2 3 - 12598 + 3371 3 + 5 + 1623 + + + 5 6 - 12598 + 374 @@ -21220,29 +17438,29 @@ 12 - 8 - 9 - 969 + 10 + 11 + 124 - 54 - 55 - 969 + 86 + 87 + 124 - 78 - 79 - 969 + 91 + 92 + 124 - 87 - 88 - 969 + 121 + 122 + 124 - 311 - 312 - 969 + 338 + 339 + 124 @@ -21258,27 +17476,22 @@ 4 5 - 969 - - - 13 - 14 - 969 + 124 - 20 - 21 - 969 + 16 + 17 + 249 - 21 - 22 - 969 + 48 + 49 + 124 - 126 - 127 - 969 + 139 + 140 + 124 @@ -21294,22 +17507,27 @@ 4 5 - 969 + 124 19 20 - 969 + 124 - 21 - 22 - 1938 + 20 + 21 + 124 - 126 - 127 - 969 + 48 + 49 + 124 + + + 140 + 141 + 124 @@ -21367,15 +17585,15 @@ typedefbase - 3557623 + 1762387 id - 3557623 + 1762387 type_id - 2754226 + 838075 @@ -21389,7 +17607,7 @@ 1 2 - 3557623 + 1762387 @@ -21405,17 +17623,22 @@ 1 2 - 2414067 + 662611 2 3 - 197699 + 80934 3 - 27 - 142460 + 6 + 64160 + + + 6 + 4526 + 30368 @@ -21425,7 +17648,7 @@ decltypes - 814476 + 814475 id @@ -21433,7 +17656,7 @@ expr - 814476 + 814475 kind @@ -21563,7 +17786,7 @@ 1 2 - 814476 + 814475 @@ -21579,7 +17802,7 @@ 1 2 - 814476 + 814475 @@ -21595,7 +17818,7 @@ 1 2 - 814476 + 814475 @@ -21611,7 +17834,7 @@ 1 2 - 814476 + 814475 @@ -21873,23 +18096,23 @@ type_operators - 21466 + 7961 id - 21466 + 7961 arg_type - 21030 + 7186 kind - 241 + 86 base_type - 17627 + 5250 @@ -21903,7 +18126,7 @@ 1 2 - 21466 + 7961 @@ -21919,7 +18142,7 @@ 1 2 - 21466 + 7961 @@ -21935,7 +18158,7 @@ 1 2 - 21466 + 7961 @@ -21951,12 +18174,12 @@ 1 2 - 20611 + 6412 2 - 4 - 419 + 3 + 774 @@ -21972,12 +18195,12 @@ 1 2 - 20611 + 6412 2 - 4 - 419 + 3 + 774 @@ -21993,12 +18216,12 @@ 1 2 - 20917 + 7165 2 3 - 112 + 21 @@ -22012,69 +18235,24 @@ 12 - 3 - 4 - 16 - - - 4 - 5 - 16 - - - 5 - 6 - 16 + 1 + 2 + 21 7 8 - 16 - - - 9 - 10 - 16 - - - 10 - 11 - 16 - - - 12 - 13 - 32 - - - 16 - 17 - 16 - - - 30 - 31 - 32 - - - 63 - 64 - 16 - - - 108 - 109 - 16 + 21 - 167 - 168 - 16 + 96 + 97 + 21 - 855 - 856 - 16 + 266 + 267 + 21 @@ -22088,69 +18266,24 @@ 12 - 3 - 4 - 16 - - - 4 - 5 - 16 - - - 5 - 6 - 16 + 1 + 2 + 21 7 8 - 16 - - - 9 - 10 - 16 - - - 10 - 11 - 16 - - - 12 - 13 - 32 - - - 16 - 17 - 16 - - - 30 - 31 - 32 - - - 63 - 64 - 16 - - - 108 - 109 - 16 + 21 - 167 - 168 - 16 + 96 + 97 + 21 - 855 - 856 - 16 + 266 + 267 + 21 @@ -22164,69 +18297,24 @@ 12 - 3 - 4 - 16 + 1 + 2 + 21 4 5 - 32 - - - 5 - 6 - 16 - - - 7 - 8 - 16 - - - 9 - 10 - 16 - - - 10 - 11 - 16 - - - 12 - 13 - 16 - - - 16 - 17 - 16 - - - 30 - 31 - 32 - - - 63 - 64 - 16 - - - 108 - 109 - 16 + 21 - 159 - 160 - 16 + 72 + 73 + 21 - 715 - 716 - 16 + 222 + 223 + 21 @@ -22242,17 +18330,22 @@ 1 2 - 14660 + 3636 2 3 - 2370 + 903 3 - 13 - 596 + 4 + 344 + + + 4 + 6 + 365 @@ -22268,17 +18361,22 @@ 1 2 - 14805 + 3787 2 3 - 2322 + 989 3 - 13 - 499 + 4 + 451 + + + 4 + 5 + 21 @@ -22294,12 +18392,17 @@ 1 2 - 16434 + 4088 2 - 6 - 1193 + 3 + 1140 + + + 3 + 4 + 21 @@ -22309,19 +18412,19 @@ usertypes - 6052127 + 4151872 id - 6052127 + 4151872 name - 4651755 + 918586 kind - 11629 + 126 @@ -22335,7 +18438,7 @@ 1 2 - 6052127 + 4151872 @@ -22351,7 +18454,7 @@ 1 2 - 6052127 + 4151872 @@ -22367,12 +18470,22 @@ 1 2 - 4397847 + 654298 2 - 279 - 253908 + 3 + 158678 + + + 3 + 8 + 70571 + + + 8 + 32669 + 35037 @@ -22388,12 +18501,12 @@ 1 2 - 4468592 + 866838 2 - 4 - 183162 + 10 + 51748 @@ -22407,64 +18520,64 @@ 12 - 1 - 2 - 969 + 28 + 29 + 10 - 2 - 3 - 969 + 64 + 65 + 10 - 3 - 4 - 969 + 579 + 580 + 10 - 7 - 8 - 969 + 1052 + 1053 + 10 - 19 - 20 - 969 + 1595 + 1596 + 10 - 62 - 63 - 969 + 1874 + 1875 + 10 - 148 - 149 - 969 + 4586 + 4587 + 10 - 164 - 165 - 969 + 20079 + 20080 + 10 - 257 - 258 - 969 + 21491 + 21492 + 10 - 606 - 607 - 969 + 82092 + 82093 + 10 - 1305 - 1306 - 969 + 92771 + 92772 + 10 - 3671 - 3672 - 969 + 166844 + 166845 + 10 @@ -22478,59 +18591,64 @@ 12 - 1 - 2 - 969 + 19 + 20 + 10 - 2 - 3 - 1938 + 47 + 48 + 10 - 3 - 4 - 969 + 50 + 51 + 10 - 9 - 10 - 969 + 153 + 154 + 10 - 23 - 24 - 969 + 417 + 418 + 10 - 46 - 47 - 969 + 771 + 772 + 10 - 53 - 54 - 969 + 1565 + 1566 + 10 - 153 - 154 - 969 + 3066 + 3067 + 10 + + + 5589 + 5590 + 10 - 209 - 210 - 969 + 10903 + 10904 + 10 - 1173 - 1174 - 969 + 12189 + 12190 + 10 - 3319 - 3320 - 969 + 57608 + 57609 + 10 @@ -22540,19 +18658,19 @@ usertypesize - 1867486 + 1363894 id - 1867486 + 1363894 size - 102726 + 1478 alignment - 4845 + 84 @@ -22566,7 +18684,7 @@ 1 2 - 1867486 + 1363894 @@ -22582,7 +18700,7 @@ 1 2 - 1867486 + 1363894 @@ -22598,37 +18716,52 @@ 1 2 - 47486 + 464 2 3 - 14536 + 190 3 4 - 8722 + 95 4 - 7 - 8722 + 6 + 95 - 7 + 6 + 9 + 116 + + + 9 19 - 8722 + 116 19 - 54 - 7752 + 30 + 116 - 64 - 459 - 6783 + 30 + 115 + 116 + + + 118 + 1735 + 116 + + + 1839 + 99774 + 52 @@ -22644,22 +18777,17 @@ 1 2 - 72683 + 1204 2 3 - 21320 + 179 3 - 5 - 7752 - - - 5 6 - 969 + 95 @@ -22673,29 +18801,44 @@ 12 - 11 - 12 - 969 + 1 + 2 + 10 - 72 - 73 - 969 + 3 + 4 + 10 - 480 - 481 - 969 + 7 + 8 + 10 + + + 54 + 55 + 10 + + + 56 + 57 + 10 - 492 - 493 - 969 + 2080 + 2081 + 10 - 872 - 873 - 969 + 11949 + 11950 + 10 + + + 114969 + 114970 + 10 @@ -22709,29 +18852,39 @@ 12 - 7 - 8 - 969 + 1 + 2 + 21 - 15 - 16 - 969 + 3 + 4 + 10 - 18 - 19 - 969 + 11 + 12 + 10 - 41 - 42 - 969 + 12 + 13 + 10 - 69 - 70 - 969 + 17 + 18 + 10 + + + 27 + 28 + 10 + + + 111 + 112 + 10 @@ -22741,11 +18894,11 @@ usertype_final - 14321 + 11487 id - 14321 + 11487 @@ -22805,15 +18958,15 @@ usertype_alias_kind - 3557623 + 1762387 id - 3557623 + 1762387 alias_kind - 1938 + 21 @@ -22827,7 +18980,7 @@ 1 2 - 3557623 + 1762387 @@ -22841,14 +18994,14 @@ 12 - 394 - 395 - 969 + 36900 + 36901 + 10 - 3277 - 3278 - 969 + 129944 + 129945 + 10 @@ -22858,18 +19011,18 @@ nontype_template_parameters - 1345749 + 766283 id - 1345749 + 766283 type_template_type_constraint - 27153 + 27154 id @@ -22877,7 +19030,7 @@ constraint - 26013 + 26014 @@ -22942,19 +19095,19 @@ mangled_name - 13577311 + 7859535 id - 13577311 + 7859535 mangled_name - 12739995 + 6370038 is_complete - 969 + 249 @@ -22968,7 +19121,7 @@ 1 2 - 13577311 + 7859535 @@ -22984,7 +19137,7 @@ 1 2 - 13577311 + 7859535 @@ -23000,12 +19153,12 @@ 1 2 - 12475426 + 6041647 2 - 279 - 264568 + 1120 + 328391 @@ -23021,7 +19174,7 @@ 1 2 - 12739995 + 6370038 @@ -23035,9 +19188,14 @@ 12 - 14010 - 14011 - 969 + 6 + 7 + 124 + + + 62939 + 62940 + 124 @@ -23051,9 +19209,14 @@ 12 - 13146 - 13147 - 969 + 6 + 7 + 124 + + + 51010 + 51011 + 124 @@ -23063,59 +19226,59 @@ is_pod_class - 1298615 + 593757 id - 1298615 + 593757 is_standard_layout_class - 1697051 + 1124482 id - 1697051 + 1124482 is_complete - 1816582 + 1346370 id - 1816582 + 1346370 is_class_template - 264958 + 232187 id - 264958 + 232187 class_instantiation - 2192614 + 1126140 to - 2192280 + 1123098 from - 10212 + 71807 @@ -23129,12 +19292,12 @@ 1 2 - 2192042 + 1120964 2 - 4 - 238 + 8 + 2133 @@ -23150,57 +19313,47 @@ 1 2 - 2260 + 20492 2 3 - 1667 + 12886 3 4 - 714 + 7108 4 5 - 597 + 4658 5 7 - 853 + 6073 7 - 12 - 783 - - - 12 - 24 - 809 - - - 24 - 55 - 775 + 10 + 5725 - 55 - 136 - 770 + 10 + 17 + 5904 - 138 - 2697 - 779 + 17 + 51 + 5397 - 2697 - 40686 - 199 + 51 + 4223 + 3559 @@ -23210,19 +19363,19 @@ class_template_argument - 4874957 + 2898837 type_id - 2400642 + 1367190 index - 446 + 1183 arg_type - 663608 + 822145 @@ -23236,27 +19389,27 @@ 1 2 - 976327 + 579395 2 3 - 686449 + 410312 3 4 - 546554 + 251063 4 - 6 - 183702 + 7 + 103106 - 6 - 104 - 7609 + 7 + 113 + 23312 @@ -23272,22 +19425,22 @@ 1 2 - 1061385 + 607937 2 3 - 622478 + 424319 3 4 - 578009 + 251897 4 - 89 - 138769 + 113 + 83036 @@ -23301,49 +19454,39 @@ 12 - 30 - 31 - 51 - - - 38 - 39 - 77 - - - 46 - 47 - 77 + 2 + 3 + 10 - 54 - 55 - 64 + 4 + 5 + 749 - 60 - 107 - 38 + 5 + 30 + 95 - 112 - 183 - 38 + 33 + 90 + 95 - 230 - 390 - 34 + 95 + 453 + 95 - 418 - 1490 - 34 + 643 + 7128 + 95 - 1757 - 554312 - 25 + 11968 + 129429 + 42 @@ -23357,54 +19500,39 @@ 12 - 30 - 31 - 51 + 2 + 3 + 10 - 38 - 39 - 77 + 4 + 5 + 749 - 39 - 45 - 12 + 5 + 16 + 105 - 46 - 47 + 16 + 35 95 - 47 - 54 - 21 - - - 54 - 55 - 64 - - - 55 - 104 - 34 - - - 106 - 356 - 34 + 37 + 155 + 95 - 367 - 1288 - 34 + 196 + 3263 + 95 - 7294 - 108536 - 17 + 10413 + 44533 + 31 @@ -23420,27 +19548,27 @@ 1 2 - 475363 + 513746 2 3 - 45850 + 167657 3 - 7 - 59952 + 5 + 75092 - 7 - 20 - 50259 + 5 + 47 + 61741 - 20 - 78713 - 32182 + 47 + 12618 + 3908 @@ -23456,17 +19584,17 @@ 1 2 - 523709 + 723856 2 3 - 92689 + 79920 3 - 36 - 47210 + 22 + 18369 @@ -23476,19 +19604,19 @@ class_template_argument_value - 1488982 + 510083 type_id - 929638 + 205811 index - 51 + 306 arg_value - 1394094 + 509947 @@ -23502,22 +19630,17 @@ 1 2 - 660327 + 155798 2 3 - 105219 + 43370 3 - 4 - 154027 - - - 4 - 14 - 10064 + 8 + 6643 @@ -23533,22 +19656,22 @@ 1 2 - 655572 + 147928 2 3 - 105690 + 40474 3 - 4 - 154049 + 45 + 15535 - 4 - 313 - 14325 + 45 + 154 + 1873 @@ -23562,69 +19685,49 @@ 12 - 15 - 16 - 3 - - - 16 - 17 - 7 - - - 100 - 101 - 3 - - - 162 - 163 - 3 - - - 242 - 243 - 3 + 2 + 3 + 34 - 358 - 359 - 3 + 20 + 21 + 34 - 504 - 505 - 3 + 49 + 50 + 34 - 1520 - 1521 - 3 + 84 + 85 + 34 - 3113 - 3114 - 3 + 105 + 106 + 34 - 47424 - 47425 - 3 + 278 + 279 + 34 - 63499 - 63500 - 3 + 981 + 982 + 34 - 121527 - 121528 - 3 + 2471 + 2472 + 34 - 138888 - 138889 - 3 + 3753 + 3754 + 34 @@ -23638,69 +19741,49 @@ 12 - 20 - 21 - 3 - - - 26 - 27 - 7 - - - 185 - 186 - 3 - - - 302 - 303 - 3 - - - 555 - 556 - 3 + 3 + 4 + 34 - 787 - 788 - 3 + 74 + 75 + 34 - 1062 - 1063 - 3 + 105 + 106 + 34 - 2391 - 2392 - 3 + 273 + 274 + 34 - 4694 - 4695 - 3 + 336 + 337 + 34 - 47910 - 47911 - 3 + 892 + 893 + 34 - 66111 - 66112 - 3 + 2433 + 2434 + 34 - 123253 - 123254 - 3 + 4801 + 4802 + 34 - 134221 - 134222 - 3 + 6051 + 6052 + 34 @@ -23716,12 +19799,12 @@ 1 2 - 1306054 + 509811 2 - 5 - 88039 + 3 + 136 @@ -23737,12 +19820,7 @@ 1 2 - 1393907 - - - 2 - 5 - 186 + 509947 @@ -23752,15 +19830,15 @@ is_proxy_class_for - 48455 + 48442 id - 48455 + 48442 templ_param_id - 45782 + 45769 @@ -23774,7 +19852,7 @@ 1 2 - 48455 + 48442 @@ -23790,7 +19868,7 @@ 1 2 - 45063 + 45051 2 @@ -23805,23 +19883,23 @@ type_mentions - 19988012 + 5902896 id - 19988012 + 5902896 type_id - 1262757 + 276673 location - 19988012 + 5846581 kind - 1938 + 54 @@ -23835,7 +19913,7 @@ 1 2 - 19988012 + 5902896 @@ -23851,7 +19929,7 @@ 1 2 - 19988012 + 5902896 @@ -23867,7 +19945,7 @@ 1 2 - 19988012 + 5902896 @@ -23883,32 +19961,42 @@ 1 2 - 667720 + 136593 2 3 - 220958 + 31153 3 + 4 + 11273 + + + 4 5 - 116293 + 14922 5 - 11 - 101757 + 7 + 19988 - 11 - 44 - 94973 + 7 + 12 + 21785 - 45 - 3662 - 61054 + 12 + 28 + 21077 + + + 28 + 8940 + 19879 @@ -23924,32 +20012,42 @@ 1 2 - 667720 + 136593 2 3 - 220958 + 31153 3 + 4 + 11273 + + + 4 5 - 116293 + 14922 5 - 11 - 101757 + 7 + 19988 - 11 - 44 - 94973 + 7 + 12 + 21785 - 45 - 3662 - 61054 + 12 + 28 + 21077 + + + 28 + 8940 + 19879 @@ -23965,12 +20063,7 @@ 1 2 - 1259850 - - - 2 - 3 - 2907 + 276673 @@ -23986,7 +20079,12 @@ 1 2 - 19988012 + 5800886 + + + 2 + 4 + 45694 @@ -24002,7 +20100,12 @@ 1 2 - 19988012 + 5800886 + + + 2 + 4 + 45694 @@ -24018,7 +20121,7 @@ 1 2 - 19988012 + 5846581 @@ -24032,14 +20135,9 @@ 12 - 10 - 11 - 969 - - - 20615 - 20616 - 969 + 108383 + 108384 + 54 @@ -24053,14 +20151,9 @@ 12 - 3 - 4 - 969 - - - 1303 - 1304 - 969 + 5080 + 5081 + 54 @@ -24074,14 +20167,9 @@ 12 - 10 - 11 - 969 - - - 20615 - 20616 - 969 + 107349 + 107350 + 54 @@ -24091,26 +20179,26 @@ is_function_template - 2373374 + 1332543 id - 2373374 + 1332543 function_instantiation - 1087747 + 973628 to - 1087747 + 973628 from - 181540 + 182644 @@ -24124,7 +20212,7 @@ 1 2 - 1087747 + 973628 @@ -24140,22 +20228,27 @@ 1 2 - 143026 + 110588 2 3 - 20398 + 42790 3 - 15 - 13707 + 9 + 14377 - 15 - 13978 - 4408 + 9 + 104 + 13729 + + + 119 + 1532 + 1158 @@ -24165,19 +20258,19 @@ function_template_argument - 4582754 + 2484800 function_id - 1968725 + 1453288 index - 441 + 476 arg_type - 378486 + 298003 @@ -24191,27 +20284,22 @@ 1 2 - 595467 + 783011 2 3 - 683565 + 413156 3 4 - 409482 + 171810 4 - 5 - 171411 - - - 5 - 103 - 108799 + 15 + 85309 @@ -24227,27 +20315,22 @@ 1 2 - 607506 + 802158 2 3 - 680737 + 411248 3 4 - 419222 + 169630 4 - 5 - 173494 - - - 5 - 60 - 87764 + 9 + 70250 @@ -24261,53 +20344,53 @@ 12 - 5 - 6 - 51 + 1 + 2 + 170 - 9 - 10 - 77 + 7 + 8 + 34 - 13 - 14 - 12 + 45 + 46 + 34 - 18 - 19 - 64 + 77 + 78 + 34 - 22 - 23 - 64 + 138 + 139 + 34 - 25 - 406 + 280 + 281 34 - 529 - 650 - 30 + 2504 + 2505 + 34 - 661 - 788 + 7547 + 7548 34 - 799 - 1542 + 19674 + 19675 34 - 2040 - 454582 + 42657 + 42658 34 @@ -24322,74 +20405,54 @@ 12 - 2 - 3 - 25 - - - 3 - 4 - 25 + 1 + 2 + 170 4 5 - 17 - - - 5 - 6 - 47 - - - 6 - 9 - 30 - - - 9 - 10 - 25 + 34 - 10 - 11 - 30 + 17 + 18 + 34 - 11 - 12 - 38 + 27 + 28 + 34 - 12 - 14 - 38 + 52 + 53 + 34 - 24 - 39 + 112 + 113 34 - 40 - 52 + 315 + 316 34 - 52 - 77 + 972 + 973 34 - 83 - 791 + 2754 + 2755 34 - 1290 - 49710 - 21 + 6081 + 6082 + 34 @@ -24405,27 +20468,37 @@ 1 2 - 271124 + 174774 2 3 - 26881 + 26335 3 - 5 - 30290 + 4 + 19998 - 5 + 4 + 6 + 22655 + + + 6 11 - 32044 + 23235 11 - 102410 - 18146 + 76 + 23371 + + + 79 + 2452 + 7631 @@ -24441,17 +20514,17 @@ 1 2 - 329933 + 256813 2 3 - 30324 + 32127 3 - 35 - 18228 + 15 + 9062 @@ -24461,19 +20534,19 @@ function_template_argument_value - 1219038 + 452779 function_id - 878373 + 196783 index - 51 + 476 arg_value - 1107321 + 450087 @@ -24487,17 +20560,17 @@ 1 2 - 614094 + 151403 2 3 - 263862 + 42893 3 - 14 - 416 + 8 + 2487 @@ -24513,17 +20586,22 @@ 1 2 - 610202 + 144487 2 3 - 263833 + 36692 3 - 209 - 4337 + 54 + 14854 + + + 54 + 113 + 749 @@ -24537,54 +20615,54 @@ 12 - 3 - 4 - 18 + 1 + 2 + 170 - 4 - 5 - 3 + 2 + 3 + 34 - 13 - 14 - 3 + 3 + 4 + 34 - 18 - 19 - 3 + 4 + 5 + 34 - 44 - 45 - 3 + 15 + 16 + 34 - 116 - 117 - 3 + 27 + 28 + 34 - 6765 - 6766 - 3 + 1345 + 1346 + 34 - 10035 - 10036 - 3 + 1388 + 1389 + 34 - 90635 - 90636 - 3 + 1850 + 1851 + 34 - 205204 - 205205 - 3 + 2547 + 2548 + 34 @@ -24598,54 +20676,54 @@ 12 - 5 - 6 - 18 + 1 + 2 + 170 - 6 - 7 - 3 + 2 + 3 + 34 - 19 - 20 - 3 + 3 + 4 + 34 - 22 - 23 - 3 + 4 + 5 + 34 - 64 - 65 - 3 + 51 + 52 + 34 - 234 - 235 - 3 + 63 + 64 + 34 - 7866 - 7867 - 3 + 1906 + 1907 + 34 - 12284 - 12285 - 3 + 3295 + 3296 + 34 - 87096 - 87097 - 3 + 3702 + 3703 + 34 - 195391 - 195392 - 3 + 4180 + 4181 + 34 @@ -24661,17 +20739,12 @@ 1 2 - 1007971 + 447396 2 3 - 87655 - - - 3 - 5 - 11694 + 2691 @@ -24687,12 +20760,7 @@ 1 2 - 1107318 - - - 2 - 3 - 3 + 450087 @@ -24702,11 +20770,11 @@ is_variable_template - 110479 + 58685 id - 110479 + 58685 @@ -24796,19 +20864,19 @@ variable_template_argument - 779492 + 769159 variable_id - 401670 + 401311 index - 58 + 1997 arg_type - 109675 + 256344 @@ -24822,17 +20890,22 @@ 1 2 - 28298 + 156703 2 3 - 370022 + 189917 3 - 10 - 3349 + 4 + 36460 + + + 4 + 17 + 18230 @@ -24848,17 +20921,22 @@ 1 2 - 29995 + 171562 2 3 - 369899 + 180178 3 - 9 - 1775 + 4 + 33713 + + + 4 + 17 + 15857 @@ -24872,44 +20950,44 @@ 12 - 7 - 8 - 6 + 28 + 29 + 874 - 8 - 9 - 12 + 34 + 35 + 374 - 9 - 10 - 6 + 37 + 38 + 124 - 32 - 33 - 6 + 66 + 67 + 124 - 106 - 107 - 6 + 146 + 147 + 124 - 517 - 518 - 6 + 438 + 439 + 124 - 57632 - 57633 - 6 + 1959 + 1960 + 124 - 62000 - 62001 - 6 + 3214 + 3215 + 124 @@ -24925,42 +21003,42 @@ 1 2 - 6 + 874 2 3 - 12 + 374 - 3 - 4 - 6 + 5 + 6 + 124 - 8 - 9 - 6 + 28 + 29 + 124 - 51 - 52 - 6 + 54 + 55 + 124 - 193 - 194 - 6 + 161 + 162 + 124 - 1557 - 1558 - 6 + 745 + 746 + 124 - 15672 - 15673 - 6 + 1325 + 1326 + 124 @@ -24976,37 +21054,22 @@ 1 2 - 58157 + 175558 2 3 - 21016 + 44701 3 - 5 - 9491 - - - 5 6 - 3051 + 21601 6 - 7 - 9218 - - - 7 - 50 - 8227 - - - 50 - 1375 - 511 + 206 + 14484 @@ -25022,12 +21085,17 @@ 1 2 - 106325 + 228000 2 - 10 - 3349 + 3 + 24722 + + + 3 + 7 + 3621 @@ -25198,15 +21266,15 @@ template_template_instantiation - 12896 + 6368 to - 8387 + 4994 from - 75 + 1123 @@ -25220,12 +21288,12 @@ 1 2 - 3878 + 3621 2 3 - 4508 + 1373 @@ -25241,22 +21309,22 @@ 1 2 - 52 + 749 2 3 - 7 + 124 - 830 - 831 - 7 + 16 + 17 + 124 - 880 - 881 - 7 + 27 + 28 + 124 @@ -25266,11 +21334,11 @@ template_template_argument - 9678 + 9675 type_id - 6117 + 6116 index @@ -25278,7 +21346,7 @@ arg_type - 9086 + 9084 @@ -25292,7 +21360,7 @@ 1 2 - 5018 + 5017 2 @@ -25323,7 +21391,7 @@ 1 2 - 5039 + 5038 2 @@ -25476,7 +21544,7 @@ 1 2 - 9055 + 9052 3 @@ -25497,7 +21565,7 @@ 1 2 - 9065 + 9063 2 @@ -25764,11 +21832,11 @@ concept_instantiation - 90434 + 90437 to - 90434 + 90437 from @@ -25786,7 +21854,7 @@ 1 2 - 90434 + 90437 @@ -25882,22 +21950,22 @@ is_type_constraint - 36900 + 36902 concept_id - 36900 + 36902 concept_template_argument - 113047 + 113051 concept_id - 76383 + 76386 index @@ -25905,7 +21973,7 @@ arg_type - 21430 + 21431 @@ -25919,12 +21987,12 @@ 1 2 - 46475 + 46477 2 3 - 24679 + 24680 3 @@ -25945,7 +22013,7 @@ 1 2 - 50090 + 50092 2 @@ -26104,7 +22172,7 @@ 1 2 - 18030 + 18031 2 @@ -26124,19 +22192,19 @@ concept_template_argument_value - 112 + 106 concept_id - 112 + 83 index - 32 + 15 arg_value - 112 + 106 @@ -26150,7 +22218,7 @@ 1 2 - 112 + 83 @@ -26166,7 +22234,12 @@ 1 2 - 112 + 60 + + + 2 + 3 + 22 @@ -26180,14 +22253,14 @@ 12 - 2 - 3 - 16 + 3 + 4 + 7 - 5 - 6 - 16 + 8 + 9 + 7 @@ -26201,14 +22274,14 @@ 12 - 2 - 3 - 16 + 4 + 5 + 7 - 5 - 6 - 16 + 10 + 11 + 7 @@ -26224,7 +22297,7 @@ 1 2 - 112 + 106 @@ -26240,7 +22313,7 @@ 1 2 - 112 + 106 @@ -26250,15 +22323,15 @@ routinetypes - 792462 + 604318 id - 792462 + 604318 return_type - 176968 + 283864 @@ -26272,7 +22345,7 @@ 1 2 - 792462 + 604318 @@ -26288,17 +22361,17 @@ 1 2 - 148650 + 234225 2 3 - 18859 + 35091 3 - 40273 - 9458 + 4676 + 14547 @@ -26674,19 +22747,19 @@ ptrtomembers - 24227 + 9728 id - 24227 + 9728 type_id - 24227 + 7975 class_id - 2907 + 4869 @@ -26700,7 +22773,7 @@ 1 2 - 24227 + 9728 @@ -26716,7 +22789,7 @@ 1 2 - 24227 + 9728 @@ -26732,7 +22805,12 @@ 1 2 - 24227 + 7753 + + + 2 + 84 + 221 @@ -26748,7 +22826,12 @@ 1 2 - 24227 + 7753 + + + 2 + 84 + 221 @@ -26764,12 +22847,22 @@ 1 2 - 969 + 3897 - 12 - 13 - 1938 + 2 + 3 + 528 + + + 8 + 9 + 401 + + + 10 + 65 + 42 @@ -26785,12 +22878,22 @@ 1 2 - 969 + 3897 - 12 - 13 - 1938 + 2 + 3 + 528 + + + 8 + 9 + 401 + + + 10 + 65 + 42 @@ -26800,15 +22903,15 @@ specifiers - 60085 + 7741 id - 60085 + 7741 str - 60085 + 7741 @@ -26822,7 +22925,7 @@ 1 2 - 60085 + 7741 @@ -26838,7 +22941,7 @@ 1 2 - 60085 + 7741 @@ -26848,15 +22951,15 @@ typespecifiers - 2259977 + 854940 type_id - 2226058 + 847448 spec_id - 10660 + 1623 @@ -26870,12 +22973,12 @@ 1 2 - 2192139 + 839957 2 3 - 33919 + 7491 @@ -26891,47 +22994,67 @@ 1 2 - 1938 + 124 2 3 - 1938 + 124 - 23 - 24 - 969 + 16 + 17 + 124 - 26 - 27 - 969 + 17 + 18 + 124 - 30 - 31 - 969 + 24 + 25 + 124 - 71 - 72 - 969 + 44 + 45 + 124 - 260 - 261 - 969 + 49 + 50 + 124 - 265 - 266 - 969 + 51 + 52 + 124 - 1651 - 1652 - 969 + 112 + 113 + 124 + + + 199 + 200 + 124 + + + 325 + 326 + 124 + + + 545 + 546 + 124 + + + 5462 + 5463 + 124 @@ -26941,15 +23064,15 @@ funspecifiers - 16276298 + 9723248 func_id - 7605620 + 4012489 spec_id - 15505 + 2372 @@ -26963,27 +23086,27 @@ 1 2 - 4160413 + 1528454 2 3 - 533013 + 506696 3 4 - 675473 + 1037865 4 5 - 2183417 + 693492 5 - 7 - 53301 + 8 + 245981 @@ -26997,84 +23120,99 @@ 12 - 1 - 2 - 969 + 17 + 18 + 124 - 7 - 8 - 969 + 18 + 19 + 124 - 15 - 16 - 969 + 53 + 54 + 124 - 23 - 24 - 969 + 114 + 115 + 124 - 72 - 73 - 969 + 216 + 217 + 124 - 77 - 78 - 969 + 272 + 273 + 124 - 79 - 80 - 969 + 355 + 356 + 124 - 100 - 101 - 969 + 653 + 654 + 124 - 104 - 105 - 969 + 767 + 768 + 124 - 105 - 106 - 969 + 823 + 824 + 124 - 121 - 122 - 969 + 1095 + 1096 + 124 - 189 - 190 - 969 + 1261 + 1262 + 124 - 2717 - 2718 - 969 + 1663 + 1664 + 124 - 3165 - 3166 - 969 + 3301 + 3302 + 124 - 3668 - 3669 - 969 + 3355 + 3356 + 124 - 6352 - 6353 - 969 + 6170 + 6171 + 124 + + + 15121 + 15122 + 124 + + + 19840 + 19841 + 124 + + + 22777 + 22778 + 124 @@ -27084,15 +23222,15 @@ varspecifiers - 10333681 + 3078135 var_id - 8874192 + 2316967 spec_id - 8722 + 1123 @@ -27106,17 +23244,17 @@ 1 2 - 7525183 + 1659561 2 3 - 1293769 + 554144 - 4 + 3 5 - 55239 + 103262 @@ -27130,49 +23268,49 @@ 12 - 11 - 12 - 969 + 97 + 98 + 124 - 73 - 74 - 969 + 240 + 241 + 124 - 120 - 121 - 969 + 1091 + 1092 + 124 - 127 - 128 - 969 + 1332 + 1333 + 124 - 136 - 137 - 969 + 2238 + 2239 + 124 - 406 - 407 - 969 + 2773 + 2774 + 124 - 959 - 960 - 969 + 3449 + 3450 + 124 - 1244 - 1245 - 969 + 4939 + 4940 + 124 - 7587 - 7588 - 969 + 8493 + 8494 + 124 @@ -27182,15 +23320,15 @@ explicit_specifier_exprs - 123740 + 41329 func_id - 123740 + 41329 constant - 123740 + 41329 @@ -27204,7 +23342,7 @@ 1 2 - 123740 + 41329 @@ -27220,7 +23358,7 @@ 1 2 - 123740 + 41329 @@ -27230,27 +23368,27 @@ attributes - 3690392 + 654409 id - 3690392 + 654409 kind - 1938 + 374 name - 9691 + 2122 name_space - 1938 + 249 location - 3690392 + 648291 @@ -27264,7 +23402,7 @@ 1 2 - 3690392 + 654409 @@ -27280,7 +23418,7 @@ 1 2 - 3690392 + 654409 @@ -27296,7 +23434,7 @@ 1 2 - 3690392 + 654409 @@ -27312,7 +23450,7 @@ 1 2 - 3690392 + 654409 @@ -27326,14 +23464,19 @@ 12 - 81 - 82 - 969 + 7 + 8 + 124 + + + 2406 + 2407 + 124 - 3727 - 3728 - 969 + 2828 + 2829 + 124 @@ -27347,14 +23490,19 @@ 12 - 4 - 5 - 969 + 1 + 2 + 124 - 8 - 9 - 969 + 6 + 7 + 124 + + + 12 + 13 + 124 @@ -27370,12 +23518,12 @@ 1 2 - 969 + 249 2 3 - 969 + 124 @@ -27389,14 +23537,19 @@ 12 - 81 - 82 - 969 + 4 + 5 + 124 - 3727 - 3728 - 969 + 2360 + 2361 + 124 + + + 2828 + 2829 + 124 @@ -27410,44 +23563,74 @@ 12 - 2 - 3 - 1938 + 1 + 2 + 249 3 4 - 969 + 124 + + + 6 + 7 + 124 + + + 7 + 8 + 249 + + + 10 + 11 + 249 14 15 - 1938 + 124 - 20 - 21 - 969 + 18 + 19 + 124 - 54 - 55 - 969 + 24 + 25 + 124 - 67 - 68 - 969 + 59 + 60 + 124 + + + 62 + 63 + 124 72 73 - 969 + 124 - 3560 - 3561 - 969 + 341 + 342 + 124 + + + 1977 + 1978 + 124 + + + 2629 + 2630 + 124 @@ -27463,12 +23646,12 @@ 1 2 - 7752 + 1872 2 3 - 1938 + 249 @@ -27484,7 +23667,7 @@ 1 2 - 9691 + 2122 @@ -27498,44 +23681,79 @@ 12 - 2 - 3 - 1938 + 1 + 2 + 249 3 4 - 969 + 124 + + + 4 + 5 + 124 + + + 6 + 7 + 124 + + + 7 + 8 + 124 + + + 10 + 11 + 249 14 15 - 1938 + 124 - 20 - 21 - 969 + 18 + 19 + 124 - 54 - 55 - 969 + 24 + 25 + 124 - 67 - 68 - 969 + 59 + 60 + 124 + + + 62 + 63 + 124 72 73 - 969 + 124 - 3560 - 3561 - 969 + 336 + 337 + 124 + + + 1977 + 1978 + 124 + + + 2629 + 2630 + 124 @@ -27549,14 +23767,14 @@ 12 - 2 - 3 - 969 + 11 + 12 + 124 - 3806 - 3807 - 969 + 5230 + 5231 + 124 @@ -27572,12 +23790,12 @@ 1 2 - 969 + 124 - 2 - 3 - 969 + 3 + 4 + 124 @@ -27591,14 +23809,14 @@ 12 - 1 - 2 - 969 + 2 + 3 + 124 - 9 - 10 - 969 + 15 + 16 + 124 @@ -27612,14 +23830,14 @@ 12 - 2 - 3 - 969 + 11 + 12 + 124 - 3806 - 3807 - 969 + 5181 + 5182 + 124 @@ -27635,7 +23853,12 @@ 1 2 - 3690392 + 642422 + + + 2 + 5 + 5868 @@ -27651,7 +23874,7 @@ 1 2 - 3690392 + 648291 @@ -27667,7 +23890,12 @@ 1 2 - 3690392 + 643172 + + + 2 + 3 + 5119 @@ -27683,7 +23911,7 @@ 1 2 - 3690392 + 648291 @@ -27693,27 +23921,27 @@ attribute_args - 1436500 + 82562 id - 1436500 + 82562 kind - 64 + 17 attribute - 658874 + 71259 index - 112 + 40 location - 605394 + 57184 @@ -27727,7 +23955,7 @@ 1 2 - 1436500 + 82562 @@ -27743,7 +23971,7 @@ 1 2 - 1436500 + 82562 @@ -27759,7 +23987,7 @@ 1 2 - 1436500 + 82562 @@ -27775,7 +24003,7 @@ 1 2 - 1436500 + 82562 @@ -27789,24 +24017,19 @@ 12 - 2 - 3 - 16 - - - 40 - 41 - 16 + 100 + 101 + 5 - 21308 - 21309 - 16 + 2252 + 2253 + 5 - 67719 - 67720 - 16 + 11914 + 11915 + 5 @@ -27820,24 +24043,19 @@ 12 - 2 - 3 - 16 - - - 40 - 41 - 16 + 100 + 101 + 5 - 19864 - 19865 - 16 + 1892 + 1893 + 5 - 21058 - 21059 - 16 + 10583 + 10584 + 5 @@ -27853,17 +24071,17 @@ 1 2 - 32 + 5 - 3 - 4 - 16 + 4 + 5 + 5 7 8 - 16 + 5 @@ -27877,24 +24095,19 @@ 12 - 2 - 3 - 16 - - - 18 - 19 - 16 + 15 + 16 + 5 - 13313 - 13314 - 16 + 2183 + 2184 + 5 - 24224 - 24225 - 16 + 9330 + 9331 + 5 @@ -27910,27 +24123,17 @@ 1 2 - 350298 + 65790 2 - 3 - 69108 - - - 3 - 4 - 161602 - - - 4 7 - 41335 + 5347 7 - 19 - 36529 + 25 + 121 @@ -27946,12 +24149,12 @@ 1 2 - 657084 + 69743 2 3 - 1790 + 1516 @@ -27967,27 +24170,12 @@ 1 2 - 350911 + 68215 2 - 3 - 69043 - - - 3 - 4 - 161634 - - - 5 - 6 - 40964 - - - 7 8 - 36320 + 3044 @@ -28003,17 +24191,12 @@ 1 2 - 485854 + 68747 2 - 3 - 135216 - - - 3 - 8 - 37803 + 6 + 2511 @@ -28027,29 +24210,39 @@ 12 - 2252 - 2253 - 32 + 2 + 3 + 5 - 4792 - 4793 - 32 + 9 + 10 + 5 - 14842 - 14843 - 16 + 82 + 83 + 5 - 19123 - 19124 - 16 + 83 + 84 + 5 - 41016 - 41017 - 16 + 271 + 272 + 5 + + + 526 + 527 + 5 + + + 13293 + 13294 + 5 @@ -28065,17 +24258,17 @@ 1 2 - 64 + 17 2 3 - 32 + 17 - 4 - 5 - 16 + 3 + 4 + 5 @@ -28089,29 +24282,39 @@ 12 - 2252 - 2253 - 32 + 2 + 3 + 5 - 4792 - 4793 - 32 + 9 + 10 + 5 - 14814 - 14815 - 16 + 82 + 83 + 5 - 19095 - 19096 - 16 + 83 + 84 + 5 - 40853 - 40854 - 16 + 271 + 272 + 5 + + + 526 + 527 + 5 + + + 12313 + 12314 + 5 @@ -28125,34 +24328,39 @@ 12 - 1222 - 1223 - 32 + 2 + 3 + 5 - 3434 - 3435 - 16 + 9 + 10 + 5 - 4342 - 4343 - 16 + 82 + 83 + 5 - 10135 - 10136 - 16 + 83 + 84 + 5 - 14524 - 14525 - 16 + 271 + 272 + 5 - 23710 - 23711 - 16 + 441 + 442 + 5 + + + 9074 + 9075 + 5 @@ -28168,32 +24376,17 @@ 1 2 - 305801 + 41506 2 3 - 151909 + 11858 3 - 4 - 23046 - - - 4 - 5 - 45432 - - - 5 - 7 - 48190 - - - 7 - 41 - 31014 + 25 + 3819 @@ -28209,12 +24402,12 @@ 1 2 - 605072 + 47653 2 3 - 322 + 9531 @@ -28230,17 +24423,17 @@ 1 2 - 394521 + 42861 2 3 - 166617 + 12298 3 - 9 - 44255 + 11 + 2025 @@ -28256,22 +24449,12 @@ 1 2 - 443228 + 56935 2 - 3 - 81042 - - - 3 - 5 - 40819 - - - 5 8 - 40303 + 248 @@ -28281,15 +24464,15 @@ attribute_arg_value - 1092168 + 16693 arg - 1092168 + 16693 value - 7515 + 511 @@ -28303,7 +24486,7 @@ 1 2 - 1092168 + 16693 @@ -28319,47 +24502,52 @@ 1 2 - 1354 + 204 - 2 - 3 - 564 + 5 + 6 + 34 - 3 - 4 - 177 + 6 + 7 + 34 - 4 - 5 - 3064 + 15 + 16 + 34 - 5 - 9 - 596 + 25 + 26 + 34 - 9 - 29 - 580 + 51 + 52 + 34 - 29 - 191 - 564 + 52 + 53 + 34 - 194 - 4608 - 564 + 71 + 72 + 34 - 4792 - 14377 - 48 + 76 + 77 + 34 + + + 183 + 184 + 34 @@ -28369,15 +24557,15 @@ attribute_arg_type - 1290 + 460 arg - 1290 + 460 type_id - 1078 + 84 @@ -28391,7 +24579,7 @@ 1 2 - 1290 + 460 @@ -28407,17 +24595,22 @@ 1 2 - 991 + 72 2 - 4 - 83 + 3 + 4 - 41 - 42 - 2 + 35 + 36 + 4 + + + 60 + 61 + 4 @@ -28427,15 +24620,15 @@ attribute_arg_constant - 422211 + 71909 arg - 422211 + 71909 constant - 422211 + 71909 @@ -28449,7 +24642,7 @@ 1 2 - 422211 + 71909 @@ -28465,7 +24658,7 @@ 1 2 - 422211 + 71909 @@ -28475,15 +24668,15 @@ attribute_arg_expr - 82735 + 1404 arg - 82735 + 1404 expr - 82735 + 1404 @@ -28497,7 +24690,7 @@ 1 2 - 82735 + 1404 @@ -28513,7 +24706,7 @@ 1 2 - 82735 + 1404 @@ -28576,15 +24769,15 @@ typeattributes - 543449 + 96394 type_id - 507351 + 94646 spec_id - 40865 + 32464 @@ -28598,12 +24791,12 @@ 1 2 - 505060 + 92898 2 - 1762 - 2291 + 3 + 1748 @@ -28619,12 +24812,17 @@ 1 2 - 39683 + 27969 2 - 17944 - 1182 + 9 + 2497 + + + 11 + 58 + 1997 @@ -28634,15 +24832,15 @@ funcattributes - 3669072 + 844327 func_id - 3521766 + 799750 spec_id - 3661319 + 617325 @@ -28656,12 +24854,12 @@ 1 2 - 3392874 + 759669 2 - 5 - 128892 + 7 + 40081 @@ -28677,12 +24875,12 @@ 1 2 - 3659381 + 572249 - 5 - 6 - 1938 + 2 + 213 + 45075 @@ -28692,7 +24890,7 @@ varattributes - 537095 + 537096 var_id @@ -28813,15 +25011,15 @@ stmtattributes - 3679 + 2216 stmt_id - 3679 + 2216 spec_id - 3679 + 559 @@ -28835,7 +25033,7 @@ 1 2 - 3679 + 2216 @@ -28851,7 +25049,27 @@ 1 2 - 3679 + 215 + + + 2 + 3 + 150 + + + 3 + 4 + 43 + + + 9 + 10 + 107 + + + 13 + 16 + 43 @@ -28861,15 +25079,15 @@ unspecifiedtype - 14839100 + 7179403 type_id - 14839100 + 7179403 unspecified_type_id - 7567824 + 3965915 @@ -28883,7 +25101,7 @@ 1 2 - 14839100 + 7179403 @@ -28899,22 +25117,22 @@ 1 2 - 3027517 + 2482786 2 3 - 3084695 + 1117778 3 - 4 - 1025324 + 7 + 302918 - 4 - 51 - 430287 + 7 + 537 + 62431 @@ -28924,19 +25142,19 @@ member - 9971231 + 4193417 parent - 1466272 + 543780 index - 81405 + 29717 child - 9971231 + 4188797 @@ -28949,53 +25167,58 @@ 1 + 2 + 129108 + + + 2 3 - 112417 + 83408 3 4 - 161842 + 32464 4 5 - 314962 + 44950 5 6 - 264568 + 42453 6 7 - 126954 + 33962 7 - 8 - 107571 + 9 + 42328 - 8 - 10 - 134707 + 9 + 13 + 41204 - 10 - 14 - 124046 + 13 + 18 + 41329 - 14 - 50 - 112417 + 18 + 42 + 40830 - 51 - 85 - 6783 + 42 + 239 + 11737 @@ -29010,53 +25233,58 @@ 1 + 2 + 128859 + + + 2 3 - 112417 + 83533 3 4 - 161842 + 32214 4 5 - 314962 + 45075 5 6 - 264568 + 42578 6 7 - 126954 + 32839 7 - 8 - 107571 + 9 + 42703 - 8 - 10 - 134707 + 9 + 13 + 41579 - 10 - 14 - 124046 + 13 + 18 + 41454 - 14 - 50 - 112417 + 18 + 42 + 40955 - 51 - 85 - 6783 + 42 + 265 + 11986 @@ -29072,57 +25300,57 @@ 1 2 - 16474 + 6492 2 3 - 6783 + 2622 3 - 5 - 6783 + 8 + 1872 - 5 - 8 - 3876 + 9 + 10 + 2871 10 - 11 - 10660 + 19 + 2247 - 11 - 19 - 6783 + 19 + 26 + 2247 - 20 - 32 - 5814 + 26 + 36 + 2497 - 33 - 72 - 6783 + 36 + 50 + 2247 - 77 - 169 - 6783 + 54 + 141 + 2247 - 208 - 899 - 6783 + 150 + 468 + 2247 - 1226 - 1510 - 3876 + 480 + 4310 + 2122 @@ -29138,57 +25366,57 @@ 1 2 - 16474 + 5493 2 3 - 6783 + 3621 3 - 5 - 6783 + 9 + 1872 - 5 - 8 - 3876 + 9 + 10 + 2871 10 - 11 - 10660 + 20 + 2372 - 11 - 19 - 6783 + 20 + 28 + 2372 - 20 - 32 - 5814 + 28 + 37 + 2372 - 33 - 72 - 6783 + 37 + 56 + 2372 - 77 - 169 - 6783 + 58 + 156 + 2247 - 208 - 899 - 6783 + 163 + 527 + 2247 - 1226 - 1510 - 3876 + 547 + 4330 + 1872 @@ -29204,7 +25432,7 @@ 1 2 - 9971231 + 4188797 @@ -29220,7 +25448,12 @@ 1 2 - 9971231 + 4184177 + + + 2 + 3 + 4619 @@ -29230,15 +25463,15 @@ enclosingfunction - 598242 + 114813 child - 598242 + 114813 parent - 206924 + 71340 @@ -29252,7 +25485,7 @@ 1 2 - 598242 + 114813 @@ -29268,22 +25501,22 @@ 1 2 - 16481 + 49332 2 3 - 2824 + 4633 3 4 - 185131 + 15365 4 - 150 - 2487 + 37 + 2010 @@ -29293,27 +25526,27 @@ derivations - 695371 + 476900 derivation - 695371 + 476900 sub - 666553 + 455164 index - 147 + 238 super - 211263 + 235554 location - 12464 + 35397 @@ -29327,7 +25560,7 @@ 1 2 - 695371 + 476900 @@ -29343,7 +25576,7 @@ 1 2 - 695371 + 476900 @@ -29359,7 +25592,7 @@ 1 2 - 695371 + 476900 @@ -29375,7 +25608,7 @@ 1 2 - 695371 + 476900 @@ -29391,12 +25624,12 @@ 1 2 - 644817 + 438640 2 - 35 - 21736 + 9 + 16523 @@ -29412,12 +25645,12 @@ 1 2 - 646016 + 438640 2 - 35 - 20536 + 8 + 16523 @@ -29433,12 +25666,12 @@ 1 2 - 644812 + 438640 2 - 35 - 21740 + 9 + 16523 @@ -29454,12 +25687,12 @@ 1 2 - 647493 + 438640 2 8 - 19060 + 16523 @@ -29472,45 +25705,30 @@ 12 - - 10 - 11 - 17 - - - 14 - 15 - 25 - - - 18 - 19 - 25 - - - 22 - 23 - 21 - 25 26 - 21 + 102 - 32 - 85 - 12 + 26 + 27 + 34 - 116 - 705 - 12 + 52 + 53 + 34 - 4743 - 154186 - 8 + 485 + 486 + 34 + + + 13360 + 13361 + 34 @@ -29523,45 +25741,25 @@ 12 - - 10 - 11 - 17 - - - 14 - 15 - 25 - - - 18 - 19 - 25 - - - 22 - 23 - 21 - 25 26 - 21 + 136 - 32 - 85 - 12 + 52 + 53 + 34 - 116 - 705 - 12 + 485 + 486 + 34 - 4742 - 153909 - 8 + 13360 + 13361 + 34 @@ -29575,29 +25773,34 @@ 12 - 4 - 5 - 60 + 23 + 24 + 34 - 6 - 7 - 51 + 24 + 25 + 34 - 9 - 41 - 12 + 25 + 26 + 68 - 54 - 514 - 12 + 32 + 33 + 34 - 4029 - 43924 - 8 + 289 + 290 + 34 + + + 6510 + 6511 + 34 @@ -29613,22 +25816,22 @@ 1 2 - 116 + 136 - 2 - 3 - 12 + 7 + 8 + 34 - 4 - 123 - 12 + 65 + 66 + 34 - 2731 - 2732 - 4 + 963 + 964 + 34 @@ -29644,12 +25847,12 @@ 1 2 - 205222 + 225742 2 - 22247 - 6041 + 1655 + 9811 @@ -29665,12 +25868,12 @@ 1 2 - 205222 + 225742 2 - 22247 - 6041 + 1655 + 9811 @@ -29686,12 +25889,12 @@ 1 2 - 211202 + 235111 2 4 - 60 + 442 @@ -29707,12 +25910,12 @@ 1 2 - 209622 + 230205 2 - 150 - 1641 + 81 + 5348 @@ -29728,27 +25931,27 @@ 1 2 - 8375 + 26505 2 - 3 - 1541 + 5 + 3134 - 3 - 6 - 1009 + 5 + 22 + 2759 - 6 - 67 - 935 + 22 + 383 + 2691 - 71 - 17944 - 601 + 388 + 928 + 306 @@ -29764,27 +25967,27 @@ 1 2 - 8947 + 26505 2 - 3 - 1052 + 5 + 3134 - 3 - 6 - 948 + 5 + 22 + 2759 - 6 - 74 - 935 + 22 + 383 + 2691 - 75 - 17944 - 580 + 388 + 928 + 306 @@ -29800,12 +26003,7 @@ 1 2 - 12451 - - - 3 - 35 - 12 + 35397 @@ -29821,22 +26019,22 @@ 1 2 - 9055 + 28720 2 - 3 - 1658 + 4 + 2623 - 3 - 7 - 952 + 4 + 26 + 2827 - 7 - 6412 - 796 + 26 + 928 + 1226 @@ -29846,15 +26044,15 @@ derspecifiers - 695037 + 478671 der_id - 694972 + 476457 spec_id - 17 + 136 @@ -29868,12 +26066,12 @@ 1 2 - 694907 + 474242 2 3 - 64 + 2214 @@ -29887,24 +26085,24 @@ 12 - 15 - 16 - 4 + 65 + 66 + 34 - 76 - 77 - 4 + 92 + 93 + 34 - 12310 - 12311 - 4 + 1104 + 1105 + 34 - 148084 - 148085 - 4 + 12789 + 12790 + 34 @@ -29914,15 +26112,15 @@ direct_base_offsets - 686536 + 449985 der_id - 686536 + 449985 offset - 285 + 511 @@ -29936,7 +26134,7 @@ 1 2 - 686536 + 449985 @@ -29951,48 +26149,43 @@ 1 - 4 - 25 - - - 5 - 6 - 112 + 2 + 102 - 6 - 10 - 21 + 2 + 3 + 136 - 10 - 12 - 12 + 3 + 4 + 102 - 13 - 15 - 25 + 4 + 5 + 34 - 17 - 21 - 21 + 7 + 8 + 34 - 21 - 35 - 21 + 9 + 10 + 34 - 45 - 79 - 21 + 110 + 111 + 34 - 106 - 155547 - 21 + 13058 + 13059 + 34 @@ -30138,23 +26331,23 @@ frienddecls - 11664613 + 700455 id - 11664613 + 700455 type_id - 29008 + 42415 decl_id - 62923 + 77745 location - 3018 + 6098 @@ -30168,7 +26361,7 @@ 1 2 - 11664613 + 700455 @@ -30184,7 +26377,7 @@ 1 2 - 11664613 + 700455 @@ -30200,7 +26393,7 @@ 1 2 - 11664613 + 700455 @@ -30216,67 +26409,47 @@ 1 2 - 3685 + 6166 2 - 8 - 2178 - - - 8 - 22 - 2351 - - - 22 - 41 - 2239 - - - 41 - 69 - 2178 - - - 69 - 99 - 2178 + 3 + 13968 - 99 - 162 - 2178 + 3 + 7 + 3577 - 163 - 232 - 2260 + 7 + 12 + 3440 - 232 - 324 - 2252 + 12 + 20 + 3645 - 327 - 1235 - 2602 + 20 + 32 + 3304 - 1359 - 1360 - 524 + 33 + 50 + 3781 - 1458 - 1459 - 2906 + 50 + 80 + 3781 - 1801 - 1802 - 1472 + 101 + 120 + 749 @@ -30292,67 +26465,47 @@ 1 2 - 3685 + 6166 2 - 8 - 2178 - - - 8 - 22 - 2351 - - - 22 - 41 - 2239 - - - 41 - 69 - 2178 - - - 69 - 99 - 2178 + 3 + 13968 - 99 - 162 - 2178 + 3 + 7 + 3577 - 163 - 232 - 2260 + 7 + 12 + 3440 - 232 - 324 - 2252 + 12 + 20 + 3645 - 327 - 1235 - 2602 + 20 + 32 + 3304 - 1359 - 1360 - 524 + 33 + 50 + 3781 - 1458 - 1459 - 2906 + 50 + 80 + 3781 - 1801 - 1802 - 1472 + 101 + 120 + 749 @@ -30368,12 +26521,12 @@ 1 2 - 28289 + 41052 2 - 25 - 718 + 13 + 1362 @@ -30389,57 +26542,32 @@ 1 2 - 17353 + 47866 2 3 - 5881 + 6064 3 8 - 4235 + 5996 8 15 - 4685 + 6064 15 - 27 - 4798 - - - 27 - 53 - 4906 - - - 53 - 97 - 4724 - - - 97 - 201 - 5556 - - - 201 - 951 - 5413 - - - 989 - 1546 - 4772 + 40 + 6064 - 1643 - 3098 - 593 + 40 + 164 + 5689 @@ -30455,57 +26583,32 @@ 1 2 - 17353 + 47866 2 3 - 5881 + 6064 3 8 - 4235 + 5996 8 15 - 4685 + 6064 15 - 27 - 4798 - - - 27 - 53 - 4906 - - - 53 - 97 - 4724 - - - 97 - 201 - 5556 - - - 201 - 951 - 5413 - - - 989 - 1546 - 4772 + 40 + 6064 - 1643 - 3098 - 593 + 40 + 164 + 5689 @@ -30521,12 +26624,12 @@ 1 2 - 62715 + 77063 2 - 13 - 207 + 5 + 681 @@ -30542,12 +26645,12 @@ 1 2 - 2962 + 5723 2 - 2692665 - 56 + 20371 + 374 @@ -30563,12 +26666,12 @@ 1 2 - 2979 + 5962 2 - 6384 - 38 + 1148 + 136 @@ -30584,12 +26687,12 @@ 1 2 - 2975 + 5757 2 - 13899 - 43 + 2129 + 340 @@ -30599,19 +26702,19 @@ comments - 68615333 + 11241963 id - 68615333 + 11241963 contents - 24650428 + 4306668 location - 68615333 + 11241963 @@ -30625,7 +26728,7 @@ 1 2 - 68615333 + 11241963 @@ -30641,7 +26744,7 @@ 1 2 - 68615333 + 11241963 @@ -30657,12 +26760,17 @@ 1 2 - 23345029 + 3932327 2 - 32735 - 1305398 + 7 + 330014 + + + 7 + 34447 + 44326 @@ -30678,12 +26786,17 @@ 1 2 - 23345029 + 3932327 2 - 32735 - 1305398 + 7 + 330014 + + + 7 + 34447 + 44326 @@ -30699,7 +26812,7 @@ 1 2 - 68615333 + 11241963 @@ -30715,7 +26828,7 @@ 1 2 - 68615333 + 11241963 @@ -30725,15 +26838,15 @@ commentbinding - 17753231 + 3916719 id - 17596234 + 3352211 element - 17312283 + 3751025 @@ -30747,12 +26860,12 @@ 1 2 - 17481878 + 3290528 2 - 12 - 114355 + 1706 + 61682 @@ -30768,12 +26881,12 @@ 1 2 - 16871336 + 3585331 2 3 - 440947 + 165693 @@ -30783,15 +26896,15 @@ exprconv - 9633089 + 9633088 converted - 9632984 + 9632982 conversion - 9633089 + 9633088 @@ -30805,7 +26918,7 @@ 1 2 - 9632878 + 9632877 2 @@ -30826,7 +26939,7 @@ 1 2 - 9633089 + 9633088 @@ -30836,22 +26949,22 @@ compgenerated - 10972612 + 9892119 id - 10972612 + 9892119 synthetic_destructor_call - 1671706 + 1671762 element - 1244969 + 1245010 i @@ -30859,7 +26972,7 @@ destructor_call - 1671706 + 1671762 @@ -30873,12 +26986,12 @@ 1 2 - 828688 + 828715 2 3 - 409481 + 409495 3 @@ -30899,12 +27012,12 @@ 1 2 - 828688 + 828715 2 3 - 409481 + 409495 3 @@ -31057,7 +27170,7 @@ 1 2 - 1671706 + 1671762 @@ -31073,7 +27186,7 @@ 1 2 - 1671706 + 1671762 @@ -31083,15 +27196,15 @@ namespaces - 55509 + 8651 id - 55509 + 8651 name - 55507 + 4573 @@ -31105,7 +27218,7 @@ 1 2 - 55509 + 8651 @@ -31121,12 +27234,17 @@ 1 2 - 55504 + 3739 2 3 - 2 + 528 + + + 3 + 149 + 306 @@ -31147,15 +27265,15 @@ namespacembrs - 2462439 + 2039521 parentid - 1394 + 3995 memberid - 2462439 + 2039521 @@ -31169,67 +27287,67 @@ 1 2 - 216 + 499 2 3 - 90 + 249 3 4 - 64 + 499 4 5 - 95 + 624 5 - 6 - 77 - - - 6 - 8 - 121 + 10 + 249 - 8 + 10 12 - 116 + 249 12 - 19 - 108 + 18 + 249 19 - 30 - 108 + 21 + 249 - 30 - 56 - 112 + 23 + 24 + 249 - 56 - 125 - 108 + 25 + 29 + 249 - 128 - 834 - 108 + 70 + 83 + 249 - 847 - 487928 - 64 + 165 + 170 + 249 + + + 15606 + 15607 + 124 @@ -31245,7 +27363,7 @@ 1 2 - 2462439 + 2039521 @@ -31255,19 +27373,19 @@ exprparents - 20747887 + 19454215 expr_id - 20747887 + 19454215 child_index - 1019 + 20035 parent_id - 12416400 + 12939986 @@ -31281,7 +27399,7 @@ 1 2 - 20747887 + 19454215 @@ -31297,7 +27415,7 @@ 1 2 - 20747887 + 19454215 @@ -31313,32 +27431,42 @@ 1 2 - 636 + 3855 + + + 2 + 3 + 1519 3 - 18 - 16 + 4 + 365 - 21 - 22 - 168 + 4 + 5 + 8976 - 23 - 78 - 90 + 5 + 8 + 1660 - 79 - 435 - 78 + 8 + 11 + 1632 - 2109 - 2179878 - 28 + 11 + 53 + 1519 + + + 56 + 354800 + 506 @@ -31354,32 +27482,42 @@ 1 2 - 636 + 3855 + + + 2 + 3 + 1519 3 - 18 - 16 + 4 + 365 - 21 - 22 - 168 + 4 + 5 + 8976 - 23 - 78 - 90 + 5 + 8 + 1660 - 79 - 435 - 78 + 8 + 11 + 1632 - 2109 - 2179878 - 28 + 11 + 53 + 1519 + + + 56 + 354800 + 506 @@ -31395,17 +27533,17 @@ 1 2 - 4275389 + 7394756 2 3 - 8013574 + 5082679 3 - 181 - 127436 + 712 + 462550 @@ -31421,17 +27559,17 @@ 1 2 - 4275389 + 7394756 2 3 - 8013574 + 5082679 3 - 181 - 127436 + 712 + 462550 @@ -31441,22 +27579,22 @@ expr_isload - 10252631 + 6909474 expr_id - 10252631 + 6909474 conversionkinds - 6050433 + 6050445 expr_id - 6050433 + 6050445 kind @@ -31474,7 +27612,7 @@ 1 2 - 6050433 + 6050445 @@ -31518,8 +27656,8 @@ 1 - 5831534 - 5831535 + 5831535 + 5831536 1 @@ -31530,11 +27668,11 @@ iscall - 5802826 + 5803012 caller - 5802826 + 5803012 kind @@ -31552,7 +27690,7 @@ 1 2 - 5802826 + 5803012 @@ -31576,8 +27714,8 @@ 21 - 268054 - 268055 + 268053 + 268054 21 @@ -31588,15 +27726,15 @@ numtemplatearguments - 1668466 + 627938 expr_id - 1668466 + 627938 num - 45 + 374 @@ -31610,7 +27748,7 @@ 1 2 - 1668466 + 627938 @@ -31624,39 +27762,19 @@ 12 - 5 - 6 - 6 - - - 145 - 146 - 6 - - - 475 - 476 - 6 - - - 1189 - 1190 - 6 - - - 29101 - 29102 - 6 + 7 + 8 + 124 - 75364 - 75365 - 6 + 1263 + 1264 + 124 - 151258 - 151259 - 6 + 3759 + 3760 + 124 @@ -31666,15 +27784,15 @@ specialnamequalifyingelements - 969 + 124 id - 969 + 124 name - 969 + 124 @@ -31688,7 +27806,7 @@ 1 2 - 969 + 124 @@ -31704,7 +27822,7 @@ 1 2 - 969 + 124 @@ -31714,23 +27832,23 @@ namequalifiers - 3041980 + 3042067 id - 3041980 + 3042067 qualifiableelement - 3041980 + 3042067 qualifyingelement - 47486 + 47488 location - 552457 + 552477 @@ -31744,7 +27862,7 @@ 1 2 - 3041980 + 3042067 @@ -31760,7 +27878,7 @@ 1 2 - 3041980 + 3042067 @@ -31776,7 +27894,7 @@ 1 2 - 3041980 + 3042067 @@ -31792,7 +27910,7 @@ 1 2 - 3041980 + 3042067 @@ -31808,7 +27926,7 @@ 1 2 - 3041980 + 3042067 @@ -31824,7 +27942,7 @@ 1 2 - 3041980 + 3042067 @@ -31840,7 +27958,7 @@ 1 2 - 31543 + 31544 2 @@ -31854,7 +27972,7 @@ 5 - 6811 + 6810 3571 @@ -31876,7 +27994,7 @@ 1 2 - 31543 + 31544 2 @@ -31890,7 +28008,7 @@ 5 - 6811 + 6810 3571 @@ -31912,7 +28030,7 @@ 1 2 - 34404 + 34406 2 @@ -31943,22 +28061,22 @@ 1 2 - 79137 + 79162 2 6 - 38105 + 38085 6 7 - 399001 + 399016 7 192 - 36212 + 36213 @@ -31974,22 +28092,22 @@ 1 2 - 79137 + 79162 2 6 - 38105 + 38085 6 7 - 399001 + 399016 7 192 - 36212 + 36213 @@ -32005,7 +28123,7 @@ 1 2 - 111541 + 111545 2 @@ -32015,7 +28133,7 @@ 4 5 - 415311 + 415326 5 @@ -32030,15 +28148,15 @@ varbind - 9157418 + 8254631 expr - 9157418 + 8254631 var - 4030270 + 1050376 @@ -32052,7 +28170,7 @@ 1 2 - 9157418 + 8254631 @@ -32068,27 +28186,52 @@ 1 2 - 3040075 + 171535 2 3 - 292640 + 188700 3 + 4 + 145647 + + + 4 5 - 319355 + 116636 5 - 15 - 309228 + 6 + 83151 - 15 - 260 - 68969 + 6 + 7 + 65817 + + + 7 + 9 + 80815 + + + 9 + 13 + 81575 + + + 13 + 27 + 79127 + + + 27 + 5137 + 37368 @@ -32098,15 +28241,15 @@ funbind - 5812545 + 5812630 expr - 5810071 + 5810263 fun - 275949 + 275937 @@ -32120,12 +28263,12 @@ 1 2 - 5807596 + 5807896 2 3 - 2474 + 2366 @@ -32141,27 +28284,27 @@ 1 2 - 181449 + 181433 2 3 - 38837 + 38838 3 4 - 17191 + 17213 4 8 - 22742 + 22722 8 37798 - 15728 + 15729 @@ -32171,19 +28314,19 @@ expr_allocator - 93972 + 45243 expr - 93972 + 45243 func - 27 + 102 form - 4 + 34 @@ -32197,7 +28340,7 @@ 1 2 - 93972 + 45243 @@ -32213,7 +28356,7 @@ 1 2 - 93972 + 45243 @@ -32229,42 +28372,17 @@ 1 2 - 9 - - - 2 - 3 - 2 - - - 4 - 5 - 2 - - - 18 - 19 - 2 - - - 20 - 21 - 2 - - - 27 - 28 - 2 + 34 - 17597 - 17598 - 2 + 591 + 592 + 34 - 20513 - 20514 - 2 + 736 + 737 + 34 @@ -32280,7 +28398,7 @@ 1 2 - 27 + 102 @@ -32294,14 +28412,9 @@ 12 - 20 - 21 - 2 - - - 38165 - 38166 - 2 + 1328 + 1329 + 34 @@ -32315,14 +28428,9 @@ 12 - 1 - 2 - 2 - - - 10 - 11 - 2 + 3 + 4 + 34 @@ -32332,19 +28440,19 @@ expr_deallocator - 95453 + 53829 expr - 95453 + 53829 func - 22 + 102 form - 7 + 68 @@ -32358,7 +28466,7 @@ 1 2 - 95453 + 53829 @@ -32374,7 +28482,7 @@ 1 2 - 95453 + 53829 @@ -32388,39 +28496,19 @@ 12 - 2 - 3 - 4 - - - 4 - 5 - 2 - - - 7 - 8 - 2 - - - 16 - 17 - 2 - - - 24 - 25 - 4 + 1 + 2 + 34 - 18284 - 18285 - 2 + 723 + 724 + 34 - 20424 - 20425 - 2 + 856 + 857 + 34 @@ -32436,7 +28524,7 @@ 1 2 - 22 + 102 @@ -32450,19 +28538,14 @@ 12 - 24 - 25 - 2 - - - 18308 - 18309 - 2 + 723 + 724 + 34 - 20455 - 20456 - 2 + 857 + 858 + 34 @@ -32478,17 +28561,12 @@ 1 2 - 2 + 34 2 3 - 2 - - - 6 - 7 - 2 + 34 @@ -32498,11 +28576,11 @@ expr_cond_two_operand - 2693 + 653 cond - 2693 + 653 @@ -32653,15 +28731,15 @@ values - 14027056 + 13474604 id - 14027056 + 13474604 str - 71353 + 114566 @@ -32675,7 +28753,7 @@ 1 2 - 14027056 + 13474604 @@ -32691,57 +28769,27 @@ 1 2 - 10046 + 78302 2 3 - 21277 + 15301 3 - 4 - 2369 - - - 4 - 5 - 5461 - - - 5 - 8 - 2369 - - - 8 - 10 - 5821 - - - 10 - 17 - 5512 - - - 17 - 39 - 5357 - - - 40 - 101 - 5409 + 6 + 8895 - 102 - 528 - 5357 + 6 + 52 + 8628 - 528 - 58022 - 2369 + 52 + 674264 + 3437 @@ -32751,15 +28799,15 @@ valuetext - 8820484 + 6647584 id - 8820484 + 6647584 text - 1822799 + 1095412 @@ -32773,7 +28821,7 @@ 1 2 - 8820484 + 6647584 @@ -32789,22 +28837,22 @@ 1 2 - 539748 + 833985 2 3 - 1068990 + 146940 3 7 - 148397 + 86537 7 - 2999 - 65662 + 593553 + 27950 @@ -32814,15 +28862,15 @@ valuebind - 14473467 + 13583186 val - 14027056 + 13474604 expr - 14473467 + 13583186 @@ -32836,12 +28884,12 @@ 1 2 - 13580696 + 13384049 2 - 4 - 446359 + 6 + 90554 @@ -32857,7 +28905,7 @@ 1 2 - 14473467 + 13583186 @@ -32867,19 +28915,19 @@ fieldoffsets - 6231414 + 1496814 id - 6231414 + 1496814 byteoffset - 189946 + 31370 bitoffset - 7752 + 435 @@ -32893,7 +28941,7 @@ 1 2 - 6231414 + 1496814 @@ -32909,7 +28957,7 @@ 1 2 - 6231414 + 1496814 @@ -32925,47 +28973,37 @@ 1 2 - 70745 + 17700 2 3 - 23258 + 2450 3 5 - 13567 + 2668 5 - 7 - 12598 - - - 7 - 9 - 14536 - - - 9 - 15 - 14536 + 12 + 2614 - 15 - 32 - 14536 + 12 + 35 + 2450 - 33 - 95 - 14536 + 35 + 211 + 2396 - 122 - 1637 - 11629 + 250 + 5947 + 1089 @@ -32981,12 +29019,12 @@ 1 2 - 177348 + 30390 - 3 + 2 9 - 12598 + 980 @@ -33000,44 +29038,44 @@ 12 - 18 - 19 - 969 + 35 + 36 + 54 - 19 - 20 - 969 + 36 + 37 + 54 - 26 - 27 - 969 + 44 + 45 + 54 - 29 - 30 - 969 + 46 + 47 + 54 - 33 - 34 - 969 + 50 + 51 + 54 - 43 - 44 - 969 + 64 + 65 + 54 - 53 - 54 - 969 + 81 + 82 + 54 - 6209 - 6210 - 969 + 27127 + 27128 + 54 @@ -33051,29 +29089,24 @@ 12 - 7 - 8 - 969 - - - 8 - 9 - 969 + 12 + 13 + 163 - 9 - 10 - 3876 + 13 + 14 + 108 - 10 - 11 - 969 + 14 + 15 + 108 - 196 - 197 - 969 + 576 + 577 + 54 @@ -33083,19 +29116,19 @@ bitfield - 313993 + 30341 id - 313993 + 30341 bits - 30042 + 3496 declared_bits - 30042 + 3496 @@ -33109,7 +29142,7 @@ 1 2 - 313993 + 30341 @@ -33125,7 +29158,7 @@ 1 2 - 313993 + 30341 @@ -33141,47 +29174,42 @@ 1 2 - 7752 + 998 2 3 - 4845 + 749 3 4 - 4845 + 249 4 5 - 2907 + 499 5 - 6 - 2907 + 7 + 249 - 7 - 10 - 1938 + 8 + 9 + 249 - 10 - 13 - 1938 + 9 + 11 + 249 13 - 15 - 1938 - - - 199 - 200 - 969 + 143 + 249 @@ -33197,7 +29225,7 @@ 1 2 - 30042 + 3496 @@ -33213,47 +29241,42 @@ 1 2 - 7752 + 998 2 3 - 4845 + 749 3 4 - 4845 + 249 4 5 - 2907 + 499 5 - 6 - 2907 + 7 + 249 - 7 - 10 - 1938 + 8 + 9 + 249 - 10 - 13 - 1938 + 9 + 11 + 249 13 - 15 - 1938 - - - 199 - 200 - 969 + 143 + 249 @@ -33269,7 +29292,7 @@ 1 2 - 30042 + 3496 @@ -33279,23 +29302,23 @@ initialisers - 5596945 + 2251034 init - 5596945 + 2251034 var - 925953 + 980971 expr - 5596945 + 2251034 location - 578154 + 516371 @@ -33309,7 +29332,7 @@ 1 2 - 5596945 + 2251034 @@ -33325,7 +29348,7 @@ 1 2 - 5596945 + 2251034 @@ -33341,7 +29364,7 @@ 1 2 - 5596945 + 2251034 @@ -33357,27 +29380,17 @@ 1 2 - 677373 + 870556 2 - 3 - 87171 - - - 3 - 7 - 72737 - - - 7 - 67 - 70850 + 15 + 37441 - 67 - 187 - 17821 + 16 + 25 + 72973 @@ -33393,27 +29406,17 @@ 1 2 - 677373 + 870556 2 - 3 - 87171 - - - 3 - 7 - 72737 - - - 7 - 67 - 70850 + 15 + 37441 - 67 - 187 - 17821 + 16 + 25 + 72973 @@ -33429,7 +29432,12 @@ 1 2 - 925953 + 980963 + + + 2 + 3 + 8 @@ -33445,7 +29453,7 @@ 1 2 - 5596945 + 2251034 @@ -33461,7 +29469,7 @@ 1 2 - 5596945 + 2251034 @@ -33477,7 +29485,7 @@ 1 2 - 5596945 + 2251034 @@ -33493,22 +29501,22 @@ 1 2 - 422455 + 414356 2 3 - 74962 + 33606 3 - 6 - 44593 + 13 + 42250 - 6 - 113308 - 36142 + 13 + 111911 + 26157 @@ -33524,12 +29532,17 @@ 1 2 - 545705 + 443657 2 - 10124 - 32449 + 3 + 34516 + + + 3 + 12237 + 38196 @@ -33545,22 +29558,22 @@ 1 2 - 422455 + 414356 2 3 - 74962 + 33606 3 - 6 - 44593 + 13 + 42250 - 6 - 113308 - 36142 + 13 + 111911 + 26157 @@ -33570,26 +29583,26 @@ braced_initialisers - 200252 + 68441 init - 200252 + 68441 expr_ancestor - 1677688 + 1677744 exp - 1677688 + 1677744 ancestor - 839661 + 839689 @@ -33603,7 +29616,7 @@ 1 2 - 1677688 + 1677744 @@ -33624,12 +29637,12 @@ 2 3 - 812507 + 812534 3 19 - 10069 + 10070 @@ -33639,11 +29652,11 @@ exprs - 25210577 + 25210573 id - 25210577 + 25210573 kind @@ -33651,7 +29664,7 @@ location - 10582671 + 10582669 @@ -33665,7 +29678,7 @@ 1 2 - 25210577 + 25210573 @@ -33681,7 +29694,7 @@ 1 2 - 25210577 + 25210573 @@ -33859,7 +29872,7 @@ 1 2 - 8900701 + 8900700 2 @@ -33890,7 +29903,7 @@ 1 2 - 9040103 + 9040102 2 @@ -33910,15 +29923,15 @@ expr_reuse - 847042 + 847070 reuse - 847042 + 847070 original - 847042 + 847070 value_category @@ -33936,7 +29949,7 @@ 1 2 - 847042 + 847070 @@ -33952,7 +29965,7 @@ 1 2 - 847042 + 847070 @@ -33968,7 +29981,7 @@ 1 2 - 847042 + 847070 @@ -33984,7 +29997,7 @@ 1 2 - 847042 + 847070 @@ -34036,19 +30049,19 @@ expr_types - 25238252 + 25210573 id - 25101637 + 25210573 typeid - 1150532 + 214202 value_category - 10 + 43 @@ -34062,12 +30075,7 @@ 1 2 - 24970947 - - - 2 - 6 - 130690 + 25210573 @@ -34083,7 +30091,7 @@ 1 2 - 25101637 + 25210573 @@ -34099,42 +30107,52 @@ 1 2 - 397286 + 52512 2 3 - 223539 + 35191 3 4 - 97511 + 14507 4 5 - 90049 + 14529 5 - 7 - 94946 + 8 + 17562 - 7 - 11 - 98239 + 8 + 14 + 17386 - 11 - 27 - 87166 + 14 + 24 + 16441 - 27 - 1473219 - 61793 + 24 + 49 + 16067 + + + 49 + 134 + 16177 + + + 134 + 441505 + 13825 @@ -34150,17 +30168,12 @@ 1 2 - 1025250 + 185913 2 3 - 115140 - - - 3 - 4 - 10141 + 28289 @@ -34174,19 +30187,14 @@ 12 - 32407 - 32408 - 3 - - - 1319763 - 1319764 - 3 + 153745 + 153746 + 21 - 5516607 - 5516608 - 3 + 993192 + 993193 + 21 @@ -34200,19 +30208,14 @@ 12 - 8837 - 8838 - 3 - - - 79160 - 79161 - 3 + 2282 + 2283 + 21 - 263890 - 263891 - 3 + 8750 + 8751 + 21 @@ -34233,15 +30236,15 @@ new_allocated_type - 94223 + 46197 expr - 94223 + 46197 type_id - 42727 + 27391 @@ -34255,7 +30258,7 @@ 1 2 - 94223 + 46197 @@ -34271,17 +30274,17 @@ 1 2 - 38846 + 11515 2 - 4 - 3497 + 3 + 14479 - 4 - 1699 - 383 + 3 + 19 + 1396 @@ -34291,15 +30294,15 @@ new_array_allocated_type - 44190 + 6653 expr - 44190 + 6653 type_id - 52 + 2843 @@ -34313,7 +30316,7 @@ 1 2 - 44190 + 6653 @@ -34327,59 +30330,24 @@ 12 - 10 - 101 - 4 - - - 144 - 145 - 6 - - - 184 - 185 - 6 - - - 240 - 241 - 4 - - - 325 - 326 - 4 - - - 528 - 529 - 4 - - - 875 - 912 - 4 - - - 1011 - 1012 - 2 + 1 + 2 + 40 - 1206 - 1207 - 6 + 2 + 3 + 2510 - 1234 - 1583 - 4 + 3 + 5 + 219 - 3807 - 3808 - 4 + 6 + 15 + 73 @@ -34389,15 +30357,15 @@ aggregate_field_init - 5717380 + 5717390 aggregate - 1243068 + 1243070 initializer - 5717202 + 5717212 field @@ -34428,7 +30396,7 @@ 2 3 - 669033 + 669034 3 @@ -34479,7 +30447,7 @@ 2 3 - 668965 + 668966 3 @@ -34530,7 +30498,7 @@ 2 3 - 669033 + 669034 3 @@ -34576,7 +30544,7 @@ 1 2 - 1242986 + 1242988 2 @@ -34597,7 +30565,7 @@ 1 2 - 5717202 + 5717212 @@ -34613,7 +30581,7 @@ 1 2 - 5717024 + 5717034 2 @@ -34634,7 +30602,7 @@ 1 2 - 5717202 + 5717212 @@ -34650,7 +30618,7 @@ 1 2 - 5717202 + 5717212 @@ -35132,7 +31100,7 @@ aggregate_array_init - 1349246 + 1349248 aggregate @@ -35140,7 +31108,7 @@ initializer - 1349246 + 1349248 element_index @@ -35335,7 +31303,7 @@ 1 2 - 1349246 + 1349248 @@ -35351,7 +31319,7 @@ 1 2 - 1349246 + 1349248 @@ -35367,7 +31335,7 @@ 1 2 - 1349246 + 1349248 @@ -35383,7 +31351,7 @@ 1 2 - 1349246 + 1349248 @@ -35725,15 +31693,15 @@ condition_decl_bind - 408922 + 408935 expr - 408922 + 408935 decl - 408922 + 408935 @@ -35747,7 +31715,7 @@ 1 2 - 408922 + 408935 @@ -35763,7 +31731,7 @@ 1 2 - 408922 + 408935 @@ -35773,15 +31741,15 @@ typeid_bind - 229949 + 47901 expr - 229949 + 47901 type_id - 10754 + 15944 @@ -35795,7 +31763,7 @@ 1 2 - 229949 + 47901 @@ -35811,37 +31779,17 @@ 1 2 - 855 + 2964 2 3 - 4120 + 12571 3 - 4 - 25 - - - 4 - 5 - 2248 - - - 5 - 48 - 511 - - - 65 - 66 - 2520 - - - 68 - 663 - 472 + 328 + 408 @@ -35904,15 +31852,15 @@ sizeof_bind - 393239 + 242027 expr - 393239 + 242027 type_id - 252091 + 11210 @@ -35926,7 +31874,7 @@ 1 2 - 393239 + 242027 @@ -35942,17 +31890,42 @@ 1 2 - 174174 + 3877 2 3 - 67079 + 2783 3 - 1862 - 10837 + 4 + 1024 + + + 4 + 5 + 1140 + + + 5 + 6 + 295 + + + 6 + 7 + 1064 + + + 7 + 40 + 856 + + + 40 + 6061 + 167 @@ -36010,23 +31983,23 @@ lambdas - 23413 + 19057 expr - 23413 + 19057 default_capture - 19 + 24 has_explicit_return_type - 12 + 16 has_explicit_parameter_list - 12 + 16 @@ -36040,7 +32013,7 @@ 1 2 - 23413 + 19057 @@ -36056,7 +32029,7 @@ 1 2 - 23413 + 19057 @@ -36072,7 +32045,7 @@ 1 2 - 23413 + 19057 @@ -36086,19 +32059,19 @@ 12 - 14 - 15 - 6 + 306 + 307 + 8 - 436 - 437 - 6 + 719 + 720 + 8 - 3164 - 3165 - 6 + 1321 + 1322 + 8 @@ -36114,7 +32087,7 @@ 2 3 - 19 + 24 @@ -36127,15 +32100,10 @@ 12 - - 1 - 2 - 6 - 2 3 - 12 + 24 @@ -36149,14 +32117,14 @@ 12 - 70 - 71 - 6 + 813 + 814 + 8 - 3544 - 3545 - 6 + 1533 + 1534 + 8 @@ -36172,7 +32140,7 @@ 3 4 - 12 + 16 @@ -36188,12 +32156,12 @@ 1 2 - 6 + 8 2 3 - 6 + 8 @@ -36207,14 +32175,14 @@ 12 - 766 - 767 - 6 + 34 + 35 + 8 - 2848 - 2849 - 6 + 2312 + 2313 + 8 @@ -36227,15 +32195,10 @@ 12 - - 2 - 3 - 6 - 3 4 - 6 + 16 @@ -36251,12 +32214,12 @@ 1 2 - 6 + 8 2 3 - 6 + 8 @@ -37484,19 +33447,19 @@ fold - 2481 + 1248 expr - 2481 + 1248 operator - 25 + 86 is_left_fold - 6 + 21 @@ -37510,7 +33473,7 @@ 1 2 - 2481 + 1248 @@ -37526,7 +33489,7 @@ 1 2 - 2481 + 1248 @@ -37540,24 +33503,19 @@ 12 - 2 - 3 - 6 - - - 4 - 5 - 6 + 1 + 2 + 43 - 88 - 89 - 6 + 2 + 3 + 21 - 289 - 290 - 6 + 54 + 55 + 21 @@ -37573,7 +33531,7 @@ 1 2 - 25 + 86 @@ -37587,9 +33545,9 @@ 12 - 383 - 384 - 6 + 58 + 59 + 21 @@ -37605,7 +33563,7 @@ 4 5 - 6 + 21 @@ -37615,19 +33573,19 @@ stmts - 9250639 + 6368967 id - 9250639 + 6368967 kind - 37 + 162 location - 9188352 + 2684538 @@ -37641,7 +33599,7 @@ 1 2 - 9250639 + 6368967 @@ -37657,7 +33615,7 @@ 1 2 - 9250639 + 6368967 @@ -37671,89 +33629,104 @@ 12 - 54 - 55 - 2 + 1 + 2 + 8 - 329 - 330 - 2 + 26 + 27 + 8 - 446 - 447 - 2 + 430 + 431 + 8 - 5336 - 5337 - 2 + 595 + 596 + 8 - 5518 - 5519 - 2 + 1066 + 1067 + 8 - 8693 - 8694 - 2 + 1635 + 1636 + 8 - 10165 - 10166 - 2 + 1818 + 1819 + 8 - 16790 - 16791 - 2 + 2311 + 2312 + 8 - 17470 - 17471 - 2 + 2807 + 2808 + 8 - 35858 - 35859 - 2 + 3233 + 3234 + 8 - 37397 - 37398 - 2 + 3809 + 3810 + 8 - 108238 - 108239 - 2 + 5052 + 5053 + 8 - 364498 - 364499 - 2 + 16980 + 16981 + 8 - 395010 - 395011 - 2 + 18543 + 18544 + 8 - 649782 - 649783 - 2 + 22520 + 22521 + 8 - 1092734 - 1092735 - 2 + 74878 + 74879 + 8 - 1464604 - 1464605 - 2 + 95087 + 95088 + 8 + + + 119871 + 119872 + 8 + + + 200105 + 200106 + 8 + + + 213249 + 213250 + 8 @@ -37767,89 +33740,104 @@ 12 - 27 - 28 - 2 + 1 + 2 + 8 - 214 - 215 - 2 + 26 + 27 + 8 - 331 - 332 - 2 + 111 + 112 + 8 - 5336 - 5337 - 2 + 436 + 437 + 8 - 5409 - 5410 - 2 + 945 + 946 + 8 - 8693 - 8694 - 2 + 1155 + 1156 + 8 - 9889 - 9890 - 2 + 1353 + 1354 + 8 - 16783 - 16784 - 2 + 1388 + 1389 + 8 - 17470 - 17471 - 2 + 1394 + 1395 + 8 - 35808 - 35809 - 2 + 2197 + 2198 + 8 - 37397 - 37398 - 2 + 2362 + 2363 + 8 - 108238 - 108239 - 2 + 2509 + 2510 + 8 - 358157 - 358158 - 2 + 7327 + 7328 + 8 - 394187 - 394188 - 2 + 8943 + 8944 + 8 - 647908 - 647909 - 2 + 11676 + 11677 + 8 - 1086119 - 1086120 - 2 + 37583 + 37584 + 8 - 1461298 - 1461299 - 2 + 44536 + 44537 + 8 + + + 49039 + 49040 + 8 + + + 86405 + 86406 + 8 + + + 101101 + 101102 + 8 @@ -37865,12 +33853,22 @@ 1 2 - 9166275 + 2225039 2 - 217 - 22076 + 3 + 182234 + + + 3 + 10 + 202178 + + + 10 + 1789 + 75085 @@ -37886,12 +33884,12 @@ 1 2 - 9169716 + 2601580 2 - 6 - 18635 + 10 + 82957 @@ -37949,15 +33947,15 @@ variable_vla - 267 + 30 var - 267 + 30 decl - 267 + 30 @@ -37971,7 +33969,7 @@ 1 2 - 267 + 30 @@ -37987,7 +33985,7 @@ 1 2 - 267 + 30 @@ -37997,26 +33995,26 @@ type_is_vla - 523 + 43 type_id - 523 + 43 if_initialization - 1762 + 374 if_stmt - 1762 + 374 init_id - 1762 + 374 @@ -38030,7 +34028,7 @@ 1 2 - 1762 + 374 @@ -38046,7 +34044,7 @@ 1 2 - 1762 + 374 @@ -38104,15 +34102,15 @@ if_else - 437108 + 437123 if_stmt - 437108 + 437123 else_id - 437108 + 437123 @@ -38126,7 +34124,7 @@ 1 2 - 437108 + 437123 @@ -38142,7 +34140,7 @@ 1 2 - 437108 + 437123 @@ -38200,15 +34198,15 @@ constexpr_if_then - 818798 + 106134 constexpr_if_stmt - 818798 + 106134 then_id - 818798 + 106134 @@ -38222,7 +34220,7 @@ 1 2 - 818798 + 106134 @@ -38238,7 +34236,7 @@ 1 2 - 818798 + 106134 @@ -38248,15 +34246,15 @@ constexpr_if_else - 216571 + 76166 constexpr_if_stmt - 216571 + 76166 else_id - 216571 + 76166 @@ -38270,7 +34268,7 @@ 1 2 - 216571 + 76166 @@ -38286,7 +34284,7 @@ 1 2 - 216571 + 76166 @@ -38392,15 +34390,15 @@ while_body - 46675 + 39647 while_stmt - 46675 + 39647 body_id - 46675 + 39647 @@ -38414,7 +34412,7 @@ 1 2 - 46675 + 39647 @@ -38430,7 +34428,7 @@ 1 2 - 46675 + 39647 @@ -38440,15 +34438,15 @@ do_body - 551349 + 233641 do_stmt - 551349 + 233641 body_id - 551349 + 233641 @@ -38462,7 +34460,7 @@ 1 2 - 551349 + 233641 @@ -38478,7 +34476,7 @@ 1 2 - 551349 + 233641 @@ -38536,11 +34534,11 @@ switch_case - 836154 + 836182 switch_stmt - 411869 + 411883 index @@ -38548,7 +34546,7 @@ case_id - 836154 + 836182 @@ -38567,7 +34565,7 @@ 2 3 - 408986 + 409000 3 @@ -38593,7 +34591,7 @@ 2 3 - 408986 + 409000 3 @@ -38756,7 +34754,7 @@ 1 2 - 836154 + 836182 @@ -38772,7 +34770,7 @@ 1 2 - 836154 + 836182 @@ -38782,15 +34780,15 @@ switch_body - 411869 + 411883 switch_stmt - 411869 + 411883 body_id - 411869 + 411883 @@ -38804,7 +34802,7 @@ 1 2 - 411869 + 411883 @@ -38820,7 +34818,7 @@ 1 2 - 411869 + 411883 @@ -38830,15 +34828,15 @@ for_initialization - 113752 + 73246 for_stmt - 113752 + 73246 init_id - 113752 + 73246 @@ -38852,7 +34850,7 @@ 1 2 - 113752 + 73246 @@ -38868,7 +34866,7 @@ 1 2 - 113752 + 73246 @@ -38878,15 +34876,15 @@ for_condition - 121024 + 76341 for_stmt - 121024 + 76341 condition_id - 121024 + 76341 @@ -38900,7 +34898,7 @@ 1 2 - 121024 + 76341 @@ -38916,7 +34914,7 @@ 1 2 - 121024 + 76341 @@ -38926,15 +34924,15 @@ for_update - 120586 + 73386 for_stmt - 120586 + 73386 update_id - 120586 + 73386 @@ -38948,7 +34946,7 @@ 1 2 - 120586 + 73386 @@ -38964,7 +34962,7 @@ 1 2 - 120586 + 73386 @@ -38974,15 +34972,15 @@ for_body - 121083 + 84389 for_stmt - 121083 + 84389 body_id - 121083 + 84389 @@ -38996,7 +34994,7 @@ 1 2 - 121083 + 84389 @@ -39012,7 +35010,7 @@ 1 2 - 121083 + 84389 @@ -39022,19 +35020,19 @@ stmtparents - 8452090 + 5628379 id - 8452090 + 5628379 index - 83 + 15775 parent - 3414860 + 2381490 @@ -39048,7 +35046,7 @@ 1 2 - 8452090 + 5628379 @@ -39064,7 +35062,7 @@ 1 2 - 8452090 + 5628379 @@ -39078,64 +35076,54 @@ 12 - 17 - 18 - 15 - - - 34 - 35 - 8 - - - 187 - 188 - 4 + 1 + 2 + 5182 - 340 - 341 - 8 + 2 + 3 + 1291 - 390 - 409 - 4 + 3 + 4 + 284 - 4849 - 5162 - 6 + 4 + 5 + 2006 - 12786 - 13635 - 6 + 7 + 8 + 1316 - 18763 - 30401 - 6 + 8 + 12 + 1023 - 39042 - 62308 - 6 + 12 + 29 + 1389 - 96495 - 258328 - 6 + 29 + 39 + 1186 - 398532 - 819173 - 6 + 42 + 78 + 1194 - 1128546 - 1128547 - 2 + 78 + 209668 + 901 @@ -39149,64 +35137,54 @@ 12 - 17 - 18 - 15 - - - 34 - 35 - 8 - - - 187 - 188 - 4 + 1 + 2 + 5182 - 340 - 341 - 8 + 2 + 3 + 1291 - 390 - 409 - 4 + 3 + 4 + 284 - 4849 - 5162 - 6 + 4 + 5 + 2006 - 12786 - 13635 - 6 + 7 + 8 + 1316 - 18763 - 30401 - 6 + 8 + 12 + 1023 - 39042 - 62308 - 6 + 12 + 29 + 1389 - 96495 - 258328 - 6 + 29 + 39 + 1186 - 398532 - 819173 - 6 + 42 + 78 + 1194 - 1128546 - 1128547 - 2 + 78 + 209668 + 901 @@ -39222,32 +35200,32 @@ 1 2 - 1716470 + 1359015 2 3 - 786112 + 517378 3 4 - 265976 + 151519 4 6 - 262417 + 155727 6 - 9 - 273890 + 16 + 178871 - 9 - 39 - 109993 + 16 + 1943 + 18976 @@ -39263,32 +35241,32 @@ 1 2 - 1716470 + 1359015 2 3 - 786112 + 517378 3 4 - 265976 + 151519 4 6 - 262417 + 155727 6 - 9 - 273890 + 16 + 178871 - 9 - 39 - 109993 + 16 + 1943 + 18976 @@ -39298,30 +35276,30 @@ ishandler - 43746 + 43790 block - 43746 + 43790 stmt_decl_bind - 1446255 + 725885 stmt - 1426175 + 715316 num - 6 + 73 decl - 1446246 + 725885 @@ -39335,12 +35313,12 @@ 1 2 - 1410088 + 707850 2 - 4 - 16086 + 10 + 7465 @@ -39356,12 +35334,12 @@ 1 2 - 1410088 + 707850 2 - 4 - 16086 + 10 + 7465 @@ -39375,19 +35353,49 @@ 12 - 1819 - 1820 - 2 + 14 + 15 + 8 - 7326 - 7327 - 2 + 15 + 16 + 8 - 649508 - 649509 - 2 + 18 + 19 + 8 + + + 21 + 22 + 8 + + + 25 + 26 + 8 + + + 60 + 61 + 8 + + + 229 + 230 + 8 + + + 919 + 920 + 8 + + + 88055 + 88056 + 8 @@ -39401,19 +35409,49 @@ 12 - 1819 - 1820 - 2 + 14 + 15 + 8 - 7326 - 7327 - 2 + 15 + 16 + 8 - 649504 - 649505 - 2 + 18 + 19 + 8 + + + 21 + 22 + 8 + + + 25 + 26 + 8 + + + 60 + 61 + 8 + + + 229 + 230 + 8 + + + 919 + 920 + 8 + + + 88055 + 88056 + 8 @@ -39429,12 +35467,7 @@ 1 2 - 1446237 - - - 2 - 3 - 8 + 725885 @@ -39450,7 +35483,7 @@ 1 2 - 1446246 + 725885 @@ -39460,19 +35493,19 @@ stmt_decl_entry_bind - 1446255 + 725885 stmt - 1426175 + 715316 num - 6 + 73 decl_entry - 1446251 + 725885 @@ -39486,12 +35519,12 @@ 1 2 - 1410088 + 707850 2 - 4 - 16086 + 10 + 7465 @@ -39507,12 +35540,12 @@ 1 2 - 1410088 + 707850 2 - 4 - 16086 + 10 + 7465 @@ -39526,19 +35559,49 @@ 12 - 1819 - 1820 - 2 + 14 + 15 + 8 - 7326 - 7327 - 2 + 15 + 16 + 8 - 649508 - 649509 - 2 + 18 + 19 + 8 + + + 21 + 22 + 8 + + + 25 + 26 + 8 + + + 60 + 61 + 8 + + + 229 + 230 + 8 + + + 919 + 920 + 8 + + + 88055 + 88056 + 8 @@ -39552,19 +35615,49 @@ 12 - 1819 - 1820 - 2 + 14 + 15 + 8 - 7326 - 7327 - 2 + 15 + 16 + 8 - 649506 - 649507 - 2 + 18 + 19 + 8 + + + 21 + 22 + 8 + + + 25 + 26 + 8 + + + 60 + 61 + 8 + + + 229 + 230 + 8 + + + 919 + 920 + 8 + + + 88055 + 88056 + 8 @@ -39580,12 +35673,7 @@ 1 2 - 1446246 - - - 2 - 3 - 4 + 725885 @@ -39601,7 +35689,7 @@ 1 2 - 1446251 + 725885 @@ -39611,15 +35699,15 @@ blockscope - 2399400 + 1644952 block - 2399400 + 1644952 enclosing - 1756668 + 1428064 @@ -39633,7 +35721,7 @@ 1 2 - 2399400 + 1644952 @@ -39649,22 +35737,17 @@ 1 2 - 1408995 + 1295584 2 - 3 - 210329 - - - 3 - 9 - 136478 + 4 + 117122 - 9 - 18 - 865 + 4 + 28 + 15358 @@ -39674,19 +35757,19 @@ jumpinfo - 896574 + 348320 id - 896574 + 348320 str - 999 + 28948 target - 283522 + 72706 @@ -39700,7 +35783,7 @@ 1 2 - 896574 + 348320 @@ -39716,7 +35799,7 @@ 1 2 - 896574 + 348320 @@ -39729,55 +35812,40 @@ 12 - - 1 - 2 - 13 - 2 3 - 270 + 13596 3 4 - 81 + 6058 4 5 - 168 + 2014 5 6 - 40 + 1888 6 - 7 - 108 - - - 7 - 9 - 87 + 10 + 2197 10 - 13 - 81 - - - 14 - 38 - 81 + 25 + 2189 - 38 - 129945 - 67 + 25 + 13711 + 1002 @@ -39793,22 +35861,17 @@ 1 2 - 459 + 23190 2 3 - 371 + 3626 3 - 8 - 87 - - - 9 - 41246 - 81 + 3321 + 2131 @@ -39829,22 +35892,27 @@ 2 3 - 93041 + 36210 3 4 - 69899 + 17633 4 5 - 116224 + 7379 5 - 50 - 4323 + 8 + 6418 + + + 8 + 2124 + 5030 @@ -39860,7 +35928,7 @@ 1 2 - 283522 + 72706 @@ -39870,19 +35938,19 @@ preprocdirects - 35868911 + 5413333 id - 35868911 + 5413333 kind - 9691 + 1373 location - 35847591 + 5410087 @@ -39896,7 +35964,7 @@ 1 2 - 35868911 + 5413333 @@ -39912,7 +35980,7 @@ 1 2 - 35868911 + 5413333 @@ -39926,54 +35994,59 @@ 12 - 108 - 109 - 969 + 1 + 2 + 124 - 401 - 402 - 969 + 139 + 140 + 124 + + + 805 + 806 + 124 - 600 - 601 - 969 + 880 + 881 + 124 - 703 - 704 - 969 + 973 + 974 + 124 - 1172 - 1173 - 969 + 1509 + 1510 + 124 - 1441 - 1442 - 969 + 1883 + 1884 + 124 - 2328 - 2329 - 969 + 3256 + 3257 + 124 - 3104 - 3105 - 969 + 4737 + 4738 + 124 - 4979 - 4980 - 969 + 7126 + 7127 + 124 - 22176 - 22177 - 969 + 22045 + 22046 + 124 @@ -39987,54 +36060,59 @@ 12 - 108 - 109 - 969 + 1 + 2 + 124 - 401 - 402 - 969 + 139 + 140 + 124 - 600 - 601 - 969 + 805 + 806 + 124 - 703 - 704 - 969 + 880 + 881 + 124 - 1172 - 1173 - 969 + 973 + 974 + 124 - 1441 - 1442 - 969 + 1509 + 1510 + 124 - 2328 - 2329 - 969 + 1883 + 1884 + 124 + + + 3256 + 3257 + 124 - 3104 - 3105 - 969 + 4737 + 4738 + 124 - 4979 - 4980 - 969 + 7126 + 7127 + 124 - 22154 - 22155 - 969 + 22019 + 22020 + 124 @@ -40050,12 +36128,12 @@ 1 2 - 35846622 + 5409962 - 23 - 24 - 969 + 27 + 28 + 124 @@ -40071,7 +36149,7 @@ 1 2 - 35847591 + 5410087 @@ -40081,15 +36159,15 @@ preprocpair - 6326387 + 1142251 begin - 4825227 + 889777 elseelifend - 6326387 + 1142251 @@ -40103,17 +36181,17 @@ 1 2 - 3400627 + 650164 2 3 - 1373237 + 230622 3 9 - 51363 + 8990 @@ -40129,7 +36207,7 @@ 1 2 - 6326387 + 1142251 @@ -40139,41 +36217,41 @@ preproctrue - 3104077 + 439769 branch - 3104077 + 439769 preprocfalse - 1486623 + 285562 branch - 1486623 + 285562 preproctext - 30249978 + 4356364 id - 30249978 + 4356364 head - 22698628 + 2957767 body - 13053989 + 1684908 @@ -40187,7 +36265,7 @@ 1 2 - 30249978 + 4356364 @@ -40203,7 +36281,7 @@ 1 2 - 30249978 + 4356364 @@ -40219,12 +36297,12 @@ 1 2 - 21510493 + 2758984 2 - 806 - 1188135 + 798 + 198782 @@ -40240,12 +36318,12 @@ 1 2 - 22123943 + 2876481 2 5 - 574685 + 81286 @@ -40261,17 +36339,17 @@ 1 2 - 11998622 + 1536570 2 - 22 - 981714 + 10 + 127360 - 22 - 9704 - 73652 + 10 + 13606 + 20977 @@ -40287,17 +36365,17 @@ 1 2 - 12021880 + 1540816 2 - 30 - 979776 + 12 + 126986 - 30 - 2661 - 52332 + 12 + 3246 + 17106 @@ -40307,15 +36385,15 @@ includes - 491808 + 318656 id - 491808 + 318656 included - 10166 + 58699 @@ -40329,7 +36407,7 @@ 1 2 - 491808 + 318656 @@ -40344,23 +36422,38 @@ 1 + 2 + 29048 + + + 2 3 - 577 + 9443 3 4 - 5963 + 4954 4 - 5 - 3473 + 6 + 5355 - 5 - 104467 - 151 + 6 + 11 + 4520 + + + 11 + 47 + 4404 + + + 47 + 793 + 971 @@ -40370,15 +36463,15 @@ link_targets - 11917 + 816 id - 11917 + 816 binary - 11917 + 816 @@ -40392,7 +36485,7 @@ 1 2 - 11917 + 816 @@ -40408,7 +36501,7 @@ 1 2 - 11917 + 816 @@ -40418,15 +36511,15 @@ link_parent - 80819473 + 30398081 element - 2994819 + 3866101 link_target - 808 + 340 @@ -40440,27 +36533,17 @@ 1 2 - 2268833 + 530456 2 - 11 - 225604 - - - 11 - 123 - 103414 - - - 123 - 208 - 224687 + 9 + 26948 - 208 - 271 - 172279 + 9 + 10 + 3308695 @@ -40474,69 +36557,54 @@ 12 - 7874 - 56288 - 62 - - - 56342 - 57366 - 62 - - - 57487 - 59251 - 62 - - - 59254 - 59689 - 62 + 3 + 4 + 34 - 60594 - 63583 - 62 + 97375 + 97376 + 34 - 63598 - 68732 - 62 + 97494 + 97495 + 34 - 69160 - 90331 - 62 + 97547 + 97548 + 34 - 121994 - 133055 - 62 + 97574 + 97575 + 34 - 133109 - 141061 - 62 + 97596 + 97597 + 34 - 141068 - 144417 - 62 + 97628 + 97629 + 34 - 144454 - 147437 - 62 + 99635 + 99636 + 34 - 147926 - 156061 - 62 + 103015 + 103016 + 34 - 156083 - 249351 - 53 + 104379 + 104380 + 34 diff --git a/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/locations_default.ql b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/locations_default.ql new file mode 100644 index 000000000000..7e17030fb6f3 --- /dev/null +++ b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/locations_default.ql @@ -0,0 +1,18 @@ +class LocationBase = @location_default or @location_stmt or @location_expr; + +class Location extends LocationBase { + string toString() { none() } +} + +class Container extends @container { + string toString() { none() } +} + +from Location l, Container c, int startLine, int startColumn, int endLine, int endColumn +where + locations_default(l, c, startLine, startColumn, endLine, endColumn) + or + locations_stmt(l, c, startLine, startColumn, endLine, endColumn) + or + locations_expr(l, c, startLine, startColumn, endLine, endColumn) +select l, c, startLine, startColumn, endLine, endColumn diff --git a/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/old.dbscheme b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/old.dbscheme new file mode 100644 index 000000000000..7bc12b02a436 --- /dev/null +++ b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/old.dbscheme @@ -0,0 +1,2509 @@ + +/** + * 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 +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * 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 +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function 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) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype 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 +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr 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_specialized(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); +var_requires( + int id: @var_decl ref, + int constraint: @expr 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 +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int 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: @parameterized_element 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 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the 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. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 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 deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +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 +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr 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 +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype 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 +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr 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 +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr 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 +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +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 + | @concept_template; + +@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 + | @c11_generic + ; + +/* +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 + +/* + Binary encoding of the allocator form. + + 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 +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * 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 +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@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 + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +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, + boolean is_designated: boolean 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, + boolean is_designated: boolean 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 +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @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, + boolean has_explicit_parameter_list: 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 +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +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 +); + +type_is_vla(unique int type_id: @derivedtype 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 +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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 +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@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 +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +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/7bc12b02a4363149f0727a4bce07952dbb9d98aa/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..e70d0b653187 --- /dev/null +++ b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/semmlecode.cpp.dbscheme @@ -0,0 +1,2475 @@ + +/** + * 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 +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * 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_default ; + +/** + * 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( + /** 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 +); + +/** 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 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 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 +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function 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) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype 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 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 +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr 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 ref +); +var_def(unique int id: @var_decl ref); +var_specialized(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); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location ref, + int bodylocation: @location ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location ref, + int kind: int 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 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: @parameterized_element 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 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 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the 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. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 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 deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +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 +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr 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 +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype 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 +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr 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 +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location 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 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 +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +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 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 ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@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 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 + | @c11_generic + ; + +/* +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 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 + +/* + Binary encoding of the allocator form. + + 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 +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * 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 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 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 +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@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 + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +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, + boolean is_designated: boolean 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, + boolean is_designated: boolean 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 +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @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, + boolean has_explicit_parameter_list: 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 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 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 +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +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 +); + +type_is_vla(unique int type_id: @derivedtype 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 +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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 +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@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 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 +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +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/7bc12b02a4363149f0727a4bce07952dbb9d98aa/upgrade.properties b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/upgrade.properties new file mode 100644 index 000000000000..347caa4decdf --- /dev/null +++ b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/upgrade.properties @@ -0,0 +1,5 @@ +description: Merge location tables +compatibility: full +locations_default.rel: run locations_default.qlo +locations_expr.rel: delete +locations_stmt.rel: delete diff --git a/cpp/ql/src/jsf/4.07 Header Files/AV Rule 35.ql b/cpp/ql/src/jsf/4.07 Header Files/AV Rule 35.ql index 704c5baa0672..59a6838c23e3 100644 --- a/cpp/ql/src/jsf/4.07 Header Files/AV Rule 35.ql +++ b/cpp/ql/src/jsf/4.07 Header Files/AV Rule 35.ql @@ -37,7 +37,7 @@ abstract class MaybePreprocessorDirective extends TMaybePreprocessorDirective { class NoPreprocessorDirective extends TNoPreprocessorDirective, MaybePreprocessorDirective { override string toString() { result = "" } - override Location getLocation() { result instanceof UnknownDefaultLocation } + override Location getLocation() { result instanceof UnknownLocation } } class SomePreprocessorDirective extends TSomePreprocessorDirective, MaybePreprocessorDirective { diff --git a/cpp/ql/test/experimental/library-tests/rangeanalysis/rangeanalysis/RangeAnalysis.ql b/cpp/ql/test/experimental/library-tests/rangeanalysis/rangeanalysis/RangeAnalysis.ql index 1b77763682ad..240567b536c2 100644 --- a/cpp/ql/test/experimental/library-tests/rangeanalysis/rangeanalysis/RangeAnalysis.ql +++ b/cpp/ql/test/experimental/library-tests/rangeanalysis/rangeanalysis/RangeAnalysis.ql @@ -15,5 +15,5 @@ query predicate instructionBounds( not valueNumber(b.getInstruction()) = valueNumber(i) and if reason instanceof CondReason then reasonLoc = reason.(CondReason).getCond().getLocation() - else reasonLoc instanceof UnknownDefaultLocation + else reasonLoc instanceof UnknownLocation } diff --git a/cpp/ql/test/library-tests/includes/includes/locations.expected b/cpp/ql/test/library-tests/includes/includes/locations.expected index 1b6b3b068923..c61055c84413 100644 --- a/cpp/ql/test/library-tests/includes/includes/locations.expected +++ b/cpp/ql/test/library-tests/includes/includes/locations.expected @@ -1,7 +1,5 @@ | bar.h:0:0:0:0 | bar.h:0:0:0:0 | | file://:0:0:0:0 | file://:0:0:0:0 | -| file://:0:0:0:0 | file://:0:0:0:0 | -| file://:0:0:0:0 | file://:0:0:0:0 | | includes.c:0:0:0:0 | includes.c:0:0:0:0 | | includes.c:2:1:2:15 | includes.c:2:1:2:15 | | includes.c:4:1:4:16 | includes.c:4:1:4:16 | diff --git a/cpp/ql/test/library-tests/macros/inmacroexpansion/inmacroexpansion.expected b/cpp/ql/test/library-tests/macros/inmacroexpansion/inmacroexpansion.expected index f8eff955d47c..4e477a101a90 100644 --- a/cpp/ql/test/library-tests/macros/inmacroexpansion/inmacroexpansion.expected +++ b/cpp/ql/test/library-tests/macros/inmacroexpansion/inmacroexpansion.expected @@ -14,14 +14,14 @@ | test.cpp:4:1:4:1 | operator= | false | | test.cpp:4:1:4:1 | operator= | false | | test.cpp:4:1:4:10 | CLASS_DECL | false | -| test.cpp:4:1:4:10 | S | false | +| test.cpp:4:1:4:10 | S | true | | test.cpp:4:1:4:10 | declaration | true | | test.cpp:4:1:4:10 | definition of S | true | | test.cpp:4:1:4:10 | definition of f | true | | test.cpp:4:1:4:10 | definition of i | true | | test.cpp:4:1:4:10 | definition of j | true | -| test.cpp:4:1:4:10 | f | false | -| test.cpp:4:1:4:10 | i | false | +| test.cpp:4:1:4:10 | f | true | +| test.cpp:4:1:4:10 | i | true | | test.cpp:4:1:4:10 | j | true | | test.cpp:4:1:4:10 | return ... | true | | test.cpp:4:1:4:10 | { ... } | true | @@ -30,7 +30,7 @@ | test.cpp:8:1:8:13 | declaration | true | | test.cpp:8:1:8:13 | definition of f1 | true | | test.cpp:8:1:8:13 | definition of k | true | -| test.cpp:8:1:8:13 | f1 | false | +| test.cpp:8:1:8:13 | f1 | true | | test.cpp:8:1:8:13 | k | true | | test.cpp:8:1:8:13 | return ... | true | | test.cpp:8:1:8:13 | { ... } | true | @@ -68,18 +68,18 @@ | test.cpp:38:1:38:13 | 1 | true | | test.cpp:38:1:38:13 | ... == ... | true | | test.cpp:38:1:38:13 | STATIC_ASSERT | false | -| test.cpp:38:1:38:13 | static_assert(..., "") | false | +| test.cpp:38:1:38:13 | static_assert(..., "") | true | | test.cpp:40:1:40:42 | #define ATTRIBUTE [[nodiscard("reason1")]] | false | | test.cpp:42:1:42:9 | ATTRIBUTE | false | -| test.cpp:42:1:42:9 | nodiscard | false | -| test.cpp:42:1:42:9 | reason1 | false | +| test.cpp:42:1:42:9 | nodiscard | true | +| test.cpp:42:1:42:9 | reason1 | true | | test.cpp:42:1:42:9 | reason1 | true | | test.cpp:43:5:43:6 | declaration of f2 | false | | test.cpp:43:5:43:6 | f2 | false | | test.cpp:45:1:45:31 | #define ATTRIBUTE_ARG "reason2" | false | | test.cpp:47:3:47:11 | nodiscard | false | | test.cpp:47:13:47:25 | ATTRIBUTE_ARG | false | -| test.cpp:47:13:47:25 | reason2 | false | +| test.cpp:47:13:47:25 | reason2 | true | | test.cpp:47:13:47:25 | reason2 | true | | test.cpp:48:5:48:6 | declaration of f3 | false | | test.cpp:48:5:48:6 | f3 | false |