diff --git a/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/builtintypes.ql b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/builtintypes.ql new file mode 100644 index 000000000000..73b715fd71f0 --- /dev/null +++ b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/builtintypes.ql @@ -0,0 +1,9 @@ +class BuiltinType extends @builtintype { + string toString() { none() } +} + +from BuiltinType id, string name, int kind, int new_kind, int size, int sign, int alignment +where + builtintypes(id, name, kind, size, sign, alignment) and + if kind = 62 then new_kind = 1 else new_kind = kind +select id, name, new_kind, size, sign, alignment diff --git a/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/old.dbscheme b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/old.dbscheme new file mode 100644 index 000000000000..af887e83a815 --- /dev/null +++ b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/old.dbscheme @@ -0,0 +1,2492 @@ + +/** + * 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 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator 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 +); + +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 +); + +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 +; + +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; + +@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/af887e83a815a9cefe774ffa80e2493a1365b9e2/semmlecode.cpp.dbscheme b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..9a7c3c14c107 --- /dev/null +++ b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/semmlecode.cpp.dbscheme @@ -0,0 +1,2491 @@ + +/** + * 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 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator 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 +); + +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 +); + +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 +; + +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; + +@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/af887e83a815a9cefe774ffa80e2493a1365b9e2/upgrade.properties b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/upgrade.properties new file mode 100644 index 000000000000..bc85f01c52e3 --- /dev/null +++ b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/upgrade.properties @@ -0,0 +1,3 @@ +description: Support __mfp8 type +compatibility: backwards +builtintypes.rel: run builtintypes.qlo diff --git a/cpp/ql/lib/semmle/code/cpp/Type.qll b/cpp/ql/lib/semmle/code/cpp/Type.qll index aa3fa54835cd..fef978b198d6 100644 --- a/cpp/ql/lib/semmle/code/cpp/Type.qll +++ b/cpp/ql/lib/semmle/code/cpp/Type.qll @@ -839,6 +839,9 @@ private predicate floatingPointTypeMapping( or // _Complex _Float128 kind = 61 and base = 2 and domain = TComplexDomain() and realKind = 49 and extended = false + or + // __mfp8 + kind = 62 and base = 2 and domain = TRealDomain() and realKind = 62 and extended = false } /** diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index 9a7c3c14c107..af887e83a815 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -691,6 +691,7 @@ case @builtintype.kind of | 59 = @complex_std_float64 // _Complex _Float64 | 60 = @complex_float64x // _Complex _Float64x | 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 ; builtintypes( diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index bca58ed2f5b1..15f89361250f 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,7 +2,7 @@ @compilation - 16142 + 15785 @externalDataElement @@ -18,15 +18,15 @@ @location_default - 36226754 + 36090709 @location_stmt - 5202209 + 5203173 @location_expr - 17956521 + 17959851 @diagnostic @@ -34,47 +34,47 @@ @file - 83260 + 81417 @folder - 15818 + 15468 @macro_expansion - 40121869 + 39234346 @other_macro_reference - 312756 + 312446 @function - 4015439 + 4000083 @fun_decl - 4154519 + 4138631 @var_decl - 9247204 + 9237881 @type_decl - 1882105 + 1840555 @namespace_decl - 430914 + 429821 @using_declaration - 341862 + 334520 @using_directive - 8125 + 8117 @using_enum_declaration @@ -82,307 +82,311 @@ @static_assert - 183493 + 183028 @parameter - 6965639 + 6939001 @membervariable - 1489139 + 1489415 @globalvariable - 466518 + 486787 @localvariable - 734804 + 727547 @enumconstant - 343781 + 343844 @errortype - 125 + 124 @unknowntype - 125 + 124 @void - 125 + 124 @boolean - 125 + 124 @char - 125 + 124 @unsigned_char - 125 + 124 @signed_char - 125 + 124 @short - 125 + 124 @unsigned_short - 125 + 124 @signed_short - 125 + 124 @int - 125 + 124 @unsigned_int - 125 + 124 @signed_int - 125 + 124 @long - 125 + 124 @unsigned_long - 125 + 124 @signed_long - 125 + 124 @long_long - 125 + 124 @unsigned_long_long - 125 + 124 @signed_long_long - 125 + 124 @float - 125 + 124 @double - 125 + 124 @long_double - 125 + 124 @complex_float - 125 + 124 @complex_double - 125 + 124 @complex_long_double - 125 + 124 @imaginary_float - 125 + 124 @imaginary_double - 125 + 124 @imaginary_long_double - 125 + 124 @wchar_t - 125 + 124 @decltype_nullptr - 125 + 124 @int128 - 125 + 124 @unsigned_int128 - 125 + 124 @signed_int128 - 125 + 124 @float128 - 125 + 124 @complex_float128 - 125 + 124 @decimal32 - 125 + 124 @decimal64 - 125 + 124 @decimal128 - 125 + 124 @char16_t - 125 + 124 @char32_t - 125 + 124 @std_float32 - 125 + 124 @float32x - 125 + 124 @std_float64 - 125 + 124 @float64x - 125 + 124 @std_float128 - 125 + 124 @char8_t - 125 + 124 @float16 - 125 + 124 @complex_float16 - 125 + 124 @fp16 - 125 + 124 @std_bfloat16 - 125 + 124 @std_float16 - 125 + 124 @complex_std_float32 - 125 + 124 @complex_float32x - 125 + 124 @complex_std_float64 - 125 + 124 @complex_float64x - 125 + 124 @complex_std_float128 - 125 + 124 + + + @mfp8 + 124 @pointer - 470652 + 470186 @type_with_specifiers - 696526 + 693862 @array - 98431 + 98055 @routineptr - 858764 + 857913 @reference - 970559 + 966847 @gnu_vector - 863 + 843 @routinereference - 470 + 469 @rvalue_reference - 291793 + 290677 @block 10 - - @decltype - 102057 - @type_operator 8519 + + @decltype + 102076 + @usertype - 4962767 + 4863384 @mangledname - 6329773 + 6313665 @type_mention - 5812069 + 5813147 @concept_template @@ -390,15 +394,15 @@ @routinetype - 758603 + 757852 @ptrtomember - 12029 + 12026 @specifier - 7754 + 7724 @gnuattribute @@ -406,11 +410,11 @@ @stdattribute - 350577 + 349236 @declspec - 328789 + 328850 @msattribute @@ -418,19 +422,19 @@ @alignas - 2192 + 2171 @attribute_arg_token - 20955 + 20935 @attribute_arg_constant_expr - 88857 + 87075 @attribute_arg_expr - 1793 + 1753 @attribute_arg_empty @@ -442,39 +446,39 @@ @attribute_arg_type - 466 + 461 @derivation - 597157 + 598061 @frienddecl - 879292 + 878421 @comment - 11233849 + 11190889 @namespace - 11044 + 10800 @specialnamequalifyingelement - 125 + 124 @namequalifier - 3254040 + 3255225 @value - 13436143 + 13438635 @initialiser - 2338659 + 2334426 @address_of @@ -482,131 +486,131 @@ @indirect - 403000 + 403075 @array_to_pointer - 1948290 + 1948651 @parexpr - 4901469 + 4902378 @arithnegexpr - 584894 + 585003 @unaryplusexpr - 4122 + 4081 @complementexpr - 38090 + 38097 @notexpr - 357805 + 357142 @postincrexpr - 84356 + 84372 @postdecrexpr - 57234 + 57244 @preincrexpr - 96438 + 96455 @predecrexpr - 35718 + 35725 @conditionalexpr - 895370 + 895536 @addexpr - 569921 + 570027 @subexpr - 465494 + 465580 @mulexpr - 434549 + 434630 @divexpr - 60159 + 58999 @remexpr - 20100 + 20080 @paddexpr - 118331 + 118352 @psubexpr - 67843 + 67856 @pdiffexpr - 43900 + 43732 @lshiftexpr - 550121 + 550223 @rshiftexpr - 199982 + 200019 @andexpr - 479844 + 479933 @orexpr - 193501 + 193537 @xorexpr - 73764 + 73778 @eqexpr - 641535 + 641654 @neexpr - 410719 + 410795 @gtexpr - 110832 + 110852 @ltexpr - 139031 + 139057 @geexpr - 81151 + 81166 @leexpr - 291203 + 291256 @assignexpr - 1277487 + 1277724 @assignaddexpr @@ -614,23 +618,23 @@ @assignsubexpr - 15263 + 15266 @assignmulexpr - 14065 + 13754 @assigndivexpr - 6789 + 6791 @assignremexpr - 875 + 872 @assignlshiftexpr - 3693 + 3694 @assignrshiftexpr @@ -638,19 +642,19 @@ @assignandexpr - 6509 + 6510 @assignorexpr - 19550 + 19554 @assignxorexpr - 29824 + 29829 @assignpaddexpr - 18574 + 18578 @assignpsubexpr @@ -658,31 +662,31 @@ @andlogicalexpr - 345599 + 345664 @orlogicalexpr - 1100373 + 1100577 @commaexpr - 169097 + 168450 @subscriptexpr - 433900 + 433981 @callexpr - 300995 + 300696 @vastartexpr - 5084 + 5071 @vaargexpr - 1299 + 1300 @vaendexpr @@ -690,43 +694,43 @@ @vacopyexpr - 171 + 170 @varaccess - 8231069 + 8232596 @runtime_sizeof - 400899 + 400974 @runtime_alignof - 62611 + 62549 @expr_stmt - 147941 + 147968 @routineexpr - 6134772 + 6134314 @type_operand - 1401351 + 1401611 @offsetofexpr - 148598 + 148626 @typescompexpr - 699930 + 700060 @literal - 6101485 + 6102024 @aggregateliteral @@ -734,31 +738,31 @@ @c_style_cast - 6025595 + 6026985 @temp_init - 1075277 + 1073319 @errorexpr - 57350 + 57293 @reference_to - 2184503 + 2182338 @ref_indirect - 2645319 + 2642698 @vacuous_destructor_call - 9836 + 9826 @assume - 4394 + 4383 @conjugation @@ -766,11 +770,11 @@ @realpartexpr - 94 + 92 @imagpartexpr - 94 + 92 @jmulexpr @@ -810,35 +814,35 @@ @thisaccess - 1518451 + 1514600 @new_expr - 57992 + 57934 @delete_expr - 14412 + 14398 @throw_expr - 26141 + 26134 @condition_decl - 437622 + 437589 @braced_init_list - 2331 + 2327 @type_id - 60130 + 60071 @sizeof_pack - 2181 + 2178 @hasassignexpr @@ -866,7 +870,7 @@ @hastrivialconstr - 3 + 7 @hastrivialcopy @@ -890,23 +894,23 @@ @isclassexpr - 2538 + 2531 @isconvtoexpr - 250 + 249 @isemptyexpr - 8880 + 8846 @isenumexpr - 2376 + 2990 @ispodexpr - 1065 + 1041 @ispolyexpr @@ -922,75 +926,75 @@ @hastrivialdestructor - 555 + 3503 @uuidof - 28057 + 27985 @delete_array_expr - 1591 + 1556 @new_array_expr - 6932 + 6914 @foldexpr - 1368 + 1367 @ctordirectinit - 141602 + 141461 @ctorvirtualinit - 5046 + 5041 @ctorfieldinit - 258185 + 257929 @ctordelegatinginit - 3627 + 3613 @dtordirectdestruct - 49481 + 49432 @dtorvirtualdestruct - 5003 + 4998 @dtorfielddestruct - 49994 + 49945 @static_cast - 389474 + 387985 @reinterpret_cast - 41835 + 41729 @const_cast - 30706 + 30676 @dynamic_cast - 1011 + 989 @lambdaexpr - 17748 + 17730 @param_ref - 177835 + 177374 @noopexpr @@ -998,7 +1002,7 @@ @istriviallyconstructibleexpr - 2376 + 3737 @isdestructibleexpr @@ -1010,19 +1014,19 @@ @istriviallydestructibleexpr - 1000 + 996 @istriviallyassignableexpr - 2376 + 3737 @isnothrowassignableexpr - 5127 + 5108 @istrivialexpr - 1375 + 3643 @isstandardlayoutexpr @@ -1030,7 +1034,7 @@ @istriviallycopyableexpr - 598 + 1538 @isliteraltypeexpr @@ -1050,11 +1054,11 @@ @isconstructibleexpr - 3627 + 3613 @isnothrowconstructibleexpr - 20761 + 20682 @hasfinalizerexpr @@ -1090,11 +1094,11 @@ @isfinalexpr - 11803 + 11792 @noexceptexpr - 30854 + 30665 @builtinshufflevector @@ -1102,11 +1106,11 @@ @builtinchooseexpr - 20642 + 20646 @builtinaddressof - 16294 + 16278 @vec_fill @@ -1146,11 +1150,11 @@ @builtinbitcast - 250 + 249 @builtinshuffle - 782 + 764 @blockassignexpr @@ -1266,7 +1270,7 @@ @reuseexpr - 906491 + 906424 @istriviallycopyassignable @@ -1362,11 +1366,11 @@ @c11_generic - 30031 + 30036 @requires_expr - 17661 + 17660 @nested_requirement @@ -1374,87 +1378,87 @@ @compound_requirement - 11720 + 11719 @concept_id - 96781 + 96773 @lambdacapture - 28523 + 28450 @stmt_expr - 2025815 + 2026191 @stmt_if - 987388 + 987571 @stmt_while - 39534 + 39542 @stmt_goto - 151155 + 151183 @stmt_label - 72498 + 72512 @stmt_return - 1508953 + 1507458 @stmt_block - 1846814 + 1839751 @stmt_end_test_while - 232974 + 233017 @stmt_for - 84148 + 84163 @stmt_switch_case - 894840 + 894773 @stmt_switch - 440777 + 440744 @stmt_asm - 64015 + 64027 @stmt_decl - 768980 + 767030 @stmt_empty - 459543 + 459509 @stmt_continue - 28011 + 28016 @stmt_break - 140276 + 139921 @stmt_try_block - 28918 + 28938 @stmt_microsoft_try - 224 + 223 @stmt_set_vla_size @@ -1466,19 +1470,19 @@ @stmt_assigned_goto - 12391 + 12393 @stmt_range_based_for - 7398 + 7391 @stmt_handler - 47389 + 47376 @stmt_constexpr_if - 103934 + 103537 @stmt_co_return @@ -1494,43 +1498,43 @@ @ppd_if - 589589 + 587335 @ppd_ifdef - 213751 + 213791 @ppd_ifndef - 157794 + 157824 @ppd_elif - 27982 + 27363 @ppd_else - 236511 + 235606 @ppd_endif - 886636 + 883245 @ppd_plain_include - 406728 + 397726 @ppd_define - 2749584 + 2739069 @ppd_undef - 101058 + 100671 @ppd_pragma - 407234 + 405677 @ppd_include_next @@ -1538,11 +1542,11 @@ @ppd_line - 19055 + 18866 @ppd_error - 125 + 124 @ppd_objc_import @@ -1566,7 +1570,7 @@ @link_target - 943 + 923 @xmldtd @@ -1596,11 +1600,11 @@ compilations - 16142 + 15785 id - 16142 + 15785 cwd @@ -1618,7 +1622,7 @@ 1 2 - 16142 + 15785 @@ -1644,19 +1648,19 @@ compilation_args - 1292348 + 1263745 id - 16142 + 15785 num - 1874 + 1833 arg - 37368 + 36541 @@ -1670,77 +1674,77 @@ 36 42 - 1281 + 1252 42 43 - 1402 + 1371 43 44 - 917 + 896 44 45 - 647 + 632 45 51 - 1213 + 1186 51 70 - 620 + 606 71 72 - 903 + 883 72 90 - 1146 + 1120 94 96 - 498 + 487 98 99 - 1712 + 1674 100 102 - 121 + 118 103 104 - 2548 + 2492 104 119 - 1362 + 1331 120 138 - 1186 + 1160 139 140 - 579 + 567 @@ -1756,67 +1760,67 @@ 34 38 - 755 + 738 38 39 - 1914 + 1872 39 40 - 1254 + 1226 40 42 - 1389 + 1358 42 53 - 768 + 751 53 54 - 903 + 883 54 63 - 1146 + 1120 64 67 - 512 + 501 67 68 - 1793 + 1753 68 70 - 1240 + 1213 70 71 - 1793 + 1753 73 79 - 1213 + 1186 79 89 - 1442 + 1411 89 @@ -1837,57 +1841,57 @@ 43 90 - 80 + 79 90 108 - 148 + 145 108 183 - 134 + 131 198 422 - 148 + 145 422 595 - 161 + 158 595 605 - 161 + 158 605 749 - 148 + 145 750 778 - 148 + 145 781 883 - 148 + 145 930 1190 - 107 + 105 1197 1198 - 485 + 474 @@ -1903,67 +1907,67 @@ 1 5 - 161 + 158 5 7 - 148 + 145 9 12 - 94 + 92 12 15 - 148 + 145 15 18 - 121 + 118 18 22 - 148 + 145 22 27 - 161 + 158 27 29 - 107 + 105 29 34 - 148 + 145 34 44 - 161 + 158 45 63 - 148 + 145 67 94 - 148 + 145 94 164 - 148 + 145 171 @@ -1984,22 +1988,22 @@ 1 2 - 17113 + 16734 2 3 - 16196 + 15837 3 103 - 2805 + 2742 104 1198 - 1254 + 1226 @@ -2015,17 +2019,17 @@ 1 2 - 24746 + 24198 2 3 - 11139 + 10892 3 62 - 1483 + 1450 @@ -2035,11 +2039,11 @@ compilation_build_mode - 16142 + 15785 id - 16142 + 15785 mode @@ -2057,7 +2061,7 @@ 1 2 - 16142 + 15785 @@ -2083,11 +2087,11 @@ compilation_compiling_files - 16142 + 15785 id - 16142 + 15785 num @@ -2095,7 +2099,7 @@ file - 7390 + 7226 @@ -2109,7 +2113,7 @@ 1 2 - 16142 + 15785 @@ -2125,7 +2129,7 @@ 1 2 - 16142 + 15785 @@ -2173,12 +2177,12 @@ 1 2 - 175 + 171 2 3 - 7187 + 7028 28 @@ -2199,7 +2203,7 @@ 1 2 - 7390 + 7226 @@ -2209,11 +2213,11 @@ compilation_time - 64299 + 62876 id - 16074 + 15719 num @@ -2221,11 +2225,11 @@ kind - 53 + 52 seconds - 17801 + 17631 @@ -2239,7 +2243,7 @@ 1 2 - 16074 + 15719 @@ -2255,7 +2259,7 @@ 4 5 - 16074 + 15719 @@ -2271,17 +2275,17 @@ 2 3 - 107 + 197 3 4 - 7821 + 7635 4 5 - 8145 + 7885 @@ -2327,8 +2331,8 @@ 12 - 1320 - 1321 + 1337 + 1338 13 @@ -2345,7 +2349,7 @@ 1192 1193 - 53 + 52 @@ -2361,7 +2365,7 @@ 1 2 - 53 + 52 @@ -2380,18 +2384,18 @@ 13 - 12 - 13 + 11 + 12 13 - 718 - 719 + 734 + 735 13 - 792 - 793 + 794 + 795 13 @@ -2408,27 +2412,27 @@ 1 2 - 11233 + 11393 2 3 - 3910 + 3758 3 4 - 1200 + 1054 4 - 24 - 1335 + 30 + 1331 - 24 - 696 - 121 + 30 + 699 + 92 @@ -2444,7 +2448,7 @@ 1 2 - 17801 + 17631 @@ -2460,12 +2464,12 @@ 1 2 - 14969 + 14862 2 3 - 2818 + 2756 3 @@ -2480,7 +2484,7 @@ diagnostic_for - 4444 + 4443 diagnostic @@ -2726,19 +2730,19 @@ compilation_finished - 16142 + 15785 id - 16142 + 15785 cpu_seconds - 12164 + 11776 elapsed_seconds - 256 + 250 @@ -2752,7 +2756,7 @@ 1 2 - 16142 + 15785 @@ -2768,7 +2772,7 @@ 1 2 - 16142 + 15785 @@ -2784,17 +2788,17 @@ 1 2 - 10168 + 9890 2 3 - 1402 + 1305 3 - 24 - 593 + 28 + 580 @@ -2810,12 +2814,12 @@ 1 2 - 11368 + 10866 2 3 - 795 + 909 @@ -2831,18 +2835,13 @@ 1 2 - 40 + 52 2 3 26 - - 3 - 4 - 13 - 4 5 @@ -2854,58 +2853,53 @@ 13 - 7 - 8 - 13 - - - 9 - 10 + 8 + 9 13 10 11 - 13 + 26 - 15 - 16 + 14 + 15 13 - 18 - 19 + 21 + 22 13 - 32 - 33 + 33 + 34 13 - 48 - 49 + 44 + 45 13 - 157 - 158 + 164 + 165 13 - 249 - 250 + 256 + 257 13 - 309 - 310 + 293 + 294 13 - 323 - 324 + 326 + 327 13 @@ -2922,18 +2916,13 @@ 1 2 - 40 + 52 2 3 26 - - 3 - 4 - 13 - 4 5 @@ -2944,11 +2933,6 @@ 7 13 - - 7 - 8 - 13 - 8 9 @@ -2957,46 +2941,46 @@ 10 11 - 13 + 26 - 15 - 16 + 14 + 15 13 - 18 - 19 + 21 + 22 13 - 32 - 33 + 33 + 34 13 - 48 - 49 + 43 + 44 13 - 147 - 148 + 152 + 153 13 - 170 - 171 + 171 + 172 13 - 222 - 223 + 234 + 235 13 - 264 - 265 + 248 + 249 13 @@ -3223,11 +3207,11 @@ sourceLocationPrefix - 125 + 124 prefix - 125 + 124 @@ -4721,15 +4705,15 @@ extractor_version - 125 + 124 codeql_version - 125 + 124 frontend_version - 125 + 124 @@ -4743,7 +4727,7 @@ 1 2 - 125 + 124 @@ -4759,7 +4743,7 @@ 1 2 - 125 + 124 @@ -4769,31 +4753,31 @@ locations_default - 36226754 + 36090709 id - 36226754 + 36090709 container - 41023 + 40866 startLine - 7495820 + 7467155 startColumn - 21262 + 21180 endLine - 7497821 + 7469148 endColumn - 53530 + 53326 @@ -4807,7 +4791,7 @@ 1 2 - 36226754 + 36090709 @@ -4823,7 +4807,7 @@ 1 2 - 36226754 + 36090709 @@ -4839,7 +4823,7 @@ 1 2 - 36226754 + 36090709 @@ -4855,7 +4839,7 @@ 1 2 - 36226754 + 36090709 @@ -4871,7 +4855,7 @@ 1 2 - 36226754 + 36090709 @@ -4887,67 +4871,67 @@ 1 15 - 3126 + 3114 15 41 - 3126 + 3114 42 66 - 3376 + 3364 67 95 - 3126 + 3114 98 124 - 3251 + 3239 124 174 - 3376 + 3364 175 228 - 3126 + 3114 230 303 - 3126 + 3114 305 406 - 3126 + 3114 408 596 - 3251 + 3239 598 943 - 3126 + 3114 986 2568 - 3251 + 3114 - 2725 + 2587 57658 - 2626 + 2741 @@ -4963,67 +4947,67 @@ 1 13 - 3502 + 3488 13 29 - 3251 + 3239 29 42 - 3126 + 3114 42 58 - 3376 + 3364 58 76 - 3126 + 3114 77 102 - 3251 + 3239 102 134 - 3126 + 3114 134 173 - 3126 + 3114 173 242 - 3126 + 3114 243 348 - 3126 + 3114 348 489 - 3126 + 3114 493 1269 - 3126 + 3114 1337 57597 - 2626 + 2616 @@ -5039,67 +5023,67 @@ 1 4 - 2251 + 2242 4 7 - 3126 + 3114 7 12 - 3502 + 3488 12 16 - 3126 + 3114 16 22 - 3376 + 3364 22 28 - 3126 + 3114 28 33 - 3251 + 3239 33 39 - 3376 + 3364 39 48 - 3376 + 3364 48 60 - 3376 + 3364 60 82 - 3376 + 3364 83 98 - 3251 + 3239 98 141 - 2501 + 2491 @@ -5115,67 +5099,67 @@ 1 13 - 3502 + 3488 13 29 - 3251 + 3239 29 42 - 3126 + 3114 42 58 - 3376 + 3364 58 76 - 3126 + 3114 77 102 - 3251 + 3239 102 134 - 3126 + 3114 134 173 - 3251 + 3239 174 244 - 3126 + 3114 246 348 - 3126 + 3114 348 494 - 3126 + 3114 513 1349 - 3126 + 3114 1407 57597 - 2501 + 2491 @@ -5191,67 +5175,67 @@ 1 12 - 3376 + 3364 13 24 - 3251 + 3239 25 33 - 3251 + 3239 33 39 - 3376 + 3364 39 45 - 3627 + 3613 45 54 - 3126 + 3114 54 62 - 3627 + 3613 62 71 - 3376 + 3364 71 83 - 3502 + 3488 83 99 - 3126 + 3114 99 114 - 3126 + 3114 114 - 136 - 3126 + 143 + 3114 147 363 - 1125 + 1121 @@ -5267,32 +5251,32 @@ 1 2 - 4960358 + 4941389 2 3 - 800711 + 797649 3 4 - 566326 + 564160 4 12 - 593091 + 590823 12 210 - 562324 + 560173 210 534 - 13007 + 12957 @@ -5308,27 +5292,27 @@ 1 2 - 5018642 + 4999450 2 3 - 1234586 + 1229865 3 6 - 664132 + 661593 6 106 - 562324 + 560173 107 329 - 16134 + 16072 @@ -5344,27 +5328,27 @@ 1 2 - 5655509 + 5633881 2 3 - 532682 + 530644 3 7 - 579333 + 577118 7 24 - 571454 + 569269 24 72 - 156840 + 156240 @@ -5380,12 +5364,12 @@ 1 2 - 7320969 + 7292972 2 81 - 174850 + 174182 @@ -5401,27 +5385,27 @@ 1 2 - 5027272 + 5008047 2 3 - 767567 + 764632 3 4 - 559822 + 557681 4 12 - 604348 + 602037 12 235 - 536809 + 534756 @@ -5437,67 +5421,67 @@ 1 2 - 1500 + 1495 2 4 - 1876 + 1868 4 9 - 1625 + 1619 9 19 - 1751 + 1744 20 74 - 1625 + 1619 81 173 - 1625 + 1619 173 435 - 1625 + 1619 468 904 - 1625 + 1619 945 1309 - 1625 + 1619 1328 1510 - 1625 + 1619 1531 1774 - 1625 + 1619 1834 2887 - 1625 + 1619 3491 119749 - 1500 + 1495 @@ -5513,67 +5497,67 @@ 1 2 - 1876 + 1868 2 4 - 1751 + 1744 4 6 - 1500 + 1495 6 11 - 1751 + 1744 11 33 - 1625 + 1619 34 45 - 1625 + 1619 50 75 - 1751 + 1744 78 98 - 1751 + 1744 101 131 - 1625 + 1619 131 147 - 1876 + 1868 149 161 - 1625 + 1619 162 198 - 1625 + 1619 202 329 - 875 + 872 @@ -5589,67 +5573,67 @@ 1 2 - 1625 + 1619 2 4 - 1876 + 1868 4 9 - 1625 + 1619 9 19 - 1751 + 1744 20 74 - 1625 + 1619 80 169 - 1625 + 1619 171 432 - 1625 + 1619 467 822 - 1625 + 1619 861 1001 - 1625 + 1619 1002 1190 - 1625 + 1619 1201 1338 - 1625 + 1619 1347 1920 - 1625 + 1619 2210 59360 - 1375 + 1370 @@ -5665,67 +5649,67 @@ 1 2 - 1625 + 1619 2 4 - 1876 + 1868 4 9 - 1625 + 1619 9 19 - 1751 + 1744 20 74 - 1625 + 1619 80 169 - 1625 + 1619 171 432 - 1625 + 1619 467 822 - 1625 + 1619 861 1003 - 1625 + 1619 1003 1198 - 1625 + 1619 1201 1338 - 1625 + 1619 1347 1920 - 1625 + 1619 2220 59375 - 1375 + 1370 @@ -5741,67 +5725,67 @@ 1 2 - 1876 + 1868 2 4 - 1751 + 1744 4 7 - 1876 + 1868 7 13 - 1751 + 1744 13 21 - 1751 + 1744 21 29 - 1625 + 1619 29 37 - 1500 + 1495 37 50 - 1625 + 1619 50 58 - 1625 + 1619 61 67 - 1751 + 1744 67 76 - 1751 + 1619 76 - 140 - 1625 + 137 + 1619 - 144 + 139 299 - 750 + 872 @@ -5817,32 +5801,32 @@ 1 2 - 4959983 + 4941015 2 3 - 807965 + 804875 3 4 - 561448 + 559301 4 12 - 593467 + 591197 12 214 - 562449 + 560298 214 530 - 12507 + 12459 @@ -5858,27 +5842,27 @@ 1 2 - 5017141 + 4997955 2 3 - 1237713 + 1232980 3 6 - 664507 + 661966 6 107 - 562449 + 560298 107 329 - 16009 + 15948 @@ -5894,12 +5878,12 @@ 1 2 - 7316466 + 7288487 2 7 - 181354 + 180660 @@ -5915,27 +5899,27 @@ 1 2 - 5658136 + 5636498 2 3 - 531306 + 529274 3 7 - 580209 + 577990 7 24 - 571079 + 568895 24 72 - 157090 + 156489 @@ -5951,27 +5935,27 @@ 1 2 - 5027147 + 5007922 2 3 - 774196 + 771235 3 4 - 555194 + 553071 4 12 - 605348 + 603033 12 235 - 535933 + 533884 @@ -5987,52 +5971,52 @@ 1 2 - 15759 + 15698 2 3 - 5628 + 5606 3 - 6 - 4127 + 7 + 4485 - 6 - 16 - 4252 + 7 + 17 + 4111 - 16 - 29 - 4127 + 17 + 32 + 4236 - 30 - 97 - 4127 + 35 + 103 + 4111 - 97 - 518 - 4127 + 147 + 635 + 4111 - 523 - 1928 - 4127 + 651 + 2069 + 4111 - 1990 - 3352 - 4127 + 2137 + 3404 + 4111 - 3386 + 3430 33692 - 3126 + 2741 @@ -6048,52 +6032,52 @@ 1 2 - 18760 + 18564 2 3 - 5628 + 5606 3 5 - 4127 + 4236 5 7 - 3376 + 3364 7 15 - 4752 + 4609 15 - 79 - 4127 + 78 + 4111 - 80 + 78 143 - 4127 + 4236 150 202 - 4127 + 4111 203 263 - 4127 + 4111 266 329 - 375 + 373 @@ -6109,52 +6093,52 @@ 1 2 - 16009 + 15948 2 3 - 6128 + 5980 3 - 8 - 4127 + 7 + 4111 - 8 + 7 17 - 4127 + 4236 17 35 - 4127 + 4111 35 140 - 4127 + 4111 157 601 - 4127 + 4111 610 - 1713 - 4127 + 1714 + 4111 1749 2382 - 4127 + 4111 2421 30689 - 2501 + 2491 @@ -6170,52 +6154,52 @@ 1 2 - 17385 + 17318 2 3 - 6378 + 6354 3 4 - 3502 + 3114 4 6 - 3502 + 3862 6 11 - 4627 + 4609 11 22 - 4127 + 4111 22 40 - 4252 + 4236 42 60 - 4877 + 4859 60 68 - 4127 + 4111 68 73 - 750 + 747 @@ -6231,52 +6215,52 @@ 1 2 - 16009 + 15948 2 3 - 6128 + 5980 3 - 8 - 4127 + 7 + 4111 - 8 + 7 17 - 4252 + 4360 17 36 - 4252 + 4236 36 170 - 4127 + 4111 173 - 619 - 4127 + 620 + 4111 622 1824 - 4127 + 4111 1843 2449 - 4127 + 4111 2460 30688 - 2251 + 2242 @@ -6286,19 +6270,19 @@ locations_stmt - 5202209 + 5203173 id - 5202209 + 5203173 container - 4152 + 4153 startLine - 272815 + 272866 startColumn @@ -6306,11 +6290,11 @@ endLine - 264987 + 265036 endColumn - 3226 + 3227 @@ -6324,7 +6308,7 @@ 1 2 - 5202209 + 5203173 @@ -6340,7 +6324,7 @@ 1 2 - 5202209 + 5203173 @@ -6356,7 +6340,7 @@ 1 2 - 5202209 + 5203173 @@ -6372,7 +6356,7 @@ 1 2 - 5202209 + 5203173 @@ -6388,7 +6372,7 @@ 1 2 - 5202209 + 5203173 @@ -6789,67 +6773,67 @@ 1 2 - 29405 + 29411 2 3 - 20875 + 20879 3 4 - 17031 + 17034 4 6 - 19725 + 19728 6 8 - 17087 + 17090 8 11 - 22811 + 22816 11 16 - 23569 + 23573 16 22 - 20931 + 20935 22 29 - 23232 + 23236 29 37 - 23681 + 23685 37 45 - 20623 + 20627 45 56 - 22138 + 22142 56 73 - 11700 + 11702 @@ -6865,67 +6849,67 @@ 1 2 - 30443 + 30449 2 3 - 21464 + 21468 3 4 - 17312 + 17315 4 6 - 19641 + 19644 6 8 - 17368 + 17371 8 11 - 23990 + 23994 11 16 - 22334 + 22338 16 22 - 22138 + 22142 22 29 - 23148 + 23152 29 36 - 21857 + 21861 36 44 - 22306 + 22310 44 54 - 21661 + 21665 54 68 - 9147 + 9148 @@ -6941,57 +6925,57 @@ 1 2 - 36616 + 36623 2 3 - 28451 + 28456 3 4 - 22952 + 22956 4 5 - 21970 + 21974 5 6 - 23793 + 23798 6 7 - 27104 + 27109 7 8 - 31061 + 31066 8 9 - 27890 + 27895 9 10 - 20426 + 20430 10 12 - 22699 + 22703 12 18 - 9848 + 9850 @@ -7007,67 +6991,67 @@ 1 2 - 47222 + 47231 2 3 - 35213 + 35220 3 4 - 25168 + 25173 4 5 - 22110 + 22114 5 6 - 17452 + 17455 6 7 - 16470 + 16473 7 8 - 13917 + 13919 8 9 - 15067 + 15070 9 10 - 14730 + 14733 10 11 - 14394 + 14396 11 12 - 13861 + 13863 12 14 - 21577 + 21581 14 24 - 15628 + 15631 @@ -7083,62 +7067,62 @@ 1 2 - 30219 + 30224 2 3 - 22110 + 22114 3 4 - 17677 + 17680 4 6 - 21941 + 21946 6 8 - 20062 + 20065 8 10 - 18013 + 18017 10 14 - 24944 + 24948 14 18 - 23232 + 23236 18 22 - 24074 + 24078 22 26 - 25224 + 25229 26 30 - 22531 + 22535 30 36 - 20679 + 20683 36 @@ -7529,67 +7513,67 @@ 1 2 - 23765 + 23770 2 3 - 19669 + 19672 3 4 - 15684 + 15687 4 6 - 21296 + 21300 6 8 - 17059 + 17062 8 11 - 21100 + 21104 11 15 - 20005 + 20009 15 21 - 21941 + 21946 21 27 - 21072 + 21076 27 34 - 20370 + 20374 34 42 - 21549 + 21553 42 51 - 19921 + 19925 51 68 - 20258 + 20262 68 @@ -7610,62 +7594,62 @@ 1 2 - 34063 + 34069 2 3 - 22026 + 22030 3 4 - 17424 + 17427 4 6 - 21380 + 21384 6 8 - 20482 + 20486 8 11 - 21689 + 21693 11 16 - 23793 + 23798 16 20 - 19921 + 19925 20 26 - 23429 + 23433 26 32 - 22222 + 22226 32 39 - 20454 + 20458 39 58 - 18097 + 18101 @@ -7681,62 +7665,62 @@ 1 2 - 44332 + 44341 2 3 - 32407 + 32413 3 4 - 25196 + 25201 4 5 - 20791 + 20795 5 6 - 18855 + 18858 6 7 - 15853 + 15856 7 8 - 16246 + 16249 8 9 - 14927 + 14930 9 10 - 13917 + 13919 10 12 - 24439 + 24443 12 15 - 24186 + 24191 15 100 - 13832 + 13835 @@ -7752,57 +7736,57 @@ 1 2 - 34063 + 34069 2 3 - 27834 + 27839 3 4 - 22980 + 22984 4 5 - 24326 + 24331 5 6 - 25337 + 25341 6 7 - 27946 + 27951 7 8 - 30612 + 30617 8 9 - 25589 + 25594 9 10 - 17620 + 17624 10 12 - 20454 + 20458 12 18 - 8221 + 8222 @@ -7818,67 +7802,67 @@ 1 2 - 33726 + 33732 2 3 - 22699 + 22703 3 4 - 17115 + 17119 4 6 - 24326 + 24331 6 8 - 20931 + 20935 8 10 - 17480 + 17483 10 13 - 19697 + 19700 13 16 - 20510 + 20514 16 19 - 20062 + 20065 19 22 - 18967 + 18971 22 26 - 23681 + 23685 26 31 - 20959 + 20963 31 39 - 4826 + 4827 @@ -8278,19 +8262,19 @@ locations_expr - 17956521 + 17959851 id - 17956521 + 17959851 container - 6341 + 6342 startLine - 261984 + 262033 startColumn @@ -8298,11 +8282,11 @@ endLine - 261956 + 262005 endColumn - 3815 + 3816 @@ -8316,7 +8300,7 @@ 1 2 - 17956521 + 17959851 @@ -8332,7 +8316,7 @@ 1 2 - 17956521 + 17959851 @@ -8348,7 +8332,7 @@ 1 2 - 17956521 + 17959851 @@ -8364,7 +8348,7 @@ 1 2 - 17956521 + 17959851 @@ -8380,7 +8364,7 @@ 1 2 - 17956521 + 17959851 @@ -8401,12 +8385,12 @@ 2 6 - 476 + 477 6 11 - 476 + 477 12 @@ -8416,47 +8400,47 @@ 27 87 - 476 + 477 95 514 - 476 + 477 525 1401 - 476 + 477 1526 2343 - 476 + 477 2404 3615 - 476 + 477 3668 5162 - 476 + 477 5341 7345 - 476 + 477 7399 9307 - 476 + 477 9382 16759 - 476 + 477 18811 @@ -8482,7 +8466,7 @@ 2 4 - 476 + 477 4 @@ -8497,42 +8481,42 @@ 20 66 - 476 + 477 67 162 - 476 + 477 166 362 - 476 + 477 376 591 - 476 + 477 593 929 - 476 + 477 960 1269 - 476 + 477 1291 1782 - 476 + 477 1851 2492 - 476 + 477 2594 @@ -8568,7 +8552,7 @@ 7 16 - 476 + 477 16 @@ -8578,7 +8562,7 @@ 36 59 - 476 + 477 59 @@ -8644,7 +8628,7 @@ 2 4 - 476 + 477 4 @@ -8659,42 +8643,42 @@ 20 68 - 476 + 477 68 163 - 476 + 477 166 362 - 476 + 477 376 592 - 476 + 477 593 931 - 476 + 477 960 1273 - 476 + 477 1292 1786 - 476 + 477 1855 2501 - 476 + 477 2593 @@ -8720,7 +8704,7 @@ 2 4 - 476 + 477 4 @@ -8730,17 +8714,17 @@ 7 15 - 476 + 477 15 36 - 476 + 477 36 62 - 476 + 477 62 @@ -8755,7 +8739,7 @@ 73 75 - 448 + 449 75 @@ -8770,12 +8754,12 @@ 77 79 - 476 + 477 79 84 - 476 + 477 84 @@ -8796,67 +8780,67 @@ 1 5 - 21998 + 22002 5 9 - 22503 + 22507 9 15 - 21885 + 21889 15 23 - 20623 + 20627 23 32 - 20679 + 20683 32 44 - 20482 + 20486 44 60 - 20146 + 20149 60 80 - 20286 + 20290 80 103 - 19949 + 19953 103 130 - 20090 + 20093 130 159 - 19893 + 19897 159 194 - 19949 + 19953 194 297 - 13496 + 13498 @@ -8872,62 +8856,62 @@ 1 2 - 32099 + 32105 2 3 - 21324 + 21328 3 4 - 15488 + 15491 4 6 - 22334 + 22338 6 8 - 18602 + 18606 8 11 - 22418 + 22423 11 16 - 23681 + 23685 16 21 - 22503 + 22507 21 28 - 22671 + 22675 28 35 - 21633 + 21637 35 43 - 21773 + 21777 43 61 - 17452 + 17455 @@ -8943,62 +8927,62 @@ 1 4 - 21801 + 21805 4 7 - 23934 + 23938 7 11 - 22783 + 22787 11 16 - 23765 + 23770 16 21 - 23906 + 23910 21 26 - 20567 + 20570 26 31 - 22082 + 22086 31 36 - 24102 + 24106 36 40 - 21464 + 21468 40 44 - 22615 + 22619 44 49 - 22755 + 22759 49 63 - 12205 + 12207 @@ -9014,27 +8998,27 @@ 1 2 - 138947 + 138972 2 3 - 61112 + 61123 3 4 - 37682 + 37689 4 6 - 19977 + 19981 6 23 - 4264 + 4265 @@ -9050,62 +9034,62 @@ 1 4 - 23148 + 23152 4 7 - 22727 + 22731 7 11 - 22418 + 22423 11 16 - 22138 + 22142 16 21 - 22447 + 22451 21 27 - 22867 + 22872 27 33 - 22475 + 22479 33 38 - 19753 + 19757 38 43 - 21296 + 21300 43 47 - 19949 + 19953 47 52 - 23036 + 23040 52 66 - 19669 + 19672 68 @@ -9202,7 +9186,7 @@ 1 2 - 448 + 449 2 @@ -9430,7 +9414,7 @@ 1 2 - 448 + 449 2 @@ -9506,67 +9490,67 @@ 1 5 - 22026 + 22030 5 9 - 22503 + 22507 9 15 - 21577 + 21581 15 23 - 20595 + 20598 23 32 - 21352 + 21356 32 44 - 20118 + 20121 44 60 - 19781 + 19785 60 80 - 20875 + 20879 80 103 - 19809 + 19813 103 130 - 20005 + 20009 130 159 - 19949 + 19953 159 193 - 19669 + 19672 193 296 - 13692 + 13695 @@ -9582,67 +9566,67 @@ 1 2 - 32099 + 32105 2 3 - 21240 + 21244 3 4 - 15488 + 15491 4 6 - 21913 + 21917 6 8 - 18406 + 18409 8 11 - 22503 + 22507 11 15 - 19781 + 19785 15 20 - 22811 + 22816 20 26 - 20454 + 20458 26 33 - 21913 + 21917 33 40 - 19893 + 19897 40 49 - 20033 + 20037 49 61 - 5415 + 5416 @@ -9658,22 +9642,22 @@ 1 2 - 130248 + 130272 2 3 - 68210 + 68223 3 4 - 40152 + 40159 4 6 - 21380 + 21384 6 @@ -9694,62 +9678,62 @@ 1 4 - 21605 + 21609 4 7 - 23821 + 23826 7 11 - 22503 + 22507 11 16 - 23681 + 23685 16 21 - 23625 + 23629 21 26 - 20679 + 20683 26 31 - 22278 + 22282 31 36 - 24074 + 24078 36 40 - 20875 + 20879 40 44 - 22587 + 22591 44 49 - 23148 + 23152 49 63 - 13075 + 13077 @@ -9765,62 +9749,62 @@ 1 4 - 23457 + 23461 4 7 - 22924 + 22928 7 11 - 22418 + 22423 11 16 - 23036 + 23040 16 21 - 21857 + 21861 21 26 - 19809 + 19813 26 32 - 22054 + 22058 32 38 - 23878 + 23882 38 43 - 22110 + 22114 43 47 - 19781 + 19785 47 52 - 22755 + 22759 52 69 - 17873 + 17876 @@ -9912,7 +9896,7 @@ 1 2 - 448 + 449 2 @@ -10205,23 +10189,23 @@ numlines - 809466 + 806371 element_id - 808340 + 805249 num_lines - 39522 + 39371 num_code - 34019 + 33889 num_comment - 18385 + 18315 @@ -10235,12 +10219,12 @@ 1 2 - 807215 + 804128 2 3 - 1125 + 1121 @@ -10256,12 +10240,12 @@ 1 2 - 807215 + 804128 2 3 - 1125 + 1121 @@ -10277,12 +10261,12 @@ 1 2 - 808090 + 805000 2 3 - 250 + 249 @@ -10298,27 +10282,27 @@ 1 2 - 26765 + 26663 2 3 - 3752 + 3737 3 5 - 3376 + 3364 5 37 - 3126 + 3114 41 1978 - 2501 + 2491 @@ -10334,27 +10318,27 @@ 1 2 - 27265 + 27161 2 3 - 4127 + 4111 3 4 - 2501 + 2491 4 7 - 3502 + 3488 7 12 - 2126 + 2118 @@ -10370,27 +10354,27 @@ 1 2 - 26890 + 26787 2 3 - 4127 + 4111 3 4 - 2501 + 2491 4 6 - 3126 + 3114 6 11 - 2876 + 2865 @@ -10406,32 +10390,32 @@ 1 2 - 21637 + 21554 2 3 - 3752 + 3737 3 4 - 2376 + 2367 4 13 - 2876 + 2865 14 197 - 2626 + 2616 205 2101 - 750 + 747 @@ -10447,32 +10431,32 @@ 1 2 - 22012 + 21928 2 3 - 3752 + 3737 3 4 - 2126 + 2118 4 6 - 1876 + 1868 6 9 - 2751 + 2741 9 13 - 1500 + 1495 @@ -10488,27 +10472,27 @@ 1 2 - 21762 + 21679 2 3 - 4377 + 4360 3 5 - 2876 + 2865 5 8 - 3126 + 3114 8 12 - 1876 + 1868 @@ -10524,32 +10508,32 @@ 1 2 - 11381 + 11338 2 3 - 1751 + 1744 3 4 - 1500 + 1495 4 7 - 1375 + 1370 8 22 - 1500 + 1495 42 3650 - 875 + 872 @@ -10565,32 +10549,32 @@ 1 2 - 11381 + 11338 2 3 - 1751 + 1744 3 4 - 1500 + 1495 4 7 - 1500 + 1495 8 27 - 1500 + 1495 30 48 - 750 + 747 @@ -10606,32 +10590,32 @@ 1 2 - 11381 + 11338 2 3 - 1751 + 1744 3 4 - 1751 + 1744 4 9 - 1500 + 1495 10 36 - 1625 + 1619 36 43 - 375 + 373 @@ -11198,15 +11182,15 @@ files - 83260 + 81417 id - 83260 + 81417 name - 83260 + 81417 @@ -11220,7 +11204,7 @@ 1 2 - 83260 + 81417 @@ -11236,7 +11220,7 @@ 1 2 - 83260 + 81417 @@ -11246,15 +11230,15 @@ folders - 15818 + 15468 id - 15818 + 15468 name - 15818 + 15468 @@ -11268,7 +11252,7 @@ 1 2 - 15818 + 15468 @@ -11284,7 +11268,7 @@ 1 2 - 15818 + 15468 @@ -11294,15 +11278,15 @@ containerparent - 99052 + 96860 parent - 15818 + 15468 child - 99052 + 96860 @@ -11316,42 +11300,42 @@ 1 2 - 7700 + 7529 2 3 - 1941 + 1898 3 4 - 849 + 830 4 6 - 1281 + 1252 6 10 - 1240 + 1213 10 16 - 1281 + 1252 16 44 - 1186 + 1160 44 151 - 337 + 329 @@ -11367,7 +11351,7 @@ 1 2 - 99052 + 96860 @@ -11377,11 +11361,11 @@ fileannotations - 5363077 + 5244377 id - 7363 + 7200 kind @@ -11389,11 +11373,11 @@ name - 74967 + 73307 value - 50450 + 49333 @@ -11407,12 +11391,12 @@ 1 2 - 256 + 250 2 3 - 7106 + 6949 @@ -11428,62 +11412,62 @@ 1 86 - 552 + 540 88 206 - 552 + 540 212 291 - 566 + 553 291 359 - 552 + 540 362 401 - 552 + 540 402 479 - 552 + 540 480 549 - 323 + 316 550 551 - 1699 + 1661 553 628 - 552 + 540 631 753 - 579 + 567 753 1231 - 566 + 553 1234 2155 - 310 + 303 @@ -11499,62 +11483,62 @@ 1 98 - 552 + 540 102 244 - 552 + 540 244 351 - 552 + 540 352 434 - 566 + 553 434 490 - 566 + 553 490 628 - 552 + 540 632 702 - 80 + 79 706 707 - 1699 + 1661 710 939 - 552 + 540 939 1038 - 552 + 540 1066 1853 - 552 + 540 1853 3292 - 552 + 540 3423 @@ -11638,62 +11622,62 @@ 1 2 - 14079 + 13767 2 3 - 5569 + 5446 3 5 - 6459 + 6316 5 7 - 5232 + 5116 7 9 - 5866 + 5736 9 16 - 5529 + 5406 16 19 - 6243 + 6105 19 27 - 5434 + 5314 27 47 - 6176 + 6039 47 128 - 6284 + 6145 128 459 - 5906 + 5776 459 546 - 2184 + 2136 @@ -11709,7 +11693,7 @@ 1 2 - 74967 + 73307 @@ -11725,57 +11709,57 @@ 1 2 - 14793 + 14466 2 3 - 9817 + 9600 3 4 - 5232 + 5116 4 6 - 5191 + 5077 6 8 - 4369 + 4272 8 11 - 6055 + 5921 11 17 - 6891 + 6738 17 23 - 6001 + 5868 23 41 - 5974 + 5841 41 95 - 5704 + 5578 95 1726 - 4935 + 4826 @@ -11791,72 +11775,72 @@ 1 2 - 4288 + 4193 2 4 - 2090 + 2044 4 5 - 4072 + 3982 5 8 - 3142 + 3072 8 14 - 3789 + 3705 14 17 - 2467 + 2413 17 24 - 3883 + 3797 24 51 - 4517 + 4417 51 58 - 3870 + 3784 58 80 - 3802 + 3718 81 151 - 3937 + 3850 151 334 - 3802 + 3718 334 473 - 3829 + 3745 473 547 - 2953 + 2888 @@ -11872,7 +11856,7 @@ 1 2 - 50436 + 49320 2 @@ -11893,72 +11877,72 @@ 1 2 - 4342 + 4246 2 4 - 2440 + 2386 4 5 - 3897 + 3811 5 8 - 3169 + 3098 8 14 - 4450 + 4351 14 18 - 4409 + 4312 18 28 - 4086 + 3995 28 34 - 4018 + 3929 34 41 - 4086 + 3995 41 66 - 3816 + 3731 66 92 - 3924 + 3837 92 113 - 3816 + 3731 113 145 - 3870 + 3784 145 172 - 121 + 118 @@ -11968,15 +11952,15 @@ inmacroexpansion - 149575195 + 149602934 id - 24600427 + 24604989 inv - 3693421 + 3694106 @@ -11990,37 +11974,37 @@ 1 3 - 2201734 + 2202142 3 5 - 1470855 + 1471127 5 6 - 1615840 + 1616139 6 7 - 6564145 + 6565363 7 8 - 8694629 + 8696241 8 9 - 3547106 + 3547764 9 22 - 506116 + 506210 @@ -12036,57 +12020,57 @@ 1 2 - 528682 + 528780 2 3 - 741131 + 741268 3 4 - 480166 + 480255 4 7 - 274533 + 274584 7 8 - 281364 + 281416 8 9 - 329323 + 329385 9 10 - 3037 + 3038 10 11 - 443407 + 443489 11 337 - 306938 + 306995 339 423 - 280967 + 281020 423 7616 - 23868 + 23872 @@ -12096,15 +12080,15 @@ affectedbymacroexpansion - 48599612 + 48608625 id - 7025049 + 7026351 inv - 3792491 + 3793194 @@ -12118,37 +12102,37 @@ 1 2 - 3835957 + 3836668 2 3 - 764163 + 764304 3 4 - 360830 + 360897 4 5 - 770576 + 770719 5 12 - 533664 + 533763 12 50 - 554712 + 554815 50 9900 - 205144 + 205182 @@ -12164,67 +12148,67 @@ 1 4 - 312373 + 312430 4 7 - 315722 + 315781 7 9 - 300246 + 300302 9 12 - 341980 + 342043 12 13 - 454730 + 454814 13 14 - 225467 + 225509 14 15 - 406898 + 406973 15 16 - 165963 + 165994 16 17 - 376622 + 376692 17 18 - 200076 + 200113 18 20 - 343293 + 343357 20 25 - 284595 + 284648 25 207 - 64521 + 64533 @@ -12234,19 +12218,19 @@ macroinvocations - 40422573 + 39528395 id - 40422573 + 39528395 macro_id - 109396 + 106974 location - 1065236 + 1041659 kind @@ -12264,7 +12248,7 @@ 1 2 - 40422573 + 39528395 @@ -12280,7 +12264,7 @@ 1 2 - 40422573 + 39528395 @@ -12296,7 +12280,7 @@ 1 2 - 40422573 + 39528395 @@ -12312,52 +12296,52 @@ 1 2 - 23235 + 22721 2 3 - 20471 + 20018 3 4 - 7484 + 7318 4 6 - 10019 + 9798 6 11 - 9413 + 9204 11 21 - 9048 + 8848 21 48 - 8334 + 8149 48 145 - 8280 + 8096 145 955 - 8212 + 8031 955 175302 - 4895 + 4786 @@ -12373,37 +12357,37 @@ 1 2 - 59970 + 58643 2 3 - 13580 + 13279 3 4 - 6850 + 6699 4 6 - 8684 + 8492 6 13 - 9399 + 9191 13 67 - 8253 + 8070 67 4815 - 2656 + 2597 @@ -12419,12 +12403,12 @@ 1 2 - 100980 + 98745 2 3 - 8415 + 8228 @@ -12440,37 +12424,37 @@ 1 2 - 424327 + 414923 2 3 - 251670 + 246126 3 4 - 112794 + 110311 4 6 - 77246 + 75496 6 11 - 81763 + 79967 11 41 - 80374 + 78595 41 226300 - 37058 + 36238 @@ -12486,12 +12470,12 @@ 1 2 - 1005062 + 982817 2 367 - 60173 + 58841 @@ -12507,7 +12491,7 @@ 1 2 - 1065236 + 1041659 @@ -12526,8 +12510,8 @@ 13 - 2975140 - 2975141 + 2975177 + 2975178 13 @@ -12580,15 +12564,15 @@ macroparent - 35648322 + 34859337 id - 35648322 + 34859337 parent_id - 27932475 + 27314263 @@ -12602,7 +12586,7 @@ 1 2 - 35648322 + 34859337 @@ -12618,17 +12602,17 @@ 1 2 - 21758475 + 21276911 2 3 - 5150852 + 5036849 3 91 - 1023147 + 1000502 @@ -12638,15 +12622,15 @@ macrolocationbind - 5543583 + 5544604 id - 3882063 + 3882778 location - 2758591 + 2759099 @@ -12660,22 +12644,22 @@ 1 2 - 3056719 + 3057282 2 3 - 469858 + 469944 3 7 - 314935 + 314993 7 57 - 40549 + 40556 @@ -12691,22 +12675,22 @@ 1 2 - 2198268 + 2198673 2 3 - 240004 + 240048 3 8 - 216571 + 216610 8 723 - 103748 + 103767 @@ -12716,19 +12700,19 @@ macro_argument_unexpanded - 102782052 + 100508328 invocation - 31085973 + 30398519 argument_index - 890 + 870 text - 438272 + 428571 @@ -12742,22 +12726,22 @@ 1 2 - 9939829 + 9719872 2 3 - 12443923 + 12168992 3 4 - 6366751 + 6225876 4 67 - 2335468 + 2283777 @@ -12773,22 +12757,22 @@ 1 2 - 10173011 + 9947893 2 3 - 12465325 + 12189920 3 4 - 6167729 + 6031259 4 67 - 2279907 + 2229446 @@ -12804,17 +12788,17 @@ 46457 46458 - 782 + 764 46659 173182 - 67 + 65 - 645292 - 2305106 - 40 + 645295 + 2305149 + 39 @@ -12830,17 +12814,17 @@ 2 3 - 782 + 764 13 1115 - 67 + 65 7702 22873 - 40 + 39 @@ -12856,57 +12840,57 @@ 1 2 - 51717 + 50559 2 3 - 79633 + 77883 3 4 - 29533 + 28880 4 5 - 44314 + 43320 5 6 - 49964 + 48845 6 9 - 36465 + 35684 9 15 - 36654 + 35829 15 27 - 33377 + 32651 27 57 - 33970 + 33205 57 517 - 33093 + 32374 518 485092 - 9547 + 9336 @@ -12922,17 +12906,17 @@ 1 2 - 310481 + 303609 2 3 - 114749 + 112210 3 9 - 13040 + 12752 @@ -12942,19 +12926,19 @@ macro_argument_expanded - 102782052 + 100508328 invocation - 31085973 + 30398519 argument_index - 890 + 870 text - 265479 + 259603 @@ -12968,22 +12952,22 @@ 1 2 - 9939829 + 9719872 2 3 - 12443923 + 12168992 3 4 - 6366751 + 6225876 4 67 - 2335468 + 2283777 @@ -12999,22 +12983,22 @@ 1 2 - 13706388 + 13403066 2 3 - 10736336 + 10499198 3 4 - 5379705 + 5260676 4 9 - 1263543 + 1235577 @@ -13030,17 +13014,17 @@ 46457 46458 - 782 + 764 46659 173182 - 67 + 65 - 645292 - 2305106 - 40 + 645295 + 2305149 + 39 @@ -13056,17 +13040,17 @@ 1 2 - 768 + 751 2 96 - 67 + 65 950 16176 - 53 + 52 @@ -13082,57 +13066,57 @@ 1 2 - 28171 + 27534 2 3 - 34927 + 34168 3 4 - 58231 + 56942 4 5 - 20538 + 20070 5 6 - 3964 + 3863 6 7 - 23235 + 22734 7 10 - 21590 + 21112 10 19 - 22939 + 22444 19 51 - 19931 + 19477 51 253 - 20053 + 19622 254 990275 - 11894 + 11631 @@ -13148,17 +13132,17 @@ 1 2 - 134169 + 131199 2 3 - 113522 + 111010 3 66 - 17787 + 17393 @@ -13168,19 +13152,19 @@ functions - 4015439 + 4000083 id - 4015439 + 4000083 name - 1650451 + 1644139 kind - 1000 + 996 @@ -13194,7 +13178,7 @@ 1 2 - 4015439 + 4000083 @@ -13210,7 +13194,7 @@ 1 2 - 4015439 + 4000083 @@ -13226,17 +13210,17 @@ 1 2 - 1403934 + 1398565 2 4 - 139330 + 138797 4 3162 - 107186 + 106776 @@ -13252,12 +13236,12 @@ 1 2 - 1647574 + 1641273 2 3 - 2876 + 2865 @@ -13273,42 +13257,42 @@ 8 9 - 125 + 124 13 14 - 125 + 124 47 48 - 125 + 124 83 84 - 125 + 124 690 691 - 125 + 124 4450 4451 - 125 + 124 5230 5231 - 125 + 124 21584 21585 - 125 + 124 @@ -13324,42 +13308,42 @@ 2 3 - 125 + 124 13 14 - 125 + 124 18 19 - 125 + 124 41 42 - 125 + 124 43 44 - 125 + 124 302 303 - 125 + 124 504 505 - 125 + 124 12296 12297 - 125 + 124 @@ -13369,15 +13353,15 @@ function_entry_point - 1432100 + 1430681 id - 1427396 + 1425982 entry_point - 1432100 + 1430681 @@ -13391,12 +13375,12 @@ 1 2 - 1423376 + 1421966 2 17 - 4020 + 4016 @@ -13412,7 +13396,7 @@ 1 2 - 1432100 + 1430681 @@ -13422,15 +13406,15 @@ function_return_type - 4032949 + 4017526 id - 4015439 + 4000083 return_type - 623609 + 621224 @@ -13444,12 +13428,12 @@ 1 2 - 3997929 + 3982640 2 3 - 17510 + 17443 @@ -13465,27 +13449,27 @@ 1 2 - 313305 + 312107 2 3 - 213748 + 212930 3 5 - 48527 + 48342 5 354 - 46776 + 46598 358 9897 - 1250 + 1245 @@ -13765,59 +13749,59 @@ purefunctions - 138705 + 138354 id - 138705 + 138354 function_deleted - 94271 + 94264 id - 94271 + 94264 function_defaulted - 55310 + 55305 id - 55310 + 55305 function_prototyped - 4013938 + 3998588 id - 4013938 + 3998588 deduction_guide_for_class - 5878 + 5855 id - 5878 + 5855 class_template - 2251 + 2242 @@ -13831,7 +13815,7 @@ 1 2 - 5878 + 5855 @@ -13847,32 +13831,32 @@ 1 2 - 1125 + 1121 2 3 - 375 + 373 3 4 - 125 + 124 4 5 - 250 + 249 5 6 - 125 + 124 8 9 - 250 + 249 @@ -13882,15 +13866,15 @@ member_function_this_type - 841186 + 840353 id - 841186 + 840353 this_type - 239923 + 239686 @@ -13904,7 +13888,7 @@ 1 2 - 841186 + 840353 @@ -13920,37 +13904,37 @@ 1 2 - 73730 + 73657 2 3 - 70223 + 70154 3 4 - 33743 + 33709 4 5 - 15396 + 15380 5 7 - 21854 + 21832 7 13 - 18903 + 18884 13 530 - 6072 + 6066 @@ -13960,27 +13944,27 @@ fun_decls - 4160522 + 4144612 id - 4154519 + 4138631 function - 3990925 + 3975663 type_id - 615604 + 613250 name - 1648950 + 1642644 location - 2773098 + 2762493 @@ -13994,7 +13978,7 @@ 1 2 - 4154519 + 4138631 @@ -14010,12 +13994,12 @@ 1 2 - 4148516 + 4132651 2 3 - 6003 + 5980 @@ -14031,7 +14015,7 @@ 1 2 - 4154519 + 4138631 @@ -14047,7 +14031,7 @@ 1 2 - 4154519 + 4138631 @@ -14063,12 +14047,12 @@ 1 2 - 3840713 + 3826026 2 4 - 150211 + 149637 @@ -14084,12 +14068,12 @@ 1 2 - 3972414 + 3957223 2 3 - 18510 + 18439 @@ -14105,7 +14089,7 @@ 1 2 - 3990925 + 3975663 @@ -14121,12 +14105,12 @@ 1 2 - 3847467 + 3832754 2 4 - 143457 + 142909 @@ -14142,27 +14126,27 @@ 1 2 - 298547 + 297405 2 3 - 220627 + 219783 3 5 - 48903 + 48716 5 354 - 46276 + 46099 358 10246 - 1250 + 1245 @@ -14178,27 +14162,27 @@ 1 2 - 308677 + 307497 2 3 - 211872 + 211061 3 5 - 48527 + 48342 5 1033 - 46276 + 46099 1483 9847 - 250 + 249 @@ -14214,22 +14198,22 @@ 1 2 - 495160 + 493266 2 3 - 52780 + 52578 3 7 - 51154 + 50958 7 2211 - 16509 + 16446 @@ -14245,22 +14229,22 @@ 1 2 - 458514 + 456760 2 3 - 69540 + 69274 3 6 - 55907 + 55693 6 4728 - 31643 + 31522 @@ -14276,22 +14260,22 @@ 1 2 - 1299248 + 1294280 2 3 - 184106 + 183402 3 10 - 125697 + 125216 10 3169 - 39897 + 39745 @@ -14307,17 +14291,17 @@ 1 2 - 1403433 + 1398066 2 4 - 139705 + 139171 4 3162 - 105810 + 105406 @@ -14333,12 +14317,12 @@ 1 2 - 1558773 + 1552812 2 1596 - 90176 + 89832 @@ -14354,17 +14338,17 @@ 1 2 - 1323637 + 1318576 2 3 - 208745 + 207947 3 1592 - 116567 + 116121 @@ -14380,17 +14364,17 @@ 1 2 - 2392879 + 2383728 2 3 - 238012 + 237101 3 211 - 142206 + 141663 @@ -14406,17 +14390,17 @@ 1 2 - 2396631 + 2387466 2 3 - 234760 + 233862 3 211 - 141706 + 141164 @@ -14432,12 +14416,12 @@ 1 2 - 2657656 + 2647493 2 211 - 115441 + 115000 @@ -14453,12 +14437,12 @@ 1 2 - 2733825 + 2723371 2 8 - 39272 + 39122 @@ -14468,22 +14452,22 @@ fun_def - 1584950 + 1583380 id - 1584950 + 1583380 fun_specialized - 8434 + 8413 id - 8434 + 8413 @@ -14501,15 +14485,15 @@ fun_decl_specifiers - 4106992 + 4091286 id - 1690224 + 1683760 name - 1375 + 1370 @@ -14523,22 +14507,22 @@ 1 2 - 361958 + 360574 2 3 - 262776 + 261771 3 4 - 1042475 + 1038489 4 5 - 23013 + 22925 @@ -14554,57 +14538,57 @@ 15 16 - 125 + 124 19 20 - 125 + 124 224 225 - 125 + 124 261 262 - 125 + 124 546 547 - 125 + 124 826 827 - 125 + 124 1032 1033 - 125 + 124 1089 1090 - 125 + 124 7668 7669 - 125 + 124 10543 10544 - 125 + 124 10614 10615 - 125 + 124 @@ -14735,26 +14719,26 @@ fun_decl_empty_throws - 436983 + 435875 fun_decl - 436983 + 435875 fun_decl_noexcept - 178039 + 177863 fun_decl - 178039 + 177863 constant - 177440 + 177265 @@ -14768,7 +14752,7 @@ 1 2 - 178039 + 177863 @@ -14784,7 +14768,7 @@ 1 2 - 176884 + 176709 2 @@ -14799,26 +14783,26 @@ fun_decl_empty_noexcept - 1165171 + 1160715 fun_decl - 1165171 + 1160715 fun_decl_typedef_type - 2796 + 2769 fun_decl - 2796 + 2769 typedeftype_id - 125 + 124 @@ -14832,7 +14816,7 @@ 1 2 - 2796 + 2769 @@ -14908,11 +14892,11 @@ fun_requires - 31155 + 31152 id - 10822 + 10821 kind @@ -14920,7 +14904,7 @@ constraint - 30901 + 30899 @@ -14934,7 +14918,7 @@ 1 2 - 10753 + 10752 2 @@ -14955,7 +14939,7 @@ 1 2 - 7783 + 7782 2 @@ -14965,7 +14949,7 @@ 3 6 - 921 + 920 6 @@ -15038,7 +15022,7 @@ 1 2 - 30648 + 30645 2 @@ -15059,7 +15043,7 @@ 1 2 - 30901 + 30899 @@ -15069,19 +15053,19 @@ param_decl_bind - 7198273 + 7170746 id - 7198273 + 7170746 index - 8004 + 7974 fun_decl - 3482131 + 3468815 @@ -15095,7 +15079,7 @@ 1 2 - 7198273 + 7170746 @@ -15111,7 +15095,7 @@ 1 2 - 7198273 + 7170746 @@ -15127,32 +15111,32 @@ 2 3 - 4002 + 3987 6 7 - 2001 + 1993 16 20 - 625 + 622 25 143 - 625 + 622 332 15841 - 625 + 622 27841 27842 - 125 + 124 @@ -15168,32 +15152,32 @@ 2 3 - 4002 + 3987 6 7 - 2001 + 1993 16 20 - 625 + 622 25 143 - 625 + 622 332 15841 - 625 + 622 27841 27842 - 125 + 124 @@ -15209,27 +15193,27 @@ 1 2 - 1500990 + 1495250 2 3 - 957927 + 954263 3 4 - 580584 + 578364 4 5 - 283413 + 282329 5 65 - 159216 + 158607 @@ -15245,27 +15229,27 @@ 1 2 - 1500990 + 1495250 2 3 - 957927 + 954263 3 4 - 580584 + 578364 4 5 - 283413 + 282329 5 65 - 159216 + 158607 @@ -15275,27 +15259,27 @@ var_decls - 9254083 + 9244734 id - 9247204 + 9237881 variable - 8956662 + 8948450 type_id - 1464093 + 1458494 name - 853366 + 850103 location - 6211705 + 6187950 @@ -15309,7 +15293,7 @@ 1 2 - 9247204 + 9237881 @@ -15325,12 +15309,12 @@ 1 2 - 9240325 + 9231029 2 3 - 6878 + 6852 @@ -15346,7 +15330,7 @@ 1 2 - 9247204 + 9237881 @@ -15362,7 +15346,7 @@ 1 2 - 9247204 + 9237881 @@ -15378,12 +15362,12 @@ 1 2 - 8679127 + 8671976 2 4 - 277534 + 276473 @@ -15399,12 +15383,12 @@ 1 2 - 8917889 + 8909826 2 3 - 38772 + 38624 @@ -15420,12 +15404,12 @@ 1 2 - 8850851 + 8843044 2 4 - 105810 + 105406 @@ -15441,12 +15425,12 @@ 1 2 - 8704516 + 8697269 2 4 - 252145 + 251181 @@ -15462,27 +15446,27 @@ 1 2 - 855743 + 852470 2 3 - 285289 + 284198 3 5 - 128198 + 127708 5 11 - 113065 + 112632 11 - 2767 - 81797 + 2944 + 81484 @@ -15498,27 +15482,27 @@ 1 2 - 876129 + 872779 2 3 - 270781 + 269745 3 5 - 123571 + 123098 5 11 - 113065 + 112632 11 - 2682 - 80546 + 2859 + 80238 @@ -15534,22 +15518,22 @@ 1 2 - 1126274 + 1121967 2 3 - 193361 + 192621 3 7 - 115316 + 114875 7 1038 - 29141 + 29030 @@ -15565,27 +15549,27 @@ 1 2 - 992071 + 988277 2 3 - 219376 + 218537 3 6 - 134202 + 133689 6 95 - 109938 + 109517 97 2570 - 8504 + 8472 @@ -15601,32 +15585,32 @@ 1 2 - 466393 + 464610 2 3 - 165970 + 165335 3 4 - 60159 + 59929 4 7 - 66038 + 65785 7 - 25 - 64537 + 26 + 64165 - 25 + 26 26622 - 30267 + 30276 @@ -15642,32 +15626,32 @@ 1 2 - 479276 + 477443 2 3 - 165220 + 164588 3 4 - 55031 + 54821 4 8 - 71916 + 71641 8 - 45 - 64036 + 46 + 63792 - 45 + 46 26187 - 17885 + 17816 @@ -15683,22 +15667,22 @@ 1 2 - 655627 + 653120 2 3 - 110563 + 110140 3 11 - 65412 + 65162 11 3460 - 21762 + 21679 @@ -15714,27 +15698,27 @@ 1 2 - 493659 + 491771 2 3 - 183480 + 182779 3 4 - 52405 + 52204 4 8 - 65287 + 65037 8 22104 - 58533 + 58309 @@ -15750,12 +15734,12 @@ 1 2 - 5763571 + 5741531 2 2943 - 448133 + 446419 @@ -15771,12 +15755,12 @@ 1 2 - 5787585 + 5765453 2 2935 - 424119 + 422497 @@ -15792,12 +15776,12 @@ 1 2 - 5927416 + 5904748 2 2555 - 284288 + 283201 @@ -15813,12 +15797,12 @@ 1 2 - 6199197 + 6175491 2 5 - 12507 + 12459 @@ -15828,11 +15812,11 @@ var_def - 3714015 + 3721865 id - 3714015 + 3721865 @@ -15850,15 +15834,15 @@ var_decl_specifiers - 489532 + 487660 id - 489532 + 487660 name - 500 + 498 @@ -15872,7 +15856,7 @@ 1 2 - 489532 + 487660 @@ -15888,22 +15872,22 @@ 16 17 - 125 + 124 77 78 - 125 + 124 651 652 - 125 + 124 3170 3171 - 125 + 124 @@ -15982,19 +15966,19 @@ type_decls - 1882105 + 1840555 id - 1882105 + 1840555 type_id - 1840893 + 1800241 location - 1478788 + 1446059 @@ -16008,7 +15992,7 @@ 1 2 - 1882105 + 1840555 @@ -16024,7 +16008,7 @@ 1 2 - 1882105 + 1840555 @@ -16040,12 +16024,12 @@ 1 2 - 1811238 + 1771242 2 24 - 29655 + 28998 @@ -16061,12 +16045,12 @@ 1 2 - 1812560 + 1772535 2 24 - 28333 + 27706 @@ -16082,12 +16066,12 @@ 1 2 - 1402608 + 1371564 2 651 - 76180 + 74494 @@ -16103,12 +16087,12 @@ 1 2 - 1403943 + 1372869 2 651 - 74845 + 73189 @@ -16118,29 +16102,29 @@ type_def - 1291458 + 1262901 id - 1291458 + 1262901 type_decl_top - 670615 + 670739 type_decl - 670615 + 670739 type_requires - 8220 + 8219 id @@ -16148,7 +16132,7 @@ constraint - 8197 + 8196 @@ -16198,7 +16182,7 @@ 1 2 - 8174 + 8173 2 @@ -16213,23 +16197,23 @@ namespace_decls - 430914 + 429821 id - 430914 + 429821 namespace_id - 1959 + 1954 location - 430914 + 429821 bodylocation - 430914 + 429821 @@ -16243,7 +16227,7 @@ 1 2 - 430914 + 429821 @@ -16259,7 +16243,7 @@ 1 2 - 430914 + 429821 @@ -16275,7 +16259,7 @@ 1 2 - 430914 + 429821 @@ -16291,7 +16275,7 @@ 1 2 - 414 + 413 2 @@ -16301,42 +16285,42 @@ 3 6 - 181 + 180 6 15 - 164 + 163 15 34 - 155 + 154 35 62 - 164 + 163 63 87 - 155 + 154 90 142 - 155 + 154 143 219 - 155 + 154 263 1505 - 155 + 154 1854 @@ -16357,7 +16341,7 @@ 1 2 - 414 + 413 2 @@ -16367,42 +16351,42 @@ 3 6 - 181 + 180 6 15 - 164 + 163 15 34 - 155 + 154 35 62 - 164 + 163 63 87 - 155 + 154 90 142 - 155 + 154 143 219 - 155 + 154 263 1505 - 155 + 154 1854 @@ -16423,7 +16407,7 @@ 1 2 - 414 + 413 2 @@ -16433,42 +16417,42 @@ 3 6 - 181 + 180 6 15 - 164 + 163 15 34 - 155 + 154 35 62 - 164 + 163 63 87 - 155 + 154 90 142 - 155 + 154 143 219 - 155 + 154 263 1505 - 155 + 154 1854 @@ -16489,7 +16473,7 @@ 1 2 - 430914 + 429821 @@ -16505,7 +16489,7 @@ 1 2 - 430914 + 429821 @@ -16521,7 +16505,7 @@ 1 2 - 430914 + 429821 @@ -16537,7 +16521,7 @@ 1 2 - 430914 + 429821 @@ -16553,7 +16537,7 @@ 1 2 - 430914 + 429821 @@ -16569,7 +16553,7 @@ 1 2 - 430914 + 429821 @@ -16579,19 +16563,19 @@ usings - 347162 + 339703 id - 347162 + 339703 element_id - 75169 + 73729 location - 34280 + 33521 kind @@ -16609,7 +16593,7 @@ 1 2 - 347162 + 339703 @@ -16625,7 +16609,7 @@ 1 2 - 347162 + 339703 @@ -16641,7 +16625,7 @@ 1 2 - 347162 + 339703 @@ -16657,17 +16641,17 @@ 1 2 - 65297 + 64076 2 5 - 6877 + 6725 5 134 - 2993 + 2927 @@ -16683,17 +16667,17 @@ 1 2 - 65297 + 64076 2 5 - 6877 + 6725 5 134 - 2993 + 2927 @@ -16709,7 +16693,7 @@ 1 2 - 75169 + 73729 @@ -16725,22 +16709,22 @@ 1 2 - 27038 + 26440 2 4 - 2926 + 2874 4 132 - 2494 + 2426 145 - 365 - 1820 + 367 + 1780 @@ -16756,22 +16740,22 @@ 1 2 - 27038 + 26440 2 4 - 2926 + 2874 4 132 - 2494 + 2426 145 - 365 - 1820 + 367 + 1780 @@ -16787,7 +16771,7 @@ 1 2 - 34280 + 33521 @@ -16806,8 +16790,8 @@ 13 - 25350 - 25351 + 25367 + 25368 13 @@ -16827,8 +16811,8 @@ 13 - 5360 - 5361 + 5377 + 5378 13 @@ -16860,15 +16844,15 @@ using_container - 738908 + 722778 parent - 27038 + 26479 child - 347162 + 339703 @@ -16882,42 +16866,42 @@ 1 2 - 12528 + 12250 2 3 - 1995 + 1951 3 6 - 2292 + 2241 6 7 - 2885 + 2861 7 27 - 2063 + 2017 27 136 - 1051 + 1028 145 146 - 3344 + 3270 146 437 - 876 + 857 @@ -16933,27 +16917,27 @@ 1 2 - 123785 + 121269 2 3 - 153561 + 150163 3 4 - 25123 + 24567 4 5 - 34078 + 33324 5 65 - 10613 + 10378 @@ -16963,27 +16947,27 @@ static_asserts - 183493 + 183028 id - 183493 + 183028 condition - 183493 + 183028 message - 41092 + 40988 location - 23921 + 23861 enclosing - 6647 + 6630 @@ -16997,7 +16981,7 @@ 1 2 - 183493 + 183028 @@ -17013,7 +16997,7 @@ 1 2 - 183493 + 183028 @@ -17029,7 +17013,7 @@ 1 2 - 183493 + 183028 @@ -17045,7 +17029,7 @@ 1 2 - 183493 + 183028 @@ -17061,7 +17045,7 @@ 1 2 - 183493 + 183028 @@ -17077,7 +17061,7 @@ 1 2 - 183493 + 183028 @@ -17093,7 +17077,7 @@ 1 2 - 183493 + 183028 @@ -17109,7 +17093,7 @@ 1 2 - 183493 + 183028 @@ -17125,32 +17109,32 @@ 1 2 - 30232 + 30155 2 3 - 673 + 671 3 4 - 3876 + 3866 4 12 - 2184 + 2178 12 17 - 3315 + 3306 17 513 - 811 + 809 @@ -17166,32 +17150,32 @@ 1 2 - 30232 + 30155 2 3 - 673 + 671 3 4 - 3876 + 3866 4 12 - 2184 + 2178 12 17 - 3315 + 3306 17 513 - 811 + 809 @@ -17207,12 +17191,12 @@ 1 2 - 38079 + 37983 2 33 - 3012 + 3005 @@ -17228,7 +17212,7 @@ 1 2 - 32166 + 32084 2 @@ -17238,17 +17222,17 @@ 3 4 - 3625 + 3616 4 12 - 1985 + 1980 12 43 - 2961 + 2953 @@ -17264,37 +17248,37 @@ 1 2 - 4489 + 4477 2 3 - 3893 + 3883 3 4 - 1873 + 1868 4 5 - 112 + 111 5 6 - 5024 + 5011 6 13 - 457 + 456 14 15 - 2814 + 2807 16 @@ -17304,12 +17288,12 @@ 17 18 - 4670 + 4658 19 52 - 526 + 525 @@ -17325,37 +17309,37 @@ 1 2 - 4489 + 4477 2 3 - 3893 + 3883 3 4 - 1873 + 1868 4 5 - 112 + 111 5 6 - 5024 + 5011 6 13 - 457 + 456 14 15 - 2814 + 2807 16 @@ -17365,12 +17349,12 @@ 17 18 - 4670 + 4658 19 52 - 526 + 525 @@ -17386,22 +17370,22 @@ 1 2 - 7243 + 7224 2 3 - 8158 + 8137 3 4 - 8270 + 8249 4 7 - 250 + 249 @@ -17417,32 +17401,32 @@ 1 2 - 5326 + 5313 2 3 - 8537 + 8516 3 4 - 1597 + 1593 4 5 - 5041 + 5028 5 13 - 517 + 516 13 14 - 2814 + 2807 16 @@ -17463,17 +17447,17 @@ 1 2 - 5481 + 5468 2 3 - 561 + 559 3 210 - 500 + 499 223 @@ -17494,17 +17478,17 @@ 1 2 - 5481 + 5468 2 3 - 561 + 559 3 210 - 500 + 499 223 @@ -17525,17 +17509,17 @@ 1 2 - 5645 + 5631 2 3 - 552 + 551 3 2936 - 448 + 447 @@ -17551,17 +17535,17 @@ 1 2 - 5628 + 5614 2 3 - 569 + 568 3 1929 - 448 + 447 @@ -17571,23 +17555,23 @@ params - 6992280 + 6965540 id - 6965639 + 6939001 function - 3369817 + 3356930 index - 8004 + 7974 type_id - 1226832 + 1222140 @@ -17601,7 +17585,7 @@ 1 2 - 6965639 + 6939001 @@ -17617,7 +17601,7 @@ 1 2 - 6965639 + 6939001 @@ -17633,12 +17617,12 @@ 1 2 - 6938999 + 6912463 2 3 - 26640 + 26538 @@ -17654,27 +17638,27 @@ 1 2 - 1464594 + 1458993 2 3 - 909774 + 906295 3 4 - 561823 + 559675 4 5 - 277660 + 276598 5 65 - 155964 + 155368 @@ -17690,27 +17674,27 @@ 1 2 - 1464594 + 1458993 2 3 - 909774 + 906295 3 4 - 561823 + 559675 4 5 - 277660 + 276598 5 65 - 155964 + 155368 @@ -17726,22 +17710,22 @@ 1 2 - 1765517 + 1758765 2 3 - 1009581 + 1005721 3 4 - 437502 + 435829 4 11 - 157215 + 156614 @@ -17757,32 +17741,32 @@ 2 3 - 4002 + 3987 6 7 - 2001 + 1993 14 18 - 625 + 622 23 138 - 625 + 622 323 15234 - 625 + 622 26943 26944 - 125 + 124 @@ -17798,32 +17782,32 @@ 2 3 - 4002 + 3987 6 7 - 2001 + 1993 14 18 - 625 + 622 23 138 - 625 + 622 323 15234 - 625 + 622 26943 26944 - 125 + 124 @@ -17839,32 +17823,32 @@ 1 2 - 4002 + 3987 2 3 - 2001 + 1993 4 7 - 625 + 622 9 54 - 625 + 622 115 2700 - 625 + 622 7528 7529 - 125 + 124 @@ -17880,27 +17864,27 @@ 1 2 - 741677 + 738841 2 3 - 242264 + 241338 3 5 - 93929 + 93569 5 13 - 93804 + 93445 13 2570 - 55156 + 54945 @@ -17916,27 +17900,27 @@ 1 2 - 824099 + 820948 2 3 - 181354 + 180660 3 6 - 106686 + 106278 6 27 - 92553 + 92199 27 2558 - 22137 + 22053 @@ -17952,17 +17936,17 @@ 1 2 - 1001202 + 997373 2 3 - 167221 + 166581 3 65 - 58408 + 58185 @@ -17972,15 +17956,15 @@ overrides - 169801 + 169371 new - 160547 + 160140 old - 19122 + 19073 @@ -17994,12 +17978,12 @@ 1 2 - 151301 + 150917 2 4 - 9245 + 9222 @@ -18015,32 +17999,32 @@ 1 2 - 10463 + 10436 2 3 - 2589 + 2583 3 4 - 1735 + 1730 4 6 - 1579 + 1575 6 18 - 1441 + 1438 18 230 - 1312 + 1308 @@ -18050,19 +18034,19 @@ membervariables - 1491583 + 1491860 id - 1489139 + 1489415 type_id - 453830 + 453914 name - 638893 + 639011 @@ -18076,12 +18060,12 @@ 1 2 - 1486803 + 1487079 2 4 - 2335 + 2336 @@ -18097,7 +18081,7 @@ 1 2 - 1489139 + 1489415 @@ -18113,22 +18097,22 @@ 1 2 - 336774 + 336836 2 3 - 71917 + 71930 3 10 - 35035 + 35041 10 4422 - 10103 + 10105 @@ -18144,22 +18128,22 @@ 1 2 - 354264 + 354330 2 3 - 63932 + 63944 3 49 - 34111 + 34118 56 2175 - 1520 + 1521 @@ -18175,22 +18159,22 @@ 1 2 - 419772 + 419850 2 3 - 121781 + 121804 3 5 - 57305 + 57316 5 654 - 40032 + 40040 @@ -18206,17 +18190,17 @@ 1 2 - 522217 + 522314 2 3 - 72297 + 72311 3 658 - 44378 + 44386 @@ -18226,19 +18210,19 @@ globalvariables - 466518 + 486787 id - 466518 + 486787 type_id - 10380 + 10341 name - 112564 + 112134 @@ -18252,7 +18236,7 @@ 1 2 - 466518 + 486787 @@ -18268,7 +18252,7 @@ 1 2 - 466518 + 486787 @@ -18284,32 +18268,32 @@ 1 2 - 7004 + 6977 2 3 - 375 + 373 3 5 - 750 + 747 5 20 - 875 + 872 20 74 - 875 + 872 152 - 2037 - 500 + 2214 + 498 @@ -18325,32 +18309,32 @@ 1 2 - 7129 + 7101 2 3 - 375 + 373 3 5 - 750 + 747 5 20 - 750 + 747 20 74 - 875 + 872 124 226 - 500 + 498 @@ -18366,17 +18350,17 @@ 1 2 - 95430 + 95065 2 7 - 8755 + 8721 7 - 500 - 8379 + 604 + 8347 @@ -18392,17 +18376,17 @@ 1 2 - 97055 + 96684 2 3 - 15258 + 15200 3 4 - 250 + 249 @@ -18412,19 +18396,19 @@ localvariables - 734804 + 727547 id - 734804 + 727547 type_id - 54064 + 53530 name - 102754 + 101739 @@ -18438,7 +18422,7 @@ 1 2 - 734804 + 727547 @@ -18454,7 +18438,7 @@ 1 2 - 734804 + 727547 @@ -18470,37 +18454,37 @@ 1 2 - 29233 + 28944 2 3 - 7920 + 7842 3 4 - 4073 + 4033 4 6 - 4098 + 4057 6 12 - 4199 + 4157 12 166 - 4057 + 4017 168 19320 - 482 + 477 @@ -18516,22 +18500,22 @@ 1 2 - 38827 + 38444 2 3 - 6781 + 6714 3 5 - 4519 + 4474 5 3502 - 3935 + 3897 @@ -18547,32 +18531,32 @@ 1 2 - 63217 + 62592 2 3 - 16238 + 16077 3 4 - 6611 + 6545 4 8 - 8228 + 8147 8 135 - 7709 + 7633 135 7544 - 749 + 742 @@ -18588,22 +18572,22 @@ 1 2 - 85502 + 84658 2 3 - 8520 + 8436 3 15 - 7766 + 7689 15 1509 - 964 + 955 @@ -18613,15 +18597,15 @@ autoderivation - 229507 + 228629 var - 229507 + 228629 derivation_type - 625 + 622 @@ -18635,7 +18619,7 @@ 1 2 - 229507 + 228629 @@ -18651,27 +18635,27 @@ 38 39 - 125 + 124 79 80 - 125 + 124 454 455 - 125 + 124 530 531 - 125 + 124 734 735 - 125 + 124 @@ -18681,15 +18665,15 @@ orphaned_variables - 55640 + 55584 var - 55640 + 55584 function - 51534 + 51483 @@ -18703,7 +18687,7 @@ 1 2 - 55640 + 55584 @@ -18719,12 +18703,12 @@ 1 2 - 50465 + 50415 2 47 - 1069 + 1068 @@ -18734,19 +18718,19 @@ enumconstants - 343781 + 343844 id - 343781 + 343844 parent - 41173 + 41180 index - 13905 + 13908 type_id @@ -18754,11 +18738,11 @@ name - 343400 + 343464 location - 316459 + 316517 @@ -18772,7 +18756,7 @@ 1 2 - 343781 + 343844 @@ -18788,7 +18772,7 @@ 1 2 - 343781 + 343844 @@ -18804,7 +18788,7 @@ 1 2 - 343781 + 343844 @@ -18820,7 +18804,7 @@ 1 2 - 343781 + 343844 @@ -18836,7 +18820,7 @@ 1 2 - 343781 + 343844 @@ -18852,22 +18836,22 @@ 1 2 - 1520 + 1521 2 3 - 5703 + 5704 3 4 - 8690 + 8692 4 5 - 5486 + 5487 5 @@ -18877,7 +18861,7 @@ 6 7 - 2661 + 2662 7 @@ -18892,7 +18876,7 @@ 11 17 - 3150 + 3151 17 @@ -18918,22 +18902,22 @@ 1 2 - 1520 + 1521 2 3 - 5703 + 5704 3 4 - 8690 + 8692 4 5 - 5486 + 5487 5 @@ -18943,7 +18927,7 @@ 6 7 - 2661 + 2662 7 @@ -18958,7 +18942,7 @@ 11 17 - 3150 + 3151 17 @@ -18984,7 +18968,7 @@ 1 2 - 41173 + 41180 @@ -19000,22 +18984,22 @@ 1 2 - 1520 + 1521 2 3 - 5703 + 5704 3 4 - 8690 + 8692 4 5 - 5486 + 5487 5 @@ -19025,7 +19009,7 @@ 6 7 - 2661 + 2662 7 @@ -19040,7 +19024,7 @@ 11 17 - 3150 + 3151 17 @@ -19071,17 +19055,17 @@ 2 3 - 5920 + 5921 3 4 - 8745 + 8746 4 5 - 5431 + 5432 5 @@ -19096,12 +19080,12 @@ 7 8 - 1846 + 1847 8 11 - 3693 + 3694 11 @@ -19239,7 +19223,7 @@ 1 2 - 13905 + 13908 @@ -19447,7 +19431,7 @@ 1 2 - 343020 + 343084 2 @@ -19468,7 +19452,7 @@ 1 2 - 343020 + 343084 2 @@ -19489,7 +19473,7 @@ 1 2 - 343400 + 343464 @@ -19505,7 +19489,7 @@ 1 2 - 343400 + 343464 @@ -19521,7 +19505,7 @@ 1 2 - 343020 + 343084 2 @@ -19542,7 +19526,7 @@ 1 2 - 315427 + 315485 2 @@ -19563,7 +19547,7 @@ 1 2 - 316459 + 316517 @@ -19579,7 +19563,7 @@ 1 2 - 315427 + 315485 2 @@ -19600,7 +19584,7 @@ 1 2 - 316459 + 316517 @@ -19616,7 +19600,7 @@ 1 2 - 315427 + 315485 2 @@ -19631,31 +19615,31 @@ builtintypes - 7004 + 7101 id - 7004 + 7101 name - 7004 + 7101 kind - 7004 + 7101 size - 875 + 872 sign - 375 + 373 alignment - 625 + 622 @@ -19669,7 +19653,7 @@ 1 2 - 7004 + 7101 @@ -19685,7 +19669,7 @@ 1 2 - 7004 + 7101 @@ -19701,7 +19685,7 @@ 1 2 - 7004 + 7101 @@ -19717,7 +19701,7 @@ 1 2 - 7004 + 7101 @@ -19733,7 +19717,7 @@ 1 2 - 7004 + 7101 @@ -19749,7 +19733,7 @@ 1 2 - 7004 + 7101 @@ -19765,7 +19749,7 @@ 1 2 - 7004 + 7101 @@ -19781,7 +19765,7 @@ 1 2 - 7004 + 7101 @@ -19797,7 +19781,7 @@ 1 2 - 7004 + 7101 @@ -19813,7 +19797,7 @@ 1 2 - 7004 + 7101 @@ -19829,7 +19813,7 @@ 1 2 - 7004 + 7101 @@ -19845,7 +19829,7 @@ 1 2 - 7004 + 7101 @@ -19861,7 +19845,7 @@ 1 2 - 7004 + 7101 @@ -19877,7 +19861,7 @@ 1 2 - 7004 + 7101 @@ -19893,7 +19877,7 @@ 1 2 - 7004 + 7101 @@ -19909,37 +19893,37 @@ 1 2 - 125 + 124 2 3 - 125 + 124 - 7 - 8 - 125 + 8 + 9 + 124 9 10 - 125 + 124 11 12 - 125 + 124 12 13 - 125 + 124 14 15 - 125 + 124 @@ -19955,37 +19939,37 @@ 1 2 - 125 + 124 2 3 - 125 + 124 - 7 - 8 - 125 + 8 + 9 + 124 9 10 - 125 + 124 11 12 - 125 + 124 12 13 - 125 + 124 14 15 - 125 + 124 @@ -20001,37 +19985,37 @@ 1 2 - 125 + 124 2 3 - 125 + 124 - 7 - 8 - 125 + 8 + 9 + 124 9 10 - 125 + 124 11 12 - 125 + 124 12 13 - 125 + 124 14 15 - 125 + 124 @@ -20047,12 +20031,12 @@ 1 2 - 250 + 249 3 4 - 625 + 622 @@ -20068,12 +20052,12 @@ 1 2 - 500 + 498 2 3 - 375 + 373 @@ -20089,17 +20073,17 @@ 6 7 - 125 + 124 12 13 - 125 + 124 - 38 - 39 - 125 + 39 + 40 + 124 @@ -20115,17 +20099,17 @@ 6 7 - 125 + 124 12 13 - 125 + 124 - 38 - 39 - 125 + 39 + 40 + 124 @@ -20141,17 +20125,17 @@ 6 7 - 125 + 124 12 13 - 125 + 124 - 38 - 39 - 125 + 39 + 40 + 124 @@ -20167,12 +20151,12 @@ 5 6 - 250 + 249 7 8 - 125 + 124 @@ -20188,7 +20172,7 @@ 5 6 - 375 + 373 @@ -20204,22 +20188,27 @@ 8 9 - 250 + 124 + + + 9 + 10 + 124 10 11 - 125 + 124 13 14 - 125 + 124 17 18 - 125 + 124 @@ -20235,22 +20224,27 @@ 8 9 - 250 + 124 + + + 9 + 10 + 124 10 11 - 125 + 124 13 14 - 125 + 124 17 18 - 125 + 124 @@ -20266,22 +20260,27 @@ 8 9 - 250 + 124 + + + 9 + 10 + 124 10 11 - 125 + 124 13 14 - 125 + 124 17 18 - 125 + 124 @@ -20297,7 +20296,7 @@ 2 3 - 625 + 622 @@ -20313,7 +20312,7 @@ 3 4 - 625 + 622 @@ -20323,23 +20322,23 @@ derivedtypes - 3047881 + 3036226 id - 3047881 + 3036226 name - 1475975 + 1470331 kind - 750 + 747 type_id - 1949998 + 1942541 @@ -20353,7 +20352,7 @@ 1 2 - 3047881 + 3036226 @@ -20369,7 +20368,7 @@ 1 2 - 3047881 + 3036226 @@ -20385,7 +20384,7 @@ 1 2 - 3047881 + 3036226 @@ -20401,17 +20400,17 @@ 1 2 - 1358908 + 1353711 2 30 - 110938 + 110514 30 4274 - 6128 + 6105 @@ -20427,7 +20426,7 @@ 1 2 - 1475975 + 1470331 @@ -20443,17 +20442,17 @@ 1 2 - 1359033 + 1353836 2 30 - 110813 + 110390 30 4274 - 6128 + 6105 @@ -20469,32 +20468,32 @@ 787 788 - 125 + 124 2333 2334 - 125 + 124 3647 3648 - 125 + 124 4273 4274 - 125 + 124 5569 5570 - 125 + 124 7760 7761 - 125 + 124 @@ -20510,32 +20509,32 @@ 1 2 - 125 + 124 733 734 - 125 + 124 1613 1614 - 125 + 124 2433 2434 - 125 + 124 2678 2679 - 125 + 124 4343 4344 - 125 + 124 @@ -20551,32 +20550,32 @@ 208 209 - 125 + 124 2333 2334 - 125 + 124 3643 3644 - 125 + 124 4273 4274 - 125 + 124 5502 5503 - 125 + 124 7760 7761 - 125 + 124 @@ -20592,22 +20591,22 @@ 1 2 - 1317134 + 1312097 2 3 - 378593 + 377145 3 4 - 122945 + 122475 4 135 - 131325 + 130823 @@ -20623,22 +20622,22 @@ 1 2 - 1318635 + 1313592 2 3 - 378593 + 377145 3 4 - 121444 + 120980 4 135 - 131325 + 130823 @@ -20654,22 +20653,22 @@ 1 2 - 1319010 + 1313966 2 3 - 379468 + 378017 3 4 - 122945 + 122475 4 6 - 128574 + 128082 @@ -20679,19 +20678,19 @@ pointerishsize - 2252923 + 2244307 id - 2252923 + 2244307 size - 250 + 249 alignment - 250 + 249 @@ -20705,7 +20704,7 @@ 1 2 - 2252923 + 2244307 @@ -20721,7 +20720,7 @@ 1 2 - 2252923 + 2244307 @@ -20737,12 +20736,12 @@ 3 4 - 125 + 124 18010 18011 - 125 + 124 @@ -20758,7 +20757,7 @@ 1 2 - 250 + 249 @@ -20774,12 +20773,12 @@ 3 4 - 125 + 124 18010 18011 - 125 + 124 @@ -20795,7 +20794,7 @@ 1 2 - 250 + 249 @@ -20805,23 +20804,23 @@ arraysizes - 88676 + 88336 id - 88676 + 88336 num_elements - 18510 + 18439 bytesize - 22888 + 22800 alignment - 625 + 622 @@ -20835,7 +20834,7 @@ 1 2 - 88676 + 88336 @@ -20851,7 +20850,7 @@ 1 2 - 88676 + 88336 @@ -20867,7 +20866,7 @@ 1 2 - 88676 + 88336 @@ -20883,37 +20882,37 @@ 1 2 - 250 + 249 2 3 - 8880 + 8846 3 4 - 250 + 249 4 5 - 5628 + 5606 6 7 - 1625 + 1619 8 27 - 1500 + 1495 34 57 - 375 + 373 @@ -20929,22 +20928,22 @@ 1 2 - 9505 + 9469 2 3 - 6628 + 6603 3 5 - 1250 + 1245 5 11 - 1125 + 1121 @@ -20960,22 +20959,22 @@ 1 2 - 9505 + 9469 2 3 - 6628 + 6603 3 4 - 1000 + 996 4 6 - 1375 + 1370 @@ -20991,37 +20990,37 @@ 1 2 - 625 + 622 2 3 - 14758 + 14702 3 4 - 375 + 373 4 5 - 3251 + 3239 5 7 - 1500 + 1495 7 17 - 1751 + 1744 17 45 - 625 + 622 @@ -21037,22 +21036,22 @@ 1 2 - 16509 + 16446 2 3 - 4002 + 3987 3 5 - 1751 + 1744 5 7 - 625 + 622 @@ -21068,22 +21067,22 @@ 1 2 - 16634 + 16570 2 3 - 4002 + 3987 3 5 - 1876 + 1868 5 6 - 375 + 373 @@ -21099,27 +21098,27 @@ 10 11 - 125 + 124 86 87 - 125 + 124 91 92 - 125 + 124 187 188 - 125 + 124 335 336 - 125 + 124 @@ -21135,22 +21134,22 @@ 4 5 - 125 + 124 16 17 - 250 + 249 80 81 - 125 + 124 137 138 - 125 + 124 @@ -21166,27 +21165,27 @@ 4 5 - 125 + 124 19 20 - 125 + 124 20 21 - 125 + 124 80 81 - 125 + 124 138 139 - 125 + 124 @@ -21196,15 +21195,15 @@ typedefbase - 2164787 + 2162642 id - 2164787 + 2162642 type_id - 901360 + 900467 @@ -21218,7 +21217,7 @@ 1 2 - 2164787 + 2162642 @@ -21234,22 +21233,22 @@ 1 2 - 727340 + 726620 2 3 - 81343 + 81262 3 6 - 69667 + 69598 6 2848 - 23008 + 22985 @@ -21259,15 +21258,15 @@ decltypes - 812151 + 812301 id - 27485 + 27490 expr - 812151 + 812301 kind @@ -21275,7 +21274,7 @@ base_type - 3331 + 3332 parentheses_would_change_meaning @@ -21293,27 +21292,27 @@ 1 2 - 9709 + 9711 2 3 - 3638 + 3639 4 5 - 3616 + 3617 6 9 - 547 + 548 23 24 - 3243 + 3244 29 @@ -21328,7 +21327,7 @@ 171 172 - 3068 + 3069 173 @@ -21349,7 +21348,7 @@ 1 2 - 27485 + 27490 @@ -21365,7 +21364,7 @@ 1 2 - 27485 + 27490 @@ -21381,7 +21380,7 @@ 1 2 - 27485 + 27490 @@ -21397,7 +21396,7 @@ 1 2 - 812151 + 812301 @@ -21413,7 +21412,7 @@ 1 2 - 812151 + 812301 @@ -21429,7 +21428,7 @@ 1 2 - 812151 + 812301 @@ -21445,7 +21444,7 @@ 1 2 - 812151 + 812301 @@ -21617,7 +21616,7 @@ 1 2 - 3331 + 3332 @@ -21633,7 +21632,7 @@ 1 2 - 3331 + 3332 @@ -22003,7 +22002,7 @@ 1 2 - 4375 + 4374 2 @@ -22023,19 +22022,19 @@ usertypes - 4962767 + 4863384 id - 4962767 + 4863384 name - 1069983 + 1051141 kind - 161 + 158 @@ -22049,7 +22048,7 @@ 1 2 - 4962767 + 4863384 @@ -22065,7 +22064,7 @@ 1 2 - 4962767 + 4863384 @@ -22081,22 +22080,22 @@ 1 2 - 740028 + 727658 2 3 - 195960 + 192441 3 7 - 85634 + 83738 7 - 30188 - 48359 + 30282 + 47302 @@ -22112,12 +22111,12 @@ 1 2 - 1003916 + 986536 2 10 - 66066 + 64604 @@ -22151,8 +22150,8 @@ 13 - 1426 - 1427 + 1563 + 1564 13 @@ -22166,13 +22165,13 @@ 13 - 19665 - 19666 + 19666 + 19667 13 - 20058 - 20059 + 20075 + 20076 13 @@ -22181,13 +22180,13 @@ 13 - 85546 - 85547 + 86007 + 86008 13 - 151042 - 151043 + 151219 + 151220 13 @@ -22247,8 +22246,8 @@ 13 - 10827 - 10828 + 10838 + 10839 13 @@ -22257,8 +22256,8 @@ 13 - 51351 - 51352 + 51707 + 51708 13 @@ -22269,19 +22268,19 @@ usertypesize - 1624097 + 1595589 id - 1624097 + 1595589 size - 1887 + 1846 alignment - 107 + 105 @@ -22295,7 +22294,7 @@ 1 2 - 1624097 + 1595589 @@ -22311,7 +22310,7 @@ 1 2 - 1624097 + 1595589 @@ -22327,52 +22326,52 @@ 1 2 - 593 + 580 2 3 - 256 + 250 3 4 - 107 + 105 4 6 - 121 + 118 6 8 - 148 + 145 8 14 - 148 + 145 14 26 - 148 + 145 26 86 - 148 + 145 96 - 1588 - 148 + 1592 + 145 1733 - 92740 - 67 + 93158 + 65 @@ -22388,17 +22387,17 @@ 1 2 - 1550 + 1516 2 3 - 215 + 210 3 6 - 121 + 118 @@ -22437,18 +22436,18 @@ 13 - 1909 - 1910 + 2046 + 2047 13 - 10475 - 10476 + 10484 + 10485 13 - 107926 - 107927 + 108344 + 108345 13 @@ -22505,26 +22504,26 @@ usertype_final - 11506 + 11462 id - 11506 + 11462 usertype_uuid - 50407 + 50280 id - 50407 + 50280 uuid - 49898 + 49771 @@ -22538,7 +22537,7 @@ 1 2 - 50407 + 50280 @@ -22554,12 +22553,12 @@ 1 2 - 49389 + 49263 2 3 - 509 + 508 @@ -22569,11 +22568,11 @@ usertype_alias_kind - 2164830 + 2162685 id - 2164787 + 2162642 alias_kind @@ -22591,7 +22590,7 @@ 1 2 - 2164744 + 2162600 2 @@ -22627,26 +22626,26 @@ nontype_template_parameters - 961918 + 960965 id - 961918 + 960965 type_template_type_constraint - 29059 + 29057 id - 14322 + 14321 constraint - 27839 + 27836 @@ -22660,7 +22659,7 @@ 1 2 - 10937 + 10936 2 @@ -22696,7 +22695,7 @@ 1 2 - 26618 + 26616 2 @@ -22711,19 +22710,19 @@ mangled_name - 7827011 + 7805177 id - 7827011 + 7805177 mangled_name - 6329773 + 6313665 is_complete - 250 + 249 @@ -22737,7 +22736,7 @@ 1 2 - 7827011 + 7805177 @@ -22753,7 +22752,7 @@ 1 2 - 7827011 + 7805177 @@ -22769,12 +22768,12 @@ 1 2 - 6000083 + 5984987 2 1127 - 329690 + 328678 @@ -22790,7 +22789,7 @@ 1 2 - 6329773 + 6313665 @@ -22806,12 +22805,12 @@ 6 7 - 125 + 124 - 62574 - 62575 - 125 + 62639 + 62640 + 124 @@ -22827,12 +22826,12 @@ 6 7 - 125 + 124 - 50603 - 50604 - 125 + 50668 + 50669 + 124 @@ -22842,59 +22841,59 @@ is_pod_class - 742865 + 744607 id - 742865 + 744607 is_standard_layout_class - 1338834 + 1314793 id - 1338834 + 1314793 is_complete - 1604003 + 1574133 id - 1604003 + 1574133 is_class_template - 290846 + 284422 id - 290846 + 284422 class_instantiation - 1320911 + 1297979 to - 1317027 + 1294181 from - 91190 + 89303 @@ -22908,12 +22907,12 @@ 1 2 - 1314303 + 1291517 2 8 - 2724 + 2663 @@ -22929,47 +22928,47 @@ 1 2 - 26607 + 25952 2 3 - 16533 + 16154 3 4 - 9021 + 8835 4 5 - 5974 + 5841 5 7 - 7700 + 7529 7 10 - 6904 + 6830 10 17 - 7336 + 7226 17 53 - 6904 + 6765 53 4219 - 4207 + 4167 @@ -22979,19 +22978,19 @@ class_template_argument - 3486149 + 3419936 type_id - 1623773 + 1594059 index - 1510 + 1476 arg_type - 1029795 + 1008981 @@ -23005,27 +23004,27 @@ 1 2 - 675431 + 663410 2 3 - 488142 + 479237 3 4 - 307433 + 302013 4 7 - 123542 + 120821 7 113 - 29223 + 28576 @@ -23041,22 +23040,22 @@ 1 2 - 709847 + 697657 2 3 - 503407 + 493650 3 4 - 305505 + 300049 4 113 - 105013 + 102702 @@ -23077,32 +23076,32 @@ 4 5 - 957 + 936 5 30 - 121 + 118 33 90 - 121 + 118 95 453 - 121 + 118 643 - 6818 - 121 + 6819 + 118 - 11328 - 120405 - 53 + 11329 + 120877 + 52 @@ -23123,32 +23122,32 @@ 4 5 - 957 + 936 5 16 - 134 + 131 16 35 - 121 + 118 37 155 - 121 + 118 196 3251 - 121 + 118 - 10040 - 43709 - 40 + 10075 + 43772 + 39 @@ -23164,27 +23163,27 @@ 1 2 - 646113 + 633053 2 3 - 211415 + 206960 3 4 - 61737 + 60608 4 11 - 78284 + 76762 11 - 11552 - 32244 + 11634 + 31596 @@ -23200,17 +23199,17 @@ 1 2 - 908181 + 889452 2 3 - 98486 + 96886 3 22 - 23127 + 22642 @@ -23220,11 +23219,11 @@ class_template_argument_value - 640309 + 639675 type_id - 258356 + 258100 index @@ -23232,7 +23231,7 @@ arg_value - 640138 + 639504 @@ -23246,17 +23245,17 @@ 1 2 - 195574 + 195380 2 3 - 54442 + 54388 3 8 - 8339 + 8331 @@ -23272,22 +23271,22 @@ 1 2 - 185694 + 185510 2 3 - 50807 + 50757 3 45 - 19501 + 19482 45 154 - 2352 + 2349 @@ -23415,12 +23414,12 @@ 1 2 - 639967 + 639333 2 3 - 171 + 170 @@ -23436,7 +23435,7 @@ 1 2 - 640138 + 639504 @@ -23446,15 +23445,15 @@ is_proxy_class_for - 61845 + 60476 id - 61845 + 60476 templ_param_id - 58433 + 57140 @@ -23468,7 +23467,7 @@ 1 2 - 61845 + 60476 @@ -23484,12 +23483,12 @@ 1 2 - 57516 + 56243 2 79 - 917 + 896 @@ -23499,19 +23498,19 @@ type_mentions - 5812069 + 5813147 id - 5812069 + 5813147 type_id - 275231 + 275282 location - 5766496 + 5767566 kind @@ -23529,7 +23528,7 @@ 1 2 - 5812069 + 5813147 @@ -23545,7 +23544,7 @@ 1 2 - 5812069 + 5813147 @@ -23561,7 +23560,7 @@ 1 2 - 5812069 + 5813147 @@ -23577,42 +23576,42 @@ 1 2 - 136121 + 136147 2 3 - 30907 + 30912 3 4 - 11135 + 11137 4 5 - 14665 + 14668 5 7 - 19934 + 19938 7 12 - 21781 + 21785 12 28 - 21021 + 21025 28 8907 - 19663 + 19666 @@ -23628,42 +23627,42 @@ 1 2 - 136121 + 136147 2 3 - 30907 + 30912 3 4 - 11135 + 11137 4 5 - 14665 + 14668 5 7 - 19934 + 19938 7 12 - 21781 + 21785 12 28 - 21021 + 21025 28 8907 - 19663 + 19666 @@ -23679,7 +23678,7 @@ 1 2 - 275231 + 275282 @@ -23695,12 +23694,12 @@ 1 2 - 5720923 + 5721984 2 3 - 45573 + 45581 @@ -23716,12 +23715,12 @@ 1 2 - 5720923 + 5721984 2 3 - 45573 + 45581 @@ -23737,7 +23736,7 @@ 1 2 - 5766496 + 5767566 @@ -23795,26 +23794,26 @@ is_function_template - 1383517 + 1382146 id - 1383517 + 1382146 function_instantiation - 1221386 + 1220176 to - 1221386 + 1220176 from - 229146 + 228919 @@ -23828,7 +23827,7 @@ 1 2 - 1221386 + 1220176 @@ -23844,27 +23843,27 @@ 1 2 - 139378 + 139240 2 3 - 53031 + 52978 3 9 - 18047 + 18029 9 103 - 17192 + 17175 103 1532 - 1496 + 1495 @@ -23874,11 +23873,11 @@ function_template_argument - 3119179 + 3116089 function_id - 1824318 + 1822510 index @@ -23886,7 +23885,7 @@ arg_type - 374084 + 373713 @@ -23900,22 +23899,22 @@ 1 2 - 982917 + 981943 2 3 - 518637 + 518123 3 4 - 215674 + 215461 4 15 - 107088 + 106982 @@ -23931,22 +23930,22 @@ 1 2 - 1006952 + 1005954 2 3 - 516242 + 515730 3 4 - 212937 + 212726 4 9 - 88185 + 88098 @@ -24084,37 +24083,37 @@ 1 2 - 219395 + 219178 2 3 - 33059 + 33026 3 4 - 25104 + 25079 4 6 - 28440 + 28411 6 11 - 29167 + 29138 11 76 - 29338 + 29309 79 2452 - 9579 + 9570 @@ -24130,17 +24129,17 @@ 1 2 - 322378 + 322059 2 3 - 40329 + 40289 3 15 - 11376 + 11364 @@ -24150,11 +24149,11 @@ function_template_argument_value - 568375 + 567812 function_id - 247023 + 246778 index @@ -24162,7 +24161,7 @@ arg_value - 564996 + 564437 @@ -24176,17 +24175,17 @@ 1 2 - 190057 + 189868 2 3 - 53843 + 53790 3 8 - 3122 + 3118 @@ -24202,22 +24201,22 @@ 1 2 - 181375 + 181195 2 3 - 46060 + 46014 3 54 - 18646 + 18628 54 113 - 940 + 939 @@ -24355,12 +24354,12 @@ 1 2 - 561618 + 561061 2 3 - 3378 + 3375 @@ -24376,7 +24375,7 @@ 1 2 - 564996 + 564437 @@ -24386,26 +24385,26 @@ is_variable_template - 58783 + 58559 id - 58783 + 58559 variable_instantiation - 395853 + 420379 to - 395853 + 420379 from - 35145 + 35010 @@ -24419,7 +24418,7 @@ 1 2 - 395853 + 420379 @@ -24435,47 +24434,47 @@ 1 2 - 15383 + 15075 2 3 - 3752 + 3987 3 4 - 2251 + 2242 4 6 - 2876 + 2865 6 8 - 2251 + 2242 8 11 - 2751 + 2741 11 - 25 - 2876 + 30 + 2741 - 26 - 181 - 2751 + 30 + 105 + 2741 - 388 - 447 - 250 + 180 + 546 + 373 @@ -24485,19 +24484,19 @@ variable_template_argument - 719414 + 766874 variable_id - 379093 + 399696 index - 2001 + 1993 arg_type - 255397 + 256164 @@ -24511,22 +24510,22 @@ 1 2 - 151962 + 155493 2 3 - 173725 + 189631 3 4 - 36521 + 36381 4 17 - 16884 + 18190 @@ -24542,22 +24541,22 @@ 1 2 - 165470 + 170444 2 3 - 165345 + 179788 3 4 - 33769 + 33640 4 17 - 14508 + 15823 @@ -24571,44 +24570,44 @@ 12 - 23 - 24 - 875 + 28 + 29 + 872 - 29 - 30 - 375 + 34 + 35 + 373 - 32 - 33 - 125 + 37 + 38 + 124 - 61 - 62 - 125 + 66 + 67 + 124 - 135 - 136 - 125 + 146 + 147 + 124 - 427 - 428 - 125 + 438 + 439 + 124 - 1816 - 1817 - 125 + 1960 + 1961 + 124 - 3031 - 3032 - 125 + 3208 + 3209 + 124 @@ -24624,42 +24623,42 @@ 1 2 - 875 + 872 2 3 - 375 + 373 5 6 - 125 + 124 28 29 - 125 + 124 54 55 - 125 + 124 161 162 - 125 + 124 - 731 - 732 - 125 + 748 + 749 + 124 - 1321 - 1322 - 125 + 1326 + 1327 + 124 @@ -24675,22 +24674,22 @@ 1 2 - 176226 + 175552 2 3 - 44150 + 44604 3 6 - 21137 + 21679 6 - 190 - 13883 + 206 + 14328 @@ -24706,17 +24705,17 @@ 1 2 - 227756 + 227757 2 3 - 24138 + 24794 3 7 - 3502 + 3613 @@ -24726,19 +24725,19 @@ variable_template_argument_value - 20011 + 19935 variable_id - 14883 + 14826 index - 500 + 498 arg_value - 20011 + 19935 @@ -24752,12 +24751,12 @@ 1 2 - 13382 + 13331 2 3 - 1500 + 1495 @@ -24773,17 +24772,17 @@ 1 2 - 10506 + 10465 2 3 - 4002 + 3987 4 5 - 375 + 373 @@ -24799,22 +24798,22 @@ 17 18 - 125 + 124 27 28 - 125 + 124 41 42 - 125 + 124 46 47 - 125 + 124 @@ -24830,22 +24829,22 @@ 22 23 - 125 + 124 29 30 - 125 + 124 50 51 - 125 + 124 59 60 - 125 + 124 @@ -24861,7 +24860,7 @@ 1 2 - 20011 + 19935 @@ -24877,7 +24876,7 @@ 1 2 - 20011 + 19935 @@ -24887,15 +24886,15 @@ template_template_instantiation - 7403 + 7239 to - 6945 + 6791 from - 4908 + 4800 @@ -24909,12 +24908,12 @@ 1 2 - 6796 + 6646 2 15 - 148 + 145 @@ -24930,17 +24929,17 @@ 1 2 - 3209 + 3138 2 3 - 1523 + 1490 3 20 - 175 + 171 @@ -24950,19 +24949,19 @@ template_template_argument - 12352 + 12079 type_id - 7808 + 7635 index - 134 + 131 arg_type - 11597 + 11341 @@ -24976,22 +24975,22 @@ 1 2 - 6405 + 6263 2 3 - 539 + 527 3 8 - 647 + 632 8 11 - 215 + 210 @@ -25007,22 +25006,22 @@ 1 2 - 6432 + 6290 2 4 - 714 + 698 4 10 - 593 + 580 10 11 - 67 + 65 @@ -25160,12 +25159,12 @@ 1 2 - 11557 + 11301 3 43 - 40 + 39 @@ -25181,7 +25180,7 @@ 1 2 - 11570 + 11314 2 @@ -25196,11 +25195,11 @@ template_template_argument_value - 795 + 778 type_id - 674 + 659 index @@ -25208,7 +25207,7 @@ arg_value - 795 + 778 @@ -25222,7 +25221,7 @@ 1 2 - 674 + 659 @@ -25238,12 +25237,12 @@ 1 2 - 579 + 567 2 3 - 67 + 65 3 @@ -25306,7 +25305,7 @@ 1 2 - 795 + 778 @@ -25322,7 +25321,7 @@ 1 2 - 795 + 778 @@ -25448,15 +25447,15 @@ concept_instantiation - 96781 + 96773 to - 96781 + 96773 from - 3684 + 3683 @@ -25470,7 +25469,7 @@ 1 2 - 96781 + 96773 @@ -25566,22 +25565,22 @@ is_type_constraint - 39490 + 39487 concept_id - 39490 + 39487 concept_template_argument - 120982 + 120973 concept_id - 81744 + 81738 index @@ -25589,7 +25588,7 @@ arg_type - 22934 + 22932 @@ -25603,12 +25602,12 @@ 1 2 - 49737 + 49733 2 3 - 26411 + 26409 3 @@ -25629,12 +25628,12 @@ 1 2 - 53606 + 53602 2 3 - 23947 + 23945 3 @@ -25762,7 +25761,7 @@ 6 9 - 1727 + 1726 9 @@ -25788,12 +25787,12 @@ 1 2 - 19296 + 19294 2 3 - 3500 + 3499 3 @@ -25939,15 +25938,15 @@ routinetypes - 758603 + 757852 id - 758603 + 757852 return_type - 356335 + 355982 @@ -25961,7 +25960,7 @@ 1 2 - 758603 + 757852 @@ -25977,17 +25976,17 @@ 1 2 - 294024 + 293732 2 3 - 44050 + 44006 3 4676 - 18261 + 18243 @@ -25997,11 +25996,11 @@ routinetypeargs - 1165836 + 1166052 routine - 412059 + 412135 index @@ -26009,7 +26008,7 @@ type_id - 111081 + 111101 @@ -26023,32 +26022,32 @@ 1 2 - 82129 + 82144 2 3 - 125475 + 125498 3 4 - 106844 + 106864 4 5 - 48614 + 48623 5 7 - 32482 + 32488 7 19 - 16512 + 16515 @@ -26064,27 +26063,27 @@ 1 2 - 88104 + 88120 2 3 - 138023 + 138048 3 4 - 113525 + 113546 4 5 - 40141 + 40148 5 10 - 32156 + 32162 10 @@ -26282,47 +26281,47 @@ 1 2 - 33188 + 33194 2 3 - 14991 + 14994 3 4 - 13199 + 13201 4 5 - 9831 + 9833 5 6 - 6355 + 6356 6 8 - 9505 + 9507 8 13 - 9451 + 9453 13 26 - 8745 + 8746 26 916 - 5812 + 5813 @@ -26338,22 +26337,22 @@ 1 2 - 78490 + 78504 2 3 - 17544 + 17548 3 5 - 9451 + 9453 5 17 - 5594 + 5595 @@ -26363,15 +26362,15 @@ ptrtomembers - 12029 + 12026 id - 12029 + 12026 type_id - 10114 + 9890 class_id @@ -26389,7 +26388,7 @@ 1 2 - 12029 + 12026 @@ -26405,7 +26404,7 @@ 1 2 - 12029 + 12026 @@ -26421,12 +26420,12 @@ 1 2 - 9831 + 9613 2 - 74 - 283 + 84 + 276 @@ -26442,12 +26441,12 @@ 1 2 - 9831 + 9613 2 - 74 - 283 + 84 + 276 @@ -26463,22 +26462,22 @@ 1 2 - 4854 + 4747 2 3 - 539 + 659 8 9 - 512 + 501 10 65 - 53 + 52 @@ -26494,22 +26493,22 @@ 1 2 - 4854 + 4747 2 3 - 539 + 659 8 9 - 512 + 501 10 65 - 53 + 52 @@ -26519,15 +26518,15 @@ specifiers - 7754 + 7724 id - 7754 + 7724 str - 7754 + 7724 @@ -26541,7 +26540,7 @@ 1 2 - 7754 + 7724 @@ -26557,7 +26556,7 @@ 1 2 - 7754 + 7724 @@ -26567,15 +26566,15 @@ typespecifiers - 985913 + 966360 type_id - 979359 + 959938 spec_id - 107 + 105 @@ -26589,12 +26588,12 @@ 1 2 - 972805 + 953515 2 3 - 6554 + 6422 @@ -26618,13 +26617,13 @@ 13 - 529 - 530 + 532 + 533 13 - 820 - 821 + 821 + 822 13 @@ -26633,18 +26632,18 @@ 13 - 4147 - 4148 + 4150 + 4151 13 - 17356 - 17357 + 17496 + 17497 13 - 48300 - 48301 + 48325 + 48326 13 @@ -26655,15 +26654,15 @@ funspecifiers - 9699590 + 9674598 func_id - 3974790 + 3322022 spec_id - 2376 + 811 @@ -26677,27 +26676,32 @@ 1 2 - 1485356 + 435450 2 3 - 507167 + 673513 3 4 - 1039223 + 1416326 4 5 - 697026 + 456941 5 + 6 + 223835 + + + 6 8 - 246016 + 115955 @@ -26711,99 +26715,94 @@ 12 - 17 - 18 - 125 - - - 18 - 19 - 125 + 2 + 3 + 85 - 53 - 54 - 125 + 106 + 107 + 42 - 114 - 115 - 125 + 214 + 215 + 42 - 206 - 207 - 125 + 301 + 302 + 42 - 272 - 273 - 125 + 308 + 309 + 42 - 354 - 355 - 125 + 562 + 563 + 42 - 653 - 654 - 125 + 1589 + 1590 + 42 - 766 - 767 - 125 + 1631 + 1632 + 42 - 823 - 824 - 125 + 3749 + 3750 + 42 - 1075 - 1076 - 125 + 3881 + 3882 + 42 - 1258 - 1259 - 125 + 6569 + 6570 + 42 - 1662 - 1663 - 125 + 6803 + 6804 + 42 - 3340 - 3341 - 125 + 12221 + 12222 + 42 - 3351 - 3352 - 125 + 14693 + 14694 + 42 - 6166 - 6167 - 125 + 15715 + 15716 + 42 - 15136 - 15137 - 125 + 42407 + 42408 + 42 - 19863 - 19864 - 125 + 51943 + 51944 + 42 - 22425 - 22426 - 125 + 63744 + 63745 + 42 @@ -26813,15 +26812,15 @@ varspecifiers - 2999353 + 3043327 var_id - 2281064 + 2298381 spec_id - 1125 + 1121 @@ -26835,17 +26834,17 @@ 1 2 - 1661582 + 1655851 2 3 - 521175 + 540612 3 5 - 98306 + 101917 @@ -26861,47 +26860,47 @@ 67 68 - 125 + 124 97 98 - 125 + 124 1091 1092 - 125 + 124 1325 1326 - 125 + 124 2236 2237 - 125 + 124 - 2557 - 2558 - 125 + 2761 + 2762 + 124 - 3227 - 3228 - 125 + 3436 + 3437 + 124 4931 4932 - 125 + 124 - 8450 - 8451 - 125 + 8482 + 8483 + 124 @@ -26911,15 +26910,15 @@ explicit_specifier_exprs - 41398 + 41240 func_id - 41398 + 41240 constant - 41398 + 41240 @@ -26933,7 +26932,7 @@ 1 2 - 41398 + 41240 @@ -26949,7 +26948,7 @@ 1 2 - 41398 + 41240 @@ -26959,27 +26958,27 @@ attributes - 651875 + 649382 id - 651875 + 649382 kind - 375 + 373 name - 2126 + 2118 name_space - 250 + 249 location - 645747 + 643277 @@ -26993,7 +26992,7 @@ 1 2 - 651875 + 649382 @@ -27009,7 +27008,7 @@ 1 2 - 651875 + 649382 @@ -27025,7 +27024,7 @@ 1 2 - 651875 + 649382 @@ -27041,7 +27040,7 @@ 1 2 - 651875 + 649382 @@ -27057,17 +27056,17 @@ 7 8 - 125 + 124 2402 2403 - 125 + 124 2803 2804 - 125 + 124 @@ -27083,17 +27082,17 @@ 1 2 - 125 + 124 6 7 - 125 + 124 12 13 - 125 + 124 @@ -27109,12 +27108,12 @@ 1 2 - 250 + 249 2 3 - 125 + 124 @@ -27130,17 +27129,17 @@ 4 5 - 125 + 124 2356 2357 - 125 + 124 2803 2804 - 125 + 124 @@ -27156,77 +27155,77 @@ 1 2 - 250 + 249 3 4 - 125 + 124 6 7 - 125 + 124 7 8 - 125 + 124 8 9 - 125 + 124 10 11 - 250 + 249 14 15 - 125 + 124 18 19 - 125 + 124 24 25 - 125 + 124 55 56 - 125 + 124 62 63 - 125 + 124 72 73 - 125 + 124 340 341 - 125 + 124 1977 1978 - 125 + 124 2604 2605 - 125 + 124 @@ -27242,12 +27241,12 @@ 1 2 - 1876 + 1868 2 3 - 250 + 249 @@ -27263,7 +27262,7 @@ 1 2 - 2126 + 2118 @@ -27279,77 +27278,77 @@ 1 2 - 250 + 249 3 4 - 125 + 124 4 5 - 125 + 124 6 7 - 125 + 124 8 9 - 125 + 124 10 11 - 250 + 249 14 15 - 125 + 124 18 19 - 125 + 124 24 25 - 125 + 124 55 56 - 125 + 124 62 63 - 125 + 124 72 73 - 125 + 124 335 336 - 125 + 124 1977 1978 - 125 + 124 2604 2605 - 125 + 124 @@ -27365,12 +27364,12 @@ 11 12 - 125 + 124 5201 5202 - 125 + 124 @@ -27386,12 +27385,12 @@ 1 2 - 125 + 124 3 4 - 125 + 124 @@ -27407,12 +27406,12 @@ 2 3 - 125 + 124 15 16 - 125 + 124 @@ -27428,12 +27427,12 @@ 11 12 - 125 + 124 5152 5153 - 125 + 124 @@ -27449,12 +27448,12 @@ 1 2 - 639868 + 637421 2 5 - 5878 + 5855 @@ -27470,7 +27469,7 @@ 1 2 - 645747 + 643277 @@ -27486,12 +27485,12 @@ 1 2 - 640619 + 638169 2 3 - 5127 + 5108 @@ -27507,7 +27506,7 @@ 1 2 - 645747 + 643277 @@ -27517,27 +27516,27 @@ attribute_args - 98337 + 96345 id - 98337 + 96345 kind - 53 + 52 attribute - 84946 + 83066 index - 67 + 65 location - 91527 + 89501 @@ -27551,7 +27550,7 @@ 1 2 - 98337 + 96345 @@ -27567,7 +27566,7 @@ 1 2 - 98337 + 96345 @@ -27583,7 +27582,7 @@ 1 2 - 98337 + 96345 @@ -27599,7 +27598,7 @@ 1 2 - 98337 + 96345 @@ -27628,8 +27627,8 @@ 13 - 6589 - 6590 + 6603 + 6604 13 @@ -27734,17 +27733,17 @@ 1 2 - 77165 + 75272 2 4 - 6432 + 6474 4 18 - 1348 + 1318 @@ -27760,12 +27759,12 @@ 1 2 - 82653 + 80824 2 3 - 2292 + 2241 @@ -27781,12 +27780,12 @@ 1 2 - 78689 + 76947 2 6 - 6257 + 6118 @@ -27802,12 +27801,12 @@ 1 2 - 80293 + 78516 2 6 - 4652 + 4549 @@ -27841,8 +27840,8 @@ 13 - 6472 - 6473 + 6486 + 6487 13 @@ -27864,7 +27863,7 @@ 2 3 - 40 + 39 4 @@ -27957,12 +27956,12 @@ 1 2 - 89261 + 87101 2 23 - 2265 + 2400 @@ -27978,12 +27977,12 @@ 1 2 - 91311 + 89290 2 3 - 215 + 210 @@ -27999,12 +27998,12 @@ 1 2 - 91122 + 89106 2 18 - 404 + 395 @@ -28020,12 +28019,12 @@ 1 2 - 90974 + 88961 2 3 - 552 + 540 @@ -28035,15 +28034,15 @@ attribute_arg_value - 20955 + 20935 arg - 20955 + 20935 value - 641 + 640 @@ -28057,7 +28056,7 @@ 1 2 - 20955 + 20935 @@ -28128,15 +28127,15 @@ attribute_arg_type - 466 + 461 arg - 466 + 461 type_id - 85 + 84 @@ -28150,7 +28149,7 @@ 1 2 - 466 + 461 @@ -28191,15 +28190,15 @@ attribute_arg_constant - 88857 + 87075 arg - 88857 + 87075 constant - 88857 + 87075 @@ -28213,7 +28212,7 @@ 1 2 - 88857 + 87075 @@ -28229,7 +28228,7 @@ 1 2 - 88857 + 87075 @@ -28239,15 +28238,15 @@ attribute_arg_expr - 1793 + 1753 arg - 1793 + 1753 expr - 1793 + 1753 @@ -28261,7 +28260,7 @@ 1 2 - 1793 + 1753 @@ -28277,7 +28276,7 @@ 1 2 - 1793 + 1753 @@ -28340,15 +28339,15 @@ typeattributes - 92303 + 91950 type_id - 90677 + 90330 spec_id - 29266 + 29154 @@ -28362,12 +28361,12 @@ 1 2 - 89051 + 88710 2 3 - 1625 + 1619 @@ -28383,17 +28382,17 @@ 1 2 - 24764 + 24669 2 7 - 2251 + 2242 7 58 - 2251 + 2242 @@ -28403,15 +28402,15 @@ funcattributes - 845862 + 842627 func_id - 800961 + 797898 spec_id - 617856 + 615493 @@ -28425,12 +28424,12 @@ 1 2 - 760563 + 757654 2 7 - 40398 + 40243 @@ -28446,12 +28445,12 @@ 1 2 - 572079 + 569891 2 213 - 45776 + 45601 @@ -28592,15 +28591,15 @@ unspecifiedtype - 8313750 + 8145752 type_id - 8313750 + 8145752 unspecified_type_id - 4783555 + 4690447 @@ -28614,7 +28613,7 @@ 1 2 - 8313750 + 8145752 @@ -28630,17 +28629,17 @@ 1 2 - 3189801 + 3130965 2 3 - 1303717 + 1275600 3 6277 - 290037 + 283881 @@ -28650,19 +28649,19 @@ member - 4663372 + 4659692 parent - 558581 + 559011 index - 10691 + 10681 child - 4546703 + 4543139 @@ -28676,52 +28675,52 @@ 1 2 - 232140 + 232892 2 3 - 24548 + 24524 3 4 - 29295 + 29266 4 5 - 37592 + 37555 5 7 - 47642 + 47595 7 11 - 43152 + 43109 11 14 - 41569 + 41528 14 19 - 45162 + 45117 19 53 - 42125 + 42083 53 251 - 15353 + 15338 @@ -28737,52 +28736,52 @@ 1 2 - 232011 + 232764 2 3 - 24676 + 24652 3 4 - 29338 + 29309 4 5 - 37677 + 37640 5 7 - 47428 + 47381 7 11 - 43579 + 43536 11 14 - 41484 + 41443 14 19 - 44948 + 44903 19 53 - 42125 + 42083 53 255 - 15310 + 15295 @@ -28798,57 +28797,57 @@ 1 2 - 2822 + 2819 2 4 - 812 + 811 4 22 - 812 + 811 22 31 - 812 + 811 31 53 - 855 + 854 53 108 - 812 + 811 110 218 - 812 + 811 223 328 - 812 + 811 328 581 - 812 + 811 653 2518 - 812 + 811 2899 - 12712 - 513 + 12735 + 512 @@ -28864,61 +28863,61 @@ 1 2 - 1753 + 1751 2 3 - 1368 + 1367 3 8 - 812 + 811 8 31 - 855 + 854 31 41 - 855 + 854 41 97 - 812 + 811 97 161 - 812 + 811 164 314 - 855 + 854 318 386 - 812 + 811 435 1127 - 812 + 811 1145 6168 - 812 + 811 6496 - 12724 + 12747 128 @@ -28935,7 +28934,7 @@ 1 2 - 4546703 + 4543139 @@ -28951,12 +28950,12 @@ 1 2 - 4459244 + 4455767 2 13 - 87458 + 87372 @@ -28966,15 +28965,15 @@ enclosingfunction - 144125 + 143982 child - 144125 + 143982 parent - 89554 + 89465 @@ -28988,7 +28987,7 @@ 1 2 - 144125 + 143982 @@ -29004,22 +29003,22 @@ 1 2 - 61926 + 61865 2 3 - 5816 + 5810 3 4 - 19287 + 19268 4 37 - 2523 + 2520 @@ -29029,15 +29028,15 @@ derivations - 597157 + 598061 derivation - 597157 + 598061 sub - 569872 + 570803 index @@ -29045,11 +29044,11 @@ super - 294708 + 295399 location - 44435 + 44391 @@ -29063,7 +29062,7 @@ 1 2 - 597157 + 598061 @@ -29079,7 +29078,7 @@ 1 2 - 597157 + 598061 @@ -29095,7 +29094,7 @@ 1 2 - 597157 + 598061 @@ -29111,7 +29110,7 @@ 1 2 - 597157 + 598061 @@ -29127,12 +29126,12 @@ 1 2 - 549130 + 550081 2 9 - 20742 + 20721 @@ -29148,12 +29147,12 @@ 1 2 - 549130 + 550081 2 8 - 20742 + 20721 @@ -29169,12 +29168,12 @@ 1 2 - 549130 + 550081 2 9 - 20742 + 20721 @@ -29190,12 +29189,12 @@ 1 2 - 549130 + 550081 2 8 - 20742 + 20721 @@ -29229,8 +29228,8 @@ 42 - 13325 - 13326 + 13360 + 13361 42 @@ -29247,7 +29246,7 @@ 25 26 - 171 + 170 52 @@ -29260,8 +29259,8 @@ 42 - 13325 - 13326 + 13360 + 13361 42 @@ -29301,8 +29300,8 @@ 42 - 6487 - 6488 + 6510 + 6511 42 @@ -29319,7 +29318,7 @@ 1 2 - 171 + 170 7 @@ -29350,12 +29349,12 @@ 1 2 - 282648 + 283094 2 1655 - 12060 + 12304 @@ -29371,12 +29370,12 @@ 1 2 - 282648 + 283094 2 1655 - 12060 + 12304 @@ -29392,7 +29391,7 @@ 1 2 - 294152 + 294843 2 @@ -29413,12 +29412,12 @@ 1 2 - 288207 + 288691 2 81 - 6500 + 6707 @@ -29434,22 +29433,22 @@ 1 2 - 33358 + 33239 2 5 - 3977 + 3930 5 22 - 3378 + 3460 - 23 + 22 383 - 3335 + 3375 388 @@ -29470,22 +29469,22 @@ 1 2 - 33358 + 33239 2 5 - 3977 + 3930 5 22 - 3378 + 3460 - 23 + 22 383 - 3335 + 3375 388 @@ -29506,7 +29505,7 @@ 1 2 - 44435 + 44391 @@ -29522,22 +29521,22 @@ 1 2 - 36138 + 36016 2 4 - 3293 + 3289 4 26 - 3464 + 3546 26 928 - 1539 + 1538 @@ -29547,15 +29546,15 @@ derspecifiers - 599381 + 600283 der_id - 596601 + 597506 spec_id - 171 + 170 @@ -29569,12 +29568,12 @@ 1 2 - 593821 + 594728 2 3 - 2779 + 2777 @@ -29603,8 +29602,8 @@ 42 - 12754 - 12755 + 12789 + 12790 42 @@ -29615,15 +29614,15 @@ direct_base_offsets - 563371 + 564308 der_id - 563371 + 564308 offset - 641 + 640 @@ -29637,7 +29636,7 @@ 1 2 - 563371 + 564308 @@ -29658,7 +29657,7 @@ 2 3 - 171 + 170 3 @@ -29686,8 +29685,8 @@ 42 - 13023 - 13024 + 13058 + 13059 42 @@ -29698,11 +29697,11 @@ virtual_base_offsets - 7313 + 7305 sub - 7313 + 7305 super @@ -29724,7 +29723,7 @@ 1 2 - 7313 + 7305 @@ -29740,7 +29739,7 @@ 1 2 - 7313 + 7305 @@ -29834,23 +29833,23 @@ frienddecls - 879292 + 878421 id - 879292 + 878421 type_id - 53245 + 53192 decl_id - 97594 + 97497 location - 7655 + 7647 @@ -29864,7 +29863,7 @@ 1 2 - 879292 + 878421 @@ -29880,7 +29879,7 @@ 1 2 - 879292 + 878421 @@ -29896,7 +29895,7 @@ 1 2 - 879292 + 878421 @@ -29912,47 +29911,47 @@ 1 2 - 7740 + 7733 2 3 - 17534 + 17517 3 7 - 4490 + 4486 7 12 - 4319 + 4315 12 20 - 4576 + 4571 20 32 - 4148 + 4144 33 50 - 4747 + 4742 50 80 - 4747 + 4742 101 120 - 940 + 939 @@ -29968,47 +29967,47 @@ 1 2 - 7740 + 7733 2 3 - 17534 + 17517 3 7 - 4490 + 4486 7 12 - 4319 + 4315 12 20 - 4576 + 4571 20 32 - 4148 + 4144 33 50 - 4747 + 4742 50 80 - 4747 + 4742 101 120 - 940 + 939 @@ -30024,12 +30023,12 @@ 1 2 - 51534 + 51483 2 13 - 1710 + 1708 @@ -30045,32 +30044,32 @@ 1 2 - 60087 + 60028 2 3 - 7612 + 7605 3 8 - 7527 + 7519 8 15 - 7612 + 7605 15 40 - 7612 + 7605 40 164 - 7142 + 7135 @@ -30086,32 +30085,32 @@ 1 2 - 60087 + 60028 2 3 - 7612 + 7605 3 8 - 7527 + 7519 8 15 - 7612 + 7605 15 40 - 7612 + 7605 40 164 - 7142 + 7135 @@ -30127,12 +30126,12 @@ 1 2 - 96739 + 96643 2 5 - 855 + 854 @@ -30148,12 +30147,12 @@ 1 2 - 7184 + 7177 2 20371 - 470 + 469 @@ -30169,12 +30168,12 @@ 1 2 - 7484 + 7476 2 1148 - 171 + 170 @@ -30190,7 +30189,7 @@ 1 2 - 7227 + 7220 2 @@ -30205,19 +30204,19 @@ comments - 11233849 + 11190889 id - 11233849 + 11190889 contents - 4296351 + 4279921 location - 11233849 + 11190889 @@ -30231,7 +30230,7 @@ 1 2 - 11233849 + 11190889 @@ -30247,7 +30246,7 @@ 1 2 - 11233849 + 11190889 @@ -30263,17 +30262,17 @@ 1 2 - 3921885 + 3906887 2 6 - 322310 + 321078 6 34359 - 52155 + 51955 @@ -30289,17 +30288,17 @@ 1 2 - 3921885 + 3906887 2 6 - 322310 + 321078 6 34359 - 52155 + 51955 @@ -30315,7 +30314,7 @@ 1 2 - 11233849 + 11190889 @@ -30331,7 +30330,7 @@ 1 2 - 11233849 + 11190889 @@ -30341,15 +30340,15 @@ commentbinding - 3842839 + 3828144 id - 3355433 + 3342602 element - 3676619 + 3662559 @@ -30363,12 +30362,12 @@ 1 2 - 3299151 + 3286534 2 1706 - 56282 + 56067 @@ -30384,12 +30383,12 @@ 1 2 - 3510398 + 3496973 2 3 - 166220 + 165585 @@ -30399,15 +30398,15 @@ exprconv - 9606161 + 9607943 converted - 9606056 + 9607837 conversion - 9606161 + 9607943 @@ -30421,7 +30420,7 @@ 1 2 - 9605951 + 9607732 2 @@ -30442,7 +30441,7 @@ 1 2 - 9606161 + 9607943 @@ -30452,22 +30451,22 @@ compgenerated - 10707572 + 10701834 id - 10707572 + 10701834 synthetic_destructor_call - 1789036 + 1788902 element - 1332347 + 1332248 i @@ -30475,7 +30474,7 @@ destructor_call - 1789036 + 1788902 @@ -30489,17 +30488,17 @@ 1 2 - 886850 + 886784 2 3 - 438221 + 438188 3 19 - 7276 + 7275 @@ -30515,17 +30514,17 @@ 1 2 - 886850 + 886784 2 3 - 438221 + 438188 3 19 - 7276 + 7275 @@ -30673,7 +30672,7 @@ 1 2 - 1789036 + 1788902 @@ -30689,7 +30688,7 @@ 1 2 - 1789036 + 1788902 @@ -30699,15 +30698,15 @@ namespaces - 11044 + 10800 id - 11044 + 10800 name - 5839 + 5710 @@ -30721,7 +30720,7 @@ 1 2 - 11044 + 10800 @@ -30737,17 +30736,17 @@ 1 2 - 4773 + 4668 2 3 - 674 + 659 3 149 - 391 + 382 @@ -30757,26 +30756,26 @@ namespace_inline - 500 + 498 id - 500 + 498 namespacembrs - 2018038 + 2036610 parentid - 4002 + 3987 memberid - 2018038 + 2036610 @@ -30790,67 +30789,67 @@ 1 2 - 500 + 498 2 3 - 250 + 249 3 4 - 500 + 498 4 5 - 625 + 622 5 10 - 250 + 249 10 12 - 250 + 249 12 18 - 250 + 249 19 21 - 250 + 249 23 24 - 250 + 249 25 29 - 250 + 249 70 83 - 250 + 249 165 170 - 250 + 249 - 15407 - 15408 - 125 + 15618 + 15619 + 124 @@ -30866,7 +30865,7 @@ 1 2 - 2018038 + 2036610 @@ -30876,19 +30875,19 @@ exprparents - 19398686 + 19402284 expr_id - 19398686 + 19402284 child_index - 19977 + 19981 parent_id - 12903052 + 12905444 @@ -30902,7 +30901,7 @@ 1 2 - 19398686 + 19402284 @@ -30918,7 +30917,7 @@ 1 2 - 19398686 + 19402284 @@ -30949,7 +30948,7 @@ 4 5 - 8950 + 8952 5 @@ -31000,7 +30999,7 @@ 4 5 - 8950 + 8952 5 @@ -31036,17 +31035,17 @@ 1 2 - 7373649 + 7375017 2 3 - 5068172 + 5069112 3 712 - 461230 + 461315 @@ -31062,17 +31061,17 @@ 1 2 - 7373649 + 7375017 2 3 - 5068172 + 5069112 3 712 - 461230 + 461315 @@ -31082,22 +31081,22 @@ expr_isload - 6822557 + 6834841 expr_id - 6822557 + 6834841 conversionkinds - 6049042 + 6050432 expr_id - 6049042 + 6050432 kind @@ -31115,7 +31114,7 @@ 1 2 - 6049042 + 6050432 @@ -31154,13 +31153,13 @@ 1 - 93175 - 93176 + 93247 + 93248 1 - 5830215 - 5830216 + 5831533 + 5831534 1 @@ -31171,11 +31170,11 @@ iscall - 6210093 + 6209629 caller - 6210093 + 6209629 kind @@ -31193,7 +31192,7 @@ 1 2 - 6210093 + 6209629 @@ -31229,11 +31228,11 @@ numtemplatearguments - 720113 + 719399 expr_id - 720113 + 719399 num @@ -31251,7 +31250,7 @@ 1 2 - 720113 + 719399 @@ -31312,15 +31311,15 @@ specialnamequalifyingelements - 125 + 124 id - 125 + 124 name - 125 + 124 @@ -31334,7 +31333,7 @@ 1 2 - 125 + 124 @@ -31350,7 +31349,7 @@ 1 2 - 125 + 124 @@ -31360,23 +31359,23 @@ namequalifiers - 3254040 + 3255225 id - 3254040 + 3255225 qualifiableelement - 3254040 + 3255225 qualifyingelement - 50221 + 50816 location - 590842 + 591189 @@ -31390,7 +31389,7 @@ 1 2 - 3254040 + 3255225 @@ -31406,7 +31405,7 @@ 1 2 - 3254040 + 3255225 @@ -31422,7 +31421,7 @@ 1 2 - 3254040 + 3255225 @@ -31438,7 +31437,7 @@ 1 2 - 3254040 + 3255225 @@ -31454,7 +31453,7 @@ 1 2 - 3254040 + 3255225 @@ -31470,7 +31469,7 @@ 1 2 - 3254040 + 3255225 @@ -31486,27 +31485,27 @@ 1 2 - 33757 + 33754 2 3 - 8220 + 8749 3 5 - 4352 + 4397 5 - 1601 - 3776 + 6810 + 3822 - 6806 + 19018 41956 - 115 + 92 @@ -31522,27 +31521,27 @@ 1 2 - 33757 + 33754 2 3 - 8220 + 8749 3 5 - 4352 + 4397 5 - 1601 - 3776 + 6810 + 3822 - 6806 + 19018 41956 - 115 + 92 @@ -31558,17 +31557,17 @@ 1 2 - 36474 + 36816 2 3 - 7644 + 7874 3 6 - 3799 + 3822 6 @@ -31589,22 +31588,22 @@ 1 2 - 84761 + 84708 2 6 - 40365 + 40754 6 7 - 427076 + 426975 7 192 - 38638 + 38751 @@ -31620,22 +31619,22 @@ 1 2 - 84761 + 84708 2 6 - 40365 + 40754 6 7 - 427076 + 426975 7 192 - 38638 + 38751 @@ -31651,22 +31650,22 @@ 1 2 - 119071 + 119361 2 4 - 14184 + 14229 4 5 - 444530 + 444428 5 33 - 13056 + 13170 @@ -31676,15 +31675,15 @@ varbind - 8231069 + 8232596 expr - 8231069 + 8232596 var - 1047377 + 1047572 @@ -31698,7 +31697,7 @@ 1 2 - 8231069 + 8232596 @@ -31714,52 +31713,52 @@ 1 2 - 171046 + 171078 2 3 - 188162 + 188197 3 4 - 145232 + 145259 4 5 - 116303 + 116325 5 6 - 82913 + 82929 6 7 - 65629 + 65641 7 9 - 80584 + 80599 9 13 - 81342 + 81357 13 27 - 78901 + 78915 27 5137 - 37262 + 37268 @@ -31769,15 +31768,15 @@ funbind - 6220501 + 6220036 expr - 6217853 + 6217388 fun - 295317 + 295295 @@ -31791,12 +31790,12 @@ 1 2 - 6215204 + 6214740 2 3 - 2648 + 2647 @@ -31812,27 +31811,27 @@ 1 2 - 194184 + 194169 2 3 - 41563 + 41560 3 4 - 18398 + 18396 4 8 - 24339 + 24337 8 37798 - 16832 + 16831 @@ -31842,11 +31841,11 @@ expr_allocator - 56794 + 56738 expr - 56794 + 56738 func @@ -31868,7 +31867,7 @@ 1 2 - 56794 + 56738 @@ -31884,7 +31883,7 @@ 1 2 - 56794 + 56738 @@ -31968,11 +31967,11 @@ expr_deallocator - 67572 + 67505 expr - 67572 + 67505 func @@ -31994,7 +31993,7 @@ 1 2 - 67572 + 67505 @@ -32010,7 +32009,7 @@ 1 2 - 67572 + 67505 @@ -32115,15 +32114,15 @@ expr_cond_guard - 895370 + 895536 cond - 895370 + 895536 guard - 895370 + 895536 @@ -32137,7 +32136,7 @@ 1 2 - 895370 + 895536 @@ -32153,7 +32152,7 @@ 1 2 - 895370 + 895536 @@ -32163,15 +32162,15 @@ expr_cond_true - 895366 + 895532 cond - 895366 + 895532 true - 895366 + 895532 @@ -32185,7 +32184,7 @@ 1 2 - 895366 + 895532 @@ -32201,7 +32200,7 @@ 1 2 - 895366 + 895532 @@ -32211,15 +32210,15 @@ expr_cond_false - 895370 + 895536 cond - 895370 + 895536 false - 895370 + 895536 @@ -32233,7 +32232,7 @@ 1 2 - 895370 + 895536 @@ -32249,7 +32248,7 @@ 1 2 - 895370 + 895536 @@ -32259,15 +32258,15 @@ values - 13436143 + 13438635 id - 13436143 + 13438635 str - 114239 + 114260 @@ -32281,7 +32280,7 @@ 1 2 - 13436143 + 13438635 @@ -32297,27 +32296,27 @@ 1 2 - 78079 + 78093 2 3 - 15258 + 15260 3 6 - 8869 + 8871 6 52 - 8604 + 8605 52 674264 - 3427 + 3428 @@ -32327,15 +32326,15 @@ valuetext - 6643521 + 6647443 id - 6643521 + 6647443 text - 1095396 + 1095411 @@ -32349,7 +32348,7 @@ 1 2 - 6643521 + 6647443 @@ -32365,22 +32364,22 @@ 1 2 - 833981 + 833985 2 3 - 146939 + 146940 3 7 - 86534 + 86536 7 - 593537 - 27942 + 593553 + 27950 @@ -32390,15 +32389,15 @@ valuebind - 13544416 + 13546928 val - 13436143 + 13438635 expr - 13544416 + 13546928 @@ -32412,12 +32411,12 @@ 1 2 - 13345847 + 13348322 2 6 - 90296 + 90312 @@ -32433,7 +32432,7 @@ 1 2 - 13544416 + 13546928 @@ -32443,15 +32442,15 @@ fieldoffsets - 1489139 + 1489415 id - 1489139 + 1489415 byteoffset - 31287 + 31293 bitoffset @@ -32469,7 +32468,7 @@ 1 2 - 1489139 + 1489415 @@ -32485,7 +32484,7 @@ 1 2 - 1489139 + 1489415 @@ -32501,7 +32500,7 @@ 1 2 - 17653 + 17656 2 @@ -32511,7 +32510,7 @@ 3 5 - 2661 + 2662 5 @@ -32547,7 +32546,7 @@ 1 2 - 30309 + 30315 2 @@ -32644,19 +32643,19 @@ bitfield - 30392 + 30276 id - 30392 + 30276 bits - 3502 + 3488 declared_bits - 3502 + 3488 @@ -32670,7 +32669,7 @@ 1 2 - 30392 + 30276 @@ -32686,7 +32685,7 @@ 1 2 - 30392 + 30276 @@ -32702,42 +32701,42 @@ 1 2 - 1000 + 996 2 3 - 750 + 747 3 4 - 250 + 249 4 5 - 500 + 498 5 7 - 250 + 249 8 9 - 250 + 249 9 11 - 250 + 249 13 143 - 250 + 249 @@ -32753,7 +32752,7 @@ 1 2 - 3502 + 3488 @@ -32769,42 +32768,42 @@ 1 2 - 1000 + 996 2 3 - 750 + 747 3 4 - 250 + 249 4 5 - 500 + 498 5 7 - 250 + 249 8 9 - 250 + 249 9 11 - 250 + 249 13 143 - 250 + 249 @@ -32820,7 +32819,7 @@ 1 2 - 3502 + 3488 @@ -32830,23 +32829,23 @@ initialisers - 2338659 + 2334426 init - 2338659 + 2334426 var - 989337 + 988524 expr - 2338659 + 2334426 location - 539154 + 537812 @@ -32860,7 +32859,7 @@ 1 2 - 2338659 + 2334426 @@ -32876,7 +32875,7 @@ 1 2 - 2338659 + 2334426 @@ -32892,7 +32891,7 @@ 1 2 - 2338659 + 2334426 @@ -32908,17 +32907,17 @@ 1 2 - 872291 + 871775 2 15 - 39495 + 39395 16 25 - 77549 + 77353 @@ -32934,17 +32933,17 @@ 1 2 - 872291 + 871775 2 15 - 39495 + 39395 16 25 - 77549 + 77353 @@ -32960,7 +32959,7 @@ 1 2 - 989328 + 988516 2 @@ -32981,7 +32980,7 @@ 1 2 - 2338659 + 2334426 @@ -32997,7 +32996,7 @@ 1 2 - 2338659 + 2334426 @@ -33013,7 +33012,7 @@ 1 2 - 2338659 + 2334426 @@ -33029,22 +33028,22 @@ 1 2 - 439236 + 438122 2 3 - 33072 + 32980 3 15 - 42172 + 42099 15 111796 - 24672 + 24610 @@ -33060,17 +33059,17 @@ 1 2 - 470366 + 469174 2 4 - 49613 + 49479 4 12163 - 19173 + 19159 @@ -33086,22 +33085,22 @@ 1 2 - 439236 + 438122 2 3 - 33072 + 32980 3 15 - 42172 + 42099 15 111796 - 24672 + 24610 @@ -33111,26 +33110,26 @@ braced_initialisers - 74182 + 74045 init - 74182 + 74045 expr_ancestor - 1795437 + 1795303 exp - 1795437 + 1795303 ancestor - 898593 + 898526 @@ -33144,7 +33143,7 @@ 1 2 - 1795437 + 1795303 @@ -33160,17 +33159,17 @@ 1 2 - 18283 + 18281 2 3 - 869534 + 869469 3 19 - 10776 + 10775 @@ -33180,19 +33179,19 @@ exprs - 25138614 + 25143276 id - 25138614 + 25143276 kind - 1456 + 1446 location - 5896962 + 10554420 @@ -33206,7 +33205,7 @@ 1 2 - 25138614 + 25143276 @@ -33222,7 +33221,7 @@ 1 2 - 25138614 + 25143276 @@ -33237,63 +33236,73 @@ 1 - 13 - 121 + 10 + 109 - 13 - 46 - 121 + 12 + 18 + 109 - 53 - 76 - 121 + 26 + 100 + 109 - 79 - 245 - 121 + 105 + 305 + 109 - 302 - 524 - 121 + 323 + 467 + 109 - 530 - 969 - 121 + 607 + 893 + 109 + + + 906 + 1658 + 109 + + + 1781 + 2386 + 109 - 1043 - 2109 - 121 + 3390 + 4336 + 109 - 2204 - 3636 - 121 + 4809 + 5185 + 109 - 4328 - 7013 - 121 + 5187 + 22128 + 109 - 7403 - 8498 - 121 + 26432 + 50205 + 109 - 9709 - 32322 - 121 + 63936 + 144106 + 109 - 33490 - 447645 - 121 + 313148 + 313149 + 21 @@ -33308,68 +33317,73 @@ 1 - 3 - 107 + 9 + 109 - 4 + 9 15 - 121 + 109 17 - 26 - 121 + 96 + 109 - 28 - 40 - 121 + 99 + 222 + 109 - 47 - 105 - 121 + 260 + 383 + 109 - 133 - 276 - 121 + 408 + 594 + 109 - 305 - 552 - 121 + 599 + 749 + 109 - 620 - 1425 - 121 + 864 + 1774 + 109 - 1437 - 1711 - 121 + 1812 + 2545 + 109 - 1929 - 3215 - 121 + 2623 + 2919 + 109 - 3232 - 8454 - 121 + 3419 + 4913 + 109 - 11521 - 87503 - 121 + 5473 + 21165 + 109 - 155156 - 155157 - 13 + 26254 + 76840 + 109 + + + 224080 + 224081 + 21 @@ -33385,32 +33399,22 @@ 1 2 - 2750855 + 8876940 2 3 - 1390969 + 818418 3 - 4 - 522854 - - - 4 - 6 - 539333 - - - 6 - 13 - 455210 + 16 + 795070 - 13 - 144777 - 237739 + 16 + 71733 + 63990 @@ -33426,17 +33430,17 @@ 1 2 - 4271139 + 9015970 2 3 - 1230098 + 772206 3 - 30 - 395724 + 32 + 766243 @@ -33446,15 +33450,15 @@ expr_reuse - 906491 + 906424 reuse - 906491 + 906424 original - 906491 + 906424 value_category @@ -33472,7 +33476,7 @@ 1 2 - 906491 + 906424 @@ -33488,7 +33492,7 @@ 1 2 - 906491 + 906424 @@ -33504,7 +33508,7 @@ 1 2 - 906491 + 906424 @@ -33520,7 +33524,7 @@ 1 2 - 906491 + 906424 @@ -33572,19 +33576,19 @@ expr_types - 25138614 + 25143276 id - 25138614 + 25143276 typeid - 120596 + 213630 value_category - 56 + 43 @@ -33598,7 +33602,7 @@ 1 2 - 25138614 + 25143276 @@ -33614,7 +33618,7 @@ 1 2 - 25138614 + 25143276 @@ -33630,57 +33634,52 @@ 1 2 - 17845 + 52371 2 3 - 19220 + 35097 3 4 - 10269 + 14468 4 5 - 8080 + 14490 5 - 7 - 10690 - - - 7 - 11 - 11111 + 8 + 17515 - 11 - 18 - 10157 + 8 + 14 + 17340 - 18 - 33 - 9483 + 14 + 24 + 16397 - 33 - 70 - 9119 + 24 + 49 + 16025 - 70 - 233 - 9062 + 49 + 134 + 16134 - 233 - 379496 - 5555 + 134 + 441505 + 13789 @@ -33696,12 +33695,12 @@ 1 2 - 100590 + 185417 2 3 - 20005 + 28213 @@ -33715,14 +33714,14 @@ 12 - 118902 - 118903 - 28 + 153745 + 153746 + 21 - 777025 - 777026 - 28 + 993192 + 993193 + 21 @@ -33736,14 +33735,14 @@ 12 - 1298 - 1299 - 28 + 2282 + 2283 + 21 - 3713 - 3714 - 28 + 8750 + 8751 + 21 @@ -33764,15 +33763,15 @@ new_allocated_type - 57992 + 57934 expr - 57992 + 57934 type_id - 34384 + 34350 @@ -33786,7 +33785,7 @@ 1 2 - 57992 + 57934 @@ -33802,17 +33801,17 @@ 1 2 - 14455 + 14440 2 3 - 18176 + 18158 3 19 - 1753 + 1751 @@ -33822,15 +33821,15 @@ new_array_allocated_type - 6932 + 6914 expr - 6932 + 6914 type_id - 2978 + 2970 @@ -33844,7 +33843,7 @@ 1 2 - 6932 + 6914 @@ -33865,12 +33864,12 @@ 2 3 - 2633 + 2626 3 5 - 224 + 223 6 @@ -35221,15 +35220,15 @@ condition_decl_bind - 437622 + 437589 expr - 437622 + 437589 decl - 437622 + 437589 @@ -35243,7 +35242,7 @@ 1 2 - 437622 + 437589 @@ -35259,7 +35258,7 @@ 1 2 - 437622 + 437589 @@ -35269,15 +35268,15 @@ typeid_bind - 60130 + 60071 expr - 60130 + 60071 type_id - 20015 + 19995 @@ -35291,7 +35290,7 @@ 1 2 - 60130 + 60071 @@ -35307,17 +35306,17 @@ 1 2 - 3720 + 3717 2 3 - 15781 + 15765 3 328 - 513 + 512 @@ -35327,15 +35326,15 @@ uuidof_bind - 28057 + 27985 expr - 28057 + 27985 type_id - 27789 + 27719 @@ -35349,7 +35348,7 @@ 1 2 - 28057 + 27985 @@ -35365,12 +35364,12 @@ 1 2 - 27565 + 27495 2 4 - 224 + 223 @@ -35380,15 +35379,15 @@ sizeof_bind - 241336 + 241380 expr - 241336 + 241380 type_id - 11178 + 11180 @@ -35402,7 +35401,7 @@ 1 2 - 241336 + 241380 @@ -35418,12 +35417,12 @@ 1 2 - 3866 + 3867 2 3 - 2775 + 2776 3 @@ -35433,7 +35432,7 @@ 4 5 - 1136 + 1137 5 @@ -35443,7 +35442,7 @@ 6 7 - 1061 + 1062 7 @@ -35511,11 +35510,11 @@ lambdas - 17748 + 17730 expr - 17748 + 17730 default_capture @@ -35537,7 +35536,7 @@ 1 2 - 17748 + 17730 @@ -35553,7 +35552,7 @@ 1 2 - 17748 + 17730 @@ -35652,15 +35651,15 @@ lambda_capture - 28523 + 28450 id - 28523 + 28450 lambda - 13294 + 13261 index @@ -35668,7 +35667,7 @@ field - 28523 + 28450 captured_by_reference @@ -35680,7 +35679,7 @@ location - 18396 + 18350 @@ -35694,7 +35693,7 @@ 1 2 - 28523 + 28450 @@ -35710,7 +35709,7 @@ 1 2 - 28523 + 28450 @@ -35726,7 +35725,7 @@ 1 2 - 28523 + 28450 @@ -35742,7 +35741,7 @@ 1 2 - 28523 + 28450 @@ -35758,7 +35757,7 @@ 1 2 - 28523 + 28450 @@ -35774,7 +35773,7 @@ 1 2 - 28523 + 28450 @@ -35790,27 +35789,27 @@ 1 2 - 6673 + 6656 2 3 - 3081 + 3074 3 4 - 1614 + 1610 4 6 - 1225 + 1222 6 18 - 699 + 697 @@ -35826,27 +35825,27 @@ 1 2 - 6673 + 6656 2 3 - 3081 + 3074 3 4 - 1614 + 1610 4 6 - 1225 + 1222 6 18 - 699 + 697 @@ -35862,27 +35861,27 @@ 1 2 - 6673 + 6656 2 3 - 3081 + 3074 3 4 - 1614 + 1610 4 6 - 1225 + 1222 6 18 - 699 + 697 @@ -35898,12 +35897,12 @@ 1 2 - 12724 + 12692 2 3 - 569 + 568 @@ -35919,7 +35918,7 @@ 1 2 - 13268 + 13235 2 @@ -35940,27 +35939,27 @@ 1 2 - 7303 + 7284 2 3 - 3245 + 3237 3 4 - 1329 + 1326 4 7 - 1087 + 1084 7 18 - 328 + 327 @@ -36269,7 +36268,7 @@ 2 3 - 112 + 111 @@ -36402,7 +36401,7 @@ 1 2 - 28523 + 28450 @@ -36418,7 +36417,7 @@ 1 2 - 28523 + 28450 @@ -36434,7 +36433,7 @@ 1 2 - 28523 + 28450 @@ -36450,7 +36449,7 @@ 1 2 - 28523 + 28450 @@ -36466,7 +36465,7 @@ 1 2 - 28523 + 28450 @@ -36482,7 +36481,7 @@ 1 2 - 28523 + 28450 @@ -36740,17 +36739,17 @@ 1 2 - 16566 + 16524 2 6 - 1398 + 1394 6 68 - 431 + 430 @@ -36766,12 +36765,12 @@ 1 2 - 17179 + 17136 2 68 - 1217 + 1214 @@ -36787,12 +36786,12 @@ 1 2 - 17663 + 17618 2 8 - 733 + 731 @@ -36808,17 +36807,17 @@ 1 2 - 16566 + 16524 2 6 - 1398 + 1394 6 68 - 431 + 430 @@ -36834,7 +36833,7 @@ 1 2 - 18370 + 18324 2 @@ -36855,7 +36854,7 @@ 1 2 - 18396 + 18350 @@ -36865,11 +36864,11 @@ fold - 1368 + 1367 expr - 1368 + 1367 operator @@ -36891,7 +36890,7 @@ 1 2 - 1368 + 1367 @@ -36907,7 +36906,7 @@ 1 2 - 1368 + 1367 @@ -36986,11 +36985,11 @@ stmts - 6258938 + 6243067 id - 6258938 + 6243067 kind @@ -36998,7 +36997,7 @@ location - 2754699 + 2747714 @@ -37012,7 +37011,7 @@ 1 2 - 6258938 + 6243067 @@ -37028,7 +37027,7 @@ 1 2 - 6258938 + 6243067 @@ -37266,17 +37265,17 @@ 1 2 - 2352912 + 2346946 2 4 - 239081 + 238474 4 1581 - 162705 + 162292 @@ -37292,12 +37291,12 @@ 1 2 - 2667989 + 2661224 2 10 - 86709 + 86489 @@ -37414,15 +37413,15 @@ if_initialization - 375 + 373 if_stmt - 375 + 373 init_id - 375 + 373 @@ -37436,7 +37435,7 @@ 1 2 - 375 + 373 @@ -37452,7 +37451,7 @@ 1 2 - 375 + 373 @@ -37462,15 +37461,15 @@ if_then - 987388 + 987571 if_stmt - 987388 + 987571 then_id - 987388 + 987571 @@ -37484,7 +37483,7 @@ 1 2 - 987388 + 987571 @@ -37500,7 +37499,7 @@ 1 2 - 987388 + 987571 @@ -37510,15 +37509,15 @@ if_else - 467787 + 467752 if_stmt - 467787 + 467752 else_id - 467787 + 467752 @@ -37532,7 +37531,7 @@ 1 2 - 467787 + 467752 @@ -37548,7 +37547,7 @@ 1 2 - 467787 + 467752 @@ -37606,15 +37605,15 @@ constexpr_if_then - 103934 + 103537 constexpr_if_stmt - 103934 + 103537 then_id - 103934 + 103537 @@ -37628,7 +37627,7 @@ 1 2 - 103934 + 103537 @@ -37644,7 +37643,7 @@ 1 2 - 103934 + 103537 @@ -37654,15 +37653,15 @@ constexpr_if_else - 74042 + 73759 constexpr_if_stmt - 74042 + 73759 else_id - 74042 + 73759 @@ -37676,7 +37675,7 @@ 1 2 - 74042 + 73759 @@ -37692,7 +37691,7 @@ 1 2 - 74042 + 73759 @@ -37798,15 +37797,15 @@ while_body - 39534 + 39542 while_stmt - 39534 + 39542 body_id - 39534 + 39542 @@ -37820,7 +37819,7 @@ 1 2 - 39534 + 39542 @@ -37836,7 +37835,7 @@ 1 2 - 39534 + 39542 @@ -37846,15 +37845,15 @@ do_body - 232974 + 233017 do_stmt - 232974 + 233017 body_id - 232974 + 233017 @@ -37868,7 +37867,7 @@ 1 2 - 232974 + 233017 @@ -37884,7 +37883,7 @@ 1 2 - 232974 + 233017 @@ -37942,11 +37941,11 @@ switch_case - 894840 + 894773 switch_stmt - 440777 + 440744 index @@ -37954,7 +37953,7 @@ case_id - 894840 + 894773 @@ -37973,7 +37972,7 @@ 2 3 - 437691 + 437658 3 @@ -37999,7 +37998,7 @@ 2 3 - 437691 + 437658 3 @@ -38162,7 +38161,7 @@ 1 2 - 894840 + 894773 @@ -38178,7 +38177,7 @@ 1 2 - 894840 + 894773 @@ -38188,15 +38187,15 @@ switch_body - 440777 + 440744 switch_stmt - 440777 + 440744 body_id - 440777 + 440744 @@ -38210,7 +38209,7 @@ 1 2 - 440777 + 440744 @@ -38226,7 +38225,7 @@ 1 2 - 440777 + 440744 @@ -38236,15 +38235,15 @@ for_initialization - 73036 + 73050 for_stmt - 73036 + 73050 init_id - 73036 + 73050 @@ -38258,7 +38257,7 @@ 1 2 - 73036 + 73050 @@ -38274,7 +38273,7 @@ 1 2 - 73036 + 73050 @@ -38284,15 +38283,15 @@ for_condition - 76123 + 76137 for_stmt - 76123 + 76137 condition_id - 76123 + 76137 @@ -38306,7 +38305,7 @@ 1 2 - 76123 + 76137 @@ -38322,7 +38321,7 @@ 1 2 - 76123 + 76137 @@ -38332,15 +38331,15 @@ for_update - 73177 + 73190 for_stmt - 73177 + 73190 update_id - 73177 + 73190 @@ -38354,7 +38353,7 @@ 1 2 - 73177 + 73190 @@ -38370,7 +38369,7 @@ 1 2 - 73177 + 73190 @@ -38380,15 +38379,15 @@ for_body - 84148 + 84163 for_stmt - 84148 + 84163 body_id - 84148 + 84163 @@ -38402,7 +38401,7 @@ 1 2 - 84148 + 84163 @@ -38418,7 +38417,7 @@ 1 2 - 84148 + 84163 @@ -38428,19 +38427,19 @@ stmtparents - 5523824 + 5509817 id - 5523824 + 5509817 index - 16765 + 16722 parent - 2342363 + 2336423 @@ -38454,7 +38453,7 @@ 1 2 - 5523824 + 5509817 @@ -38470,7 +38469,7 @@ 1 2 - 5523824 + 5509817 @@ -38486,52 +38485,52 @@ 1 2 - 5507 + 5493 2 3 - 1372 + 1369 3 4 - 302 + 301 4 5 - 2132 + 2126 7 8 - 1398 + 1394 8 12 - 1087 + 1084 12 29 - 1476 + 1472 29 38 - 1260 + 1257 41 77 - 1269 + 1265 77 195079 - 958 + 955 @@ -38547,52 +38546,52 @@ 1 2 - 5507 + 5493 2 3 - 1372 + 1369 3 4 - 302 + 301 4 5 - 2132 + 2126 7 8 - 1398 + 1394 8 12 - 1087 + 1084 12 29 - 1476 + 1472 29 38 - 1260 + 1257 41 77 - 1269 + 1265 77 195079 - 958 + 955 @@ -38608,32 +38607,32 @@ 1 2 - 1344445 + 1341036 2 3 - 507773 + 506485 3 4 - 144118 + 143753 4 6 - 151422 + 151038 6 16 - 175775 + 175329 16 1943 - 18828 + 18780 @@ -38649,32 +38648,32 @@ 1 2 - 1344445 + 1341036 2 3 - 507773 + 506485 3 4 - 144118 + 143753 4 6 - 151422 + 151038 6 16 - 175775 + 175329 16 1943 - 18828 + 18780 @@ -38684,30 +38683,30 @@ ishandler - 47389 + 47376 block - 47389 + 47376 stmt_decl_bind - 730244 + 723032 stmt - 689803 + 682990 num - 125 + 124 decl - 730175 + 722964 @@ -38721,12 +38720,12 @@ 1 2 - 667590 + 660997 2 32 - 22212 + 21993 @@ -38742,12 +38741,12 @@ 1 2 - 667590 + 660997 2 32 - 22212 + 21993 @@ -38885,7 +38884,7 @@ 1 2 - 730151 + 722940 2 @@ -38906,7 +38905,7 @@ 1 2 - 730175 + 722964 @@ -38916,19 +38915,19 @@ stmt_decl_entry_bind - 730244 + 723032 stmt - 689803 + 682990 num - 125 + 124 decl_entry - 730244 + 723032 @@ -38942,12 +38941,12 @@ 1 2 - 667590 + 660997 2 32 - 22212 + 21993 @@ -38963,12 +38962,12 @@ 1 2 - 667590 + 660997 2 32 - 22212 + 21993 @@ -39106,7 +39105,7 @@ 1 2 - 730244 + 723032 @@ -39122,7 +39121,7 @@ 1 2 - 730244 + 723032 @@ -39132,15 +39131,15 @@ blockscope - 1764517 + 1757769 block - 1764517 + 1757769 enclosing - 1509119 + 1503348 @@ -39154,7 +39153,7 @@ 1 2 - 1764517 + 1757769 @@ -39170,17 +39169,17 @@ 1 2 - 1337771 + 1332655 2 3 - 128699 + 128207 3 28 - 42649 + 42486 @@ -39190,19 +39189,19 @@ jumpinfo - 347327 + 347391 id - 347327 + 347391 str - 28866 + 28871 target - 72498 + 72512 @@ -39216,7 +39215,7 @@ 1 2 - 347327 + 347391 @@ -39232,7 +39231,7 @@ 1 2 - 347327 + 347391 @@ -39248,12 +39247,12 @@ 2 3 - 13558 + 13560 3 4 - 6041 + 6042 4 @@ -39268,7 +39267,7 @@ 6 10 - 2191 + 2192 10 @@ -39278,7 +39277,7 @@ 25 13711 - 999 + 1000 @@ -39294,17 +39293,17 @@ 1 2 - 23124 + 23128 2 3 - 3616 + 3617 3 3321 - 2124 + 2125 @@ -39325,27 +39324,27 @@ 2 3 - 36107 + 36114 3 4 - 17583 + 17586 4 5 - 7358 + 7359 5 8 - 6399 + 6401 8 2124 - 5016 + 5017 @@ -39361,7 +39360,7 @@ 1 2 - 72498 + 72512 @@ -39371,19 +39370,19 @@ preprocdirects - 5407616 + 5386937 id - 5407616 + 5386937 kind - 1375 + 1370 location - 5404364 + 5383697 @@ -39397,7 +39396,7 @@ 1 2 - 5407616 + 5386937 @@ -39413,7 +39412,7 @@ 1 2 - 5407616 + 5386937 @@ -39429,57 +39428,57 @@ 1 2 - 125 + 124 145 146 - 125 + 124 808 809 - 125 + 124 866 867 - 125 + 124 973 974 - 125 + 124 1509 1510 - 125 + 124 1891 1892 - 125 + 124 3256 3257 - 125 + 124 4714 4715 - 125 + 124 7089 7090 - 125 + 124 21984 21985 - 125 + 124 @@ -39495,57 +39494,57 @@ 1 2 - 125 + 124 145 146 - 125 + 124 808 809 - 125 + 124 866 867 - 125 + 124 973 974 - 125 + 124 1509 1510 - 125 + 124 1891 1892 - 125 + 124 3256 3257 - 125 + 124 4714 4715 - 125 + 124 7089 7090 - 125 + 124 21958 21959 - 125 + 124 @@ -39561,12 +39560,12 @@ 1 2 - 5404239 + 5383573 27 28 - 125 + 124 @@ -39582,7 +39581,7 @@ 1 2 - 5404364 + 5383697 @@ -39592,15 +39591,15 @@ preprocpair - 1141282 + 1136918 begin - 886636 + 883245 elseelifend - 1141282 + 1136918 @@ -39614,17 +39613,17 @@ 1 2 - 645622 + 643153 2 3 - 231383 + 230498 3 9 - 9630 + 9593 @@ -39640,7 +39639,7 @@ 1 2 - 1141282 + 1136918 @@ -39650,41 +39649,41 @@ preproctrue - 437752 + 436078 branch - 437752 + 436078 preprocfalse - 284664 + 283575 branch - 284664 + 283575 preproctext - 4352508 + 4335863 id - 4352508 + 4335863 head - 2954828 + 2943528 body - 1681344 + 1674914 @@ -39698,7 +39697,7 @@ 1 2 - 4352508 + 4335863 @@ -39714,7 +39713,7 @@ 1 2 - 4352508 + 4335863 @@ -39730,12 +39729,12 @@ 1 2 - 2758089 + 2747542 2 798 - 196738 + 195986 @@ -39751,12 +39750,12 @@ 1 2 - 2875157 + 2864162 2 5 - 79670 + 79366 @@ -39772,17 +39771,17 @@ 1 2 - 1532758 + 1526896 2 10 - 127698 + 127210 10 13579 - 20887 + 20807 @@ -39798,17 +39797,17 @@ 1 2 - 1537010 + 1531133 2 12 - 127323 + 126836 12 3231 - 17009 + 16944 @@ -39818,15 +39817,15 @@ includes - 406823 + 397819 id - 406823 + 397819 included - 74940 + 73281 @@ -39840,7 +39839,7 @@ 1 2 - 406823 + 397819 @@ -39856,37 +39855,37 @@ 1 2 - 37085 + 36264 2 3 - 12056 + 11789 3 4 - 6324 + 6184 4 6 - 6837 + 6685 6 11 - 5771 + 5644 11 47 - 5623 + 5499 47 793 - 1240 + 1213 @@ -39896,15 +39895,15 @@ link_targets - 943 + 923 id - 943 + 923 binary - 943 + 923 @@ -39918,7 +39917,7 @@ 1 2 - 943 + 923 @@ -39934,7 +39933,7 @@ 1 2 - 943 + 923 @@ -39944,11 +39943,11 @@ link_parent - 38129861 + 38113707 element - 4849837 + 4847510 link_target @@ -39966,17 +39965,17 @@ 1 2 - 665798 + 665224 2 9 - 33828 + 33795 9 10 - 4150209 + 4148490 @@ -39995,48 +39994,48 @@ 42 - 97300 - 97301 + 97356 + 97357 42 - 97419 - 97420 + 97475 + 97476 42 - 97472 - 97473 + 97528 + 97529 42 - 97499 - 97500 + 97555 + 97556 42 - 97521 - 97522 + 97577 + 97578 42 - 97553 - 97554 + 97609 + 97610 42 - 99560 - 99561 + 99616 + 99617 42 - 102940 - 102941 + 102996 + 102997 42 - 104302 - 104303 + 104360 + 104361 42 diff --git a/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/old.dbscheme b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/old.dbscheme new file mode 100644 index 000000000000..9a7c3c14c107 --- /dev/null +++ b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/old.dbscheme @@ -0,0 +1,2491 @@ + +/** + * 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 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator 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 +); + +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 +); + +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 +; + +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; + +@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/9a7c3c14c1076f64b871719117a558733d987b48/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..af887e83a815 --- /dev/null +++ b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/semmlecode.cpp.dbscheme @@ -0,0 +1,2492 @@ + +/** + * 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 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator 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 +); + +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 +); + +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 +; + +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; + +@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/9a7c3c14c1076f64b871719117a558733d987b48/upgrade.properties b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/upgrade.properties new file mode 100644 index 000000000000..3fdb0aa5a823 --- /dev/null +++ b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/upgrade.properties @@ -0,0 +1,2 @@ +description: Support __mfp8 type +compatibility: full diff --git a/cpp/ql/test/library-tests/templates/type_instantiations/types.expected b/cpp/ql/test/library-tests/templates/type_instantiations/types.expected index 3539e52eecfb..a86ab5e7bbd5 100644 --- a/cpp/ql/test/library-tests/templates/type_instantiations/types.expected +++ b/cpp/ql/test/library-tests/templates/type_instantiations/types.expected @@ -25,6 +25,7 @@ | file://:0:0:0:0 | __float128 | | file://:0:0:0:0 | __fp16 | | file://:0:0:0:0 | __int128 | +| file://:0:0:0:0 | __mfp8 | | file://:0:0:0:0 | __va_list_tag | | file://:0:0:0:0 | __va_list_tag & | | file://:0:0:0:0 | __va_list_tag && | diff --git a/cpp/ql/test/library-tests/type_sizes/type_sizes.expected b/cpp/ql/test/library-tests/type_sizes/type_sizes.expected index b7bc9e04fe34..08e8b26f5256 100644 --- a/cpp/ql/test/library-tests/type_sizes/type_sizes.expected +++ b/cpp/ql/test/library-tests/type_sizes/type_sizes.expected @@ -46,6 +46,7 @@ | file://:0:0:0:0 | __float128 | 16 | | file://:0:0:0:0 | __fp16 | 2 | | file://:0:0:0:0 | __int128 | 16 | +| file://:0:0:0:0 | __mfp8 | 1 | | file://:0:0:0:0 | __va_list_tag | 24 | | file://:0:0:0:0 | __va_list_tag & | 8 | | file://:0:0:0:0 | __va_list_tag && | 8 | diff --git a/cpp/ql/test/library-tests/unspecified_type/types/unspecified_type.expected b/cpp/ql/test/library-tests/unspecified_type/types/unspecified_type.expected index 00ae3fa5d8f3..2e5091754b99 100644 --- a/cpp/ql/test/library-tests/unspecified_type/types/unspecified_type.expected +++ b/cpp/ql/test/library-tests/unspecified_type/types/unspecified_type.expected @@ -27,6 +27,7 @@ | file://:0:0:0:0 | __float128 | __float128 | | file://:0:0:0:0 | __fp16 | __fp16 | | file://:0:0:0:0 | __int128 | __int128 | +| file://:0:0:0:0 | __mfp8 | __mfp8 | | file://:0:0:0:0 | __va_list_tag & | __va_list_tag & | | file://:0:0:0:0 | __va_list_tag && | __va_list_tag && | | file://:0:0:0:0 | auto | auto | diff --git a/cpp/ql/test/library-tests/variables/variables/types.expected b/cpp/ql/test/library-tests/variables/variables/types.expected index 6ecf14875ca4..1d091ac2571b 100644 --- a/cpp/ql/test/library-tests/variables/variables/types.expected +++ b/cpp/ql/test/library-tests/variables/variables/types.expected @@ -26,6 +26,7 @@ | __float128 | Float128Type | | | | | | __fp16 | BinaryFloatingPointType, RealNumberType | | | | | | __int128 | Int128Type | | | | | +| __mfp8 | BinaryFloatingPointType, RealNumberType | | | | | | __va_list_tag | DirectAccessHolder, MetricClass, Struct, StructLikeClass | | | | | | __va_list_tag & | LValueReferenceType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | | __va_list_tag | | | | __va_list_tag && | PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection, RValueReferenceType | | __va_list_tag | | |