diff --git a/cpp/downgrades/5b388693c66db1e7dc2e76a90aa67a2b6eb74f0f/builtintypes.ql b/cpp/downgrades/5b388693c66db1e7dc2e76a90aa67a2b6eb74f0f/builtintypes.ql new file mode 100644 index 000000000000..ee8aa6d7133e --- /dev/null +++ b/cpp/downgrades/5b388693c66db1e7dc2e76a90aa67a2b6eb74f0f/builtintypes.ql @@ -0,0 +1,19 @@ +class BuiltinType extends @builtintype { + string toString() { none() } +} + +from BuiltinType type, string name, int kind, int kind_new, int size, int sign, int alignment +where + builtintypes(type, name, kind, size, sign, alignment) and + if + type instanceof @fp16 or + type instanceof @std_bfloat16 or + type instanceof @std_float16 or + type instanceof @complex_std_float32 or + type instanceof @complex_float32x or + type instanceof @complex_std_float64 or + type instanceof @complex_float64x or + type instanceof @complex_std_float128 + then kind_new = 2 + else kind_new = kind +select type, name, kind_new, size, sign, alignment diff --git a/cpp/downgrades/5b388693c66db1e7dc2e76a90aa67a2b6eb74f0f/old.dbscheme b/cpp/downgrades/5b388693c66db1e7dc2e76a90aa67a2b6eb74f0f/old.dbscheme new file mode 100644 index 000000000000..5b388693c66d --- /dev/null +++ b/cpp/downgrades/5b388693c66db1e7dc2e76a90aa67a2b6eb74f0f/old.dbscheme @@ -0,0 +1,2221 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +@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 +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +; + +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_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +for_initialization( + unique int for_stmt: @stmt_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + unique 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/5b388693c66db1e7dc2e76a90aa67a2b6eb74f0f/semmlecode.cpp.dbscheme b/cpp/downgrades/5b388693c66db1e7dc2e76a90aa67a2b6eb74f0f/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..dbe9c8eb5fc6 --- /dev/null +++ b/cpp/downgrades/5b388693c66db1e7dc2e76a90aa67a2b6eb74f0f/semmlecode.cpp.dbscheme @@ -0,0 +1,2213 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +@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 +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +; + +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_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +for_initialization( + unique int for_stmt: @stmt_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + unique 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/5b388693c66db1e7dc2e76a90aa67a2b6eb74f0f/upgrade.properties b/cpp/downgrades/5b388693c66db1e7dc2e76a90aa67a2b6eb74f0f/upgrade.properties new file mode 100644 index 000000000000..bc44e185ff9d --- /dev/null +++ b/cpp/downgrades/5b388693c66db1e7dc2e76a90aa67a2b6eb74f0f/upgrade.properties @@ -0,0 +1,3 @@ +description: Introduce new floating-point types from C23 and C++23 +compatibility: backwards +builtintypes.rel: run builtintypes.qlo diff --git a/cpp/ql/lib/change-notes/2023-09-04-more-floating-point-types.md b/cpp/ql/lib/change-notes/2023-09-04-more-floating-point-types.md new file mode 100644 index 000000000000..9c30d6eddd85 --- /dev/null +++ b/cpp/ql/lib/change-notes/2023-09-04-more-floating-point-types.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added support for new floating-point types in C23 and C++23. diff --git a/cpp/ql/lib/semmle/code/cpp/Type.qll b/cpp/ql/lib/semmle/code/cpp/Type.qll index 43757ce0b2d8..16d589e99955 100644 --- a/cpp/ql/lib/semmle/code/cpp/Type.qll +++ b/cpp/ql/lib/semmle/code/cpp/Type.qll @@ -819,6 +819,30 @@ private predicate floatingPointTypeMapping( or // _Complex _Float16 kind = 53 and base = 2 and domain = TComplexDomain() and realKind = 52 and extended = false + or + // __fp16 + kind = 54 and base = 2 and domain = TRealDomain() and realKind = 54 and extended = false + or + // __bf16 + kind = 55 and base = 2 and domain = TRealDomain() and realKind = 55 and extended = false + or + // std::float16_t + kind = 56 and base = 2 and domain = TRealDomain() and realKind = 56 and extended = false + or + // _Complex _Float32 + kind = 57 and base = 2 and domain = TComplexDomain() and realKind = 45 and extended = false + or + // _Complex _Float32x + kind = 58 and base = 2 and domain = TComplexDomain() and realKind = 46 and extended = true + or + // _Complex _Float64 + kind = 59 and base = 2 and domain = TComplexDomain() and realKind = 47 and extended = false + or + // _Complex _Float64x + kind = 60 and base = 2 and domain = TComplexDomain() and realKind = 48 and extended = true + or + // _Complex _Float128 + kind = 61 and base = 2 and domain = TComplexDomain() and realKind = 49 and extended = false } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll index 0d19ea2885f5..03ef716f4f06 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll @@ -361,6 +361,12 @@ predicate ignoreLoad(Expr expr) { or expr instanceof FunctionAccess or + // The load is duplicated from the operand. + expr instanceof ParenthesisExpr + or + // The load is duplicated from the right operand. + expr instanceof CommaExpr + or expr.(PointerDereferenceExpr).getOperand().getFullyConverted().getType().getUnspecifiedType() instanceof FunctionPointerType or diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index 84ac1d4c96c9..2a62d4f1219d 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -648,19 +648,7 @@ abstract class TranslatedCrementOperation extends TranslatedNonConstantExpr { class TranslatedPrefixCrementOperation extends TranslatedCrementOperation { override PrefixCrementOperation expr; - override Instruction getResult() { - if expr.isPRValueCategory() - then - // If this is C, then the result of a prefix crement is a prvalue for the - // new value assigned to the operand. If this is C++, then the result is - // an lvalue, but that lvalue is being loaded as part of this expression. - // EDG doesn't mark this as a load. - result = this.getInstruction(CrementOpTag()) - else - // This is C++, where the result is an lvalue for the operand, and that - // lvalue is not being loaded as part of this expression. - result = this.getUnloadedOperand().getResult() - } + override Instruction getResult() { result = this.getUnloadedOperand().getResult() } } class TranslatedPostfixCrementOperation extends TranslatedCrementOperation { @@ -1503,19 +1491,7 @@ class TranslatedAssignExpr extends TranslatedNonConstantExpr { result = this.getRightOperand().getFirstInstruction() } - final override Instruction getResult() { - if expr.isPRValueCategory() - then - // If this is C, then the result of an assignment is a prvalue for the new - // value assigned to the left operand. If this is C++, then the result is - // an lvalue, but that lvalue is being loaded as part of this expression. - // EDG doesn't mark this as a load. - result = this.getRightOperand().getResult() - else - // This is C++, where the result is an lvalue for the left operand, - // and that lvalue is not being loaded as part of this expression. - result = this.getLeftOperand().getResult() - } + final override Instruction getResult() { result = this.getLeftOperand().getResult() } final TranslatedExpr getLeftOperand() { result = getTranslatedExpr(expr.getLValue().getFullyConverted()) @@ -1641,19 +1617,7 @@ class TranslatedAssignOperation extends TranslatedNonConstantExpr { result = this.getRightOperand().getFirstInstruction() } - final override Instruction getResult() { - if expr.isPRValueCategory() - then - // If this is C, then the result of an assignment is a prvalue for the new - // value assigned to the left operand. If this is C++, then the result is - // an lvalue, but that lvalue is being loaded as part of this expression. - // EDG doesn't mark this as a load. - result = this.getStoredValue() - else - // This is C++, where the result is an lvalue for the left operand, - // and that lvalue is not being loaded as part of this expression. - result = this.getUnloadedLeftOperand().getResult() - } + final override Instruction getResult() { result = this.getUnloadedLeftOperand().getResult() } final TranslatedExpr getUnloadedLeftOperand() { result = this.getLoadedLeftOperand().getOperand() @@ -2191,8 +2155,15 @@ abstract class TranslatedConditionalExpr extends TranslatedNonConstantExpr { not this.elseIsVoid() and tag = ConditionValueFalseStoreTag() ) and opcode instanceof Opcode::Store and - resultType = this.getResultType() + ( + not expr.hasLValueToRValueConversion() and + resultType = this.getResultType() + or + expr.hasLValueToRValueConversion() and + resultType = getTypeForPRValue(expr.getType()) + ) or + not expr.hasLValueToRValueConversion() and tag = ConditionValueResultLoadTag() and opcode instanceof Opcode::Load and resultType = this.getResultType() @@ -2222,8 +2193,15 @@ abstract class TranslatedConditionalExpr extends TranslatedNonConstantExpr { ) or tag = ConditionValueResultTempAddressTag() and - result = this.getInstruction(ConditionValueResultLoadTag()) + ( + not expr.hasLValueToRValueConversion() and + result = this.getInstruction(ConditionValueResultLoadTag()) + or + expr.hasLValueToRValueConversion() and + result = this.getParent().getChildSuccessor(this) + ) or + not expr.hasLValueToRValueConversion() and tag = ConditionValueResultLoadTag() and result = this.getParent().getChildSuccessor(this) ) @@ -2252,18 +2230,23 @@ abstract class TranslatedConditionalExpr extends TranslatedNonConstantExpr { result = this.getElse().getResult() ) or + not expr.hasLValueToRValueConversion() and tag = ConditionValueResultLoadTag() and - ( - operandTag instanceof AddressOperandTag and - result = this.getInstruction(ConditionValueResultTempAddressTag()) - ) + operandTag instanceof AddressOperandTag and + result = this.getInstruction(ConditionValueResultTempAddressTag()) ) } final override predicate hasTempVariable(TempVariableTag tag, CppType type) { not this.resultIsVoid() and tag = ConditionValueTempVar() and - type = this.getResultType() + ( + not expr.hasLValueToRValueConversion() and + type = this.getResultType() + or + expr.hasLValueToRValueConversion() and + type = getTypeForPRValue(expr.getType()) + ) } final override IRVariable getInstructionVariable(InstructionTag tag) { @@ -2278,7 +2261,13 @@ abstract class TranslatedConditionalExpr extends TranslatedNonConstantExpr { final override Instruction getResult() { not this.resultIsVoid() and - result = this.getInstruction(ConditionValueResultLoadTag()) + ( + expr.hasLValueToRValueConversion() and + result = this.getInstruction(ConditionValueResultTempAddressTag()) + or + not expr.hasLValueToRValueConversion() and + result = this.getInstruction(ConditionValueResultLoadTag()) + ) } override Instruction getChildSuccessor(TranslatedElement child) { @@ -3237,11 +3226,9 @@ predicate exprNeedsCopyIfNotLoaded(Expr expr) { ( expr instanceof AssignExpr or - expr instanceof AssignOperation and - not expr.isPRValueCategory() // is C++ + expr instanceof AssignOperation or - expr instanceof PrefixCrementOperation and - not expr.isPRValueCategory() // is C++ + expr instanceof PrefixCrementOperation or // Because the load is on the `e` in `e++`. expr instanceof PostfixCrementOperation diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index dbe9c8eb5fc6..5b388693c66d 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -612,6 +612,14 @@ case @builtintype.kind of | 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( diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 23f1331ee6dc..66cbfef08e6b 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,7 +2,7 @@ @compilation - 9948 + 9704 @externalDataElement @@ -18,71 +18,71 @@ @location_default - 29769315 + 29768422 @location_stmt - 3813678 + 3814079 @location_expr - 13166528 + 13167909 @diagnostic - 72036 + 5200 @file - 123102 + 122996 @folder - 15387 + 15374 @macro_expansion - 33954616 + 33130540 @other_macro_reference - 857985 + 857248 @function - 4638253 + 4640789 @fun_decl - 5001965 + 5004188 @var_decl - 8416189 + 8413615 @type_decl - 3241228 + 3238442 @namespace_decl - 308863 + 308610 @using - 369307 + 368989 @static_assert - 130544 + 133393 @parameter - 6569654 + 6568667 @membervariable - 1052983 + 1053094 @globalvariable @@ -90,235 +90,267 @@ @localvariable - 581199 + 581163 @enumconstant - 241278 + 241303 @errortype - 466 + 465 @unknowntype - 466 + 465 @void - 466 + 465 @boolean - 466 + 465 @char - 466 + 465 @unsigned_char - 466 + 465 @signed_char - 466 + 465 @short - 466 + 465 @unsigned_short - 466 + 465 @signed_short - 466 + 465 @int - 466 + 465 @unsigned_int - 466 + 465 @signed_int - 466 + 465 @long - 466 + 465 @unsigned_long - 466 + 465 @signed_long - 466 + 465 @long_long - 466 + 465 @unsigned_long_long - 466 + 465 @signed_long_long - 466 + 465 @float - 466 + 465 @double - 466 + 465 @long_double - 466 + 465 @complex_float - 466 + 465 @complex_double - 466 + 465 @complex_long_double - 466 + 465 @imaginary_float - 466 + 465 @imaginary_double - 466 + 465 @imaginary_long_double - 466 + 465 @wchar_t - 466 + 465 @decltype_nullptr - 466 + 465 @int128 - 466 + 465 @unsigned_int128 - 466 + 465 @signed_int128 - 466 + 465 @float128 - 466 + 465 @complex_float128 - 466 + 465 @decimal32 - 466 + 465 @decimal64 - 466 + 465 @decimal128 - 466 + 465 @char16_t - 466 + 465 @char32_t - 466 + 465 @std_float32 - 466 + 465 @float32x - 466 + 465 @std_float64 - 466 + 465 @float64x - 466 + 465 @std_float128 - 466 + 465 @char8_t - 466 + 465 @float16 - 466 + 465 @complex_float16 - 466 + 465 + + + @fp16 + 465 + + + @std_bfloat16 + 465 + + + @std_float16 + 465 + + + @complex_std_float32 + 465 + + + @complex_float32x + 465 + + + @complex_std_float64 + 465 + + + @complex_float64x + 465 + + + @complex_std_float128 + 465 @pointer - 567483 + 566995 @type_with_specifiers - 1009066 + 1010528 @array - 110046 + 109951 @routineptr - 635462 + 634074 @reference - 1747669 + 1729592 @gnu_vector - 714 + 697 @routinereference - 242 + 236 @rvalue_reference - 613493 + 627842 @block @@ -326,43 +358,43 @@ @decltype - 27045 + 27021 @usertype - 5225787 + 5224557 @mangledname - 4988979 + 6441011 @type_mention - 4022590 + 4023013 @routinetype - 547147 + 545951 @ptrtomember - 37770 + 37737 @specifier - 24713 + 24692 @gnuattribute - 685456 + 684867 @stdattribute - 492036 + 491264 @declspec - 243716 + 243334 @msattribute @@ -370,15 +402,15 @@ @alignas - 9792 + 9783 @attribute_arg_token - 39168 + 39135 @attribute_arg_constant_expr - 370239 + 369921 @attribute_arg_empty @@ -390,43 +422,43 @@ @attribute_arg_type - 466 + 465 @derivation - 368257 + 395653 @frienddecl - 716121 + 714556 @comment - 8774227 + 8760472 @namespace - 12123 + 12113 @specialnamequalifyingelement - 466 + 465 @namequalifier - 1533233 + 1573473 @value - 10759232 + 10760361 @initialiser - 1699706 + 1698635 @lambdacapture - 27977 + 27953 @address_of @@ -434,15 +466,15 @@ @indirect - 292170 + 292201 @array_to_pointer - 1428626 + 1428777 @parexpr - 3581934 + 3582309 @arithnegexpr @@ -450,115 +482,115 @@ @unaryplusexpr - 2911 + 2912 @complementexpr - 27792 + 27795 @notexpr - 275977 + 276006 @postincrexpr - 61944 + 61951 @postdecrexpr - 41970 + 41975 @preincrexpr - 70459 + 70466 @predecrexpr - 26165 + 26168 @conditionalexpr - 656221 + 656290 @addexpr - 397749 + 397790 @subexpr - 340231 + 340267 @mulexpr - 305860 + 305892 @divexpr - 132951 + 132965 @remexpr - 15842 + 15807 @paddexpr - 86521 + 86530 @psubexpr - 49819 + 49824 @pdiffexpr - 35459 + 35403 @lshiftexpr - 565385 + 565445 @rshiftexpr - 140612 + 140626 @andexpr - 488264 + 488315 @orexpr - 145229 + 145244 @xorexpr - 54087 + 54092 @eqexpr - 469885 + 469935 @neexpr - 301200 + 301232 @gtexpr - 99787 + 103894 @ltexpr - 101652 + 101565 @geexpr - 59152 + 59159 @leexpr - 212181 + 212203 @assignexpr - 935434 + 935533 @assignaddexpr @@ -566,19 +598,19 @@ @assignsubexpr - 11181 + 11182 @assignmulexpr - 7147 + 8253 @assigndivexpr - 4985 + 4986 @assignremexpr - 418 + 417 @assignlshiftexpr @@ -594,15 +626,15 @@ @assignorexpr - 23830 + 23829 @assignxorexpr - 21808 + 21810 @assignpaddexpr - 13606 + 13608 @assignpsubexpr @@ -610,27 +642,27 @@ @andlogicalexpr - 249546 + 249572 @orlogicalexpr - 864709 + 864800 @commaexpr - 124055 + 123860 @subscriptexpr - 367599 + 367576 @callexpr - 302160 + 301900 @vastartexpr - 3706 + 3703 @vaargexpr @@ -638,47 +670,47 @@ @vaendexpr - 2797 + 2795 @vacopyexpr - 141 + 140 @varaccess - 6019333 + 6019964 @runtime_sizeof - 295357 + 295388 @runtime_alignof - 49891 + 49782 @expr_stmt - 94234 + 94244 @routineexpr - 2917246 + 2914964 @type_operand - 1126930 + 1127048 @offsetofexpr - 19960 + 19962 @typescompexpr - 562865 + 562924 @literal - 4406808 + 4406828 @aggregateliteral @@ -686,43 +718,43 @@ @c_style_cast - 4209495 + 4210119 @temp_init - 826674 + 826451 @errorexpr - 46892 + 46789 @reference_to - 1592467 + 1588987 @ref_indirect - 1938672 + 1934436 @vacuous_destructor_call - 8150 + 8132 @assume - 3203 + 3200 @conjugation - 1 + 11 @realpartexpr - 69 + 78 @imagpartexpr - 69 + 78 @jmulexpr @@ -762,35 +794,35 @@ @thisaccess - 1127035 + 1126162 @new_expr - 47668 + 47564 @delete_expr - 11749 + 11723 @throw_expr - 21695 + 21163 @condition_decl - 42427 + 42374 @braced_init_list - 1108 + 1107 @type_id - 36483 + 36403 @sizeof_pack - 5595 + 5590 @hasassignexpr @@ -838,19 +870,19 @@ @isbaseofexpr - 37 + 150 @isclassexpr - 1837 + 1836 @isconvtoexpr - 104 + 208 @isemptyexpr - 1481 + 1478 @isenumexpr @@ -858,7 +890,7 @@ @ispodexpr - 634 + 618 @ispolyexpr @@ -874,19 +906,19 @@ @hastrivialdestructor - 466 + 465 @uuidof - 20120 + 20103 @delete_array_expr - 1406 + 1371 @new_array_expr - 5103 + 5099 @foldexpr @@ -894,55 +926,55 @@ @ctordirectinit - 112978 + 112732 @ctorvirtualinit - 6513 + 6353 @ctorfieldinit - 201118 + 200678 @ctordelegatinginit - 3351 + 3344 @dtordirectdestruct - 41776 + 41684 @dtorvirtualdestruct - 4128 + 4119 @dtorfielddestruct - 41705 + 41614 @static_cast - 210934 + 215491 @reinterpret_cast - 30752 + 30704 @const_cast - 35250 + 35194 @dynamic_cast - 1037 + 1012 @lambdaexpr - 21449 + 21431 @param_ref - 245656 + 245349 @noopexpr @@ -950,7 +982,7 @@ @istriviallyconstructibleexpr - 732 + 1357 @isdestructibleexpr @@ -962,7 +994,7 @@ @istriviallydestructibleexpr - 836 + 835 @istriviallyassignableexpr @@ -970,11 +1002,11 @@ @isnothrowassignableexpr - 4183 + 4177 @istrivialexpr - 932 + 931 @isstandardlayoutexpr @@ -982,7 +1014,7 @@ @istriviallycopyableexpr - 3730 + 3727 @isliteraltypeexpr @@ -1002,11 +1034,11 @@ @isconstructibleexpr - 466 + 465 @isnothrowconstructibleexpr - 14434 + 14412 @hasfinalizerexpr @@ -1042,11 +1074,11 @@ @isfinalexpr - 1693 + 1689 @noexceptexpr - 25737 + 25705 @builtinshufflevector @@ -1054,11 +1086,11 @@ @builtinchooseexpr - 9050 + 9051 @builtinaddressof - 13302 + 13272 @vec_fill @@ -1102,7 +1134,7 @@ @builtinshuffle - 1959 + 1911 @blockassignexpr @@ -1218,71 +1250,71 @@ @stmt_expr - 1483611 + 1483766 @stmt_if - 724735 + 724811 @stmt_while - 30110 + 29372 @stmt_goto - 110511 + 110523 @stmt_label - 53056 + 53061 @stmt_return - 1284647 + 1283543 @stmt_block - 1423603 + 1422380 @stmt_end_test_while - 148632 + 148648 @stmt_for - 61456 + 61463 @stmt_switch_case - 209643 + 209381 @stmt_switch - 20753 + 20755 @stmt_asm - 109804 + 109816 @stmt_decl - 606553 + 592150 @stmt_empty - 193321 + 193309 @stmt_continue - 22525 + 22528 @stmt_break - 102331 + 102247 @stmt_try_block - 46921 + 46863 @stmt_microsoft_try @@ -1302,15 +1334,15 @@ @stmt_range_based_for - 8393 + 8386 @stmt_handler - 65314 + 65232 @stmt_constexpr_if - 52508 + 52426 @stmt_co_return @@ -1318,55 +1350,55 @@ @ppd_if - 666338 + 665765 @ppd_ifdef - 262991 + 262765 @ppd_ifndef - 266255 + 266026 @ppd_elif - 25180 + 25158 @ppd_else - 208900 + 208721 @ppd_endif - 1195584 + 1194557 @ppd_plain_include - 311019 + 310752 @ppd_define - 2433298 + 2429484 @ppd_undef - 258328 + 258106 @ppd_include_next - 1865 + 1863 @ppd_line - 27757 + 27755 @ppd_error - 46 + 44 @ppd_pragma - 312020 + 311531 @ppd_objc_import @@ -1408,11 +1440,11 @@ compilations - 9948 + 9704 id - 9948 + 9704 cwd @@ -1430,7 +1462,7 @@ 1 2 - 9948 + 9704 @@ -1456,7 +1488,7 @@ compilation_args - 651494 + 651562 id @@ -1464,11 +1496,11 @@ num - 707 + 708 arg - 34405 + 34409 @@ -1706,7 +1738,7 @@ 1 2 - 32344 + 32348 2 @@ -1727,7 +1759,7 @@ 1 2 - 33200 + 33204 2 @@ -1742,7 +1774,7 @@ compilation_compiling_files - 11527 + 11528 id @@ -1754,7 +1786,7 @@ file - 10011 + 10012 @@ -1875,12 +1907,12 @@ 2 3 - 717 + 718 3 4 - 358 + 359 4 @@ -1911,12 +1943,12 @@ 2 3 - 717 + 718 3 4 - 358 + 359 4 @@ -1942,7 +1974,7 @@ 1 2 - 9014 + 9015 2 @@ -1968,7 +2000,7 @@ 1 2 - 9174 + 9175 2 @@ -1988,7 +2020,7 @@ compilation_time - 46109 + 46114 id @@ -2004,7 +2036,7 @@ seconds - 14798 + 9972 @@ -2082,55 +2114,55 @@ 12 + + 2 + 3 + 39 + 3 4 - 239 + 797 4 5 - 757 + 159 - 6 + 5 8 - 119 + 159 8 10 - 119 + 159 10 - 11 - 119 - - - 11 - 14 + 12 159 - 14 - 17 - 79 + 12 + 18 + 159 18 - 21 + 22 159 - 21 - 45 + 22 + 55 159 - 64 - 130 - 79 + 83 + 84 + 39 @@ -2151,12 +2183,12 @@ 2 3 - 717 + 718 3 4 - 358 + 359 4 @@ -2198,47 +2230,42 @@ 3 4 - 398 + 1515 4 5 - 1356 + 239 5 6 - 199 + 279 6 7 - 239 + 398 7 8 - 279 + 79 8 9 - 39 + 239 9 - 10 - 319 - - - 11 - 28 + 24 279 - 28 - 96 - 199 + 24 + 91 + 279 @@ -2283,19 +2310,24 @@ 12 + + 3 + 4 + 39 + 4 5 - 79 + 39 - 182 - 183 + 123 + 124 39 - 189 - 190 + 130 + 131 39 @@ -2312,22 +2344,27 @@ 1 2 - 10011 + 5465 2 3 - 3549 + 2273 3 - 5 + 4 1116 - 18 - 47 - 119 + 4 + 6 + 877 + + + 6 + 43 + 239 @@ -2343,22 +2380,32 @@ 1 2 - 9572 + 4627 2 3 - 3470 + 2114 3 4 - 1037 + 1276 4 - 74 - 717 + 5 + 797 + + + 5 + 7 + 917 + + + 7 + 66 + 239 @@ -2374,12 +2421,12 @@ 1 2 - 14518 + 9573 2 - 4 - 279 + 3 + 398 @@ -2389,23 +2436,23 @@ diagnostic_for - 841626 + 5674 diagnostic - 72036 + 5200 compilation - 9556 + 850 file_number - 11 + 19 file_number_diagnostic_number - 6778 + 415 @@ -2419,17 +2466,12 @@ 1 2 - 9602 + 5042 2 - 3 - 59655 - - - 254 - 825 - 2778 + 7 + 158 @@ -2445,7 +2487,7 @@ 1 2 - 72036 + 5200 @@ -2461,7 +2503,7 @@ 1 2 - 72036 + 5200 @@ -2475,29 +2517,29 @@ 12 - 2 - 3 - 6132 + 5 + 6 + 632 - 3 - 4 - 495 + 7 + 8 + 79 - 242 - 243 - 1959 + 9 + 12 + 59 - 258 - 439 - 760 + 13 + 16 + 39 - 441 - 589 - 207 + 21 + 22 + 39 @@ -2513,7 +2555,7 @@ 1 2 - 9556 + 850 @@ -2527,29 +2569,29 @@ 12 - 2 - 3 - 6132 + 5 + 6 + 632 - 3 - 4 - 495 + 7 + 8 + 79 - 242 - 243 - 1959 + 9 + 12 + 59 - 258 - 439 - 760 + 13 + 16 + 39 - 441 - 589 - 207 + 21 + 22 + 39 @@ -2563,9 +2605,9 @@ 12 - 6249 - 6250 - 11 + 263 + 264 + 19 @@ -2579,9 +2621,9 @@ 12 - 829 - 830 - 11 + 43 + 44 + 19 @@ -2595,9 +2637,9 @@ 12 - 588 - 589 - 11 + 21 + 22 + 19 @@ -2611,49 +2653,44 @@ 12 - 1 - 2 - 2755 + 2 + 3 + 118 - 2 + 3 + 4 + 39 + + + 4 5 - 599 + 39 5 6 - 1014 + 39 7 - 14 - 541 - - - 15 - 16 - 57 - - - 17 - 18 - 599 + 8 + 39 - 18 - 23 - 461 + 11 + 12 + 39 - 26 - 40 - 553 + 37 + 38 + 79 - 42 - 830 - 195 + 43 + 44 + 19 @@ -2667,54 +2704,39 @@ 12 - 4 - 9 - 587 - - - 10 - 11 - 1002 - - - 14 - 27 - 541 - - - 30 - 31 - 57 + 2 + 3 + 118 - 34 - 35 - 599 + 3 + 4 + 39 - 36 - 45 - 461 + 4 + 5 + 39 - 52 - 79 - 553 + 5 + 6 + 39 - 84 - 85 - 184 + 7 + 8 + 39 - 254 - 255 - 2755 + 11 + 12 + 39 - 297 - 830 - 34 + 43 + 44 + 98 @@ -2730,7 +2752,7 @@ 1 2 - 6778 + 415 @@ -2740,19 +2762,19 @@ compilation_finished - 9948 + 9704 id - 9948 + 9704 cpu_seconds - 7389 + 7343 elapsed_seconds - 138 + 146 @@ -2766,7 +2788,7 @@ 1 2 - 9948 + 9704 @@ -2782,7 +2804,7 @@ 1 2 - 9948 + 9704 @@ -2798,16 +2820,16 @@ 1 2 - 5948 + 5982 2 3 - 979 + 899 3 - 15 + 18 461 @@ -2824,12 +2846,12 @@ 1 2 - 6778 + 6758 2 3 - 610 + 584 @@ -2845,51 +2867,51 @@ 1 2 - 11 + 33 - 2 - 3 - 34 + 3 + 4 + 22 - 7 - 8 + 6 + 7 11 - 9 - 10 + 8 + 9 11 - 12 - 13 + 14 + 15 11 - 37 - 38 + 35 + 36 11 - 150 - 151 + 144 + 145 11 - 172 - 173 + 174 + 175 11 - 211 - 212 + 225 + 226 11 - 258 - 259 + 248 + 249 11 @@ -2906,51 +2928,51 @@ 1 2 - 11 + 33 - 2 - 3 - 34 + 3 + 4 + 22 - 7 - 8 + 6 + 7 11 - 9 - 10 + 8 + 9 11 - 12 - 13 + 14 + 15 11 - 36 - 37 + 34 + 35 11 - 125 - 126 + 124 + 125 11 - 126 - 127 + 128 + 129 11 - 145 - 146 + 159 + 160 11 - 227 - 228 + 223 + 224 11 @@ -3177,11 +3199,11 @@ sourceLocationPrefix - 466 + 465 prefix - 466 + 465 @@ -4675,31 +4697,31 @@ locations_default - 29769315 + 29768422 id - 29769315 + 29768422 container - 138490 + 138371 startLine - 2092739 + 2090941 startColumn - 36837 + 36805 endLine - 2096936 + 2095134 endColumn - 48028 + 47987 @@ -4713,7 +4735,7 @@ 1 2 - 29769315 + 29768422 @@ -4729,7 +4751,7 @@ 1 2 - 29769315 + 29768422 @@ -4745,7 +4767,7 @@ 1 2 - 29769315 + 29768422 @@ -4761,7 +4783,7 @@ 1 2 - 29769315 + 29768422 @@ -4777,7 +4799,7 @@ 1 2 - 29769315 + 29768422 @@ -4793,67 +4815,67 @@ 1 2 - 15854 + 15840 2 12 - 10724 + 10715 13 20 - 11657 + 11647 21 36 - 11191 + 11181 36 55 - 11191 + 11181 55 77 - 10724 + 10715 77 102 - 10724 + 10715 102 149 - 10724 + 10715 149 227 - 11191 + 11181 228 350 - 10724 + 10715 352 604 - 10724 + 10715 630 1494 - 10724 + 10715 1829 2380 - 2331 + 2329 @@ -4869,67 +4891,67 @@ 1 2 - 15854 + 15840 2 9 - 10724 + 10715 9 16 - 11657 + 11647 16 25 - 11191 + 11181 25 40 - 10724 + 10715 40 57 - 10724 + 10715 58 72 - 10724 + 10715 73 103 - 11191 + 11181 106 141 - 11657 + 11647 148 225 - 10724 + 10715 225 360 - 10724 + 10715 372 1255 - 10724 + 10715 1455 1569 - 1865 + 1863 @@ -4945,67 +4967,67 @@ 1 2 - 15854 + 15840 2 4 - 8393 + 8386 4 5 - 7927 + 7920 5 6 - 7460 + 7454 6 8 - 11191 + 11181 8 13 - 12123 + 12113 13 17 - 11191 + 11181 17 25 - 11191 + 11181 25 31 - 12123 + 12113 31 39 - 11191 + 11181 39 54 - 11191 + 11181 54 67 - 10724 + 10715 67 77 - 7927 + 7920 @@ -5021,67 +5043,67 @@ 1 2 - 15854 + 15840 2 9 - 10724 + 10715 9 16 - 11657 + 11647 16 25 - 11191 + 11181 25 40 - 10724 + 10715 40 57 - 10724 + 10715 58 71 - 10724 + 10715 72 98 - 10724 + 10715 101 140 - 11657 + 11647 140 222 - 10724 + 10715 223 360 - 11191 + 11181 372 1255 - 10724 + 10715 1452 1566 - 1865 + 1863 @@ -5097,62 +5119,62 @@ 1 2 - 15854 + 15840 2 10 - 11191 + 11181 10 14 - 10724 + 10715 14 21 - 11191 + 11181 22 31 - 11191 + 11181 31 39 - 12590 + 12579 39 48 - 12123 + 12113 48 56 - 11657 + 11647 56 64 - 12123 + 12113 64 73 - 12123 + 12113 73 78 - 10724 + 10715 78 90 - 6994 + 6988 @@ -5168,52 +5190,52 @@ 1 2 - 583803 + 580506 2 3 - 314750 + 314479 3 4 - 192580 + 194744 4 6 - 161804 + 162131 6 10 - 183720 + 183097 10 16 - 162271 + 161665 16 25 - 167400 + 168188 25 45 - 157141 + 157006 45 160 - 157608 + 157472 160 298 - 11657 + 11647 @@ -5229,42 +5251,42 @@ 1 2 - 870109 + 869361 2 3 - 273716 + 273015 3 5 - 193046 + 193346 5 8 - 173462 + 173313 8 13 - 187917 + 187756 13 20 - 160872 + 160734 20 51 - 159473 + 159336 51 298 - 74141 + 74077 @@ -5280,47 +5302,47 @@ 1 2 - 614112 + 610789 2 3 - 310087 + 312616 3 4 - 198642 + 198005 4 6 - 182322 + 182631 6 9 - 173462 + 172847 9 13 - 162737 + 163063 13 19 - 173928 + 173779 19 29 - 165069 + 164927 29 52 - 112377 + 112280 @@ -5336,22 +5358,22 @@ 1 2 - 1529919 + 1528604 2 3 - 348323 + 348024 3 5 - 161804 + 161665 5 16 - 52691 + 52646 @@ -5367,52 +5389,47 @@ 1 2 - 588466 + 585165 2 3 - 316149 + 315877 3 4 - 195378 + 197539 4 6 - 167866 + 168188 6 - 9 - 158074 - - - 9 - 14 - 170198 + 10 + 191483 - 14 - 21 - 174394 + 10 + 15 + 165393 - 21 - 32 - 163670 + 15 + 22 + 167722 - 32 - 63 - 157608 + 22 + 34 + 163995 - 64 + 34 66 - 932 + 135575 @@ -5428,72 +5445,72 @@ 1 31 - 2797 + 2795 42 85 - 2797 + 2795 86 128 - 2797 + 2795 129 229 - 2797 + 2795 - 248 + 247 292 - 2797 + 2795 293 360 - 2797 + 2795 373 - 456 - 2797 + 457 + 2795 475 565 - 2797 + 2795 - 565 - 619 - 2797 + 566 + 620 + 2795 - 622 + 623 689 - 2797 + 2795 - 695 - 793 - 2797 + 696 + 807 + 2795 820 1563 - 2797 + 2795 1638 - 5626 - 2797 + 5632 + 2795 15295 15296 - 466 + 465 @@ -5509,67 +5526,67 @@ 1 18 - 2797 + 2795 23 35 - 3264 + 3261 38 43 - 2797 + 2795 44 61 - 2797 + 2795 65 73 - 2797 + 2795 73 84 - 3264 + 3261 84 96 - 2797 + 2795 96 101 - 3264 + 3261 101 105 - 3264 + 3261 107 112 - 2797 + 2795 112 126 - 2797 + 2795 137 170 - 2797 + 2795 195 298 - 1398 + 1397 @@ -5585,72 +5602,72 @@ 1 19 - 2797 + 2795 30 72 - 2797 + 2795 83 122 - 2797 + 2795 122 205 - 2797 + 2795 214 261 - 2797 + 2795 265 322 - 2797 + 2795 322 379 - 2797 + 2795 404 430 - 2797 + 2795 - 452 + 453 474 - 2797 + 2795 478 505 - 2797 + 2795 511 583 - 2797 + 2795 - 584 + 585 836 - 2797 + 2795 1104 2196 - 2797 + 2795 - 2381 - 2382 - 466 + 2387 + 2388 + 465 @@ -5666,72 +5683,72 @@ 1 19 - 2797 + 2795 30 72 - 2797 + 2795 83 122 - 2797 + 2795 122 205 - 2797 + 2795 214 261 - 2797 + 2795 265 322 - 2797 + 2795 322 380 - 2797 + 2795 404 430 - 2797 + 2795 - 452 + 453 474 - 2797 + 2795 477 504 - 2797 + 2795 514 582 - 2797 + 2795 - 584 + 585 835 - 2797 + 2795 1109 2203 - 2797 + 2795 - 2376 - 2377 - 466 + 2382 + 2383 + 465 @@ -5747,67 +5764,67 @@ 1 7 - 2797 + 2795 7 11 - 3264 + 3261 11 16 - 3264 + 3261 16 22 - 2797 + 2795 22 24 - 3264 + 3261 24 28 - 2797 + 2795 29 34 - 3264 + 3261 34 41 - 3264 + 3261 41 46 - 2797 + 2795 - 46 + 47 49 - 1865 + 1863 49 54 - 2797 + 2795 54 74 - 2797 + 2795 75 86 - 1865 + 1863 @@ -5823,52 +5840,52 @@ 1 2 - 594062 + 590756 2 3 - 306823 + 306559 3 4 - 195844 + 198005 4 6 - 159007 + 159336 6 10 - 183254 + 182631 10 16 - 160872 + 160268 16 25 - 169732 + 170517 25 45 - 158074 + 157938 45 160 - 158074 + 157938 160 298 - 11191 + 11181 @@ -5884,47 +5901,47 @@ 1 2 - 885497 + 884736 2 3 - 260193 + 259504 3 4 - 124501 + 124860 4 6 - 140821 + 140700 6 10 - 184653 + 184494 10 15 - 168333 + 168188 15 26 - 163203 + 163063 26 120 - 158074 + 157938 121 298 - 11657 + 11647 @@ -5940,22 +5957,22 @@ 1 2 - 1527588 + 1526275 2 3 - 341329 + 341035 3 5 - 170664 + 170517 5 10 - 57354 + 57305 @@ -5971,47 +5988,47 @@ 1 2 - 625303 + 621971 2 3 - 300295 + 302832 3 4 - 201906 + 201267 4 6 - 183254 + 183563 6 9 - 170198 + 169586 9 13 - 166001 + 166324 13 19 - 174861 + 174710 19 29 - 160872 + 160734 29 52 - 114242 + 114144 @@ -6027,52 +6044,52 @@ 1 2 - 600590 + 597278 2 3 - 306823 + 306559 3 4 - 193979 + 196142 4 6 - 168799 + 169120 6 9 - 155743 + 154677 9 14 - 167866 + 168188 14 21 - 178125 + 178438 21 32 - 163203 + 163063 32 60 - 158074 + 157938 60 65 - 3730 + 3727 @@ -6088,67 +6105,67 @@ 1 2 - 5129 + 5124 2 8 - 3730 + 3727 9 186 - 3730 + 3727 193 295 - 3730 + 3727 297 495 - 3730 + 3727 503 555 - 3730 + 3727 561 634 - 3730 + 3727 640 758 - 4196 + 3727 - 768 - 877 - 3730 + 758 + 869 + 3727 - 877 - 1076 - 3730 + 876 + 1074 + 3727 - 1193 - 1290 - 3730 + 1075 + 1281 + 3727 - 1295 - 1686 - 3730 + 1289 + 1590 + 3727 - 1875 + 1685 2418 - 1398 + 1863 @@ -6164,67 +6181,67 @@ 1 2 - 5595 + 5590 2 5 - 3730 + 3727 5 65 - 3730 + 3727 70 100 - 3730 + 3727 100 111 - 3730 + 3727 112 122 - 3730 + 3727 122 134 - 3730 + 3727 139 152 - 3730 + 3727 152 160 - 3730 + 3727 160 171 - 3730 + 3727 171 175 - 3730 + 3727 176 192 - 3730 + 3727 207 298 - 1398 + 1397 @@ -6240,67 +6257,67 @@ 1 2 - 5595 + 5590 2 8 - 3730 + 3727 9 105 - 3730 + 3727 155 241 - 3730 + 3727 253 336 - 3730 + 3727 - 339 + 340 426 - 3730 + 3727 - 435 + 434 488 - 3730 + 3727 489 572 - 3730 + 3727 573 623 - 3730 + 3727 628 696 - 4196 + 4193 701 - 816 - 3730 + 819 + 3727 - 836 + 837 1095 - 3730 + 3727 - 1163 + 1172 1174 - 932 + 931 @@ -6316,67 +6333,67 @@ 1 2 - 6061 + 6056 2 4 - 3730 + 3727 4 8 - 4196 + 4193 8 15 - 3730 + 3727 15 23 - 3730 + 3727 23 29 - 3730 + 3727 29 35 - 4196 + 4193 35 39 - 3264 + 3261 39 42 - 3730 + 3261 42 44 - 2797 + 3261 44 46 - 3730 + 3727 46 49 - 3730 + 3727 49 53 - 1398 + 1397 @@ -6392,67 +6409,67 @@ 1 2 - 5595 + 5590 2 8 - 3730 + 3727 9 156 - 3730 + 3727 159 240 - 3730 + 3727 251 335 - 3730 + 3727 - 341 + 342 430 - 3730 + 3727 - 433 + 432 490 - 3730 + 3727 490 573 - 3730 + 3727 - 573 + 574 622 - 3730 + 3727 628 698 - 3730 + 3727 700 - 810 - 3730 + 812 + 3727 - 811 + 812 987 - 3730 + 3727 1096 1180 - 1398 + 1397 @@ -6462,11 +6479,11 @@ locations_stmt - 3813678 + 3814079 id - 3813678 + 3814079 container @@ -6474,7 +6491,7 @@ startLine - 199846 + 199867 startColumn @@ -6482,7 +6499,7 @@ endLine - 194112 + 194132 endColumn @@ -6500,7 +6517,7 @@ 1 2 - 3813678 + 3814079 @@ -6516,7 +6533,7 @@ 1 2 - 3813678 + 3814079 @@ -6532,7 +6549,7 @@ 1 2 - 3813678 + 3814079 @@ -6548,7 +6565,7 @@ 1 2 - 3813678 + 3814079 @@ -6564,7 +6581,7 @@ 1 2 - 3813678 + 3814079 @@ -6777,7 +6794,7 @@ 19 21 - 184 + 185 21 @@ -6965,67 +6982,67 @@ 1 2 - 21540 + 21542 2 3 - 15292 + 15293 3 4 - 12476 + 12477 4 6 - 14449 + 14451 6 8 - 12517 + 12518 8 11 - 16710 + 16712 11 16 - 17265 + 17267 16 22 - 15353 + 15355 22 29 - 16977 + 16979 29 37 - 17368 + 17369 37 45 - 15086 + 15088 45 56 - 16176 + 16177 56 73 - 8632 + 8633 @@ -7041,67 +7058,67 @@ 1 2 - 22301 + 22303 2 3 - 15723 + 15725 3 4 - 12681 + 12683 4 6 - 14387 + 14389 6 8 - 12722 + 12724 8 11 - 17573 + 17575 11 16 - 16361 + 16362 16 22 - 16217 + 16218 22 29 - 16957 + 16958 29 36 - 15991 + 15992 36 44 - 16319 + 16321 44 54 - 15641 + 15643 54 69 - 6967 + 6968 @@ -7117,57 +7134,57 @@ 1 2 - 26823 + 26825 2 3 - 20841 + 20843 3 4 - 16813 + 16814 4 5 - 16073 + 16074 5 6 - 17429 + 17431 6 7 - 19855 + 19857 7 8 - 22753 + 22755 8 9 - 20389 + 20391 9 10 - 15004 + 15006 10 12 - 16648 + 16650 12 18 - 7214 + 7215 @@ -7183,67 +7200,67 @@ 1 2 - 34592 + 34596 2 3 - 25795 + 25798 3 4 - 18436 + 18438 4 5 - 16217 + 16218 5 6 - 12784 + 12785 6 7 - 12024 + 12025 7 8 - 10174 + 10175 8 9 - 10975 + 10977 9 10 - 10729 + 10730 10 11 - 10523 + 10524 11 12 - 10174 + 10175 12 14 - 15785 + 15787 14 24 - 11633 + 11634 @@ -7259,62 +7276,62 @@ 1 2 - 22136 + 22139 2 3 - 16196 + 16198 3 4 - 12949 + 12950 4 6 - 16073 + 16074 6 8 - 14696 + 14697 8 10 - 13195 + 13197 10 14 - 18293 + 18295 14 18 - 17018 + 17020 18 22 - 17573 + 17575 22 26 - 18498 + 18500 26 30 - 16381 + 16383 30 36 - 15230 + 15232 36 @@ -7705,67 +7722,67 @@ 1 2 - 17409 + 17411 2 3 - 14408 + 14409 3 4 - 11489 + 11490 4 6 - 15600 + 15602 6 8 - 12496 + 12498 8 11 - 15456 + 15458 11 15 - 14634 + 14636 15 21 - 16093 + 16095 21 27 - 15415 + 15417 27 34 - 14942 + 14944 34 42 - 15744 + 15746 42 52 - 16011 + 16013 52 130 - 14408 + 14409 @@ -7781,62 +7798,62 @@ 1 2 - 24952 + 24955 2 3 - 16134 + 16136 3 4 - 12764 + 12765 4 6 - 15662 + 15663 6 8 - 15004 + 15006 8 11 - 15888 + 15889 11 16 - 17450 + 17452 16 20 - 14593 + 14594 20 26 - 17162 + 17164 26 32 - 16258 + 16259 32 39 - 14860 + 14862 39 59 - 13380 + 13382 @@ -7852,62 +7869,62 @@ 1 2 - 32475 + 32478 2 3 - 23760 + 23762 3 4 - 18457 + 18459 4 5 - 15148 + 15149 5 6 - 13873 + 13875 6 7 - 11674 + 11675 7 8 - 11736 + 11737 8 9 - 10914 + 10915 9 10 - 10174 + 10175 10 12 - 17964 + 17966 12 15 - 17717 + 17719 15 100 - 10215 + 10216 @@ -7923,57 +7940,57 @@ 1 2 - 24952 + 24955 2 3 - 20389 + 20391 3 4 - 16833 + 16835 4 5 - 17799 + 17801 5 6 - 18580 + 18582 6 7 - 20430 + 20432 7 8 - 22424 + 22426 8 9 - 18745 + 18747 9 10 - 12928 + 12929 10 12 - 15025 + 15026 12 18 - 6001 + 6002 @@ -7989,62 +8006,62 @@ 1 2 - 24705 + 24708 2 3 - 16628 + 16629 3 4 - 12537 + 12539 4 6 - 17820 + 17822 6 8 - 15333 + 15334 8 10 - 12825 + 12827 10 13 - 14408 + 14409 13 16 - 15025 + 15026 16 19 - 14655 + 14656 19 22 - 14038 + 14039 22 26 - 17121 + 17123 26 31 - 15333 + 15334 31 @@ -8065,12 +8082,12 @@ 1 2 - 184 + 185 2 4 - 184 + 185 4 @@ -8080,47 +8097,47 @@ 7 16 - 184 + 185 23 133 - 184 + 185 151 393 - 184 + 185 394 681 - 184 + 185 708 1137 - 184 + 185 1138 1674 - 184 + 185 1885 2795 - 184 + 185 2939 4095 - 184 + 185 4142 4771 - 184 + 185 5032 @@ -8146,17 +8163,17 @@ 2 3 - 184 + 185 3 6 - 184 + 185 6 21 - 184 + 185 31 @@ -8166,17 +8183,17 @@ 74 96 - 184 + 185 97 108 - 184 + 185 108 114 - 184 + 185 115 @@ -8196,7 +8213,7 @@ 123 125 - 184 + 185 125 @@ -8217,12 +8234,12 @@ 1 2 - 184 + 185 2 4 - 184 + 185 4 @@ -8232,47 +8249,47 @@ 7 15 - 184 + 185 22 130 - 184 + 185 145 378 - 184 + 185 385 652 - 184 + 185 666 964 - 184 + 185 999 1431 - 184 + 185 1587 2171 - 184 + 185 2264 2917 - 184 + 185 2947 3215 - 184 + 185 3417 @@ -8308,12 +8325,12 @@ 5 8 - 184 + 185 8 12 - 184 + 185 12 @@ -8323,7 +8340,7 @@ 14 16 - 184 + 185 16 @@ -8338,17 +8355,17 @@ 21 23 - 184 + 185 23 25 - 184 + 185 25 28 - 184 + 185 28 @@ -8389,47 +8406,47 @@ 7 27 - 184 + 185 40 132 - 184 + 185 142 329 - 184 + 185 366 583 - 184 + 185 613 968 - 184 + 185 1056 1409 - 184 + 185 1420 2035 - 184 + 185 2066 2627 - 184 + 185 2651 3073 - 184 + 185 3086 @@ -8444,11 +8461,11 @@ locations_expr - 13166528 + 13167909 id - 13166528 + 13167909 container @@ -8456,7 +8473,7 @@ startLine - 191913 + 191933 startColumn @@ -8464,7 +8481,7 @@ endLine - 191892 + 191912 endColumn @@ -8482,7 +8499,7 @@ 1 2 - 13166528 + 13167909 @@ -8498,7 +8515,7 @@ 1 2 - 13166528 + 13167909 @@ -8514,7 +8531,7 @@ 1 2 - 13166528 + 13167909 @@ -8530,7 +8547,7 @@ 1 2 - 13166528 + 13167909 @@ -8546,7 +8563,7 @@ 1 2 - 13166528 + 13167909 @@ -8572,12 +8589,12 @@ 6 11 - 369 + 370 12 26 - 369 + 370 27 @@ -8648,12 +8665,12 @@ 2 4 - 369 + 370 4 10 - 369 + 370 10 @@ -8749,7 +8766,7 @@ 59 66 - 369 + 370 66 @@ -8769,7 +8786,7 @@ 70 71 - 184 + 185 71 @@ -8784,7 +8801,7 @@ 74 92 - 369 + 370 94 @@ -8810,12 +8827,12 @@ 2 4 - 369 + 370 4 10 - 369 + 370 10 @@ -8891,7 +8908,7 @@ 4 7 - 369 + 370 7 @@ -8962,67 +8979,67 @@ 1 5 - 16114 + 16116 5 9 - 16484 + 16486 9 15 - 16032 + 16033 15 23 - 15107 + 15108 23 32 - 15148 + 15149 32 44 - 15004 + 15006 44 60 - 14757 + 14759 60 80 - 14819 + 14821 80 103 - 14634 + 14636 103 130 - 14778 + 14779 130 159 - 14531 + 14533 159 194 - 14613 + 14615 194 302 - 9886 + 9887 @@ -9038,62 +9055,62 @@ 1 2 - 23513 + 23516 2 3 - 15621 + 15622 3 4 - 11345 + 11347 4 6 - 16361 + 16362 6 8 - 13627 + 13628 8 11 - 16443 + 16444 11 16 - 17347 + 17349 16 21 - 16443 + 16444 21 28 - 16648 + 16650 28 35 - 15806 + 15807 35 43 - 15847 + 15848 43 60 - 12907 + 12909 @@ -9109,57 +9126,57 @@ 1 4 - 15970 + 15972 4 7 - 17532 + 17534 7 11 - 16689 + 16691 11 16 - 17409 + 17411 16 21 - 17512 + 17513 21 26 - 15066 + 15067 26 31 - 16176 + 16177 31 36 - 17717 + 17719 36 40 - 15703 + 15704 40 44 - 16299 + 16301 44 49 - 16895 + 16897 49 @@ -9180,22 +9197,22 @@ 1 2 - 101948 + 101958 2 3 - 44622 + 44627 3 4 - 27645 + 27648 4 6 - 14572 + 14574 6 @@ -9216,62 +9233,62 @@ 1 4 - 16957 + 16958 4 7 - 16648 + 16650 7 11 - 16422 + 16424 11 16 - 16217 + 16218 16 21 - 16443 + 16444 21 27 - 16772 + 16773 27 33 - 16443 + 16444 33 38 - 14470 + 14471 38 43 - 15538 + 15540 43 47 - 14696 + 14697 47 52 - 16772 + 16773 52 65 - 14449 + 14451 65 @@ -9297,7 +9314,7 @@ 2 4 - 184 + 185 4 @@ -9312,42 +9329,42 @@ 43 253 - 184 + 185 280 849 - 184 + 185 956 1895 - 184 + 185 2100 4183 - 184 + 185 4242 7021 - 184 + 185 7174 11394 - 184 + 185 12337 15120 - 184 + 185 15374 30165 - 184 + 185 30211 @@ -9383,27 +9400,27 @@ 4 6 - 184 + 185 7 32 - 184 + 185 43 99 - 184 + 185 104 123 - 184 + 185 124 133 - 184 + 185 133 @@ -9454,57 +9471,57 @@ 2 4 - 184 + 185 4 7 - 184 + 185 7 19 - 184 + 185 20 152 - 184 + 185 199 589 - 184 + 185 633 1290 - 184 + 185 1370 2344 - 184 + 185 2574 3505 - 184 + 185 3527 4711 - 184 + 185 4734 5298 - 184 + 185 5332 5999 - 184 + 185 6158 @@ -9530,57 +9547,57 @@ 2 4 - 184 + 185 4 7 - 184 + 185 7 19 - 184 + 185 20 152 - 184 + 185 199 589 - 184 + 185 651 1292 - 184 + 185 1370 2348 - 184 + 185 2575 3511 - 184 + 185 3533 4712 - 184 + 185 4737 5324 - 184 + 185 5346 6023 - 184 + 185 6202 @@ -9611,37 +9628,37 @@ 3 5 - 184 + 185 5 9 - 184 + 185 9 13 - 184 + 185 13 20 - 184 + 185 20 30 - 184 + 185 30 42 - 184 + 185 44 59 - 184 + 185 59 @@ -9651,7 +9668,7 @@ 69 74 - 184 + 185 74 @@ -9677,67 +9694,67 @@ 1 5 - 16134 + 16136 5 9 - 16484 + 16486 9 15 - 15806 + 15807 15 23 - 15086 + 15088 23 32 - 15641 + 15643 32 44 - 14737 + 14738 44 60 - 14490 + 14492 60 80 - 15251 + 15252 80 103 - 14531 + 14533 103 130 - 14757 + 14759 130 160 - 14881 + 14882 160 195 - 14552 + 14553 195 299 - 9537 + 9538 @@ -9753,67 +9770,67 @@ 1 2 - 23513 + 23516 2 3 - 15559 + 15561 3 4 - 11345 + 11347 4 6 - 16052 + 16054 6 8 - 13483 + 13484 8 11 - 16504 + 16506 11 15 - 14428 + 14430 15 20 - 16772 + 16773 20 26 - 14983 + 14985 26 33 - 16052 + 16054 33 40 - 14634 + 14636 40 49 - 14593 + 14594 49 60 - 3966 + 3967 @@ -9829,22 +9846,22 @@ 1 2 - 95473 + 95483 2 3 - 50007 + 50013 3 4 - 29371 + 29374 4 6 - 15600 + 15602 6 @@ -9865,62 +9882,62 @@ 1 4 - 15826 + 15828 4 7 - 17450 + 17452 7 11 - 16484 + 16486 11 16 - 17347 + 17349 16 21 - 17306 + 17308 21 26 - 15148 + 15149 26 31 - 16299 + 16301 31 36 - 17676 + 17678 36 40 - 15292 + 15293 40 44 - 16443 + 16444 44 49 - 16977 + 16979 49 63 - 9639 + 9640 @@ -9936,62 +9953,62 @@ 1 4 - 17183 + 17184 4 7 - 16792 + 16794 7 11 - 16422 + 16424 11 16 - 16874 + 16876 16 21 - 16011 + 16013 21 26 - 14511 + 14512 26 32 - 16155 + 16157 32 38 - 17491 + 17493 38 43 - 16134 + 16136 43 47 - 14470 + 14471 47 52 - 16566 + 16568 52 69 - 13277 + 13279 @@ -10143,7 +10160,7 @@ 151 163 - 184 + 185 @@ -10376,23 +10393,23 @@ numlines - 1382103 + 1380915 element_id - 1375109 + 1373927 num_lines - 101652 + 101565 num_code - 84866 + 84793 num_comment - 59685 + 59634 @@ -10406,12 +10423,12 @@ 1 2 - 1368114 + 1366938 2 3 - 6994 + 6988 @@ -10427,12 +10444,12 @@ 1 2 - 1369047 + 1367870 2 3 - 6061 + 6056 @@ -10448,7 +10465,7 @@ 1 2 - 1375109 + 1373927 @@ -10464,27 +10481,27 @@ 1 2 - 68079 + 68020 2 3 - 12123 + 12113 3 4 - 7460 + 7454 4 21 - 7927 + 7920 29 921 - 6061 + 6056 @@ -10500,27 +10517,27 @@ 1 2 - 70410 + 70350 2 3 - 12123 + 12113 3 4 - 8393 + 8386 4 6 - 9325 + 9317 6 7 - 1398 + 1397 @@ -10536,22 +10553,22 @@ 1 2 - 69478 + 69418 2 3 - 14921 + 14908 3 4 - 10724 + 10715 4 7 - 6528 + 6522 @@ -10567,27 +10584,27 @@ 1 2 - 52691 + 52646 2 3 - 14455 + 14442 3 5 - 6528 + 6522 5 42 - 6528 + 6522 44 922 - 4662 + 4658 @@ -10603,27 +10620,27 @@ 1 2 - 52691 + 52646 2 3 - 16786 + 16772 3 5 - 6061 + 6056 5 8 - 6528 + 6522 8 12 - 2797 + 2795 @@ -10639,27 +10656,27 @@ 1 2 - 53157 + 53112 2 3 - 15854 + 15840 3 5 - 7460 + 7454 5 7 - 5129 + 5124 7 10 - 3264 + 3261 @@ -10675,32 +10692,32 @@ 1 2 - 34505 + 34476 2 3 - 9325 + 9317 3 4 - 4196 + 4193 4 6 - 4662 + 4658 6 11 - 5129 + 5124 17 2596 - 1865 + 1863 @@ -10716,32 +10733,32 @@ 1 2 - 34505 + 34476 2 3 - 9325 + 9317 3 4 - 4196 + 4193 4 6 - 4662 + 4658 6 8 - 4662 + 4658 10 38 - 2331 + 2329 @@ -10757,32 +10774,32 @@ 1 2 - 34505 + 34476 2 3 - 9325 + 9317 3 4 - 4196 + 4193 4 6 - 4662 + 4658 6 10 - 4662 + 4658 10 37 - 2331 + 2329 @@ -10792,31 +10809,31 @@ diagnostics - 72036 + 5200 id - 72036 + 5200 severity - 23 + 19 error_tag - 69 + 39 error_message - 115 + 415 full_error_message - 62491 + 4369 location - 92 + 177 @@ -10830,7 +10847,7 @@ 1 2 - 72036 + 5200 @@ -10846,7 +10863,7 @@ 1 2 - 72036 + 5200 @@ -10862,7 +10879,7 @@ 1 2 - 72036 + 5200 @@ -10878,7 +10895,7 @@ 1 2 - 72036 + 5200 @@ -10894,7 +10911,7 @@ 1 2 - 72036 + 5200 @@ -10908,14 +10925,9 @@ 12 - 4 - 5 - 11 - - - 6245 - 6246 - 11 + 263 + 264 + 19 @@ -10929,14 +10941,9 @@ 12 - 1 - 2 - 11 - - - 5 - 6 - 11 + 2 + 3 + 19 @@ -10950,14 +10957,9 @@ 12 - 3 - 4 - 11 - - - 7 - 8 - 11 + 21 + 22 + 19 @@ -10971,14 +10973,9 @@ 12 - 4 - 5 - 11 - - - 5417 - 5418 - 11 + 221 + 222 + 19 @@ -10992,9 +10989,9 @@ 12 - 4 - 5 - 23 + 9 + 10 + 19 @@ -11008,34 +11005,14 @@ 12 - 1 - 2 - 11 - - - 2 - 3 - 11 - - - 4 - 5 - 11 - - - 417 - 418 - 11 - - - 829 - 830 - 11 + 43 + 44 + 19 - 4996 - 4997 - 11 + 220 + 221 + 19 @@ -11051,7 +11028,7 @@ 1 2 - 69 + 39 @@ -11067,12 +11044,12 @@ 1 2 - 46 + 19 - 3 - 4 - 23 + 20 + 21 + 19 @@ -11088,27 +11065,12 @@ 1 2 - 23 - - - 2 - 3 - 11 - - - 4 - 5 - 11 - - - 417 - 418 - 11 + 19 - 4996 - 4997 - 11 + 220 + 221 + 19 @@ -11124,17 +11086,12 @@ 1 2 - 46 - - - 2 - 3 - 11 + 19 - 4 - 5 - 11 + 8 + 9 + 19 @@ -11150,37 +11107,27 @@ 1 2 - 34 + 118 2 3 - 23 - - - 10 - 11 - 11 - - - 75 - 76 - 11 + 158 - 332 - 333 - 11 + 3 + 4 + 79 - 829 - 830 - 11 + 43 + 44 + 19 - 4996 - 4997 - 11 + 93 + 94 + 39 @@ -11196,7 +11143,7 @@ 1 2 - 115 + 415 @@ -11212,7 +11159,7 @@ 1 2 - 115 + 415 @@ -11228,32 +11175,22 @@ 1 2 - 46 + 138 2 3 - 23 - - - 10 - 11 - 11 - - - 75 - 76 - 11 + 158 - 332 - 333 - 11 + 3 + 4 + 79 - 4996 - 4997 - 11 + 93 + 94 + 39 @@ -11269,12 +11206,22 @@ 1 2 - 92 + 177 2 3 - 23 + 118 + + + 3 + 4 + 79 + + + 4 + 5 + 39 @@ -11290,12 +11237,12 @@ 1 2 - 62480 + 4350 - 829 - 830 - 11 + 43 + 44 + 19 @@ -11311,7 +11258,7 @@ 1 2 - 62491 + 4369 @@ -11327,7 +11274,7 @@ 1 2 - 62491 + 4369 @@ -11343,7 +11290,7 @@ 1 2 - 62491 + 4369 @@ -11359,7 +11306,7 @@ 1 2 - 62491 + 4369 @@ -11373,14 +11320,24 @@ 12 - 1 - 2 - 80 + 6 + 7 + 39 - 6242 - 6243 - 11 + 22 + 23 + 39 + + + 41 + 42 + 79 + + + 43 + 44 + 19 @@ -11396,7 +11353,7 @@ 1 2 - 92 + 177 @@ -11412,12 +11369,7 @@ 1 2 - 80 - - - 3 - 4 - 11 + 177 @@ -11433,12 +11385,22 @@ 1 2 - 80 + 19 + + + 3 + 4 + 39 5 6 - 11 + 39 + + + 6 + 7 + 79 @@ -11454,12 +11416,22 @@ 1 2 - 80 + 19 - 5414 - 5415 - 11 + 6 + 7 + 39 + + + 22 + 23 + 39 + + + 41 + 42 + 79 @@ -11469,15 +11441,15 @@ files - 123102 + 122996 id - 123102 + 122996 name - 123102 + 122996 @@ -11491,7 +11463,7 @@ 1 2 - 123102 + 122996 @@ -11507,7 +11479,7 @@ 1 2 - 123102 + 122996 @@ -11517,15 +11489,15 @@ folders - 15387 + 15374 id - 15387 + 15374 name - 15387 + 15374 @@ -11539,7 +11511,7 @@ 1 2 - 15387 + 15374 @@ -11555,7 +11527,7 @@ 1 2 - 15387 + 15374 @@ -11565,15 +11537,15 @@ containerparent - 137557 + 137439 parent - 15387 + 15374 child - 137557 + 137439 @@ -11587,32 +11559,32 @@ 1 2 - 6528 + 6522 2 3 - 3264 + 3261 3 5 - 1398 + 1397 5 12 - 1398 + 1397 23 28 - 1398 + 1397 40 67 - 1398 + 1397 @@ -11628,7 +11600,7 @@ 1 2 - 137557 + 137439 @@ -11638,23 +11610,23 @@ fileannotations - 5238006 + 5109644 id - 5003 + 4880 kind - 23 + 22 name - 55932 + 54561 value - 47021 + 45869 @@ -11668,12 +11640,12 @@ 1 2 - 172 + 168 2 3 - 4830 + 4711 @@ -11689,57 +11661,57 @@ 1 102 - 391 + 382 102 225 - 380 + 371 227 299 - 380 + 371 301 452 - 403 + 393 452 555 - 380 + 371 559 626 - 380 + 371 626 716 - 380 + 371 729 904 - 380 + 371 904 934 - 80 + 78 936 937 - 1452 + 1416 1083 2036 - 380 + 371 2293 @@ -11760,57 +11732,57 @@ 1 114 - 391 + 382 114 275 - 380 + 371 275 363 - 380 + 371 393 638 - 380 + 371 643 744 - 380 + 371 751 955 - 380 + 371 955 1087 - 380 + 371 1088 1501 - 253 + 247 1501 1502 - 1452 + 1416 1504 1874 - 380 + 371 1972 4080 - 242 + 236 @@ -11889,62 +11861,62 @@ 1 2 - 9049 + 8827 2 3 - 6351 + 6196 3 5 - 4265 + 4160 5 9 - 4357 + 4250 9 14 - 4069 + 3969 14 18 - 4265 + 4160 18 20 - 4818 + 4700 20 34 - 4311 + 4205 34 128 - 4599 + 4486 128 229 - 4207 + 4104 229 387 - 4334 + 4228 387 434 - 1302 + 1270 @@ -11960,7 +11932,7 @@ 1 2 - 55932 + 54561 @@ -11976,62 +11948,62 @@ 1 2 - 9060 + 8838 2 3 - 8230 + 8029 3 4 - 2616 + 2552 4 6 - 4611 + 4498 6 9 - 4219 + 4115 9 14 - 4299 + 4194 14 17 - 4219 + 4115 17 22 - 4691 + 4576 22 41 - 4299 + 4194 41 82 - 4253 + 4149 82 157 - 4196 + 4093 158 1895 - 1233 + 1203 @@ -12047,67 +12019,67 @@ 1 2 - 7308 + 7129 2 5 - 2282 + 2226 5 8 - 3400 + 3317 8 15 - 3608 + 3519 15 17 - 2593 + 2530 17 19 - 4230 + 4126 19 34 - 3400 + 3317 34 189 - 3700 + 3609 189 201 - 3688 + 3598 201 266 - 3631 + 3542 266 321 - 3758 + 3665 322 399 - 4034 + 3935 399 435 - 1383 + 1349 @@ -12123,7 +12095,7 @@ 1 2 - 47010 + 45857 2 @@ -12144,67 +12116,67 @@ 1 2 - 7331 + 7151 2 5 - 2639 + 2575 5 8 - 3585 + 3497 8 15 - 3631 + 3542 15 17 - 2893 + 2822 17 19 - 3665 + 3575 19 29 - 3585 + 3497 29 39 - 3746 + 3654 39 48 - 3688 + 3598 48 74 - 3642 + 3553 74 102 - 3527 + 3441 102 119 - 3677 + 3587 119 146 - 1406 + 1371 @@ -12214,15 +12186,15 @@ inmacroexpansion - 109609474 + 109620989 id - 17999527 + 18001413 inv - 2696000 + 2696281 @@ -12236,37 +12208,37 @@ 1 3 - 1579546 + 1579705 3 5 - 1076132 + 1076245 5 6 - 1183051 + 1183176 6 7 - 4812473 + 4812979 7 8 - 6376088 + 6376758 8 9 - 2601226 + 2601499 9 21 - 371008 + 371047 @@ -12282,32 +12254,32 @@ 1 2 - 377842 + 377880 2 3 - 543264 + 543313 3 4 - 350972 + 351008 4 7 - 200350 + 200369 7 8 - 206832 + 206853 8 9 - 241514 + 241540 9 @@ -12317,22 +12289,22 @@ 10 11 - 324983 + 325017 11 337 - 224502 + 224533 339 423 - 206034 + 206056 423 7616 - 17497 + 17499 @@ -12342,15 +12314,15 @@ affectedbymacroexpansion - 35633915 + 35637655 id - 5148773 + 5149311 inv - 2780470 + 2780761 @@ -12364,37 +12336,37 @@ 1 2 - 2811579 + 2811876 2 3 - 559267 + 559321 3 4 - 264497 + 264524 4 5 - 564919 + 564979 5 12 - 391297 + 391338 12 50 - 406771 + 406814 50 9900 - 150439 + 150455 @@ -12410,67 +12382,67 @@ 1 4 - 228764 + 228787 4 7 - 231430 + 231454 7 9 - 220137 + 220160 9 12 - 250699 + 250726 12 13 - 333461 + 333496 13 14 - 165332 + 165349 14 15 - 298382 + 298413 15 16 - 121654 + 121667 16 17 - 276181 + 276210 17 18 - 146713 + 146728 18 20 - 251745 + 251771 20 25 - 208656 + 208678 25 109 - 47310 + 47315 @@ -12480,23 +12452,23 @@ macroinvocations - 34192813 + 33362900 id - 34192813 + 33362900 macro_id - 81166 + 79177 location - 776483 + 757454 kind - 23 + 22 @@ -12510,7 +12482,7 @@ 1 2 - 34192813 + 33362900 @@ -12526,7 +12498,7 @@ 1 2 - 34192813 + 33362900 @@ -12542,7 +12514,7 @@ 1 2 - 34192813 + 33362900 @@ -12558,57 +12530,57 @@ 1 2 - 16599 + 16193 2 3 - 16922 + 16507 3 4 - 3181 + 3103 4 5 - 5383 + 5251 5 8 - 5809 + 5667 8 13 - 6236 + 6083 13 26 - 6328 + 6162 26 61 - 6190 + 6038 61 200 - 6098 + 5959 200 1697 - 6121 + 5971 1716 168807 - 2294 + 2237 @@ -12624,37 +12596,37 @@ 1 2 - 43367 + 42304 2 3 - 10617 + 10356 3 4 - 5268 + 5139 4 6 - 6985 + 6814 6 13 - 6616 + 6454 13 66 - 6132 + 5982 66 3614 - 2178 + 2125 @@ -12670,12 +12642,12 @@ 1 2 - 75310 + 73464 2 3 - 5856 + 5712 @@ -12691,37 +12663,42 @@ 1 2 - 287189 + 280140 2 3 - 173515 + 168970 3 4 - 72935 + 70484 4 5 - 60981 + 60060 5 - 9 - 71656 + 8 + 53729 - 9 - 21 - 60186 + 8 + 17 + 62602 - 21 + 17 + 525 + 56822 + + + 534 244764 - 50018 + 4644 @@ -12737,12 +12714,12 @@ 1 2 - 729335 + 711462 2 350 - 47148 + 45992 @@ -12758,7 +12735,7 @@ 1 2 - 776483 + 757454 @@ -12777,8 +12754,8 @@ 11 - 2945478 - 2945479 + 2946191 + 2946192 11 @@ -12831,15 +12808,15 @@ macroparent - 30581550 + 29835446 id - 30581550 + 29835446 parent_id - 23776789 + 23197420 @@ -12853,7 +12830,7 @@ 1 2 - 30581550 + 29835446 @@ -12869,17 +12846,17 @@ 1 2 - 18370535 + 17923630 2 3 - 4553929 + 4442353 3 88 - 852324 + 831437 @@ -12889,15 +12866,15 @@ macrolocationbind - 4036895 + 4037654 id - 2826216 + 2826847 location - 2017786 + 2017998 @@ -12911,22 +12888,22 @@ 1 2 - 2225964 + 2226533 2 3 - 340571 + 340607 3 7 - 230151 + 230175 7 57 - 29529 + 29532 @@ -12942,22 +12919,22 @@ 1 2 - 1608407 + 1608576 2 3 - 177393 + 177412 3 8 - 156621 + 156631 8 723 - 75364 + 75378 @@ -12967,19 +12944,19 @@ macro_argument_unexpanded - 86329774 + 84222788 invocation - 26761716 + 26113877 argument_index - 760 + 742 text - 325046 + 317081 @@ -12993,22 +12970,22 @@ 1 2 - 7582881 + 7404499 2 3 - 10899357 + 10632707 3 4 - 6268860 + 6115325 4 67 - 2010617 + 1961344 @@ -13024,22 +13001,22 @@ 1 2 - 7654526 + 7474388 2 3 - 11049010 + 10778692 3 4 - 6099011 + 5949638 4 67 - 1959168 + 1911157 @@ -13055,17 +13032,17 @@ 41230 41231 - 668 + 652 41432 174417 - 57 + 56 - 718224 - 2321513 - 34 + 718232 + 2322223 + 33 @@ -13081,17 +13058,17 @@ 2 3 - 668 + 652 13 995 - 57 + 56 6559 19579 - 34 + 33 @@ -13107,57 +13084,57 @@ 1 2 - 35816 + 34938 2 3 - 62756 + 61027 3 4 - 19412 + 17677 4 5 - 44773 + 44890 5 7 - 24427 + 23907 7 12 - 18790 + 18419 12 16 - 22006 + 21523 16 23 - 25614 + 24874 23 42 - 24703 + 24222 42 129 - 24588 + 23986 129 - 522415 - 22156 + 522417 + 21613 @@ -13173,17 +13150,17 @@ 1 2 - 235073 + 229312 2 3 - 79472 + 77524 3 9 - 10501 + 10244 @@ -13193,19 +13170,19 @@ macro_argument_expanded - 86329774 + 84222788 invocation - 26761716 + 26113877 argument_index - 760 + 742 text - 196985 + 192158 @@ -13219,22 +13196,22 @@ 1 2 - 7582881 + 7404499 2 3 - 10899357 + 10632707 3 4 - 6268860 + 6115325 4 67 - 2010617 + 1961344 @@ -13250,22 +13227,22 @@ 1 2 - 10908372 + 10648540 2 3 - 9395798 + 9165949 3 4 - 5318101 + 5187865 4 9 - 1139444 + 1111521 @@ -13281,17 +13258,17 @@ 41230 41231 - 668 + 652 41432 174417 - 57 + 56 - 718224 - 2321513 - 34 + 718232 + 2322223 + 33 @@ -13307,17 +13284,17 @@ 1 2 - 657 + 640 2 76 - 57 + 56 870 13879 - 46 + 44 @@ -13333,62 +13310,62 @@ 1 2 - 21234 + 20713 2 3 - 38295 + 37165 3 4 - 10340 + 9029 4 5 - 15712 + 16316 5 6 - 3539 + 2473 6 7 - 22352 + 22771 7 9 - 14847 + 14708 9 14 - 12622 + 11987 14 - 20 - 14986 + 19 + 14517 - 20 + 19 49 - 15666 + 15754 49 169 - 14790 + 14427 169 - 1060455 - 12599 + 1060462 + 12291 @@ -13404,17 +13381,17 @@ 1 2 - 99691 + 97248 2 3 - 82584 + 80560 3 66 - 14709 + 14348 @@ -13424,19 +13401,19 @@ functions - 4638253 + 4640789 id - 4638253 + 4640789 name - 1916013 + 1915298 kind - 3264 + 3261 @@ -13450,7 +13427,7 @@ 1 2 - 4638253 + 4640789 @@ -13466,7 +13443,7 @@ 1 2 - 4638253 + 4640789 @@ -13482,22 +13459,22 @@ 1 2 - 1503340 + 1502980 2 3 - 152479 + 151882 3 5 - 150147 + 150018 5 - 1666 - 110046 + 1676 + 110417 @@ -13513,12 +13490,12 @@ 1 2 - 1915546 + 1914832 2 3 - 466 + 465 @@ -13534,37 +13511,37 @@ 6 7 - 466 + 465 64 65 - 466 + 465 173 174 - 466 + 465 195 196 - 466 + 465 - 1350 - 1351 - 466 + 1354 + 1355 + 465 - 2372 - 2373 - 466 + 2382 + 2383 + 465 5787 5788 - 466 + 465 @@ -13580,37 +13557,37 @@ 3 4 - 466 + 465 33 34 - 466 + 465 39 40 - 466 + 465 94 95 - 466 + 465 195 196 - 466 + 465 - 243 - 244 - 466 + 245 + 246 + 465 3503 3504 - 466 + 465 @@ -13620,15 +13597,15 @@ function_entry_point - 1156415 + 1155421 id - 1146623 + 1145638 entry_point - 1156415 + 1155421 @@ -13642,12 +13619,12 @@ 1 2 - 1136831 + 1135854 2 3 - 9792 + 9783 @@ -13663,7 +13640,7 @@ 1 2 - 1156415 + 1155421 @@ -13673,15 +13650,15 @@ function_return_type - 4643382 + 4645914 id - 4638253 + 4640789 return_type - 984818 + 986301 @@ -13695,12 +13672,12 @@ 1 2 - 4633124 + 4635664 2 3 - 5129 + 5124 @@ -13716,22 +13693,22 @@ 1 2 - 510128 + 509690 2 3 - 373503 + 375512 3 10 - 75073 + 75009 10 - 2512 - 26112 + 2516 + 26090 @@ -14053,48 +14030,48 @@ purefunctions - 100053 + 99971 id - 100053 + 99971 function_deleted - 137557 + 137439 id - 137557 + 137439 function_defaulted - 73674 + 73611 id - 73674 + 73611 member_function_this_type - 553568 + 552359 id - 553568 + 552359 this_type - 189968 + 189553 @@ -14108,7 +14085,7 @@ 1 2 - 553568 + 552359 @@ -14124,32 +14101,32 @@ 1 2 - 68556 + 68406 2 3 - 45516 + 45416 3 4 - 30555 + 30489 4 5 - 15560 + 15526 5 7 - 15595 + 15561 7 66 - 14184 + 14153 @@ -14159,27 +14136,27 @@ fun_decls - 5007094 + 5009313 id - 5001965 + 5004188 function - 4494634 + 4497293 type_id - 983419 + 984904 name - 1818557 + 1817926 location - 3416556 + 3414551 @@ -14193,7 +14170,7 @@ 1 2 - 5001965 + 5004188 @@ -14209,12 +14186,12 @@ 1 2 - 4996835 + 4999063 2 3 - 5129 + 5124 @@ -14230,7 +14207,7 @@ 1 2 - 5001965 + 5004188 @@ -14246,7 +14223,7 @@ 1 2 - 5001965 + 5004188 @@ -14262,17 +14239,17 @@ 1 2 - 4066107 + 4069135 2 3 - 355784 + 355478 3 7 - 72742 + 72679 @@ -14288,12 +14265,12 @@ 1 2 - 4454998 + 4457692 2 3 - 39635 + 39601 @@ -14309,7 +14286,7 @@ 1 2 - 4494634 + 4497293 @@ -14325,17 +14302,17 @@ 1 2 - 4122529 + 4125508 2 4 - 371172 + 370853 5 6 - 932 + 931 @@ -14351,22 +14328,22 @@ 1 2 - 435521 + 435146 2 3 - 435987 + 437942 3 8 - 75073 + 75009 8 - 2757 - 36837 + 2761 + 36805 @@ -14382,22 +14359,22 @@ 1 2 - 519454 + 519008 2 3 - 365110 + 367126 3 11 - 75540 + 75475 11 - 2473 - 23314 + 2477 + 23294 @@ -14413,17 +14390,17 @@ 1 2 - 856120 + 857714 2 5 - 89528 + 89452 5 - 821 - 37770 + 823 + 37737 @@ -14439,22 +14416,22 @@ 1 2 - 752136 + 753819 2 3 - 131495 + 131382 3 10 - 74607 + 74543 10 - 2028 - 25180 + 2030 + 25158 @@ -14470,27 +14447,27 @@ 1 2 - 1233821 + 1233692 2 3 - 267188 + 266492 3 4 - 80203 + 80600 4 6 - 136624 + 136507 6 - 1700 - 100720 + 1710 + 100633 @@ -14506,22 +14483,22 @@ 1 2 - 1412879 + 1412596 2 3 - 151546 + 150950 3 5 - 144085 + 143961 5 - 1650 - 110046 + 1660 + 110417 @@ -14537,17 +14514,17 @@ 1 2 - 1600796 + 1600352 2 4 - 134293 + 134178 4 - 925 - 83467 + 930 + 83395 @@ -14563,27 +14540,27 @@ 1 2 - 1254804 + 1254657 2 3 - 293766 + 293514 3 4 - 79270 + 79202 4 8 - 137557 + 137439 8 - 651 - 53157 + 653 + 53112 @@ -14599,17 +14576,17 @@ 1 2 - 2961450 + 2958905 2 4 - 295165 + 295843 4 55 - 159939 + 159802 @@ -14625,17 +14602,17 @@ 1 2 - 3028597 + 3025994 2 6 - 261592 + 262299 6 55 - 126366 + 126257 @@ -14651,12 +14628,12 @@ 1 2 - 3207655 + 3204898 2 25 - 208900 + 209653 @@ -14672,12 +14649,12 @@ 1 2 - 3245425 + 3242635 2 13 - 171130 + 171915 @@ -14687,22 +14664,22 @@ fun_def - 1934665 + 1933002 id - 1934665 + 1933002 fun_specialized - 26112 + 26090 id - 26112 + 26090 @@ -14720,15 +14697,15 @@ fun_decl_specifiers - 2903163 + 2900668 id - 1687527 + 1686077 name - 2797 + 2795 @@ -14742,17 +14719,17 @@ 1 2 - 490544 + 490122 2 3 - 1178331 + 1177319 3 4 - 18651 + 18635 @@ -14768,32 +14745,32 @@ 50 51 - 466 + 465 203 204 - 466 + 465 209 210 - 466 + 465 639 640 - 466 + 465 2561 2562 - 466 + 465 2564 2565 - 466 + 465 @@ -14924,26 +14901,26 @@ fun_decl_empty_throws - 1926738 + 1931604 fun_decl - 1926738 + 1931604 fun_decl_noexcept - 61190 + 61094 fun_decl - 61190 + 61094 constant - 61086 + 60990 @@ -14957,7 +14934,7 @@ 1 2 - 61190 + 61094 @@ -14973,7 +14950,7 @@ 1 2 - 60981 + 60885 2 @@ -14988,22 +14965,22 @@ fun_decl_empty_noexcept - 869643 + 868895 fun_decl - 869643 + 868895 fun_decl_typedef_type - 2889 + 2888 fun_decl - 2889 + 2888 typedeftype_id @@ -15021,7 +14998,7 @@ 1 2 - 2889 + 2888 @@ -15097,19 +15074,19 @@ param_decl_bind - 7373083 + 7371405 id - 7373083 + 7371405 index - 7927 + 7920 fun_decl - 4217187 + 4218221 @@ -15123,7 +15100,7 @@ 1 2 - 7373083 + 7371405 @@ -15139,7 +15116,7 @@ 1 2 - 7373083 + 7371405 @@ -15155,72 +15132,72 @@ 2 3 - 932 + 931 5 6 - 466 + 465 7 8 - 466 + 465 10 11 - 932 + 931 11 12 - 466 + 465 12 13 - 932 + 931 13 14 - 466 + 465 25 26 - 466 + 465 78 79 - 466 + 465 245 246 - 466 + 465 636 637 - 466 + 465 1713 1714 - 466 + 465 3987 3988 - 466 + 465 - 9044 - 9045 - 466 + 9054 + 9055 + 465 @@ -15236,72 +15213,72 @@ 2 3 - 932 + 931 5 6 - 466 + 465 7 8 - 466 + 465 10 11 - 932 + 931 11 12 - 466 + 465 12 13 - 932 + 931 13 14 - 466 + 465 25 26 - 466 + 465 78 79 - 466 + 465 245 246 - 466 + 465 636 637 - 466 + 465 1713 1714 - 466 + 465 3987 3988 - 466 + 465 - 9044 - 9045 - 466 + 9054 + 9055 + 465 @@ -15317,22 +15294,22 @@ 1 2 - 2358062 + 2360694 2 3 - 1060358 + 1059447 3 4 - 502201 + 501769 4 18 - 296564 + 296309 @@ -15348,22 +15325,22 @@ 1 2 - 2358062 + 2360694 2 3 - 1060358 + 1059447 3 4 - 502201 + 501769 4 18 - 296564 + 296309 @@ -15373,27 +15350,27 @@ var_decls - 8487066 + 8484431 id - 8416189 + 8413615 variable - 7405258 + 7403552 type_id - 2379045 + 2381660 name - 666804 + 666231 location - 5305524 + 5300964 @@ -15407,7 +15384,7 @@ 1 2 - 8416189 + 8413615 @@ -15423,12 +15400,12 @@ 1 2 - 8348110 + 8345594 2 3 - 68079 + 68020 @@ -15444,7 +15421,7 @@ 1 2 - 8416189 + 8413615 @@ -15460,12 +15437,12 @@ 1 2 - 8413391 + 8410819 2 3 - 2797 + 2795 @@ -15481,17 +15458,17 @@ 1 2 - 6554266 + 6553292 2 3 - 697579 + 696980 3 7 - 153411 + 153279 @@ -15507,12 +15484,12 @@ 1 2 - 7234127 + 7232568 2 4 - 171130 + 170983 @@ -15528,12 +15505,12 @@ 1 2 - 7290083 + 7288476 2 3 - 115175 + 115076 @@ -15549,12 +15526,12 @@ 1 2 - 6860623 + 6859386 2 4 - 544634 + 544166 @@ -15570,27 +15547,27 @@ 1 2 - 1464171 + 1467572 2 3 - 509196 + 508758 3 4 - 97922 + 97838 4 7 - 186984 + 186824 7 762 - 120770 + 120667 @@ -15606,22 +15583,22 @@ 1 2 - 1597532 + 1600818 2 3 - 484482 + 484065 3 7 - 186518 + 186358 7 724 - 110512 + 110417 @@ -15637,17 +15614,17 @@ 1 2 - 1872181 + 1875231 2 3 - 384694 + 384364 3 128 - 122169 + 122064 @@ -15663,22 +15640,22 @@ 1 2 - 1700117 + 1703315 2 3 - 401481 + 401136 3 8 - 188383 + 188221 8 592 - 89062 + 88986 @@ -15694,37 +15671,37 @@ 1 2 - 340862 + 340569 2 3 - 86731 + 86656 3 4 - 48494 + 48453 4 6 - 51758 + 51714 6 12 - 52225 + 52180 12 33 - 50360 + 50316 34 - 3213 - 36371 + 3223 + 36339 @@ -15740,37 +15717,37 @@ 1 2 - 368374 + 368057 2 3 - 77871 + 77804 3 4 - 45230 + 45191 4 6 - 49427 + 49384 6 14 - 53157 + 53112 14 56 - 50826 + 50782 56 - 3130 - 21915 + 3140 + 21897 @@ -15786,27 +15763,27 @@ 1 2 - 456504 + 456112 2 3 - 93725 + 93645 3 5 - 46629 + 46589 5 19 - 50826 + 50782 19 - 1917 - 19118 + 1927 + 19101 @@ -15822,32 +15799,32 @@ 1 2 - 378632 + 378307 2 3 - 90461 + 90383 3 5 - 59685 + 59634 5 9 - 51292 + 51248 9 21 - 50360 + 50316 21 1010 - 36371 + 36339 @@ -15863,17 +15840,17 @@ 1 2 - 4490903 + 4487043 2 3 - 531111 + 530655 3 - 1725 - 283508 + 1735 + 283264 @@ -15889,17 +15866,17 @@ 1 2 - 4879795 + 4875601 2 17 - 415004 + 414647 17 - 1721 - 10724 + 1731 + 10715 @@ -15915,12 +15892,12 @@ 1 2 - 4955801 + 4951542 2 - 1503 - 349722 + 1513 + 349421 @@ -15936,12 +15913,12 @@ 1 2 - 5296198 + 5291646 2 6 - 9325 + 9317 @@ -15951,26 +15928,26 @@ var_def - 4023674 + 4020216 id - 4023674 + 4020216 var_decl_specifiers - 310553 + 310286 id - 310553 + 310286 name - 1398 + 1397 @@ -15984,7 +15961,7 @@ 1 2 - 310553 + 310286 @@ -16000,17 +15977,17 @@ 15 16 - 466 + 465 66 67 - 466 + 465 585 586 - 466 + 465 @@ -16031,19 +16008,19 @@ type_decls - 3241228 + 3238442 id - 3241228 + 3238442 type_id - 3190868 + 3188126 location - 3162424 + 3159706 @@ -16057,7 +16034,7 @@ 1 2 - 3241228 + 3238442 @@ -16073,7 +16050,7 @@ 1 2 - 3241228 + 3238442 @@ -16089,12 +16066,12 @@ 1 2 - 3149368 + 3146661 2 5 - 41500 + 41464 @@ -16110,12 +16087,12 @@ 1 2 - 3149368 + 3146661 2 5 - 41500 + 41464 @@ -16131,12 +16108,12 @@ 1 2 - 3122322 + 3119639 2 20 - 40101 + 40067 @@ -16152,12 +16129,12 @@ 1 2 - 3122322 + 3119639 2 20 - 40101 + 40067 @@ -16167,45 +16144,45 @@ type_def - 2623851 + 2621596 id - 2623851 + 2621596 type_decl_top - 742810 + 742172 type_decl - 742810 + 742172 namespace_decls - 308863 + 308610 id - 308863 + 308610 namespace_id - 1416 + 1414 location - 308863 + 308610 bodylocation - 308863 + 308610 @@ -16219,7 +16196,7 @@ 1 2 - 308863 + 308610 @@ -16235,7 +16212,7 @@ 1 2 - 308863 + 308610 @@ -16251,7 +16228,7 @@ 1 2 - 308863 + 308610 @@ -16465,7 +16442,7 @@ 1 2 - 308863 + 308610 @@ -16481,7 +16458,7 @@ 1 2 - 308863 + 308610 @@ -16497,7 +16474,7 @@ 1 2 - 308863 + 308610 @@ -16513,7 +16490,7 @@ 1 2 - 308863 + 308610 @@ -16529,7 +16506,7 @@ 1 2 - 308863 + 308610 @@ -16545,7 +16522,7 @@ 1 2 - 308863 + 308610 @@ -16555,19 +16532,19 @@ usings - 369307 + 368989 id - 369307 + 368989 element_id - 315216 + 314945 location - 247603 + 247390 @@ -16581,7 +16558,7 @@ 1 2 - 369307 + 368989 @@ -16597,7 +16574,7 @@ 1 2 - 369307 + 368989 @@ -16613,17 +16590,17 @@ 1 2 - 262991 + 262765 2 3 - 50826 + 50782 3 5 - 1398 + 1397 @@ -16639,17 +16616,17 @@ 1 2 - 262991 + 262765 2 3 - 50826 + 50782 3 5 - 1398 + 1397 @@ -16665,22 +16642,22 @@ 1 2 - 202372 + 202198 2 4 - 10724 + 10715 4 5 - 31241 + 31215 5 11 - 3264 + 3261 @@ -16696,22 +16673,22 @@ 1 2 - 202372 + 202198 2 4 - 10724 + 10715 4 5 - 31241 + 31215 5 11 - 3264 + 3261 @@ -16721,15 +16698,15 @@ using_container - 476682 + 465000 parent - 11285 + 11009 child - 302256 + 294849 @@ -16743,47 +16720,47 @@ 1 2 - 3366 + 3283 2 4 - 956 + 933 4 6 - 426 + 416 6 7 - 2547 + 2485 7 17 - 922 + 899 19 143 - 783 + 764 178 179 - 1325 + 1293 179 183 - 876 + 854 201 488 - 80 + 78 @@ -16799,22 +16776,22 @@ 1 2 - 222934 + 217471 2 3 - 52819 + 51525 3 11 - 24323 + 23727 13 41 - 2178 + 2125 @@ -16824,27 +16801,27 @@ static_asserts - 130544 + 133393 id - 130544 + 133393 condition - 130544 + 133393 message - 29484 + 29938 location - 16790 + 17399 enclosing - 1944 + 4603 @@ -16858,7 +16835,7 @@ 1 2 - 130544 + 133393 @@ -16874,7 +16851,7 @@ 1 2 - 130544 + 133393 @@ -16890,7 +16867,7 @@ 1 2 - 130544 + 133393 @@ -16906,7 +16883,7 @@ 1 2 - 130544 + 133393 @@ -16922,7 +16899,7 @@ 1 2 - 130544 + 133393 @@ -16938,7 +16915,7 @@ 1 2 - 130544 + 133393 @@ -16954,7 +16931,7 @@ 1 2 - 130544 + 133393 @@ -16970,7 +16947,7 @@ 1 2 - 130544 + 133393 @@ -16986,32 +16963,32 @@ 1 2 - 21970 + 22027 2 3 - 402 + 471 3 4 - 2769 + 2848 4 - 11 - 1422 + 12 + 1597 12 17 - 2378 + 2408 17 513 - 541 + 584 @@ -17027,32 +17004,32 @@ 1 2 - 21970 + 22027 2 3 - 402 + 471 3 4 - 2769 + 2848 4 - 11 - 1422 + 12 + 1597 12 17 - 2378 + 2408 17 513 - 541 + 584 @@ -17068,12 +17045,12 @@ 1 2 - 27370 + 27743 2 33 - 2114 + 2194 @@ -17089,27 +17066,27 @@ 1 2 - 23386 + 23442 2 3 - 188 + 257 3 4 - 2567 + 2647 4 - 11 - 1264 + 12 + 1440 12 - 21 - 2076 + 37 + 2150 @@ -17125,47 +17102,52 @@ 1 2 - 3134 + 3257 2 3 - 2699 + 2804 3 4 - 1309 + 1389 + + + 4 + 5 + 81 5 6 - 3625 + 3659 6 13 - 182 + 333 14 15 - 2051 + 2049 16 17 - 37 + 44 17 18 - 3404 + 3401 19 52 - 346 + 377 @@ -17181,47 +17163,52 @@ 1 2 - 3134 + 3257 2 3 - 2699 + 2804 3 4 - 1309 + 1389 + + + 4 + 5 + 81 5 6 - 3625 + 3659 6 13 - 182 + 333 14 15 - 2051 + 2049 16 17 - 37 + 44 17 18 - 3404 + 3401 19 52 - 346 + 377 @@ -17237,17 +17224,17 @@ 1 2 - 4631 + 5250 2 3 - 5947 + 5942 3 4 - 6029 + 6024 4 @@ -17268,37 +17255,37 @@ 1 2 - 3738 + 3861 2 3 - 6117 + 6219 3 4 - 1082 + 1163 4 5 - 3593 + 3672 5 - 6 - 188 + 13 + 377 13 14 - 2051 + 2049 16 - 21 - 18 + 23 + 56 @@ -17314,27 +17301,22 @@ 1 2 - 1371 + 3741 2 3 - 144 + 427 3 - 10 - 163 - - - 10 - 180 - 138 + 210 + 358 - 209 + 223 11052 - 125 + 75 @@ -17350,27 +17332,22 @@ 1 2 - 1371 + 3741 2 3 - 144 + 427 3 - 10 - 163 - - - 10 - 180 - 138 + 210 + 358 - 209 + 223 11052 - 125 + 75 @@ -17386,22 +17363,17 @@ 1 2 - 1541 + 3911 2 - 5 - 151 - - - 5 - 210 - 176 + 3 + 371 - 223 + 3 2936 - 75 + 320 @@ -17417,22 +17389,17 @@ 1 2 - 1529 + 3898 2 - 5 - 163 - - - 5 - 210 - 176 + 3 + 383 - 223 + 3 1929 - 75 + 320 @@ -17442,23 +17409,23 @@ params - 6733324 + 6732196 id - 6569654 + 6568667 function - 3873993 + 3875322 index - 7927 + 7920 type_id - 2183667 + 2186449 @@ -17472,7 +17439,7 @@ 1 2 - 6569654 + 6568667 @@ -17488,7 +17455,7 @@ 1 2 - 6569654 + 6568667 @@ -17504,12 +17471,12 @@ 1 2 - 6446086 + 6445204 2 4 - 123568 + 123462 @@ -17525,22 +17492,22 @@ 1 2 - 2251746 + 2254470 2 3 - 951711 + 950893 3 4 - 429459 + 429090 4 18 - 241075 + 240868 @@ -17556,22 +17523,22 @@ 1 2 - 2251746 + 2254470 2 3 - 951711 + 950893 3 4 - 429459 + 429090 4 18 - 241075 + 240868 @@ -17587,22 +17554,22 @@ 1 2 - 2549710 + 2552178 2 3 - 825811 + 825101 3 4 - 345992 + 345694 4 12 - 152479 + 152347 @@ -17618,72 +17585,72 @@ 2 3 - 932 + 931 4 5 - 466 + 465 6 7 - 466 + 465 8 9 - 932 + 931 9 10 - 466 + 465 10 11 - 932 + 931 11 12 - 466 + 465 19 20 - 466 + 465 64 65 - 466 + 465 194 195 - 466 + 465 517 518 - 466 + 465 1438 1439 - 466 + 465 3479 3480 - 466 + 465 - 8308 - 8309 - 466 + 8318 + 8319 + 465 @@ -17699,72 +17666,72 @@ 2 3 - 932 + 931 4 5 - 466 + 465 6 7 - 466 + 465 8 9 - 932 + 931 9 10 - 466 + 465 10 11 - 932 + 931 11 12 - 466 + 465 19 20 - 466 + 465 64 65 - 466 + 465 194 195 - 466 + 465 517 518 - 466 + 465 1438 1439 - 466 + 465 3479 3480 - 466 + 465 - 8308 - 8309 - 466 + 8318 + 8319 + 465 @@ -17780,67 +17747,67 @@ 1 2 - 932 + 931 3 4 - 466 + 465 4 5 - 466 + 465 5 6 - 466 + 465 6 7 - 1398 + 1397 7 8 - 932 + 931 11 12 - 466 + 465 42 43 - 466 + 465 106 107 - 466 + 465 228 229 - 466 + 465 582 583 - 466 + 465 1271 1272 - 466 + 465 - 3599 - 3600 - 466 + 3609 + 3610 + 465 @@ -17856,22 +17823,22 @@ 1 2 - 1483289 + 1486674 2 3 - 440184 + 439805 3 8 - 170198 + 170052 8 518 - 89995 + 89917 @@ -17887,22 +17854,22 @@ 1 2 - 1702915 + 1706110 2 3 - 248069 + 247856 3 9 - 168333 + 168188 9 502 - 64348 + 64293 @@ -17918,17 +17885,17 @@ 1 2 - 1756539 + 1759689 2 3 - 348323 + 348024 3 13 - 78804 + 78736 @@ -17938,15 +17905,15 @@ overrides - 159979 + 159848 new - 125145 + 125042 old - 15110 + 15098 @@ -17960,12 +17927,12 @@ 1 2 - 90317 + 90243 2 3 - 34821 + 34793 3 @@ -17986,37 +17953,37 @@ 1 2 - 7929 + 7923 2 3 - 1906 + 1905 3 4 - 988 + 987 4 5 - 1321 + 1320 5 11 - 1214 + 1213 11 60 - 1164 + 1163 61 231 - 585 + 584 @@ -18026,19 +17993,19 @@ membervariables - 1054778 + 1054889 id - 1052983 + 1053094 type_id - 327195 + 327229 name - 450885 + 450932 @@ -18052,7 +18019,7 @@ 1 2 - 1051268 + 1051379 2 @@ -18073,7 +18040,7 @@ 1 2 - 1052983 + 1053094 @@ -18089,22 +18056,22 @@ 1 2 - 242634 + 242659 2 3 - 51813 + 51818 3 10 - 25487 + 25490 10 4152 - 7259 + 7260 @@ -18120,17 +18087,17 @@ 1 2 - 254839 + 254866 2 3 - 46388 + 46393 3 40 - 24570 + 24573 41 @@ -18151,22 +18118,22 @@ 1 2 - 294846 + 294877 2 3 - 86395 + 86404 3 5 - 41123 + 41128 5 646 - 28519 + 28522 @@ -18182,17 +18149,17 @@ 1 2 - 367242 + 367280 2 3 - 51654 + 51659 3 650 - 31989 + 31992 @@ -18373,19 +18340,19 @@ localvariables - 581199 + 581163 id - 581199 + 581163 type_id - 37873 + 37870 name - 91325 + 91319 @@ -18399,7 +18366,7 @@ 1 2 - 581199 + 581163 @@ -18415,7 +18382,7 @@ 1 2 - 581199 + 581163 @@ -18431,7 +18398,7 @@ 1 2 - 21189 + 21188 2 @@ -18472,7 +18439,7 @@ 1 2 - 26976 + 26974 2 @@ -18508,12 +18475,12 @@ 1 2 - 57521 + 57517 2 3 - 14407 + 14406 3 @@ -18523,7 +18490,7 @@ 5 15 - 7042 + 7041 15 @@ -18544,7 +18511,7 @@ 1 2 - 77148 + 77144 2 @@ -18554,7 +18521,7 @@ 3 1486 - 6702 + 6701 @@ -18564,11 +18531,11 @@ autoderivation - 149368 + 149133 var - 149368 + 149133 derivation_type @@ -18586,7 +18553,7 @@ 1 2 - 149368 + 149133 @@ -18632,15 +18599,15 @@ orphaned_variables - 37894 + 37812 var - 37894 + 37812 function - 33307 + 33235 @@ -18654,7 +18621,7 @@ 1 2 - 37894 + 37812 @@ -18670,12 +18637,12 @@ 1 2 - 31226 + 31158 2 47 - 2081 + 2077 @@ -18685,19 +18652,19 @@ enumconstants - 241278 + 241303 id - 241278 + 241303 parent - 28479 + 28482 index - 10211 + 10212 type_id @@ -18705,11 +18672,11 @@ name - 240998 + 241024 location - 221214 + 221237 @@ -18723,7 +18690,7 @@ 1 2 - 241278 + 241303 @@ -18739,7 +18706,7 @@ 1 2 - 241278 + 241303 @@ -18755,7 +18722,7 @@ 1 2 - 241278 + 241303 @@ -18771,7 +18738,7 @@ 1 2 - 241278 + 241303 @@ -18787,7 +18754,7 @@ 1 2 - 241278 + 241303 @@ -18808,17 +18775,17 @@ 2 3 - 4028 + 4029 3 4 - 5783 + 5784 4 5 - 3908 + 3909 5 @@ -18828,7 +18795,7 @@ 6 7 - 1834 + 1835 7 @@ -18848,7 +18815,7 @@ 17 84 - 2153 + 2154 94 @@ -18874,17 +18841,17 @@ 2 3 - 4028 + 4029 3 4 - 5783 + 5784 4 5 - 3908 + 3909 5 @@ -18894,7 +18861,7 @@ 6 7 - 1834 + 1835 7 @@ -18914,7 +18881,7 @@ 17 84 - 2153 + 2154 94 @@ -18935,7 +18902,7 @@ 1 2 - 28479 + 28482 @@ -18956,17 +18923,17 @@ 2 3 - 4028 + 4029 3 4 - 5783 + 5784 4 5 - 3908 + 3909 5 @@ -18976,7 +18943,7 @@ 6 7 - 1834 + 1835 7 @@ -18996,7 +18963,7 @@ 17 84 - 2153 + 2154 94 @@ -19017,7 +18984,7 @@ 1 2 - 1435 + 1436 2 @@ -19027,7 +18994,7 @@ 3 4 - 5823 + 5824 4 @@ -19042,7 +19009,7 @@ 6 7 - 1794 + 1795 7 @@ -19052,7 +19019,7 @@ 8 11 - 2512 + 2513 11 @@ -19062,7 +19029,7 @@ 17 257 - 2153 + 2154 @@ -19190,7 +19157,7 @@ 1 2 - 10211 + 10212 @@ -19398,7 +19365,7 @@ 1 2 - 240719 + 240744 2 @@ -19419,7 +19386,7 @@ 1 2 - 240719 + 240744 2 @@ -19440,7 +19407,7 @@ 1 2 - 240998 + 241024 @@ -19456,7 +19423,7 @@ 1 2 - 240998 + 241024 @@ -19472,7 +19439,7 @@ 1 2 - 240719 + 240744 2 @@ -19493,7 +19460,7 @@ 1 2 - 220456 + 220480 2 @@ -19514,7 +19481,7 @@ 1 2 - 221214 + 221237 @@ -19530,7 +19497,7 @@ 1 2 - 220456 + 220480 2 @@ -19551,7 +19518,7 @@ 1 2 - 221214 + 221237 @@ -19567,7 +19534,7 @@ 1 2 - 220456 + 220480 2 @@ -19582,31 +19549,31 @@ builtintypes - 22382 + 26090 id - 22382 + 26090 name - 22382 + 26090 kind - 22382 + 26090 size - 3264 + 3261 sign - 1398 + 1397 alignment - 2331 + 2329 @@ -19620,7 +19587,7 @@ 1 2 - 22382 + 26090 @@ -19636,7 +19603,7 @@ 1 2 - 22382 + 26090 @@ -19652,7 +19619,7 @@ 1 2 - 22382 + 26090 @@ -19668,7 +19635,7 @@ 1 2 - 22382 + 26090 @@ -19684,7 +19651,7 @@ 1 2 - 22382 + 26090 @@ -19700,7 +19667,7 @@ 1 2 - 22382 + 26090 @@ -19716,7 +19683,7 @@ 1 2 - 22382 + 26090 @@ -19732,7 +19699,7 @@ 1 2 - 22382 + 26090 @@ -19748,7 +19715,7 @@ 1 2 - 22382 + 26090 @@ -19764,7 +19731,7 @@ 1 2 - 22382 + 26090 @@ -19780,7 +19747,7 @@ 1 2 - 22382 + 26090 @@ -19796,7 +19763,7 @@ 1 2 - 22382 + 26090 @@ -19812,7 +19779,7 @@ 1 2 - 22382 + 26090 @@ -19828,7 +19795,7 @@ 1 2 - 22382 + 26090 @@ -19844,7 +19811,7 @@ 1 2 - 22382 + 26090 @@ -19860,32 +19827,37 @@ 1 2 - 466 + 465 - 2 - 3 - 466 - - - 5 - 6 - 466 + 4 + 5 + 465 7 8 - 466 + 465 + + + 8 + 9 + 465 10 11 - 932 + 465 - 13 - 14 - 466 + 12 + 13 + 465 + + + 14 + 15 + 465 @@ -19901,32 +19873,37 @@ 1 2 - 466 - - - 2 - 3 - 466 + 465 - 5 - 6 - 466 + 4 + 5 + 465 7 8 - 466 + 465 + + + 8 + 9 + 465 10 11 - 932 + 465 - 13 - 14 - 466 + 12 + 13 + 465 + + + 14 + 15 + 465 @@ -19942,32 +19919,37 @@ 1 2 - 466 + 465 - 2 - 3 - 466 - - - 5 - 6 - 466 + 4 + 5 + 465 7 8 - 466 + 465 + + + 8 + 9 + 465 10 11 - 932 + 465 - 13 - 14 - 466 + 12 + 13 + 465 + + + 14 + 15 + 465 @@ -19983,12 +19965,12 @@ 1 2 - 932 + 931 3 4 - 2331 + 2329 @@ -20004,12 +19986,12 @@ 1 2 - 1865 + 1863 2 3 - 1398 + 1397 @@ -20025,17 +20007,17 @@ 6 7 - 466 + 465 12 13 - 466 + 465 - 30 - 31 - 466 + 38 + 39 + 465 @@ -20051,17 +20033,17 @@ 6 7 - 466 + 465 12 13 - 466 + 465 - 30 - 31 - 466 + 38 + 39 + 465 @@ -20077,17 +20059,17 @@ 6 7 - 466 + 465 12 13 - 466 + 465 - 30 - 31 - 466 + 38 + 39 + 465 @@ -20103,12 +20085,12 @@ 5 6 - 932 + 931 7 8 - 466 + 465 @@ -20124,7 +20106,7 @@ 5 6 - 1398 + 1397 @@ -20137,30 +20119,30 @@ 12 - - 6 - 7 - 466 - 8 9 - 466 + 465 - 10 - 11 - 466 + 9 + 10 + 465 11 12 - 466 + 465 13 14 - 466 + 465 + + + 15 + 16 + 465 @@ -20173,30 +20155,30 @@ 12 - - 6 - 7 - 466 - 8 9 - 466 + 465 - 10 - 11 - 466 + 9 + 10 + 465 11 12 - 466 + 465 13 14 - 466 + 465 + + + 15 + 16 + 465 @@ -20209,30 +20191,30 @@ 12 - - 6 - 7 - 466 - 8 9 - 466 + 465 - 10 - 11 - 466 + 9 + 10 + 465 11 12 - 466 + 465 13 14 - 466 + 465 + + + 15 + 16 + 465 @@ -20248,7 +20230,7 @@ 2 3 - 2331 + 2329 @@ -20264,7 +20246,7 @@ 3 4 - 2331 + 2329 @@ -20274,23 +20256,23 @@ derivedtypes - 4327233 + 4332832 id - 4327233 + 4332832 name - 2151026 + 2158495 kind - 2797 + 2795 type_id - 2670947 + 2673311 @@ -20304,7 +20286,7 @@ 1 2 - 4327233 + 4332832 @@ -20320,7 +20302,7 @@ 1 2 - 4327233 + 4332832 @@ -20336,7 +20318,7 @@ 1 2 - 4327233 + 4332832 @@ -20352,17 +20334,17 @@ 1 2 - 1889434 + 1897128 2 5 - 164602 + 164461 5 1165 - 96989 + 96906 @@ -20378,12 +20360,12 @@ 1 2 - 2150094 + 2157564 2 3 - 932 + 931 @@ -20399,17 +20381,17 @@ 1 2 - 1889434 + 1897128 2 5 - 164602 + 164461 5 1147 - 96989 + 96906 @@ -20425,32 +20407,32 @@ 236 237 - 466 + 465 - 1072 - 1073 - 466 + 1077 + 1078 + 465 1146 1147 - 466 + 465 1217 1218 - 466 + 465 - 2164 - 2165 - 466 + 2169 + 2170 + 465 - 3445 - 3446 - 466 + 3455 + 3456 + 465 @@ -20466,32 +20448,32 @@ 1 2 - 466 + 465 201 202 - 466 + 465 606 607 - 466 + 465 - 755 - 756 - 466 + 760 + 761 + 465 - 1123 - 1124 - 466 + 1128 + 1129 + 465 - 1929 - 1930 - 466 + 1939 + 1940 + 465 @@ -20507,32 +20489,32 @@ 84 85 - 466 + 465 - 1072 - 1073 - 466 + 1077 + 1078 + 465 1146 1147 - 466 + 465 1217 1218 - 466 + 465 - 2119 - 2120 - 466 + 2124 + 2125 + 465 - 3445 - 3446 - 466 + 3455 + 3456 + 465 @@ -20548,22 +20530,22 @@ 1 2 - 1652555 + 1653464 2 3 - 561421 + 560938 3 4 - 351587 + 353615 4 72 - 105383 + 105292 @@ -20579,22 +20561,22 @@ 1 2 - 1663746 + 1664646 2 3 - 553960 + 553484 3 4 - 348789 + 350819 4 72 - 104450 + 104360 @@ -20610,22 +20592,22 @@ 1 2 - 1656752 + 1657657 2 3 - 565151 + 564665 3 4 - 350655 + 352683 4 6 - 98388 + 98304 @@ -20635,19 +20617,19 @@ pointerishsize - 3208121 + 3212352 id - 3208121 + 3212352 size - 466 + 465 alignment - 466 + 465 @@ -20661,7 +20643,7 @@ 1 2 - 3208121 + 3212352 @@ -20677,7 +20659,7 @@ 1 2 - 3208121 + 3212352 @@ -20691,9 +20673,9 @@ 12 - 6880 - 6881 - 466 + 6895 + 6896 + 465 @@ -20709,7 +20691,7 @@ 1 2 - 466 + 465 @@ -20723,9 +20705,9 @@ 12 - 6880 - 6881 - 466 + 6895 + 6896 + 465 @@ -20741,7 +20723,7 @@ 1 2 - 466 + 465 @@ -20751,23 +20733,23 @@ arraysizes - 88130 + 88054 id - 88130 + 88054 num_elements - 31708 + 31680 bytesize - 33107 + 33078 alignment - 1865 + 1863 @@ -20781,7 +20763,7 @@ 1 2 - 88130 + 88054 @@ -20797,7 +20779,7 @@ 1 2 - 88130 + 88054 @@ -20813,7 +20795,7 @@ 1 2 - 88130 + 88054 @@ -20829,27 +20811,27 @@ 1 2 - 1865 + 1863 2 3 - 23781 + 23760 3 5 - 2797 + 2795 5 13 - 2797 + 2795 13 14 - 466 + 465 @@ -20865,17 +20847,17 @@ 1 2 - 26578 + 26556 2 3 - 2331 + 2329 3 7 - 2797 + 2795 @@ -20891,17 +20873,17 @@ 1 2 - 26578 + 26556 2 3 - 2797 + 2795 3 5 - 2331 + 2329 @@ -20917,27 +20899,27 @@ 1 2 - 1865 + 1863 2 3 - 23781 + 23760 3 4 - 3264 + 3261 4 6 - 2331 + 2329 7 16 - 1865 + 1863 @@ -20953,17 +20935,17 @@ 1 2 - 27511 + 27487 2 3 - 3730 + 3727 3 5 - 1865 + 1863 @@ -20979,17 +20961,17 @@ 1 2 - 27511 + 27487 2 3 - 4662 + 4658 4 5 - 932 + 931 @@ -21005,22 +20987,22 @@ 5 6 - 466 + 465 16 17 - 466 + 465 31 32 - 466 + 465 137 138 - 466 + 465 @@ -21036,17 +21018,17 @@ 4 5 - 466 + 465 7 8 - 932 + 931 68 69 - 466 + 465 @@ -21062,22 +21044,22 @@ 4 5 - 466 + 465 7 8 - 466 + 465 8 9 - 466 + 465 68 69 - 466 + 465 @@ -21087,15 +21069,15 @@ typedefbase - 1722355 + 1680889 id - 1722355 + 1680889 type_id - 809095 + 791235 @@ -21109,7 +21091,7 @@ 1 2 - 1722355 + 1680889 @@ -21125,22 +21107,22 @@ 1 2 - 629309 + 615765 2 3 - 85028 + 82989 3 6 - 63310 + 61803 6 5437 - 31447 + 30676 @@ -21150,19 +21132,19 @@ decltypes - 172581 + 172404 id - 17343 + 17321 expr - 172581 + 172404 base_type - 10354 + 10341 parentheses_would_change_meaning @@ -21180,32 +21162,32 @@ 1 2 - 5305 + 5279 2 3 - 6434 + 6426 3 5 - 1128 + 1146 5 12 - 1346 + 1344 12 18 - 1405 + 1403 18 46 - 1306 + 1305 51 @@ -21226,7 +21208,7 @@ 1 2 - 17343 + 17321 @@ -21242,7 +21224,7 @@ 1 2 - 17343 + 17321 @@ -21258,7 +21240,7 @@ 1 2 - 172581 + 172404 @@ -21274,7 +21256,7 @@ 1 2 - 172581 + 172404 @@ -21290,7 +21272,7 @@ 1 2 - 172581 + 172404 @@ -21306,17 +21288,17 @@ 1 2 - 7523 + 7513 2 3 - 2355 + 2353 4 149 - 475 + 474 @@ -21332,37 +21314,37 @@ 1 2 - 752 + 751 2 3 - 6375 + 6367 3 4 - 356 + 355 4 5 - 1009 + 1008 5 7 - 791 + 790 7 - 31 - 791 + 32 + 830 - 31 + 32 3888 - 277 + 237 @@ -21378,7 +21360,7 @@ 1 2 - 10354 + 10341 @@ -21408,8 +21390,8 @@ 12 - 8717 - 8718 + 8719 + 8720 19 @@ -21436,19 +21418,19 @@ usertypes - 5225787 + 5224557 id - 5225787 + 5224557 name - 1348063 + 1349700 kind - 5129 + 5124 @@ -21462,7 +21444,7 @@ 1 2 - 5225787 + 5224557 @@ -21478,7 +21460,7 @@ 1 2 - 5225787 + 5224557 @@ -21494,27 +21476,27 @@ 1 2 - 979689 + 981642 2 3 - 153411 + 153279 3 7 - 104450 + 104360 7 - 59 - 101186 + 61 + 101565 - 60 + 65 874 - 9325 + 8852 @@ -21530,17 +21512,17 @@ 1 2 - 1207708 + 1209465 2 3 - 124967 + 124860 3 7 - 15387 + 15374 @@ -21556,57 +21538,57 @@ 6 7 - 466 + 465 10 11 - 466 + 465 26 27 - 466 + 465 124 125 - 466 + 465 135 136 - 466 + 465 663 664 - 466 + 465 853 854 - 466 + 465 959 960 - 466 + 465 - 1751 - 1752 - 466 + 1752 + 1753 + 465 - 1836 - 1837 - 466 + 1842 + 1843 + 465 4844 4845 - 466 + 465 @@ -21622,57 +21604,57 @@ 5 6 - 466 + 465 6 7 - 466 + 465 14 15 - 466 + 465 30 31 - 466 + 465 43 44 - 466 + 465 125 126 - 466 + 465 267 268 - 466 + 465 371 372 - 466 + 465 438 439 - 466 + 465 739 740 - 466 + 465 - 1194 - 1195 - 466 + 1200 + 1201 + 465 @@ -21682,19 +21664,19 @@ usertypesize - 1703381 + 1704247 id - 1703381 + 1704247 size - 13522 + 13510 alignment - 2331 + 2329 @@ -21708,7 +21690,7 @@ 1 2 - 1703381 + 1704247 @@ -21724,7 +21706,7 @@ 1 2 - 1703381 + 1704247 @@ -21740,47 +21722,47 @@ 1 2 - 3264 + 3261 2 3 - 4196 + 4193 3 4 - 466 + 465 4 5 - 932 + 931 6 8 - 932 + 931 9 15 - 932 + 931 37 84 - 932 + 931 92 163 - 932 + 931 740 - 2468 - 932 + 2473 + 931 @@ -21796,17 +21778,17 @@ 1 2 - 10258 + 10249 2 3 - 2797 + 2795 3 4 - 466 + 465 @@ -21822,27 +21804,27 @@ 2 3 - 466 + 465 6 7 - 466 + 465 184 185 - 466 + 465 254 255 - 466 + 465 - 3207 - 3208 - 466 + 3212 + 3213 + 465 @@ -21858,27 +21840,27 @@ 1 2 - 466 + 465 2 3 - 466 + 465 3 4 - 466 + 465 9 10 - 466 + 465 22 23 - 466 + 465 @@ -21888,26 +21870,26 @@ usertype_final - 9518 + 9503 id - 9518 + 9503 usertype_uuid - 36325 + 36295 id - 36325 + 36295 uuid - 35954 + 35924 @@ -21921,7 +21903,7 @@ 1 2 - 36325 + 36295 @@ -21937,7 +21919,7 @@ 1 2 - 35583 + 35553 2 @@ -21952,15 +21934,15 @@ mangled_name - 9465823 + 9467471 id - 9465823 + 9467471 mangled_name - 3945802 + 6441011 @@ -21974,7 +21956,7 @@ 1 2 - 9465823 + 9467471 @@ -21990,22 +21972,12 @@ 1 2 - 2852803 + 6160542 2 - 3 - 523184 - - - 3 - 6 - 333868 - - - 6 874 - 235946 + 280469 @@ -22015,59 +21987,59 @@ is_pod_class - 534147 + 533326 id - 534147 + 533326 is_standard_layout_class - 1251540 + 1252794 id - 1251540 + 1252794 is_complete - 1642763 + 1643680 id - 1642763 + 1643680 is_class_template - 397751 + 397409 id - 397751 + 397409 class_instantiation - 1092146 + 1087867 to - 1090913 + 1087867 from - 70261 + 168188 @@ -22081,12 +22053,7 @@ 1 2 - 1089772 - - - 2 - 4 - 1141 + 1087867 @@ -22102,47 +22069,47 @@ 1 2 - 20819 + 59634 2 3 - 12772 + 29351 3 4 - 7089 + 15840 4 5 - 4887 + 13045 5 - 7 - 5717 + 6 + 9783 - 7 + 6 10 - 5175 + 12579 10 - 17 - 5475 + 16 + 13045 - 17 - 66 - 5279 + 16 + 70 + 13510 - 66 - 3994 - 3043 + 70 + 84 + 1397 @@ -22152,19 +22119,19 @@ class_template_argument - 2918643 + 2872960 type_id - 1329594 + 1311214 index - 1291 + 1259 arg_type - 856554 + 837284 @@ -22178,27 +22145,27 @@ 1 2 - 544154 + 539241 2 3 - 404541 + 398013 3 4 - 235649 + 230538 4 7 - 121144 + 119907 7 113 - 24104 + 23513 @@ -22214,22 +22181,22 @@ 1 2 - 569849 + 565791 2 3 - 416311 + 409213 3 4 - 248837 + 243931 4 113 - 94596 + 92278 @@ -22250,32 +22217,32 @@ 2 3 - 818 + 798 3 26 - 103 + 101 29 64 - 103 + 101 69 411 - 103 + 101 592 - 8747 - 103 + 8901 + 101 - 12910 - 113009 - 46 + 13095 + 114270 + 44 @@ -22296,32 +22263,32 @@ 2 3 - 818 + 798 3 14 - 115 + 112 14 26 - 103 + 101 28 145 - 103 + 101 195 - 3442 - 103 + 3469 + 101 - 10455 - 39607 - 34 + 10524 + 39739 + 33 @@ -22337,27 +22304,27 @@ 1 2 - 533444 + 521260 2 3 - 179094 + 173761 3 4 - 51759 + 51131 4 10 - 64336 + 63827 10 - 10167 - 27920 + 10265 + 27303 @@ -22373,17 +22340,17 @@ 1 2 - 755733 + 738000 2 3 - 82572 + 81021 3 22 - 18248 + 18262 @@ -22393,19 +22360,19 @@ class_template_argument_value - 494274 + 494315 type_id - 304025 + 304230 index - 1865 + 1863 arg_value - 494274 + 494315 @@ -22419,17 +22386,17 @@ 1 2 - 249002 + 249254 2 3 - 53157 + 53112 3 4 - 1865 + 1863 @@ -22445,22 +22412,22 @@ 1 2 - 188850 + 189153 2 3 - 81135 + 81065 3 4 - 12123 + 12113 4 9 - 21915 + 21897 @@ -22476,22 +22443,22 @@ 18 19 - 466 + 465 92 93 - 466 + 465 - 292 - 293 - 466 + 293 + 294 + 465 372 373 - 466 + 465 @@ -22507,22 +22474,22 @@ 19 20 - 466 + 465 124 125 - 466 + 465 - 408 - 409 - 466 + 409 + 410 + 465 509 510 - 466 + 465 @@ -22538,7 +22505,7 @@ 1 2 - 494274 + 494315 @@ -22554,7 +22521,7 @@ 1 2 - 494274 + 494315 @@ -22564,15 +22531,15 @@ is_proxy_class_for - 62950 + 62895 id - 62950 + 62895 templ_param_id - 62950 + 62895 @@ -22586,7 +22553,7 @@ 1 2 - 62950 + 62895 @@ -22602,7 +22569,7 @@ 1 2 - 62950 + 62895 @@ -22612,19 +22579,19 @@ type_mentions - 4022590 + 4023013 id - 4022590 + 4023013 type_id - 197880 + 197901 location - 3989125 + 3989544 kind @@ -22642,7 +22609,7 @@ 1 2 - 4022590 + 4023013 @@ -22658,7 +22625,7 @@ 1 2 - 4022590 + 4023013 @@ -22674,7 +22641,7 @@ 1 2 - 4022590 + 4023013 @@ -22690,42 +22657,42 @@ 1 2 - 97444 + 97454 2 3 - 21698 + 21700 3 4 - 8216 + 8217 4 5 - 10769 + 10770 5 7 - 14359 + 14360 7 12 - 15835 + 15836 12 27 - 15157 + 15158 27 8555 - 14399 + 14400 @@ -22741,42 +22708,42 @@ 1 2 - 97444 + 97454 2 3 - 21698 + 21700 3 4 - 8216 + 8217 4 5 - 10769 + 10770 5 7 - 14359 + 14360 7 12 - 15835 + 15836 12 27 - 15157 + 15158 27 8555 - 14399 + 14400 @@ -22792,7 +22759,7 @@ 1 2 - 197880 + 197901 @@ -22808,12 +22775,12 @@ 1 2 - 3955660 + 3956075 2 3 - 33465 + 33468 @@ -22829,12 +22796,12 @@ 1 2 - 3955660 + 3956075 2 3 - 33465 + 33468 @@ -22850,7 +22817,7 @@ 1 2 - 3989125 + 3989544 @@ -22908,26 +22875,26 @@ is_function_template - 1401221 + 1400017 id - 1401221 + 1400017 function_instantiation - 907042 + 905131 to - 907042 + 905131 from - 146181 + 145932 @@ -22941,7 +22908,7 @@ 1 2 - 907042 + 905131 @@ -22957,27 +22924,27 @@ 1 2 - 101335 + 101184 2 3 - 14431 + 14399 3 6 - 12031 + 12005 6 21 - 12067 + 12040 22 869 - 6315 + 6302 @@ -22987,19 +22954,19 @@ function_template_argument - 2342320 + 2337835 function_id - 1338140 + 1335498 index - 564 + 563 arg_type - 304993 + 304397 @@ -23013,22 +22980,22 @@ 1 2 - 682954 + 681532 2 3 - 395391 + 394597 3 4 - 189015 + 188743 4 15 - 70779 + 70624 @@ -23044,22 +23011,22 @@ 1 2 - 700596 + 699136 2 3 - 405305 + 404490 3 4 - 168833 + 168605 4 9 - 63405 + 63266 @@ -23113,18 +23080,18 @@ 35 - 8736 - 8737 + 8740 + 8741 35 - 17929 - 17930 + 17935 + 17936 35 - 34964 - 34965 + 34972 + 34973 35 @@ -23189,8 +23156,8 @@ 35 - 5835 - 5836 + 5837 + 5838 35 @@ -23207,32 +23174,32 @@ 1 2 - 187004 + 186455 2 3 - 44669 + 44571 3 5 - 23287 + 23447 5 16 - 23534 + 23482 16 107 - 23040 + 22990 108 - 955 - 3457 + 957 + 3450 @@ -23248,17 +23215,17 @@ 1 2 - 274826 + 274296 2 4 - 26039 + 25982 4 17 - 4128 + 4119 @@ -23268,19 +23235,19 @@ function_template_argument_value - 363529 + 362735 function_id - 195155 + 194728 index - 564 + 563 arg_value - 360883 + 360094 @@ -23294,12 +23261,12 @@ 1 2 - 185769 + 185363 2 8 - 9385 + 9365 @@ -23315,17 +23282,17 @@ 1 2 - 178324 + 177935 2 31 - 15313 + 15279 32 97 - 1517 + 1513 @@ -23463,12 +23430,12 @@ 1 2 - 358237 + 357454 2 3 - 2646 + 2640 @@ -23484,7 +23451,7 @@ 1 2 - 360883 + 360094 @@ -23494,26 +23461,26 @@ is_variable_template - 47278 + 47204 id - 47278 + 47204 variable_instantiation - 168091 + 172631 to - 168091 + 172631 from - 25731 + 25900 @@ -23527,7 +23494,7 @@ 1 2 - 168091 + 172631 @@ -23543,37 +23510,42 @@ 1 2 - 14016 + 13889 2 3 - 2719 + 2610 3 4 - 1359 + 1253 4 - 7 - 1987 + 6 + 1879 - 7 - 10 - 2196 + 6 + 8 + 1357 - 10 - 22 - 1987 + 8 + 12 + 2193 - 26 + 12 + 38 + 1984 + + + 46 277 - 1464 + 731 @@ -23583,19 +23555,19 @@ variable_template_argument - 295493 + 310904 variable_id - 159723 + 163441 index - 1778 + 1775 arg_type - 165476 + 171274 @@ -23609,22 +23581,22 @@ 1 2 - 81901 + 83652 2 3 - 49580 + 50860 3 4 - 18827 + 18798 4 17 - 9413 + 10130 @@ -23640,22 +23612,22 @@ 1 2 - 85562 + 88352 2 3 - 51881 + 52113 3 4 - 13702 + 13681 4 17 - 8577 + 9294 @@ -23669,48 +23641,48 @@ 12 - 6 - 7 + 9 + 10 104 - - 12 - 13 - 627 - 19 20 - 418 + 626 - 40 - 41 + 26 + 27 + 417 + + + 47 + 48 104 - 86 - 87 + 93 + 94 104 - 178 - 179 + 185 + 186 104 - 540 - 541 + 547 + 548 104 - 609 - 610 + 626 + 627 104 - 1218 - 1219 + 1252 + 1253 104 @@ -23730,43 +23702,48 @@ 104 - 7 - 8 - 627 + 10 + 11 + 417 - 9 - 10 - 418 + 11 + 12 + 208 - 26 - 27 + 12 + 13 + 417 + + + 29 + 30 104 - 45 - 46 + 48 + 49 104 - 127 - 128 + 130 + 131 104 - 372 - 373 + 375 + 376 104 - 388 - 389 + 402 + 403 104 - 729 - 730 + 742 + 743 104 @@ -23783,22 +23760,22 @@ 1 2 - 133364 + 137750 2 3 - 18095 + 19529 3 - 15 - 12447 + 23 + 12845 - 17 - 109 - 1568 + 23 + 110 + 1148 @@ -23814,17 +23791,17 @@ 1 2 - 149577 + 154251 2 3 - 13807 + 14934 3 6 - 2091 + 2088 @@ -23834,19 +23811,19 @@ variable_template_argument_value - 11819 + 11905 variable_id - 7740 + 7832 index - 418 + 417 arg_value - 11819 + 11905 @@ -23860,12 +23837,12 @@ 1 2 - 7321 + 7414 2 3 - 418 + 417 @@ -23881,12 +23858,12 @@ 1 2 - 4288 + 4386 2 3 - 3137 + 3133 4 @@ -23910,8 +23887,8 @@ 104 - 18 - 19 + 19 + 20 104 @@ -23941,8 +23918,8 @@ 104 - 27 - 28 + 28 + 29 104 @@ -23969,7 +23946,7 @@ 1 2 - 11819 + 11905 @@ -23985,7 +23962,7 @@ 1 2 - 11819 + 11905 @@ -23995,15 +23972,15 @@ routinetypes - 547147 + 545951 id - 547147 + 545951 return_type - 285764 + 285139 @@ -24017,7 +23994,7 @@ 1 2 - 547147 + 545951 @@ -24033,17 +24010,17 @@ 1 2 - 248998 + 248454 2 3 - 21346 + 21300 3 3594 - 15419 + 15385 @@ -24053,19 +24030,19 @@ routinetypeargs - 982953 + 982108 routine - 423397 + 423033 index - 7927 + 7920 type_id - 226620 + 226425 @@ -24079,27 +24056,27 @@ 1 2 - 152479 + 152347 2 3 - 134293 + 134178 3 4 - 63416 + 63361 4 5 - 45697 + 45657 5 18 - 27511 + 27487 @@ -24115,27 +24092,27 @@ 1 2 - 182322 + 182165 2 3 - 133827 + 133712 3 4 - 58753 + 58702 4 5 - 33573 + 33544 5 11 - 14921 + 14908 @@ -24151,67 +24128,67 @@ 2 3 - 932 + 931 4 5 - 466 + 465 6 7 - 466 + 465 8 9 - 932 + 931 9 10 - 466 + 465 10 11 - 1398 + 1397 13 14 - 466 + 465 28 29 - 466 + 465 59 60 - 466 + 465 157 158 - 466 + 465 293 294 - 466 + 465 581 582 - 466 + 465 908 909 - 466 + 465 @@ -24227,57 +24204,57 @@ 1 2 - 932 + 931 3 4 - 932 + 931 4 5 - 1398 + 1397 5 6 - 932 + 931 6 7 - 932 + 931 10 11 - 466 + 465 14 15 - 466 + 465 47 48 - 466 + 465 90 91 - 466 + 465 176 177 - 466 + 465 347 348 - 466 + 465 @@ -24293,27 +24270,27 @@ 1 2 - 146417 + 146291 2 3 - 30775 + 30749 3 5 - 16786 + 16772 5 12 - 18185 + 18169 12 111 - 14455 + 14442 @@ -24329,22 +24306,22 @@ 1 2 - 172529 + 172381 2 3 - 30775 + 30749 3 6 - 18651 + 18635 6 14 - 4662 + 4658 @@ -24354,19 +24331,19 @@ ptrtomembers - 37770 + 37737 id - 37770 + 37737 type_id - 37770 + 37737 class_id - 15387 + 15374 @@ -24380,7 +24357,7 @@ 1 2 - 37770 + 37737 @@ -24396,7 +24373,7 @@ 1 2 - 37770 + 37737 @@ -24412,7 +24389,7 @@ 1 2 - 37770 + 37737 @@ -24428,7 +24405,7 @@ 1 2 - 37770 + 37737 @@ -24444,17 +24421,17 @@ 1 2 - 13522 + 13510 8 9 - 1398 + 1397 28 29 - 466 + 465 @@ -24470,17 +24447,17 @@ 1 2 - 13522 + 13510 8 9 - 1398 + 1397 28 29 - 466 + 465 @@ -24490,15 +24467,15 @@ specifiers - 24713 + 24692 id - 24713 + 24692 str - 24713 + 24692 @@ -24512,7 +24489,7 @@ 1 2 - 24713 + 24692 @@ -24528,7 +24505,7 @@ 1 2 - 24713 + 24692 @@ -24538,15 +24515,15 @@ typespecifiers - 1289776 + 1290997 type_id - 1271591 + 1272827 spec_id - 3730 + 3727 @@ -24560,12 +24537,12 @@ 1 2 - 1253405 + 1254657 2 3 - 18185 + 18169 @@ -24581,42 +24558,42 @@ 8 9 - 466 + 465 36 37 - 466 + 465 51 52 - 466 + 465 86 87 - 466 + 465 105 106 - 466 + 465 219 220 - 466 + 465 221 222 - 466 + 465 - 2040 - 2041 - 466 + 2045 + 2046 + 465 @@ -24626,15 +24603,15 @@ funspecifiers - 12434284 + 12754043 func_id - 3820714 + 3899573 spec_id - 705 + 704 @@ -24648,27 +24625,27 @@ 1 2 - 315085 + 314396 2 3 - 545982 + 546479 3 4 - 1151030 + 1147036 4 5 - 1559335 + 1642924 5 8 - 249280 + 248735 @@ -24692,8 +24669,8 @@ 35 - 200 - 201 + 202 + 203 35 @@ -24732,8 +24709,8 @@ 35 - 3915 - 3916 + 3923 + 3924 35 @@ -24752,28 +24729,28 @@ 35 - 12218 - 12219 + 12226 + 12227 35 - 48228 - 48229 + 50649 + 50650 35 - 75287 - 75288 + 77764 + 77765 35 - 86790 - 86791 + 89259 + 89260 35 - 95133 - 95134 + 97602 + 97603 35 @@ -24784,15 +24761,15 @@ varspecifiers - 2243353 + 2241425 var_id - 1223562 + 1222510 spec_id - 3730 + 3727 @@ -24806,22 +24783,22 @@ 1 2 - 729288 + 728661 2 3 - 202372 + 202198 3 4 - 58287 + 58236 4 5 - 233614 + 233413 @@ -24837,42 +24814,42 @@ 112 113 - 466 + 465 315 316 - 466 + 465 416 417 - 466 + 465 514 515 - 466 + 465 646 647 - 466 + 465 686 687 - 466 + 465 700 701 - 466 + 465 1422 1423 - 466 + 465 @@ -24882,11 +24859,11 @@ attributes - 736276 + 735121 id - 736276 + 735121 kind @@ -24894,15 +24871,15 @@ name - 1673 + 1670 name_space - 209 + 208 location - 483459 + 482701 @@ -24916,7 +24893,7 @@ 1 2 - 736276 + 735121 @@ -24932,7 +24909,7 @@ 1 2 - 736276 + 735121 @@ -24948,7 +24925,7 @@ 1 2 - 736276 + 735121 @@ -24964,7 +24941,7 @@ 1 2 - 736276 + 735121 @@ -25032,7 +25009,7 @@ 1 2 - 209 + 208 2 @@ -25079,7 +25056,7 @@ 1 2 - 209 + 208 2 @@ -25094,7 +25071,7 @@ 5 6 - 209 + 208 11 @@ -25160,12 +25137,12 @@ 1 2 - 1464 + 1462 2 3 - 209 + 208 @@ -25181,7 +25158,7 @@ 1 2 - 1673 + 1670 @@ -25202,7 +25179,7 @@ 2 3 - 209 + 208 4 @@ -25357,17 +25334,17 @@ 1 2 - 425824 + 425157 2 3 - 36923 + 36865 3 201 - 20710 + 20678 @@ -25383,7 +25360,7 @@ 1 2 - 483459 + 482701 @@ -25399,12 +25376,12 @@ 1 2 - 479170 + 478419 2 3 - 4288 + 4281 @@ -25420,7 +25397,7 @@ 1 2 - 483459 + 482701 @@ -25430,27 +25407,27 @@ attribute_args - 409874 + 409522 id - 409874 + 409522 kind - 1398 + 1397 attribute - 297963 + 297707 index - 1398 + 1397 location - 327340 + 327058 @@ -25464,7 +25441,7 @@ 1 2 - 409874 + 409522 @@ -25480,7 +25457,7 @@ 1 2 - 409874 + 409522 @@ -25496,7 +25473,7 @@ 1 2 - 409874 + 409522 @@ -25512,7 +25489,7 @@ 1 2 - 409874 + 409522 @@ -25528,17 +25505,17 @@ 1 2 - 466 + 465 84 85 - 466 + 465 794 795 - 466 + 465 @@ -25554,17 +25531,17 @@ 1 2 - 466 + 465 84 85 - 466 + 465 606 607 - 466 + 465 @@ -25580,12 +25557,12 @@ 1 2 - 932 + 931 3 4 - 466 + 465 @@ -25601,17 +25578,17 @@ 1 2 - 466 + 465 54 55 - 466 + 465 674 675 - 466 + 465 @@ -25627,17 +25604,17 @@ 1 2 - 215895 + 215709 2 3 - 52225 + 52180 3 4 - 29842 + 29817 @@ -25653,12 +25630,12 @@ 1 2 - 273716 + 273480 2 3 - 24247 + 24226 @@ -25674,17 +25651,17 @@ 1 2 - 215895 + 215709 2 3 - 52225 + 52180 3 4 - 29842 + 29817 @@ -25700,17 +25677,17 @@ 1 2 - 215895 + 215709 2 3 - 52225 + 52180 3 4 - 29842 + 29817 @@ -25726,17 +25703,17 @@ 64 65 - 466 + 465 176 177 - 466 + 465 639 640 - 466 + 465 @@ -25752,12 +25729,12 @@ 1 2 - 932 + 931 3 4 - 466 + 465 @@ -25773,17 +25750,17 @@ 64 65 - 466 + 465 176 177 - 466 + 465 639 640 - 466 + 465 @@ -25799,17 +25776,17 @@ 34 35 - 466 + 465 140 141 - 466 + 465 528 529 - 466 + 465 @@ -25825,22 +25802,22 @@ 1 2 - 278845 + 278605 2 3 - 23314 + 23294 3 9 - 24713 + 24692 17 18 - 466 + 465 @@ -25856,12 +25833,12 @@ 1 2 - 314750 + 314479 2 3 - 12590 + 12579 @@ -25877,22 +25854,22 @@ 1 2 - 278845 + 278605 2 3 - 23314 + 23294 3 9 - 24713 + 24692 17 18 - 466 + 465 @@ -25908,7 +25885,7 @@ 1 2 - 327340 + 327058 @@ -25918,15 +25895,15 @@ attribute_arg_value - 39168 + 39135 arg - 39168 + 39135 value - 15854 + 15840 @@ -25940,7 +25917,7 @@ 1 2 - 39168 + 39135 @@ -25956,12 +25933,12 @@ 1 2 - 14455 + 14442 2 34 - 1398 + 1397 @@ -25971,15 +25948,15 @@ attribute_arg_type - 466 + 465 arg - 466 + 465 type_id - 466 + 465 @@ -25993,7 +25970,7 @@ 1 2 - 466 + 465 @@ -26009,7 +25986,7 @@ 1 2 - 466 + 465 @@ -26019,15 +25996,15 @@ attribute_arg_constant - 370239 + 369921 arg - 370239 + 369921 constant - 370239 + 369921 @@ -26041,7 +26018,7 @@ 1 2 - 370239 + 369921 @@ -26057,7 +26034,7 @@ 1 2 - 370239 + 369921 @@ -26120,15 +26097,15 @@ typeattributes - 84934 + 84801 type_id - 62027 + 61930 spec_id - 84934 + 84801 @@ -26142,17 +26119,17 @@ 1 2 - 56065 + 55977 2 4 - 4288 + 4281 12 13 - 1673 + 1670 @@ -26168,7 +26145,7 @@ 1 2 - 84934 + 84801 @@ -26178,15 +26155,15 @@ funcattributes - 651416 + 650856 func_id - 442981 + 442601 spec_id - 651416 + 650856 @@ -26200,22 +26177,22 @@ 1 2 - 334334 + 334047 2 3 - 65281 + 65225 3 6 - 34972 + 34942 6 9 - 8393 + 8386 @@ -26231,7 +26208,7 @@ 1 2 - 651416 + 650856 @@ -26299,15 +26276,15 @@ stmtattributes - 1002 + 978 stmt_id - 1002 + 978 spec_id - 1002 + 978 @@ -26321,7 +26298,7 @@ 1 2 - 1002 + 978 @@ -26337,7 +26314,7 @@ 1 2 - 1002 + 978 @@ -26347,15 +26324,15 @@ unspecifiedtype - 10137290 + 10144884 type_id - 10137290 + 10144884 unspecified_type_id - 6813061 + 6818387 @@ -26369,7 +26346,7 @@ 1 2 - 10137290 + 10144884 @@ -26385,17 +26362,17 @@ 1 2 - 4582764 + 4585348 2 3 - 1993418 + 1995898 3 145 - 236878 + 237141 @@ -26405,19 +26382,19 @@ member - 4925876 + 5003059 parent - 618808 + 646818 index - 8820 + 8801 child - 4880571 + 4957854 @@ -26431,42 +26408,42 @@ 1 3 - 18912 + 19293 3 4 - 320342 + 348441 4 5 - 38283 + 38269 5 7 - 53137 + 53091 7 10 - 52925 + 52810 10 15 - 50314 + 50204 15 24 - 49609 + 49500 24 251 - 35283 + 35206 @@ -26482,42 +26459,42 @@ 1 3 - 18912 + 19293 3 4 - 320271 + 348371 4 5 - 38318 + 38304 5 7 - 53243 + 53197 7 10 - 53278 + 53162 10 15 - 49926 + 49817 15 24 - 49679 + 49571 24 255 - 35178 + 35101 @@ -26533,62 +26510,62 @@ 1 2 - 1411 + 1408 2 3 - 811 + 809 3 4 - 952 + 950 5 22 - 670 + 668 22 42 - 670 + 668 42 56 - 670 + 668 56 100 - 670 + 668 104 164 - 670 + 668 181 299 - 670 + 668 300 727 - 670 + 668 845 4002 - 670 + 668 4606 - 17207 - 282 + 18041 + 281 @@ -26604,62 +26581,62 @@ 1 2 - 811 + 809 2 3 - 882 + 880 3 4 - 1164 + 1161 4 15 - 670 + 668 16 35 - 740 + 739 36 55 - 670 + 668 57 93 - 740 + 739 97 135 - 670 + 668 140 256 - 670 + 668 268 612 - 670 + 668 619 2611 - 670 + 668 2770 - 17219 - 458 + 18053 + 457 @@ -26675,7 +26652,7 @@ 1 2 - 4880571 + 4957854 @@ -26691,12 +26668,12 @@ 1 2 - 4836643 + 4914021 2 8 - 43928 + 43832 @@ -26706,15 +26683,15 @@ enclosingfunction - 121352 + 118457 child - 121352 + 118457 parent - 69281 + 67662 @@ -26728,7 +26705,7 @@ 1 2 - 121352 + 118457 @@ -26744,22 +26721,22 @@ 1 2 - 36577 + 35759 2 3 - 21522 + 20994 3 4 - 6086 + 5937 4 45 - 5095 + 4970 @@ -26769,15 +26746,15 @@ derivations - 368257 + 395653 derivation - 368257 + 395653 sub - 347722 + 375163 index @@ -26785,11 +26762,11 @@ super - 203870 + 204903 location - 38212 + 38128 @@ -26803,7 +26780,7 @@ 1 2 - 368257 + 395653 @@ -26819,7 +26796,7 @@ 1 2 - 368257 + 395653 @@ -26835,7 +26812,7 @@ 1 2 - 368257 + 395653 @@ -26851,7 +26828,7 @@ 1 2 - 368257 + 395653 @@ -26867,12 +26844,12 @@ 1 2 - 332550 + 360024 2 7 - 15172 + 15138 @@ -26888,12 +26865,12 @@ 1 2 - 332550 + 360024 2 7 - 15172 + 15138 @@ -26909,12 +26886,12 @@ 1 2 - 332550 + 360024 2 7 - 15172 + 15138 @@ -26930,12 +26907,12 @@ 1 2 - 332550 + 360024 2 7 - 15172 + 15138 @@ -26964,8 +26941,8 @@ 35 - 9855 - 9856 + 10656 + 10657 35 @@ -26995,8 +26972,8 @@ 35 - 9855 - 9856 + 10656 + 10657 35 @@ -27031,8 +27008,8 @@ 35 - 5423 - 5424 + 5465 + 5466 35 @@ -27080,12 +27057,12 @@ 1 2 - 196531 + 197439 2 - 1216 - 7339 + 1518 + 7463 @@ -27101,12 +27078,12 @@ 1 2 - 196531 + 197439 2 - 1216 - 7339 + 1518 + 7463 @@ -27122,12 +27099,12 @@ 1 2 - 203411 + 204445 2 4 - 458 + 457 @@ -27143,12 +27120,12 @@ 1 2 - 200271 + 201206 2 108 - 3598 + 3696 @@ -27164,27 +27141,27 @@ 1 2 - 28826 + 28341 2 5 - 3140 + 3239 5 - 16 - 2928 + 15 + 2922 - 17 - 178 - 2928 + 15 + 134 + 2886 - 192 - 474 - 388 + 136 + 476 + 739 @@ -27200,27 +27177,27 @@ 1 2 - 28826 + 28341 2 5 - 3140 + 3239 5 - 16 - 2928 + 15 + 2922 - 17 - 178 - 2928 + 15 + 134 + 2886 - 192 - 474 - 388 + 136 + 476 + 739 @@ -27236,7 +27213,7 @@ 1 2 - 38212 + 38128 @@ -27252,22 +27229,22 @@ 1 2 - 31120 + 30735 2 5 - 3210 + 3379 5 - 63 - 2893 + 45 + 2886 - 63 + 54 415 - 987 + 1126 @@ -27277,15 +27254,15 @@ derspecifiers - 370163 + 397554 der_id - 367869 + 395266 spec_id - 141 + 140 @@ -27299,12 +27276,12 @@ 1 2 - 365576 + 392978 2 3 - 2293 + 2288 @@ -27333,8 +27310,8 @@ 35 - 9206 - 9207 + 10007 + 10008 35 @@ -27345,11 +27322,11 @@ direct_base_offsets - 338936 + 366396 der_id - 338936 + 366396 offset @@ -27367,7 +27344,7 @@ 1 2 - 338936 + 366396 @@ -27406,8 +27383,8 @@ 35 - 9500 - 9501 + 10301 + 10302 35 @@ -27418,19 +27395,19 @@ virtual_base_offsets - 6639 + 6477 sub - 3665 + 3575 super - 507 + 494 offset - 253 + 247 @@ -27444,22 +27421,22 @@ 1 2 - 2881 + 2811 2 4 - 322 + 314 4 7 - 265 + 258 7 11 - 195 + 191 @@ -27475,17 +27452,17 @@ 1 2 - 3089 + 3013 2 4 - 311 + 303 4 8 - 265 + 258 @@ -27501,47 +27478,47 @@ 1 2 - 80 + 78 2 3 - 46 + 44 3 4 - 57 + 56 4 5 - 92 + 89 5 7 - 34 + 33 8 13 - 46 + 44 13 15 - 46 + 44 15 23 - 46 + 44 24 60 - 46 + 44 194 @@ -27562,27 +27539,27 @@ 1 2 - 288 + 281 2 3 - 80 + 78 4 6 - 34 + 33 6 8 - 46 + 44 8 10 - 46 + 44 14 @@ -27603,7 +27580,7 @@ 2 3 - 34 + 33 4 @@ -27613,22 +27590,22 @@ 5 6 - 23 + 22 6 8 - 23 + 22 8 9 - 34 + 33 10 12 - 23 + 22 14 @@ -27638,22 +27615,22 @@ 18 19 - 23 + 22 26 29 - 23 + 22 30 37 - 23 + 22 96 98 - 23 + 22 @@ -27669,37 +27646,37 @@ 1 2 - 80 + 78 2 3 - 34 + 33 3 4 - 46 + 44 5 7 - 23 + 22 7 10 - 23 + 22 12 14 - 23 + 22 21 29 - 23 + 22 @@ -27709,23 +27686,23 @@ frienddecls - 716121 + 714556 id - 716121 + 714556 type_id - 42446 + 42353 decl_id - 70285 + 70131 location - 6351 + 6337 @@ -27739,7 +27716,7 @@ 1 2 - 716121 + 714556 @@ -27755,7 +27732,7 @@ 1 2 - 716121 + 714556 @@ -27771,7 +27748,7 @@ 1 2 - 716121 + 714556 @@ -27787,47 +27764,47 @@ 1 2 - 6209 + 6196 2 3 - 13231 + 13202 3 6 - 2963 + 2957 6 10 - 3210 + 3203 10 17 - 3281 + 3274 17 24 - 3351 + 3344 25 36 - 3316 + 3309 37 55 - 3246 + 3239 55 103 - 3634 + 3626 @@ -27843,47 +27820,47 @@ 1 2 - 6209 + 6196 2 3 - 13231 + 13202 3 6 - 2963 + 2957 6 10 - 3210 + 3203 10 17 - 3281 + 3274 17 24 - 3351 + 3344 25 36 - 3316 + 3309 37 55 - 3246 + 3239 55 103 - 3634 + 3626 @@ -27899,12 +27876,12 @@ 1 2 - 40999 + 40910 2 13 - 1446 + 1443 @@ -27920,37 +27897,37 @@ 1 2 - 40541 + 40452 2 3 - 5892 + 5879 3 8 - 6033 + 6020 8 15 - 5433 + 5421 15 32 - 5292 + 5281 32 71 - 5292 + 5281 72 160 - 1799 + 1795 @@ -27966,37 +27943,37 @@ 1 2 - 40541 + 40452 2 3 - 5892 + 5879 3 8 - 6033 + 6020 8 15 - 5433 + 5421 15 32 - 5292 + 5281 32 71 - 5292 + 5281 72 160 - 1799 + 1795 @@ -28012,12 +27989,12 @@ 1 2 - 69615 + 69462 2 5 - 670 + 668 @@ -28033,12 +28010,12 @@ 1 2 - 5962 + 5949 2 20106 - 388 + 387 @@ -28054,12 +28031,12 @@ 1 2 - 6209 + 6196 2 1105 - 141 + 140 @@ -28075,7 +28052,7 @@ 1 2 - 5998 + 5985 2 @@ -28090,19 +28067,19 @@ comments - 8774227 + 8760472 id - 8774227 + 8760472 contents - 3340281 + 3335045 location - 8774227 + 8760472 @@ -28116,7 +28093,7 @@ 1 2 - 8774227 + 8760472 @@ -28132,7 +28109,7 @@ 1 2 - 8774227 + 8760472 @@ -28148,17 +28125,17 @@ 1 2 - 3055770 + 3050980 2 7 - 250934 + 250540 7 32784 - 33576 + 33523 @@ -28174,17 +28151,17 @@ 1 2 - 3055770 + 3050980 2 7 - 250934 + 250540 7 32784 - 33576 + 33523 @@ -28200,7 +28177,7 @@ 1 2 - 8774227 + 8760472 @@ -28216,7 +28193,7 @@ 1 2 - 8774227 + 8760472 @@ -28226,15 +28203,15 @@ commentbinding - 3089682 + 3084697 id - 2444793 + 2440363 element - 3013209 + 3008290 @@ -28248,12 +28225,12 @@ 1 2 - 2367854 + 2363490 2 97 - 76938 + 76872 @@ -28269,12 +28246,12 @@ 1 2 - 2936736 + 2931883 2 3 - 76472 + 76406 @@ -28284,15 +28261,15 @@ exprconv - 7022151 + 7022888 converted - 7022151 + 7022888 conversion - 7022151 + 7022888 @@ -28306,7 +28283,7 @@ 1 2 - 7022151 + 7022888 @@ -28322,7 +28299,7 @@ 1 2 - 7022151 + 7022888 @@ -28332,22 +28309,22 @@ compgenerated - 8328406 + 8403048 id - 8328406 + 8403048 synthetic_destructor_call - 144289 + 144109 element - 111741 + 111601 i @@ -28355,7 +28332,7 @@ destructor_call - 129064 + 128903 @@ -28369,17 +28346,17 @@ 1 2 - 92041 + 91926 2 3 - 12987 + 12971 3 18 - 6711 + 6703 @@ -28395,17 +28372,17 @@ 1 2 - 92041 + 91926 2 3 - 12987 + 12971 3 18 - 6711 + 6703 @@ -28573,12 +28550,12 @@ 1 2 - 127025 + 126866 2 26 - 2039 + 2036 @@ -28594,7 +28571,7 @@ 1 2 - 129064 + 128903 @@ -28604,15 +28581,15 @@ namespaces - 12123 + 12113 id - 12123 + 12113 name - 9792 + 9783 @@ -28626,7 +28603,7 @@ 1 2 - 12123 + 12113 @@ -28642,17 +28619,17 @@ 1 2 - 8393 + 8386 2 3 - 466 + 465 3 4 - 932 + 931 @@ -28662,26 +28639,26 @@ namespace_inline - 1398 + 1397 id - 1398 + 1397 namespacembrs - 2382776 + 2383523 parentid - 10258 + 10249 memberid - 2382776 + 2383523 @@ -28695,52 +28672,52 @@ 1 2 - 1865 + 1863 2 4 - 932 + 931 4 5 - 932 + 931 5 7 - 932 + 931 7 8 - 932 + 931 8 12 - 932 + 931 17 30 - 932 + 931 43 47 - 932 + 931 52 143 - 932 + 931 - 255 - 4466 - 932 + 258 + 4469 + 931 @@ -28756,7 +28733,7 @@ 1 2 - 2382776 + 2383523 @@ -28766,19 +28743,19 @@ exprparents - 14183439 + 14184927 expr_id - 14183439 + 14184927 child_index - 14634 + 14636 parent_id - 9438333 + 9439323 @@ -28792,7 +28769,7 @@ 1 2 - 14183439 + 14184927 @@ -28808,7 +28785,7 @@ 1 2 - 14183439 + 14184927 @@ -28824,12 +28801,12 @@ 1 2 - 2815 + 2816 2 3 - 1109 + 1110 3 @@ -28839,7 +28816,7 @@ 4 5 - 6556 + 6557 5 @@ -28854,12 +28831,12 @@ 11 53 - 1109 + 1110 56 354077 - 369 + 370 @@ -28875,12 +28852,12 @@ 1 2 - 2815 + 2816 2 3 - 1109 + 1110 3 @@ -28890,7 +28867,7 @@ 4 5 - 6556 + 6557 5 @@ -28905,12 +28882,12 @@ 11 53 - 1109 + 1110 56 354077 - 369 + 370 @@ -28926,17 +28903,17 @@ 1 2 - 5400574 + 5401140 2 3 - 3700570 + 3700958 3 712 - 337189 + 337224 @@ -28952,17 +28929,17 @@ 1 2 - 5400574 + 5401140 2 3 - 3700570 + 3700958 3 712 - 337189 + 337224 @@ -28972,22 +28949,22 @@ expr_isload - 4981370 + 5206008 expr_id - 4981370 + 5206008 conversionkinds - 4220723 + 4221347 expr_id - 4220723 + 4221347 kind @@ -29005,7 +28982,7 @@ 1 2 - 4220723 + 4221347 @@ -29024,13 +29001,13 @@ 1 - 3252 - 3253 + 3253 + 3254 1 - 13442 - 13443 + 13929 + 13930 1 @@ -29044,8 +29021,8 @@ 1 - 4131133 - 4131134 + 4131269 + 4131270 1 @@ -29056,11 +29033,11 @@ iscall - 2950725 + 2948401 caller - 2950725 + 2948401 kind @@ -29078,7 +29055,7 @@ 1 2 - 2950725 + 2948401 @@ -29102,8 +29079,8 @@ 19 - 145251 - 145252 + 145320 + 145321 19 @@ -29114,15 +29091,15 @@ numtemplatearguments - 396237 + 397942 expr_id - 396237 + 397942 num - 317 + 316 @@ -29136,7 +29113,7 @@ 1 2 - 396237 + 397942 @@ -29170,18 +29147,18 @@ 35 - 179 - 180 + 229 + 230 35 - 227 - 228 + 248 + 249 35 - 10696 - 10697 + 10698 + 10699 35 @@ -29192,15 +29169,15 @@ specialnamequalifyingelements - 466 + 465 id - 466 + 465 name - 466 + 465 @@ -29214,7 +29191,7 @@ 1 2 - 466 + 465 @@ -29230,7 +29207,7 @@ 1 2 - 466 + 465 @@ -29240,23 +29217,23 @@ namequalifiers - 1533233 + 1573473 id - 1533233 + 1573473 qualifiableelement - 1533233 + 1573473 qualifyingelement - 83409 + 101477 location - 305921 + 316751 @@ -29270,7 +29247,7 @@ 1 2 - 1533233 + 1573473 @@ -29286,7 +29263,7 @@ 1 2 - 1533233 + 1573473 @@ -29302,7 +29279,7 @@ 1 2 - 1533233 + 1573473 @@ -29318,7 +29295,7 @@ 1 2 - 1533233 + 1573473 @@ -29334,7 +29311,7 @@ 1 2 - 1533233 + 1573473 @@ -29350,7 +29327,7 @@ 1 2 - 1533233 + 1573473 @@ -29366,27 +29343,27 @@ 1 2 - 46624 + 60842 2 3 - 20590 + 23293 3 - 4 - 5048 + 5 + 9253 - 4 - 7 - 6394 + 5 + 92 + 7652 - 7 - 21095 - 4751 + 96 + 21576 + 435 @@ -29402,27 +29379,27 @@ 1 2 - 46624 + 60842 2 3 - 20590 + 23293 3 - 4 - 5048 + 5 + 9253 - 4 - 7 - 6394 + 5 + 92 + 7652 - 7 - 21095 - 4751 + 96 + 21576 + 435 @@ -29438,27 +29415,22 @@ 1 2 - 50960 + 66478 2 3 - 19501 + 21473 3 - 4 - 4850 - - - 4 - 8 - 6276 + 5 + 8700 - 8 + 5 7095 - 1821 + 4824 @@ -29474,32 +29446,32 @@ 1 2 - 98218 + 104799 2 3 - 27460 + 29462 3 4 - 45872 + 46447 4 6 - 14076 + 14849 6 7 - 98852 + 98946 7 790 - 21441 + 22245 @@ -29515,32 +29487,32 @@ 1 2 - 98218 + 104799 2 3 - 27460 + 29462 3 4 - 45872 + 46447 4 6 - 14076 + 14849 6 7 - 98852 + 98946 7 790 - 21441 + 22245 @@ -29556,22 +29528,22 @@ 1 2 - 134350 + 142803 2 3 - 56820 + 57896 3 4 - 105940 + 106480 4 143 - 8810 + 9570 @@ -29581,15 +29553,15 @@ varbind - 6019333 + 6019964 expr - 6019333 + 6019964 var - 767282 + 767362 @@ -29603,7 +29575,7 @@ 1 2 - 6019333 + 6019964 @@ -29619,52 +29591,52 @@ 1 2 - 126016 + 126030 2 3 - 137650 + 137664 3 4 - 106120 + 106131 4 5 - 85073 + 85082 5 6 - 61189 + 61195 6 7 - 48034 + 48039 7 9 - 59524 + 59530 9 13 - 59175 + 59181 13 28 - 58784 + 58790 28 5137 - 25713 + 25715 @@ -29674,15 +29646,15 @@ funbind - 2953853 + 2951525 expr - 2951042 + 2948717 fun - 533740 + 533151 @@ -29696,12 +29668,12 @@ 1 2 - 2948231 + 2945909 2 3 - 2811 + 2807 @@ -29717,32 +29689,32 @@ 1 2 - 329699 + 329366 2 3 - 82182 + 82059 3 4 - 31855 + 31815 4 7 - 48070 + 48009 7 158 - 40031 + 40001 159 4943 - 1900 + 1898 @@ -29752,11 +29724,11 @@ expr_allocator - 46609 + 46508 expr - 46609 + 46508 func @@ -29778,7 +29750,7 @@ 1 2 - 46609 + 46508 @@ -29794,7 +29766,7 @@ 1 2 - 46609 + 46508 @@ -29878,11 +29850,11 @@ expr_deallocator - 55395 + 55274 expr - 55395 + 55274 func @@ -29904,7 +29876,7 @@ 1 2 - 55395 + 55274 @@ -29920,7 +29892,7 @@ 1 2 - 55395 + 55274 @@ -30025,15 +29997,15 @@ expr_cond_guard - 656221 + 656290 cond - 656221 + 656290 guard - 656221 + 656290 @@ -30047,7 +30019,7 @@ 1 2 - 656221 + 656290 @@ -30063,7 +30035,7 @@ 1 2 - 656221 + 656290 @@ -30073,15 +30045,15 @@ expr_cond_true - 656219 + 656288 cond - 656219 + 656288 true - 656219 + 656288 @@ -30095,7 +30067,7 @@ 1 2 - 656219 + 656288 @@ -30111,7 +30083,7 @@ 1 2 - 656219 + 656288 @@ -30121,15 +30093,15 @@ expr_cond_false - 656221 + 656290 cond - 656221 + 656290 false - 656221 + 656290 @@ -30143,7 +30115,7 @@ 1 2 - 656221 + 656290 @@ -30159,7 +30131,7 @@ 1 2 - 656221 + 656290 @@ -30169,15 +30141,15 @@ values - 10759232 + 10760361 id - 10759232 + 10760361 str - 87862 + 87930 @@ -30191,7 +30163,7 @@ 1 2 - 10759232 + 10760361 @@ -30207,22 +30179,22 @@ 1 2 - 59406 + 59454 2 3 - 12368 + 12390 3 6 - 6921 + 6906 6 56 - 6609 + 6620 57 @@ -30237,15 +30209,15 @@ valuetext - 4757293 + 4757336 id - 4757293 + 4757336 text - 703959 + 703968 @@ -30259,7 +30231,7 @@ 1 2 - 4757293 + 4757336 @@ -30275,22 +30247,22 @@ 1 2 - 527546 + 527549 2 3 - 102496 + 102500 3 7 - 56768 + 56769 7 425884 - 17149 + 17150 @@ -30300,15 +30272,15 @@ valuebind - 11192739 + 11193913 val - 10759232 + 10760361 expr - 11192739 + 11193913 @@ -30322,12 +30294,12 @@ 1 2 - 10348232 + 10349318 2 7 - 410999 + 411043 @@ -30343,7 +30315,7 @@ 1 2 - 11192739 + 11193913 @@ -30353,15 +30325,15 @@ fieldoffsets - 1052983 + 1053094 id - 1052983 + 1053094 byteoffset - 22655 + 22658 bitoffset @@ -30379,7 +30351,7 @@ 1 2 - 1052983 + 1053094 @@ -30395,7 +30367,7 @@ 1 2 - 1052983 + 1053094 @@ -30411,7 +30383,7 @@ 1 2 - 13003 + 13004 2 @@ -30421,7 +30393,7 @@ 3 5 - 1794 + 1795 5 @@ -30457,7 +30429,7 @@ 1 2 - 21977 + 21980 2 @@ -30554,19 +30526,19 @@ bitfield - 20919 + 20887 id - 20919 + 20887 bits - 2614 + 2610 declared_bits - 2614 + 2610 @@ -30580,7 +30552,7 @@ 1 2 - 20919 + 20887 @@ -30596,7 +30568,7 @@ 1 2 - 20919 + 20887 @@ -30612,42 +30584,42 @@ 1 2 - 732 + 731 2 3 - 627 + 626 3 4 - 209 + 208 4 5 - 209 + 208 5 6 - 209 + 208 6 8 - 209 + 208 8 11 - 209 + 208 12 115 - 209 + 208 @@ -30663,7 +30635,7 @@ 1 2 - 2614 + 2610 @@ -30679,42 +30651,42 @@ 1 2 - 732 + 731 2 3 - 627 + 626 3 4 - 209 + 208 4 5 - 209 + 208 5 6 - 209 + 208 6 8 - 209 + 208 8 11 - 209 + 208 12 115 - 209 + 208 @@ -30730,7 +30702,7 @@ 1 2 - 2614 + 2610 @@ -30740,23 +30712,23 @@ initialisers - 1699706 + 1698635 init - 1699706 + 1698635 var - 722379 + 722109 expr - 1699706 + 1698635 location - 391099 + 390823 @@ -30770,7 +30742,7 @@ 1 2 - 1699706 + 1698635 @@ -30786,7 +30758,7 @@ 1 2 - 1699706 + 1698635 @@ -30802,7 +30774,7 @@ 1 2 - 1699706 + 1698635 @@ -30818,17 +30790,17 @@ 1 2 - 634183 + 633984 2 16 - 31492 + 31466 16 25 - 56703 + 56657 @@ -30844,17 +30816,17 @@ 1 2 - 634183 + 633984 2 16 - 31492 + 31466 16 25 - 56703 + 56657 @@ -30870,7 +30842,7 @@ 1 2 - 722373 + 722102 2 @@ -30891,7 +30863,7 @@ 1 2 - 1699706 + 1698635 @@ -30907,7 +30879,7 @@ 1 2 - 1699706 + 1698635 @@ -30923,7 +30895,7 @@ 1 2 - 1699706 + 1698635 @@ -30939,22 +30911,22 @@ 1 2 - 318718 + 318451 2 3 - 23864 + 23851 3 15 - 30667 + 30680 15 111551 - 17848 + 17839 @@ -30970,17 +30942,17 @@ 1 2 - 341406 + 341120 2 4 - 35639 + 35642 4 12811 - 14053 + 14060 @@ -30996,22 +30968,22 @@ 1 2 - 318718 + 318451 2 3 - 23864 + 23851 3 15 - 30667 + 30680 15 111551 - 17848 + 17839 @@ -31021,26 +30993,26 @@ braced_initialisers - 41634 + 41638 init - 41634 + 41638 expr_ancestor - 133360 + 133194 exp - 133360 + 133194 ancestor - 92932 + 92816 @@ -31054,7 +31026,7 @@ 1 2 - 133360 + 133194 @@ -31070,17 +31042,17 @@ 1 2 - 67115 + 67032 2 3 - 18432 + 18409 3 8 - 7127 + 7118 8 @@ -31095,11 +31067,11 @@ exprs - 18357636 + 18359562 id - 18357636 + 18359562 kind @@ -31107,7 +31079,7 @@ location - 8474327 + 8475216 @@ -31121,7 +31093,7 @@ 1 2 - 18357636 + 18359562 @@ -31137,7 +31109,7 @@ 1 2 - 18357636 + 18359562 @@ -31315,22 +31287,22 @@ 1 2 - 7133647 + 7134396 2 3 - 661870 + 661940 3 18 - 637071 + 637137 18 71656 - 41738 + 41742 @@ -31346,17 +31318,17 @@ 1 2 - 7239544 + 7240303 2 3 - 617153 + 617218 3 32 - 617629 + 617694 @@ -31366,19 +31338,19 @@ expr_types - 18412556 + 18486992 id - 18357636 + 18355648 typeid - 881000 + 1244631 value_category - 59 + 33 @@ -31392,12 +31364,12 @@ 1 2 - 18302715 + 18224304 2 3 - 54920 + 131344 @@ -31413,7 +31385,7 @@ 1 2 - 18357636 + 18355648 @@ -31429,42 +31401,42 @@ 1 2 - 316771 + 450516 2 3 - 172204 + 258426 3 4 - 69372 + 103287 4 5 - 68284 + 84777 5 - 7 - 69729 + 8 + 111125 - 7 - 12 - 69828 + 8 + 14 + 99171 - 12 - 35 - 66898 + 14 + 42 + 94099 - 35 - 73134 - 47911 + 42 + 125383 + 43226 @@ -31480,17 +31452,17 @@ 1 2 - 757935 + 1075930 2 3 - 111840 + 158231 3 4 - 11225 + 10469 @@ -31504,19 +31476,19 @@ 12 - 7160 - 7161 - 19 + 14895 + 14896 + 11 - 235356 - 235357 - 19 + 372156 + 372157 + 11 - 684721 - 684722 - 19 + 1245257 + 1245258 + 11 @@ -31530,19 +31502,19 @@ 12 - 1406 - 1407 - 19 + 2722 + 2723 + 11 - 11861 - 11862 - 19 + 30879 + 30880 + 11 - 38015 - 38016 - 19 + 93013 + 93014 + 11 @@ -31552,15 +31524,15 @@ new_allocated_type - 47668 + 47564 expr - 47668 + 47564 type_id - 28191 + 28130 @@ -31574,7 +31546,7 @@ 1 2 - 47668 + 47564 @@ -31590,17 +31562,17 @@ 1 2 - 11784 + 11759 2 3 - 14925 + 14892 3 19 - 1481 + 1478 @@ -31610,15 +31582,15 @@ new_array_allocated_type - 5103 + 5099 expr - 5103 + 5099 type_id - 2196 + 2194 @@ -31632,7 +31604,7 @@ 1 2 - 5103 + 5099 @@ -31653,7 +31625,7 @@ 2 3 - 1944 + 1943 3 @@ -32695,15 +32667,15 @@ condition_decl_bind - 42427 + 42374 expr - 42427 + 42374 decl - 42427 + 42374 @@ -32717,7 +32689,7 @@ 1 2 - 42427 + 42374 @@ -32733,7 +32705,7 @@ 1 2 - 42427 + 42374 @@ -32743,15 +32715,15 @@ typeid_bind - 36483 + 36403 expr - 36483 + 36403 type_id - 16407 + 16371 @@ -32765,7 +32737,7 @@ 1 2 - 36483 + 36403 @@ -32781,12 +32753,12 @@ 1 2 - 15983 + 15948 3 328 - 423 + 422 @@ -32796,15 +32768,15 @@ uuidof_bind - 20120 + 20103 expr - 20120 + 20103 type_id - 19925 + 19908 @@ -32818,7 +32790,7 @@ 1 2 - 20120 + 20103 @@ -32834,7 +32806,7 @@ 1 2 - 19761 + 19745 2 @@ -32849,11 +32821,11 @@ sizeof_bind - 198861 + 198882 expr - 198861 + 198882 type_id @@ -32871,7 +32843,7 @@ 1 2 - 198861 + 198882 @@ -32892,7 +32864,7 @@ 2 3 - 2329 + 2330 3 @@ -32980,19 +32952,19 @@ lambdas - 21449 + 21431 expr - 21449 + 21431 default_capture - 466 + 465 has_explicit_return_type - 466 + 465 @@ -33006,7 +32978,7 @@ 1 2 - 21449 + 21431 @@ -33022,7 +32994,7 @@ 1 2 - 21449 + 21431 @@ -33038,7 +33010,7 @@ 46 47 - 466 + 465 @@ -33054,7 +33026,7 @@ 1 2 - 466 + 465 @@ -33070,7 +33042,7 @@ 46 47 - 466 + 465 @@ -33086,7 +33058,7 @@ 1 2 - 466 + 465 @@ -33096,35 +33068,35 @@ lambda_capture - 27977 + 27953 id - 27977 + 27953 lambda - 20517 + 20499 index - 932 + 931 field - 27977 + 27953 captured_by_reference - 466 + 465 is_implicit - 466 + 465 location - 2797 + 2795 @@ -33138,7 +33110,7 @@ 1 2 - 27977 + 27953 @@ -33154,7 +33126,7 @@ 1 2 - 27977 + 27953 @@ -33170,7 +33142,7 @@ 1 2 - 27977 + 27953 @@ -33186,7 +33158,7 @@ 1 2 - 27977 + 27953 @@ -33202,7 +33174,7 @@ 1 2 - 27977 + 27953 @@ -33218,7 +33190,7 @@ 1 2 - 27977 + 27953 @@ -33234,12 +33206,12 @@ 1 2 - 13056 + 13045 2 3 - 7460 + 7454 @@ -33255,12 +33227,12 @@ 1 2 - 13056 + 13045 2 3 - 7460 + 7454 @@ -33276,12 +33248,12 @@ 1 2 - 13056 + 13045 2 3 - 7460 + 7454 @@ -33297,7 +33269,7 @@ 1 2 - 20517 + 20499 @@ -33313,7 +33285,7 @@ 1 2 - 20517 + 20499 @@ -33329,12 +33301,12 @@ 1 2 - 13056 + 13045 2 3 - 7460 + 7454 @@ -33350,12 +33322,12 @@ 16 17 - 466 + 465 44 45 - 466 + 465 @@ -33371,12 +33343,12 @@ 16 17 - 466 + 465 44 45 - 466 + 465 @@ -33392,12 +33364,12 @@ 16 17 - 466 + 465 44 45 - 466 + 465 @@ -33413,7 +33385,7 @@ 1 2 - 932 + 931 @@ -33429,7 +33401,7 @@ 1 2 - 932 + 931 @@ -33445,12 +33417,12 @@ 2 3 - 466 + 465 4 5 - 466 + 465 @@ -33466,7 +33438,7 @@ 1 2 - 27977 + 27953 @@ -33482,7 +33454,7 @@ 1 2 - 27977 + 27953 @@ -33498,7 +33470,7 @@ 1 2 - 27977 + 27953 @@ -33514,7 +33486,7 @@ 1 2 - 27977 + 27953 @@ -33530,7 +33502,7 @@ 1 2 - 27977 + 27953 @@ -33546,7 +33518,7 @@ 1 2 - 27977 + 27953 @@ -33562,7 +33534,7 @@ 60 61 - 466 + 465 @@ -33578,7 +33550,7 @@ 44 45 - 466 + 465 @@ -33594,7 +33566,7 @@ 2 3 - 466 + 465 @@ -33610,7 +33582,7 @@ 60 61 - 466 + 465 @@ -33626,7 +33598,7 @@ 1 2 - 466 + 465 @@ -33642,7 +33614,7 @@ 6 7 - 466 + 465 @@ -33658,7 +33630,7 @@ 60 61 - 466 + 465 @@ -33674,7 +33646,7 @@ 44 45 - 466 + 465 @@ -33690,7 +33662,7 @@ 2 3 - 466 + 465 @@ -33706,7 +33678,7 @@ 60 61 - 466 + 465 @@ -33722,7 +33694,7 @@ 1 2 - 466 + 465 @@ -33738,7 +33710,7 @@ 6 7 - 466 + 465 @@ -33754,12 +33726,12 @@ 8 9 - 1865 + 1863 14 15 - 932 + 931 @@ -33775,12 +33747,12 @@ 8 9 - 1865 + 1863 14 15 - 932 + 931 @@ -33796,7 +33768,7 @@ 1 2 - 2797 + 2795 @@ -33812,12 +33784,12 @@ 8 9 - 1865 + 1863 14 15 - 932 + 931 @@ -33833,7 +33805,7 @@ 1 2 - 2797 + 2795 @@ -33849,7 +33821,7 @@ 1 2 - 2797 + 2795 @@ -33975,19 +33947,19 @@ stmts - 4653633 + 4646337 id - 4653633 + 4646337 kind - 1987 + 1984 location - 2285081 + 2281499 @@ -34001,7 +33973,7 @@ 1 2 - 4653633 + 4646337 @@ -34017,7 +33989,7 @@ 1 2 - 4653633 + 4646337 @@ -34245,22 +34217,22 @@ 1 2 - 1890636 + 1887672 2 4 - 175831 + 175556 4 12 - 176041 + 175765 12 687 - 42572 + 42505 @@ -34276,12 +34248,12 @@ 1 2 - 2227865 + 2224372 2 8 - 57215 + 57126 @@ -34435,15 +34407,15 @@ if_then - 724735 + 724811 if_stmt - 724735 + 724811 then_id - 724735 + 724811 @@ -34457,7 +34429,7 @@ 1 2 - 724735 + 724811 @@ -34473,7 +34445,7 @@ 1 2 - 724735 + 724811 @@ -34483,15 +34455,15 @@ if_else - 184369 + 184389 if_stmt - 184369 + 184389 else_id - 184369 + 184389 @@ -34505,7 +34477,7 @@ 1 2 - 184369 + 184389 @@ -34521,7 +34493,7 @@ 1 2 - 184369 + 184389 @@ -34579,15 +34551,15 @@ constexpr_if_then - 52508 + 52426 constexpr_if_stmt - 52508 + 52426 then_id - 52508 + 52426 @@ -34601,7 +34573,7 @@ 1 2 - 52508 + 52426 @@ -34617,7 +34589,7 @@ 1 2 - 52508 + 52426 @@ -34627,15 +34599,15 @@ constexpr_if_else - 30856 + 30808 constexpr_if_stmt - 30856 + 30808 else_id - 30856 + 30808 @@ -34649,7 +34621,7 @@ 1 2 - 30856 + 30808 @@ -34665,7 +34637,7 @@ 1 2 - 30856 + 30808 @@ -34675,15 +34647,15 @@ while_body - 30110 + 29372 while_stmt - 30110 + 29372 body_id - 30110 + 29372 @@ -34697,7 +34669,7 @@ 1 2 - 30110 + 29372 @@ -34713,7 +34685,7 @@ 1 2 - 30110 + 29372 @@ -34723,15 +34695,15 @@ do_body - 148632 + 148648 do_stmt - 148632 + 148648 body_id - 148632 + 148648 @@ -34745,7 +34717,7 @@ 1 2 - 148632 + 148648 @@ -34761,7 +34733,7 @@ 1 2 - 148632 + 148648 @@ -34819,19 +34791,19 @@ switch_case - 209643 + 209381 switch_stmt - 11225 + 11211 index - 4870 + 4864 case_id - 209643 + 209381 @@ -34850,52 +34822,52 @@ 3 4 - 2494 + 2491 4 5 - 1821 + 1819 5 6 - 1088 + 1087 6 8 - 1029 + 1028 8 9 - 554 + 553 9 10 - 1069 + 1067 10 12 - 1029 + 1028 12 25 - 871 + 870 30 152 - 851 + 850 181 247 - 356 + 355 @@ -34916,52 +34888,52 @@ 3 4 - 2494 + 2491 4 5 - 1821 + 1819 5 6 - 1088 + 1087 6 8 - 1029 + 1028 8 9 - 554 + 553 9 10 - 1069 + 1067 10 12 - 1029 + 1028 12 25 - 871 + 870 30 152 - 851 + 850 181 247 - 356 + 355 @@ -34977,7 +34949,7 @@ 14 15 - 1286 + 1285 18 @@ -34987,7 +34959,7 @@ 32 33 - 2098 + 2095 33 @@ -34997,7 +34969,7 @@ 66 292 - 376 + 375 346 @@ -35018,7 +34990,7 @@ 14 15 - 1286 + 1285 18 @@ -35028,7 +35000,7 @@ 32 33 - 2098 + 2095 33 @@ -35038,7 +35010,7 @@ 66 292 - 376 + 375 346 @@ -35059,7 +35031,7 @@ 1 2 - 209643 + 209381 @@ -35075,7 +35047,7 @@ 1 2 - 209643 + 209381 @@ -35085,15 +35057,15 @@ switch_body - 20753 + 20755 switch_stmt - 20753 + 20755 body_id - 20753 + 20755 @@ -35107,7 +35079,7 @@ 1 2 - 20753 + 20755 @@ -35123,7 +35095,7 @@ 1 2 - 20753 + 20755 @@ -35133,15 +35105,15 @@ for_initialization - 53317 + 53322 for_stmt - 53317 + 53322 init_id - 53317 + 53322 @@ -35155,7 +35127,7 @@ 1 2 - 53317 + 53322 @@ -35171,7 +35143,7 @@ 1 2 - 53317 + 53322 @@ -35181,15 +35153,15 @@ for_condition - 55578 + 55583 for_stmt - 55578 + 55583 condition_id - 55578 + 55583 @@ -35203,7 +35175,7 @@ 1 2 - 55578 + 55583 @@ -35219,7 +35191,7 @@ 1 2 - 55578 + 55583 @@ -35229,15 +35201,15 @@ for_update - 53419 + 53425 for_stmt - 53419 + 53425 update_id - 53419 + 53425 @@ -35251,7 +35223,7 @@ 1 2 - 53419 + 53425 @@ -35267,7 +35239,7 @@ 1 2 - 53419 + 53425 @@ -35277,15 +35249,15 @@ for_body - 61456 + 61463 for_stmt - 61456 + 61463 body_id - 61456 + 61463 @@ -35299,7 +35271,7 @@ 1 2 - 61456 + 61463 @@ -35315,7 +35287,7 @@ 1 2 - 61456 + 61463 @@ -35325,19 +35297,19 @@ stmtparents - 4056493 + 4053171 id - 4056493 + 4053171 index - 12221 + 12211 parent - 1721306 + 1719896 @@ -35351,7 +35323,7 @@ 1 2 - 4056493 + 4053171 @@ -35367,7 +35339,7 @@ 1 2 - 4056493 + 4053171 @@ -35383,12 +35355,12 @@ 1 2 - 4015 + 4011 2 3 - 1000 + 999 3 @@ -35398,12 +35370,12 @@ 4 5 - 1554 + 1553 7 8 - 1019 + 1018 8 @@ -35413,7 +35385,7 @@ 12 29 - 1076 + 1075 29 @@ -35423,12 +35395,12 @@ 41 77 - 925 + 924 77 196965 - 698 + 697 @@ -35444,12 +35416,12 @@ 1 2 - 4015 + 4011 2 3 - 1000 + 999 3 @@ -35459,12 +35431,12 @@ 4 5 - 1554 + 1553 7 8 - 1019 + 1018 8 @@ -35474,7 +35446,7 @@ 12 29 - 1076 + 1075 29 @@ -35484,12 +35456,12 @@ 41 77 - 925 + 924 77 196965 - 698 + 697 @@ -35505,32 +35477,32 @@ 1 2 - 988422 + 987613 2 3 - 373339 + 373033 3 4 - 105849 + 105762 4 6 - 111349 + 111258 6 17 - 129972 + 129865 17 1943 - 12372 + 12362 @@ -35546,32 +35518,32 @@ 1 2 - 988422 + 987613 2 3 - 373339 + 373033 3 4 - 105849 + 105762 4 6 - 111349 + 111258 6 17 - 129972 + 129865 17 1943 - 12372 + 12362 @@ -35581,22 +35553,22 @@ ishandler - 65314 + 65232 block - 65314 + 65232 stmt_decl_bind - 585129 + 585093 stmt - 545014 + 544980 num @@ -35604,7 +35576,7 @@ decl - 585024 + 584988 @@ -35618,12 +35590,12 @@ 1 2 - 524152 + 524119 2 19 - 20861 + 20860 @@ -35639,12 +35611,12 @@ 1 2 - 524152 + 524119 2 19 - 20861 + 20860 @@ -35842,7 +35814,7 @@ 1 2 - 584986 + 584950 2 @@ -35863,7 +35835,7 @@ 1 2 - 585024 + 584988 @@ -35873,11 +35845,11 @@ stmt_decl_entry_bind - 527587 + 527554 stmt - 487773 + 487743 num @@ -35885,7 +35857,7 @@ decl_entry - 527528 + 527495 @@ -35899,12 +35871,12 @@ 1 2 - 467176 + 467147 2 19 - 20597 + 20596 @@ -35920,12 +35892,12 @@ 1 2 - 467176 + 467147 2 19 - 20597 + 20596 @@ -36123,7 +36095,7 @@ 1 2 - 527507 + 527474 3 @@ -36144,7 +36116,7 @@ 1 2 - 527528 + 527495 @@ -36154,15 +36126,15 @@ blockscope - 1415210 + 1413994 block - 1415210 + 1413994 enclosing - 1300035 + 1298917 @@ -36176,7 +36148,7 @@ 1 2 - 1415210 + 1413994 @@ -36192,12 +36164,12 @@ 1 2 - 1234753 + 1233692 2 13 - 65281 + 65225 @@ -36207,19 +36179,19 @@ jumpinfo - 254043 + 254070 id - 254043 + 254070 str - 21156 + 21158 target - 53056 + 53061 @@ -36233,7 +36205,7 @@ 1 2 - 254043 + 254070 @@ -36249,7 +36221,7 @@ 1 2 - 254043 + 254070 @@ -36265,7 +36237,7 @@ 2 3 - 9877 + 9878 3 @@ -36290,7 +36262,7 @@ 10 22 - 1620 + 1621 22 @@ -36311,7 +36283,7 @@ 1 2 - 16720 + 16722 2 @@ -36321,7 +36293,7 @@ 3 10 - 1687 + 1688 10 @@ -36347,22 +36319,22 @@ 2 3 - 26433 + 26436 3 4 - 12899 + 12901 4 5 - 5343 + 5344 5 8 - 4691 + 4692 8 @@ -36383,7 +36355,7 @@ 1 2 - 53056 + 53061 @@ -36393,19 +36365,19 @@ preprocdirects - 4427698 + 4420757 id - 4427698 + 4420757 kind - 1045 + 1044 location - 4425187 + 4418250 @@ -36419,7 +36391,7 @@ 1 2 - 4427698 + 4420757 @@ -36435,7 +36407,7 @@ 1 2 - 4427698 + 4420757 @@ -36573,7 +36545,7 @@ 1 2 - 4425083 + 4418146 25 @@ -36594,7 +36566,7 @@ 1 2 - 4425187 + 4418250 @@ -36604,15 +36576,15 @@ preprocpair - 1429665 + 1428437 begin - 1195584 + 1194557 elseelifend - 1429665 + 1428437 @@ -36626,17 +36598,17 @@ 1 2 - 977357 + 976517 2 3 - 207968 + 207789 3 11 - 10258 + 10249 @@ -36652,7 +36624,7 @@ 1 2 - 1429665 + 1428437 @@ -36662,41 +36634,41 @@ preproctrue - 766125 + 765467 branch - 766125 + 765467 preprocfalse - 331070 + 330786 branch - 331070 + 330786 preproctext - 3569772 + 3564176 id - 3569772 + 3564176 head - 2589465 + 2585406 body - 1514601 + 1512226 @@ -36710,7 +36682,7 @@ 1 2 - 3569772 + 3564176 @@ -36726,7 +36698,7 @@ 1 2 - 3569772 + 3564176 @@ -36742,12 +36714,12 @@ 1 2 - 2442503 + 2438674 2 740 - 146962 + 146731 @@ -36763,12 +36735,12 @@ 1 2 - 2527333 + 2523371 2 5 - 62132 + 62034 @@ -36784,17 +36756,17 @@ 1 2 - 1371090 + 1368941 2 6 - 113595 + 113417 6 11572 - 29915 + 29868 @@ -36810,17 +36782,17 @@ 1 2 - 1374124 + 1371969 2 7 - 113908 + 113730 7 2959 - 26568 + 26526 @@ -36830,15 +36802,15 @@ includes - 312885 + 312616 id - 312885 + 312616 included - 117040 + 116939 @@ -36852,7 +36824,7 @@ 1 2 - 312885 + 312616 @@ -36868,32 +36840,32 @@ 1 2 - 61084 + 61032 2 3 - 21915 + 21897 3 4 - 12590 + 12579 4 6 - 10258 + 10249 6 14 - 8859 + 8852 14 47 - 2331 + 2329 @@ -36951,11 +36923,11 @@ link_parent - 38563300 + 39330305 element - 4879124 + 4985174 link_target @@ -36973,17 +36945,17 @@ 1 2 - 648905 + 672132 2 9 - 25933 + 26158 9 10 - 4204285 + 4286883 @@ -37002,48 +36974,48 @@ 35 - 119334 - 119335 + 121945 + 121946 35 - 119438 - 119439 + 122057 + 122058 35 - 119533 - 119534 + 122156 + 122157 35 - 119568 - 119569 + 122187 + 122188 35 - 119576 - 119577 + 122199 + 122200 35 - 119601 - 119602 + 122216 + 122217 35 - 121457 - 121458 + 124216 + 124217 35 - 126036 - 126037 + 128870 + 128871 35 - 128398 - 128399 + 131274 + 131275 35 diff --git a/cpp/ql/lib/upgrades/dbe9c8eb5fc6f54b7ae08c7317d0795b24961564/old.dbscheme b/cpp/ql/lib/upgrades/dbe9c8eb5fc6f54b7ae08c7317d0795b24961564/old.dbscheme new file mode 100644 index 000000000000..dbe9c8eb5fc6 --- /dev/null +++ b/cpp/ql/lib/upgrades/dbe9c8eb5fc6f54b7ae08c7317d0795b24961564/old.dbscheme @@ -0,0 +1,2213 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +@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 +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +; + +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_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +for_initialization( + unique int for_stmt: @stmt_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + unique 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/dbe9c8eb5fc6f54b7ae08c7317d0795b24961564/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/dbe9c8eb5fc6f54b7ae08c7317d0795b24961564/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..5b388693c66d --- /dev/null +++ b/cpp/ql/lib/upgrades/dbe9c8eb5fc6f54b7ae08c7317d0795b24961564/semmlecode.cpp.dbscheme @@ -0,0 +1,2221 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +@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 +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +; + +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_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +for_initialization( + unique int for_stmt: @stmt_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + unique 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/dbe9c8eb5fc6f54b7ae08c7317d0795b24961564/upgrade.properties b/cpp/ql/lib/upgrades/dbe9c8eb5fc6f54b7ae08c7317d0795b24961564/upgrade.properties new file mode 100644 index 000000000000..6100434c49e8 --- /dev/null +++ b/cpp/ql/lib/upgrades/dbe9c8eb5fc6f54b7ae08c7317d0795b24961564/upgrade.properties @@ -0,0 +1,2 @@ +description: Introduce new floating-point types from C23 and C++23 +compatibility: full diff --git a/cpp/ql/test/examples/expressions/PrintAST.expected b/cpp/ql/test/examples/expressions/PrintAST.expected index 8de5ea5b9b0f..511a4d55c154 100644 --- a/cpp/ql/test/examples/expressions/PrintAST.expected +++ b/cpp/ql/test/examples/expressions/PrintAST.expected @@ -763,7 +763,7 @@ StaticMemberAccess.cpp: # 7| ValueCategory = lvalue # 7| getRValue(): [VariableAccess] i # 7| Type = [IntType] int -# 7| ValueCategory = prvalue +# 7| ValueCategory = prvalue(load) # 7| getQualifier(): [VariableAccess] xref # 7| Type = [LValueReferenceType] X & # 7| ValueCategory = prvalue(load) @@ -1394,7 +1394,7 @@ union_etc.cpp: # 26| ValueCategory = lvalue # 26| getRValue(): [AssignExpr] ... = ... # 26| Type = [IntType] int -# 26| ValueCategory = prvalue +# 26| ValueCategory = prvalue(load) # 26| getLValue(): [ValueFieldAccess] e # 26| Type = [IntType] int # 26| ValueCategory = lvalue @@ -1406,7 +1406,7 @@ union_etc.cpp: # 26| ValueCategory = lvalue # 26| getRValue(): [AssignExpr] ... = ... # 26| Type = [IntType] int -# 26| ValueCategory = prvalue +# 26| ValueCategory = prvalue(load) # 26| getLValue(): [ValueFieldAccess] i # 26| Type = [IntType] int # 26| ValueCategory = lvalue diff --git a/cpp/ql/test/experimental/library-tests/rangeanalysis/signanalysis/SignAnalysis.expected b/cpp/ql/test/experimental/library-tests/rangeanalysis/signanalysis/SignAnalysis.expected index 438bc9173f22..7a73b0dabebc 100644 --- a/cpp/ql/test/experimental/library-tests/rangeanalysis/signanalysis/SignAnalysis.expected +++ b/cpp/ql/test/experimental/library-tests/rangeanalysis/signanalysis/SignAnalysis.expected @@ -675,6 +675,7 @@ | test.c:398:9:398:22 | CopyValue: ... , ... | positive strictlyPositive | | test.c:398:14:398:14 | Load: y | positive strictlyPositive | | test.c:398:14:398:19 | Add: ... += ... | positive strictlyPositive | +| test.c:398:14:398:19 | Load: ... += ... | positive strictlyPositive | | test.c:398:14:398:19 | Store: ... += ... | positive strictlyPositive | | test.c:398:19:398:19 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:398:22:398:22 | Load: y | positive strictlyPositive | diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected index 7f86530745f1..47c32f67e4b3 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected @@ -35,9 +35,7 @@ edges | test.cpp:136:9:136:16 | ... += ... | test.cpp:138:13:138:15 | arr | | test.cpp:143:18:143:21 | asdf | test.cpp:134:25:134:27 | arr | | test.cpp:143:18:143:21 | asdf | test.cpp:143:18:143:21 | asdf | -| test.cpp:146:26:146:26 | p indirection | test.cpp:148:6:148:9 | * ... | -| test.cpp:146:26:146:26 | p indirection | test.cpp:149:6:149:9 | * ... | -| test.cpp:146:26:146:26 | p indirection | test.cpp:150:6:150:9 | * ... | +| test.cpp:146:26:146:26 | p indirection | test.cpp:147:4:147:9 | -- ... | | test.cpp:156:12:156:14 | buf | test.cpp:156:12:156:18 | ... + ... | | test.cpp:156:12:156:18 | ... + ... | test.cpp:158:17:158:18 | & ... indirection | | test.cpp:158:17:158:18 | & ... indirection | test.cpp:146:26:146:26 | p indirection | @@ -124,9 +122,7 @@ nodes | test.cpp:143:18:143:21 | asdf | semmle.label | asdf | | test.cpp:143:18:143:21 | asdf | semmle.label | asdf | | test.cpp:146:26:146:26 | p indirection | semmle.label | p indirection | -| test.cpp:148:6:148:9 | * ... | semmle.label | * ... | -| test.cpp:149:6:149:9 | * ... | semmle.label | * ... | -| test.cpp:150:6:150:9 | * ... | semmle.label | * ... | +| test.cpp:147:4:147:9 | -- ... | semmle.label | -- ... | | test.cpp:156:12:156:14 | buf | semmle.label | buf | | test.cpp:156:12:156:18 | ... + ... | semmle.label | ... + ... | | test.cpp:158:17:158:18 | & ... indirection | semmle.label | & ... indirection | @@ -179,9 +175,7 @@ subpaths | test.cpp:88:5:88:27 | PointerAdd: access to array | test.cpp:85:34:85:36 | buf | test.cpp:88:5:88:27 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:15:9:15:11 | buf | buf | test.cpp:88:5:88:31 | Store: ... = ... | write | | test.cpp:128:9:128:14 | PointerAdd: access to array | test.cpp:128:9:128:11 | arr | test.cpp:128:9:128:14 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:125:11:125:13 | arr | arr | test.cpp:128:9:128:18 | Store: ... = ... | write | | test.cpp:136:9:136:16 | PointerAdd: ... += ... | test.cpp:143:18:143:21 | asdf | test.cpp:138:13:138:15 | arr | This pointer arithmetic may have an off-by-2 error allowing it to overrun $@ at this $@. | test.cpp:142:10:142:13 | asdf | asdf | test.cpp:138:12:138:15 | Load: * ... | read | -| test.cpp:156:12:156:18 | PointerAdd: ... + ... | test.cpp:156:12:156:14 | buf | test.cpp:148:6:148:9 | * ... | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:154:7:154:9 | buf | buf | test.cpp:147:3:147:13 | Store: ... = ... | write | -| test.cpp:156:12:156:18 | PointerAdd: ... + ... | test.cpp:156:12:156:14 | buf | test.cpp:149:6:149:9 | * ... | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:154:7:154:9 | buf | buf | test.cpp:148:3:148:13 | Store: ... = ... | write | -| test.cpp:156:12:156:18 | PointerAdd: ... + ... | test.cpp:156:12:156:14 | buf | test.cpp:150:6:150:9 | * ... | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:154:7:154:9 | buf | buf | test.cpp:149:3:149:13 | Store: ... = ... | write | +| test.cpp:156:12:156:18 | PointerAdd: ... + ... | test.cpp:156:12:156:14 | buf | test.cpp:147:4:147:9 | -- ... | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:154:7:154:9 | buf | buf | test.cpp:147:3:147:13 | Store: ... = ... | write | | test.cpp:221:5:221:11 | PointerAdd: access to array | test.cpp:218:23:218:28 | buffer | test.cpp:221:5:221:11 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:217:19:217:24 | buffer | buffer | test.cpp:221:5:221:15 | Store: ... = ... | write | | test.cpp:232:5:232:10 | PointerAdd: access to array | test.cpp:229:25:229:29 | array | test.cpp:232:5:232:10 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:228:10:228:14 | array | array | test.cpp:232:5:232:19 | Store: ... = ... | write | | test.cpp:261:27:261:30 | PointerAdd: access to array | test.cpp:286:19:286:25 | buffer2 | test.cpp:261:27:261:30 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:285:19:285:25 | buffer2 | buffer2 | test.cpp:261:27:261:30 | Load: access to array | read | diff --git a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang421.c b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang421.c index 43e489fdffb8..3c772b3be229 100644 --- a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang421.c +++ b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang421.c @@ -1,2 +1,2 @@ static int clang421 = __has_feature(attribute_deprecated_with_message); -// semmle-extractor-options: --gnu_version 40201 --edg --clang +// semmle-extractor-options: --gnu_version 40201 --clang_version 30400 diff --git a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang450.c b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang450.c index 80b0a5a8711c..8c43f17d7183 100644 --- a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang450.c +++ b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang450.c @@ -1,2 +1,2 @@ static int clang450 = __has_feature(attribute_deprecated_with_message); -// semmle-extractor-options: --gnu_version 40500 --edg --clang +// semmle-extractor-options: --gnu_version 40500 --clang_version 30500 diff --git a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc421.c b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc421.c index 25ca6a4f694c..7f4e4f4d380b 100644 --- a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc421.c +++ b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc421.c @@ -1,2 +1,2 @@ static int gcc421 = __has_feature(attribute_deprecated_with_message); -// semmle-extractor-options: --gnu_version 40201 --edg --clang +// semmle-extractor-options: --gnu_version 40201 diff --git a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc450.c b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc450.c index e10dd05dfc85..a49c88651638 100644 --- a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc450.c +++ b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc450.c @@ -1,2 +1,2 @@ static int gcc450 = __has_feature(attribute_deprecated_with_message); -// semmle-extractor-options: --gnu_version 40500 --edg --clang +// semmle-extractor-options: --gnu_version 40500 diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected index 0f39caf8a712..b7b2a8eab909 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected @@ -14,6 +14,7 @@ localCallNodes postIsNotPre postHasUniquePre uniquePostUpdate +| example.c:24:13:24:18 | coords indirection | Node has multiple PostUpdateNodes. | postIsInSameCallable reverseRead argHasPostUpdate diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/map.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/map.cpp index 0390927d790a..404d6627b27f 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/map.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/map.cpp @@ -165,9 +165,9 @@ void test_map() // array-like access std::map m10, m11, m12, m13; sink(m10["abc"] = "def"); - sink(m11["abc"] = source()); // $ ast ir=168:7 ir=168:20 + sink(m11["abc"] = source()); // $ ast,ir sink(m12.at("abc") = "def"); - sink(m13.at("abc") = source()); // $ ast ir=170:7 ir=170:23 + sink(m13.at("abc") = source()); // $ ast,ir sink(m10["abc"]); sink(m11["abc"]); // $ ast,ir sink(m12["abc"]); @@ -317,9 +317,9 @@ void test_unordered_map() // array-like access std::unordered_map m10, m11, m12, m13; sink(m10["abc"] = "def"); - sink(m11["abc"] = source()); // $ ast ir=320:7 ir=320:20 + sink(m11["abc"] = source()); // $ ast,ir sink(m12.at("abc") = "def"); - sink(m13.at("abc") = source()); // $ ast ir=322:7 ir=322:23 + sink(m13.at("abc") = source()); // $ ast,ir sink(m10["abc"]); sink(m11["abc"]); // $ ast,ir sink(m12["abc"]); diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp index fd34adbec464..2df0fc85bb6f 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp @@ -13,8 +13,8 @@ void arithAssignments(int source1, int clean1) { source1++; ++source1; source1 += 1; - sink(source1); // $ ast ir=12:13 ir=12:22 - sink(++source1); // $ ast ir=12:13 ir=12:22 + sink(source1); // $ ast,ir + sink(++source1); // $ ast,ir } // --- globals --- diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 65caa9704c59..f98a26d215e4 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -1761,7 +1761,7 @@ ir.c: # 9| ValueCategory = lvalue # 9| getRValue(): [AssignExpr] ... = ... # 9| Type = [IntType] int -# 9| ValueCategory = prvalue +# 9| ValueCategory = prvalue(load) # 9| getLValue(): [ValueFieldAccess] y # 9| Type = [IntType] int # 9| ValueCategory = lvalue @@ -2675,7 +2675,7 @@ ir.cpp: # 101| ValueCategory = lvalue # 101| getRValue(): [PrefixIncrExpr] ++ ... # 101| Type = [IntType] int -# 101| ValueCategory = prvalue +# 101| ValueCategory = prvalue(load) # 101| getOperand(): [VariableAccess] x # 101| Type = [IntType] int # 101| ValueCategory = lvalue @@ -2688,7 +2688,7 @@ ir.cpp: # 102| ValueCategory = lvalue # 102| getRValue(): [PrefixDecrExpr] -- ... # 102| Type = [IntType] int -# 102| ValueCategory = prvalue +# 102| ValueCategory = prvalue(load) # 102| getOperand(): [VariableAccess] x # 102| Type = [IntType] int # 102| ValueCategory = lvalue @@ -3041,7 +3041,7 @@ ir.cpp: # 147| ValueCategory = lvalue # 147| getRValue(): [PrefixIncrExpr] ++ ... # 147| Type = [FloatType] float -# 147| ValueCategory = prvalue +# 147| ValueCategory = prvalue(load) # 147| getOperand(): [VariableAccess] x # 147| Type = [FloatType] float # 147| ValueCategory = lvalue @@ -3054,7 +3054,7 @@ ir.cpp: # 148| ValueCategory = lvalue # 148| getRValue(): [PrefixDecrExpr] -- ... # 148| Type = [FloatType] float -# 148| ValueCategory = prvalue +# 148| ValueCategory = prvalue(load) # 148| getOperand(): [VariableAccess] x # 148| Type = [FloatType] float # 148| ValueCategory = lvalue @@ -3557,7 +3557,7 @@ ir.cpp: # 207| ValueCategory = lvalue # 207| getRValue(): [PrefixIncrExpr] ++ ... # 207| Type = [IntPointerType] int * -# 207| ValueCategory = prvalue +# 207| ValueCategory = prvalue(load) # 207| getOperand(): [VariableAccess] p # 207| Type = [IntPointerType] int * # 207| ValueCategory = lvalue @@ -3570,7 +3570,7 @@ ir.cpp: # 208| ValueCategory = lvalue # 208| getRValue(): [PrefixDecrExpr] -- ... # 208| Type = [IntPointerType] int * -# 208| ValueCategory = prvalue +# 208| ValueCategory = prvalue(load) # 208| getOperand(): [VariableAccess] p # 208| Type = [IntPointerType] int * # 208| ValueCategory = lvalue @@ -4825,7 +4825,7 @@ ir.cpp: # 483| getVariable().getInitializer(): [Initializer] initializer for z # 483| getExpr(): [ConditionalExpr] ... ? ... : ... # 483| Type = [IntType] int -# 483| ValueCategory = prvalue +# 483| ValueCategory = prvalue(load) # 483| getCondition(): [VariableAccess] a # 483| Type = [BoolType] bool # 483| ValueCategory = prvalue(load) @@ -6025,7 +6025,7 @@ ir.cpp: # 705| getStmt(0): [ReturnStmt] return ... # 705| getExpr(): [ConditionalExpr] ... ? ... : ... # 705| Type = [UnknownType] unknown -# 705| ValueCategory = prvalue(load) +# 705| ValueCategory = prvalue # 705| getCondition(): [LTExpr] ... < ... # 705| Type = [UnknownType] unknown # 705| ValueCategory = prvalue @@ -6058,7 +6058,7 @@ ir.cpp: # 705| getStmt(0): [ReturnStmt] return ... # 705| getExpr(): [ConditionalExpr] ... ? ... : ... # 705| Type = [IntType] int -# 705| ValueCategory = prvalue +# 705| ValueCategory = prvalue(load) # 705| getCondition(): [LTExpr] ... < ... # 705| Type = [BoolType] bool # 705| ValueCategory = prvalue @@ -7864,7 +7864,7 @@ ir.cpp: # 915| getVariable().getInitializer(): [Initializer] initializer for b # 915| getExpr(): [ConditionalExpr] ... ? ... : ... # 915| Type = [IntType] int -# 915| ValueCategory = prvalue +# 915| ValueCategory = prvalue(load) # 915| getCondition(): [Literal] 1 # 915| Type = [BoolType] bool # 915| Value = [Literal] 1 @@ -8633,6 +8633,9 @@ ir.cpp: # 1038| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] lambda [] type at line 1038, col. 12 && +# 1038| : +# 1038| getEntryPoint(): [BlockStmt] { ... } +# 1038| getStmt(0): [ReturnStmt] return ... # 1038| [Constructor] void (lambda [] type at line 1038, col. 12)::(unnamed constructor)() # 1038| : # 1038| [MemberFunction] void (lambda [] type at line 1038, col. 12)::_FUN() @@ -8963,6 +8966,9 @@ ir.cpp: # 1041| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] lambda [] type at line 1041, col. 23 && +# 1041| : +# 1041| getEntryPoint(): [BlockStmt] { ... } +# 1041| getStmt(0): [ReturnStmt] return ... # 1041| [Constructor] void (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::(unnamed constructor)() # 1041| : # 1041| [MemberFunction] char (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::_FUN(float) @@ -10456,7 +10462,7 @@ ir.cpp: # 1301| ValueCategory = lvalue # 1301| getRValue(): [ConditionalExpr] ... ? ... : ... # 1301| Type = [IntType] int -# 1301| ValueCategory = prvalue +# 1301| ValueCategory = prvalue(load) # 1301| getCondition(): [VariableAccess] b # 1301| Type = [BoolType] bool # 1301| ValueCategory = prvalue(load) @@ -10472,7 +10478,7 @@ ir.cpp: # 1302| ValueCategory = lvalue # 1302| getRValue(): [ConditionalExpr] ... ? ... : ... # 1302| Type = [LongType] long -# 1302| ValueCategory = prvalue +# 1302| ValueCategory = prvalue(load) # 1302| getCondition(): [VariableAccess] b # 1302| Type = [BoolType] bool # 1302| ValueCategory = prvalue(load) @@ -10492,7 +10498,7 @@ ir.cpp: # 1303| ValueCategory = lvalue # 1303| getRValue(): [ConditionalExpr] ... ? ... : ... # 1303| Type = [IntType] int -# 1303| ValueCategory = prvalue +# 1303| ValueCategory = prvalue(load) # 1303| getCondition(): [VariableAccess] x # 1303| Type = [IntType] int # 1303| ValueCategory = prvalue(load) @@ -10512,7 +10518,7 @@ ir.cpp: # 1304| ValueCategory = lvalue # 1304| getRValue(): [ConditionalExpr] ... ? ... : ... # 1304| Type = [LongType] long -# 1304| ValueCategory = prvalue +# 1304| ValueCategory = prvalue(load) # 1304| getCondition(): [VariableAccess] x # 1304| Type = [IntType] int # 1304| ValueCategory = prvalue(load) @@ -10536,7 +10542,7 @@ ir.cpp: # 1305| ValueCategory = lvalue # 1305| getRValue(): [ConditionalExpr] ... ? ... : ... # 1305| Type = [LongType] long -# 1305| ValueCategory = prvalue +# 1305| ValueCategory = prvalue(load) # 1305| getCondition(): [VariableAccess] y # 1305| Type = [LongType] long # 1305| ValueCategory = prvalue(load) @@ -10564,7 +10570,7 @@ ir.cpp: # 1306| ValueCategory = lvalue # 1306| getRValue(): [ConditionalExpr] ... ? ... : ... # 1306| Type = [LongType] long -# 1306| ValueCategory = prvalue +# 1306| ValueCategory = prvalue(load) # 1306| getCondition(): [VariableAccess] y # 1306| Type = [LongType] long # 1306| ValueCategory = prvalue(load) @@ -10588,7 +10594,7 @@ ir.cpp: # 1308| ValueCategory = lvalue # 1308| getRValue(): [ConditionalExpr] ... ? ... : ... # 1308| Type = [IntType] int -# 1308| ValueCategory = prvalue +# 1308| ValueCategory = prvalue(load) # 1308| getCondition(): [LogicalOrExpr] ... || ... # 1308| Type = [BoolType] bool # 1308| ValueCategory = prvalue @@ -10633,7 +10639,7 @@ ir.cpp: # 1315| getStmt(0): [ReturnStmt] return ... # 1315| getExpr(): [ConditionalExpr] ... ? ... : ... # 1315| Type = [IntType] int -# 1315| ValueCategory = prvalue +# 1315| ValueCategory = prvalue(load) # 1315| getCondition(): [LogicalAndExpr] ... && ... # 1315| Type = [BoolType] bool # 1315| ValueCategory = prvalue @@ -10949,7 +10955,7 @@ ir.cpp: # 1376| ValueCategory = prvalue # 1376| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object # 1376| Type = [Struct] String -# 1376| ValueCategory = prvalue(load) +# 1376| ValueCategory = prvalue # 1377| getStmt(9): [ReturnStmt] return ... # 1379| [TopLevelFunction] void temporary_destructor_only() # 1379| : @@ -11032,7 +11038,7 @@ ir.cpp: # 1388| ValueCategory = prvalue # 1388| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object # 1388| Type = [Class] destructor_only -# 1388| ValueCategory = prvalue(load) +# 1388| ValueCategory = prvalue # 1389| getStmt(8): [ReturnStmt] return ... # 1391| [TopLevelFunction] void temporary_copy_constructor() # 1391| : @@ -11128,7 +11134,7 @@ ir.cpp: # 1399| ValueCategory = prvalue # 1399| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object # 1399| Type = [Class] copy_constructor -# 1399| ValueCategory = prvalue(load) +# 1399| ValueCategory = prvalue # 1401| getStmt(8): [DeclStmt] declaration # 1401| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y # 1401| Type = [IntType] int @@ -13368,9 +13374,6 @@ ir.cpp: # 1714| getExpr(): [TemporaryObjectExpr] temporary object # 1714| Type = [Class] TrivialLambdaClass # 1714| ValueCategory = lvalue -# 1714| getExpr(): [TemporaryObjectExpr] temporary object -# 1714| Type = [Class] TrivialLambdaClass -# 1714| ValueCategory = prvalue(load) # 1716| getStmt(2): [DeclStmt] declaration # 1716| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_outer1 # 1716| Type = [Closure,LocalClass] decltype([...](...){...}) @@ -14710,7 +14713,7 @@ ir.cpp: # 1930| ValueCategory = lvalue # 1930| getRValue(): [AssignExpr] ... = ... # 1930| Type = [IntType] int -# 1930| ValueCategory = prvalue +# 1930| ValueCategory = prvalue(load) # 1930| getLValue(): [VariableAccess] j # 1930| Type = [IntType] int # 1930| ValueCategory = lvalue @@ -14741,7 +14744,7 @@ ir.cpp: # 1935| ValueCategory = lvalue # 1935| getRValue(): [AssignAddExpr] ... += ... # 1935| Type = [IntType] int -# 1935| ValueCategory = prvalue +# 1935| ValueCategory = prvalue(load) # 1935| getLValue(): [VariableAccess] j # 1935| Type = [IntType] int # 1935| ValueCategory = lvalue @@ -14751,7 +14754,7 @@ ir.cpp: # 1935| ValueCategory = prvalue # 1935| getRValue().getFullyConverted(): [ParenthesisExpr] (...) # 1935| Type = [IntType] int -# 1935| ValueCategory = prvalue +# 1935| ValueCategory = prvalue(load) # 1936| getStmt(2): [ReturnStmt] return ... # 1938| [CopyAssignmentOperator] D& D::operator=(D const&) # 1938| : @@ -15040,7 +15043,7 @@ ir.cpp: # 1993| ValueCategory = lvalue # 1993| getRValue(): [FunctionAccess] StaticMemberFunction # 1993| Type = [FunctionPointerType] ..(*)(..) -# 1993| ValueCategory = prvalue +# 1993| ValueCategory = prvalue(load) # 1993| getQualifier(): [VariableAccess] c # 1993| Type = [Class] C # 1993| ValueCategory = lvalue @@ -15065,7 +15068,7 @@ ir.cpp: # 1997| ValueCategory = lvalue # 1997| getRValue(): [ConditionalExpr] ... ? ... : ... # 1997| Type = [IntType] int -# 1997| ValueCategory = prvalue +# 1997| ValueCategory = prvalue(load) # 1997| getCondition(): [VariableAccess] a # 1997| Type = [BoolType] bool # 1997| ValueCategory = prvalue(load) @@ -15084,7 +15087,7 @@ ir.cpp: # 1998| ValueCategory = lvalue # 1998| getRValue(): [ConditionalExpr] ... ? ... : ... # 1998| Type = [IntType] int -# 1998| ValueCategory = prvalue +# 1998| ValueCategory = prvalue(load) # 1998| getCondition(): [VariableAccess] a # 1998| Type = [BoolType] bool # 1998| ValueCategory = prvalue(load) @@ -15168,7 +15171,7 @@ ir.cpp: # 2007| ValueCategory = lvalue # 2007| getRValue(): [ConditionalExpr] ... ? ... : ... # 2007| Type = [Struct] TernaryPodObj -# 2007| ValueCategory = prvalue +# 2007| ValueCategory = prvalue(load) # 2007| getCondition(): [VariableAccess] a # 2007| Type = [BoolType] bool # 2007| ValueCategory = prvalue(load) @@ -15249,7 +15252,7 @@ ir.cpp: # 2010| ValueCategory = lvalue # 2010| getRValue(): [ConditionalExpr] ... ? ... : ... # 2010| Type = [Struct] TernaryPodObj -# 2010| ValueCategory = prvalue +# 2010| ValueCategory = prvalue(load) # 2010| getCondition(): [VariableAccess] a # 2010| Type = [BoolType] bool # 2010| ValueCategory = prvalue(load) @@ -15501,7 +15504,7 @@ ir.cpp: # 2028| ValueCategory = lvalue # 2028| getRValue(): [ConditionalExpr] ... ? ... : ... # 2028| Type = [IntType] unsigned int -# 2028| ValueCategory = prvalue +# 2028| ValueCategory = prvalue(load) # 2028| getCondition(): [LTExpr] ... < ... # 2028| Type = [BoolType] bool # 2028| ValueCategory = prvalue @@ -15519,7 +15522,7 @@ ir.cpp: # 2028| ValueCategory = prvalue # 2029| getThen(): [CommaExpr] ... , ... # 2029| Type = [IntType] unsigned int -# 2029| ValueCategory = prvalue +# 2029| ValueCategory = prvalue(load) # 2029| getLeftOperand(): [FunctionCall] call to CommaTestHelper # 2029| Type = [VoidType] void # 2029| ValueCategory = prvalue @@ -15544,7 +15547,7 @@ ir.cpp: # 2030| ValueCategory = prvalue # 2029| getThen().getFullyConverted(): [ParenthesisExpr] (...) # 2029| Type = [IntType] unsigned int -# 2029| ValueCategory = prvalue +# 2029| ValueCategory = prvalue(load) # 2030| getElse().getFullyConverted(): [CStyleCast] (unsigned int)... # 2030| Conversion = [IntegralConversion] integral conversion # 2030| Type = [IntType] unsigned int diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index 6ca990145d52..150bed79ef4e 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -765,7 +765,7 @@ ir.c: # 9| r9_6(glval) = FieldAddress[y] : r9_5 # 9| m9_7(int) = Store[?] : &:r9_6, r9_4 # 9| m9_8((unnamed class/struct/union)) = Chi : total:m8_10, partial:m9_7 -# 9| r9_9(int) = CopyValue : r9_4 +# 9| r9_9(int) = Load[?] : &:r9_6, m9_7 # 9| r9_10(glval<(unnamed class/struct/union)>) = VariableAddress[coords] : # 9| r9_11(glval) = FieldAddress[x] : r9_10 # 9| m9_12(int) = Store[?] : &:r9_11, r9_9 @@ -1187,15 +1187,17 @@ ir.cpp: # 101| r101_3(int) = Constant[1] : # 101| r101_4(int) = Add : r101_2, r101_3 # 101| m101_5(int) = Store[x] : &:r101_1, r101_4 -# 101| r101_6(glval) = VariableAddress[y] : -# 101| m101_7(int) = Store[y] : &:r101_6, r101_4 +# 101| r101_6(int) = Load[x] : &:r101_1, m101_5 +# 101| r101_7(glval) = VariableAddress[y] : +# 101| m101_8(int) = Store[y] : &:r101_7, r101_6 # 102| r102_1(glval) = VariableAddress[x] : # 102| r102_2(int) = Load[x] : &:r102_1, m101_5 # 102| r102_3(int) = Constant[1] : # 102| r102_4(int) = Sub : r102_2, r102_3 # 102| m102_5(int) = Store[x] : &:r102_1, r102_4 -# 102| r102_6(glval) = VariableAddress[y] : -# 102| m102_7(int) = Store[y] : &:r102_6, r102_4 +# 102| r102_6(int) = Load[x] : &:r102_1, m102_5 +# 102| r102_7(glval) = VariableAddress[y] : +# 102| m102_8(int) = Store[y] : &:r102_7, r102_6 # 103| r103_1(glval) = VariableAddress[x] : # 103| r103_2(int) = Load[x] : &:r103_1, m102_5 # 103| r103_3(int) = Constant[1] : @@ -1407,15 +1409,17 @@ ir.cpp: # 147| r147_3(float) = Constant[1.0] : # 147| r147_4(float) = Add : r147_2, r147_3 # 147| m147_5(float) = Store[x] : &:r147_1, r147_4 -# 147| r147_6(glval) = VariableAddress[y] : -# 147| m147_7(float) = Store[y] : &:r147_6, r147_4 +# 147| r147_6(float) = Load[x] : &:r147_1, m147_5 +# 147| r147_7(glval) = VariableAddress[y] : +# 147| m147_8(float) = Store[y] : &:r147_7, r147_6 # 148| r148_1(glval) = VariableAddress[x] : # 148| r148_2(float) = Load[x] : &:r148_1, m147_5 # 148| r148_3(float) = Constant[1.0] : # 148| r148_4(float) = Sub : r148_2, r148_3 # 148| m148_5(float) = Store[x] : &:r148_1, r148_4 -# 148| r148_6(glval) = VariableAddress[y] : -# 148| m148_7(float) = Store[y] : &:r148_6, r148_4 +# 148| r148_6(float) = Load[x] : &:r148_1, m148_5 +# 148| r148_7(glval) = VariableAddress[y] : +# 148| m148_8(float) = Store[y] : &:r148_7, r148_6 # 149| r149_1(glval) = VariableAddress[x] : # 149| r149_2(float) = Load[x] : &:r149_1, m148_5 # 149| r149_3(float) = Constant[1.0] : @@ -1723,15 +1727,17 @@ ir.cpp: # 207| r207_3(int) = Constant[1] : # 207| r207_4(int *) = PointerAdd[4] : r207_2, r207_3 # 207| m207_5(int *) = Store[p] : &:r207_1, r207_4 -# 207| r207_6(glval) = VariableAddress[q] : -# 207| m207_7(int *) = Store[q] : &:r207_6, r207_4 +# 207| r207_6(int *) = Load[p] : &:r207_1, m207_5 +# 207| r207_7(glval) = VariableAddress[q] : +# 207| m207_8(int *) = Store[q] : &:r207_7, r207_6 # 208| r208_1(glval) = VariableAddress[p] : # 208| r208_2(int *) = Load[p] : &:r208_1, m207_5 # 208| r208_3(int) = Constant[1] : # 208| r208_4(int *) = PointerSub[4] : r208_2, r208_3 # 208| m208_5(int *) = Store[p] : &:r208_1, r208_4 -# 208| r208_6(glval) = VariableAddress[q] : -# 208| m208_7(int *) = Store[q] : &:r208_6, r208_4 +# 208| r208_6(int *) = Load[p] : &:r208_1, m208_5 +# 208| r208_7(glval) = VariableAddress[q] : +# 208| m208_8(int *) = Store[q] : &:r208_7, r208_6 # 209| r209_1(glval) = VariableAddress[p] : # 209| r209_2(int *) = Load[p] : &:r209_1, m208_5 # 209| r209_3(int) = Constant[1] : @@ -6049,6 +6055,27 @@ ir.cpp: # 1038| v1038_10(void) = AliasedUse : ~m1038_8 # 1038| v1038_11(void) = ExitFunction : +# 1038| void (lambda [] type at line 1038, col. 12)::(unnamed constructor)((lambda [] type at line 1038, col. 12)&&) +# 1038| Block 0 +# 1038| v1038_1(void) = EnterFunction : +# 1038| m1038_2(unknown) = AliasedDefinition : +# 1038| m1038_3(unknown) = InitializeNonLocal : +# 1038| m1038_4(unknown) = Chi : total:m1038_2, partial:m1038_3 +# 1038| r1038_5(glval) = VariableAddress[#this] : +# 1038| m1038_6(glval) = InitializeParameter[#this] : &:r1038_5 +# 1038| r1038_7(glval) = Load[#this] : &:r1038_5, m1038_6 +# 1038| m1038_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1038_7 +#-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : +#-----| m0_2(lambda [] type at line 1038, col. 12 &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 +#-----| r0_3(lambda [] type at line 1038, col. 12 &&) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 +#-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 +# 1038| v1038_9(void) = NoOp : +# 1038| v1038_10(void) = ReturnIndirection[#this] : &:r1038_7, m1038_8 +#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 +# 1038| v1038_11(void) = ReturnVoid : +# 1038| v1038_12(void) = AliasedUse : m1038_3 +# 1038| v1038_13(void) = ExitFunction : + # 1038| void (lambda [] type at line 1038, col. 12)::operator()() const # 1038| Block 0 # 1038| v1038_1(void) = EnterFunction : @@ -6265,6 +6292,27 @@ ir.cpp: # 1040| v1040_13(void) = AliasedUse : ~m1055_7 # 1040| v1040_14(void) = ExitFunction : +# 1041| void (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::(unnamed constructor)((void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)&&) +# 1041| Block 0 +# 1041| v1041_1(void) = EnterFunction : +# 1041| m1041_2(unknown) = AliasedDefinition : +# 1041| m1041_3(unknown) = InitializeNonLocal : +# 1041| m1041_4(unknown) = Chi : total:m1041_2, partial:m1041_3 +# 1041| r1041_5(glval) = VariableAddress[#this] : +# 1041| m1041_6(glval) = InitializeParameter[#this] : &:r1041_5 +# 1041| r1041_7(glval) = Load[#this] : &:r1041_5, m1041_6 +# 1041| m1041_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1041_7 +#-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : +#-----| m0_2(lambda [] type at line 1041, col. 23 &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 +#-----| r0_3(lambda [] type at line 1041, col. 23 &&) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 +#-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 +# 1041| v1041_9(void) = NoOp : +# 1041| v1041_10(void) = ReturnIndirection[#this] : &:r1041_7, m1041_8 +#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 +# 1041| v1041_11(void) = ReturnVoid : +# 1041| v1041_12(void) = AliasedUse : m1041_3 +# 1041| v1041_13(void) = ExitFunction : + # 1041| char (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::operator()(float) const # 1041| Block 0 # 1041| v1041_1(void) = EnterFunction : @@ -8156,7 +8204,6 @@ ir.cpp: # 1376| m1376_4(unknown) = ^CallSideEffect : ~m1374_11 # 1376| m1376_5(unknown) = Chi : total:m1374_11, partial:m1376_4 # 1376| m1376_6(String) = Store[#temp1376:5] : &:r1376_1, r1376_3 -# 1376| r1376_7(String) = Load[#temp1376:5] : &:r1376_1, m1376_6 # 1377| v1377_1(void) = NoOp : # 1365| v1365_5(void) = ReturnVoid : # 1365| v1365_6(void) = AliasedUse : ~m1376_5 @@ -8232,7 +8279,6 @@ ir.cpp: # 1388| m1388_4(unknown) = ^CallSideEffect : ~m1386_10 # 1388| m1388_5(unknown) = Chi : total:m1386_10, partial:m1388_4 # 1388| m1388_6(destructor_only) = Store[#temp1388:5] : &:r1388_1, r1388_3 -# 1388| r1388_7(destructor_only) = Load[#temp1388:5] : &:r1388_1, m1388_6 # 1389| v1389_1(void) = NoOp : # 1379| v1379_5(void) = ReturnVoid : # 1379| v1379_6(void) = AliasedUse : ~m1388_5 @@ -8327,7 +8373,6 @@ ir.cpp: # 1399| m1399_4(unknown) = ^CallSideEffect : ~m1398_10 # 1399| m1399_5(unknown) = Chi : total:m1398_10, partial:m1399_4 # 1399| m1399_6(copy_constructor) = Store[#temp1399:5] : &:r1399_1, r1399_3 -# 1399| r1399_7(copy_constructor) = Load[#temp1399:5] : &:r1399_1, m1399_6 # 1401| r1401_1(glval) = VariableAddress[y] : # 1401| r1401_2(glval) = VariableAddress[#temp1401:13] : # 1401| r1401_3(glval) = FunctionAddress[returnValue] : @@ -9841,14 +9886,11 @@ ir.cpp: # 1713| m1713_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1713_1 # 1714| r1714_1(glval) = VariableAddress[l2] : # 1714| r1714_2(glval) = VariableAddress[#temp1714:36] : -# 1714| r1714_3(glval) = VariableAddress[#temp1714:36] : -# 1714| r1714_4(TrivialLambdaClass) = Constant[0] : -# 1714| m1714_5(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_3, r1714_4 -# 1714| r1714_6(TrivialLambdaClass) = Load[#temp1714:36] : &:r1714_3, m1714_5 -# 1714| m1714_7(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_2, r1714_6 -# 1714| r1714_8(glval) = Convert : r1714_2 -# 1714| r1714_9(TrivialLambdaClass &) = CopyValue : r1714_8 -# 1714| m1714_10(TrivialLambdaClass &) = Store[l2] : &:r1714_1, r1714_9 +# 1714| r1714_3(TrivialLambdaClass) = Constant[0] : +# 1714| m1714_4(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_2, r1714_3 +# 1714| r1714_5(glval) = Convert : r1714_2 +# 1714| r1714_6(TrivialLambdaClass &) = CopyValue : r1714_5 +# 1714| m1714_7(TrivialLambdaClass &) = Store[l2] : &:r1714_1, r1714_6 # 1716| r1716_1(glval) = VariableAddress[l_outer1] : # 1716| r1716_2(glval) = VariableAddress[#temp1716:20] : # 1716| m1716_3(decltype([...](...){...})) = Uninitialized[#temp1716:20] : &:r1716_2 @@ -9876,8 +9918,8 @@ ir.cpp: # 1716| m1716_19(decltype([...](...){...})) = Chi : total:m0_6, partial:m1716_18 # 1716| r1716_20(glval) = FieldAddress[l2] : r1716_2 # 1716| r1716_21(glval) = VariableAddress[l2] : -# 1716| r1716_22(TrivialLambdaClass &) = Load[l2] : &:r1716_21, m1714_10 -#-----| r0_7(TrivialLambdaClass) = Load[?] : &:r1716_22, m1714_7 +# 1716| r1716_22(TrivialLambdaClass &) = Load[l2] : &:r1716_21, m1714_7 +#-----| r0_7(TrivialLambdaClass) = Load[?] : &:r1716_22, m1714_4 #-----| m0_8(TrivialLambdaClass) = Store[?] : &:r1716_20, r0_7 #-----| m0_9(decltype([...](...){...})) = Chi : total:m1716_19, partial:m0_8 # 1716| r1716_23(decltype([...](...){...})) = Load[#temp1716:20] : &:r1716_2, m0_9 @@ -11011,7 +11053,7 @@ ir.cpp: # 1930| r1930_1(int) = Constant[40] : # 1930| r1930_2(glval) = VariableAddress[j] : # 1930| m1930_3(int) = Store[j] : &:r1930_2, r1930_1 -# 1930| r1930_4(int) = CopyValue : r1930_1 +# 1930| r1930_4(int) = Load[j] : &:r1930_2, m1930_3 # 1930| r1930_5(glval) = VariableAddress[i] : # 1930| m1930_6(int) = Store[i] : &:r1930_5, r1930_4 # 1931| v1931_1(void) = NoOp : @@ -11035,8 +11077,9 @@ ir.cpp: # 1935| r1935_3(int) = Load[j] : &:r1935_2, m1934_5 # 1935| r1935_4(int) = Add : r1935_3, r1935_1 # 1935| m1935_5(int) = Store[j] : &:r1935_2, r1935_4 -# 1935| r1935_6(glval) = VariableAddress[i] : -# 1935| m1935_7(int) = Store[i] : &:r1935_6, r1935_4 +# 1935| r1935_6(int) = Load[j] : &:r1935_2, m1935_5 +# 1935| r1935_7(glval) = VariableAddress[i] : +# 1935| m1935_8(int) = Store[i] : &:r1935_7, r1935_6 # 1936| v1936_1(void) = NoOp : # 1933| v1933_5(void) = ReturnVoid : # 1933| v1933_6(void) = AliasedUse : m1933_3 diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index 4c2a4d4a5a54..af1939abd03c 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -684,6 +684,10 @@ | file://:0:0:0:0 | Address | &:r0_1 | | file://:0:0:0:0 | Address | &:r0_1 | | file://:0:0:0:0 | Address | &:r0_1 | +| file://:0:0:0:0 | Address | &:r0_1 | +| file://:0:0:0:0 | Address | &:r0_1 | +| file://:0:0:0:0 | Address | &:r0_1 | +| file://:0:0:0:0 | Address | &:r0_1 | | file://:0:0:0:0 | Address | &:r0_2 | | file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_3 | @@ -712,6 +716,10 @@ | file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_3 | +| file://:0:0:0:0 | Address | &:r0_3 | +| file://:0:0:0:0 | Address | &:r0_3 | +| file://:0:0:0:0 | Address | &:r0_3 | +| file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_4 | | file://:0:0:0:0 | Address | &:r0_4 | | file://:0:0:0:0 | Address | &:r0_5 | @@ -811,6 +819,8 @@ | file://:0:0:0:0 | Load | m0_2 | | file://:0:0:0:0 | Load | m0_2 | | file://:0:0:0:0 | Load | m0_2 | +| file://:0:0:0:0 | Load | m0_2 | +| file://:0:0:0:0 | Load | m0_2 | | file://:0:0:0:0 | Load | m0_5 | | file://:0:0:0:0 | Load | m0_8 | | file://:0:0:0:0 | Load | m0_11 | @@ -822,7 +832,7 @@ | file://:0:0:0:0 | Load | m1466_4 | | file://:0:0:0:0 | Load | m1466_4 | | file://:0:0:0:0 | Load | m1685_9 | -| file://:0:0:0:0 | Load | m1714_7 | +| file://:0:0:0:0 | Load | m1714_4 | | file://:0:0:0:0 | Load | m1834_6 | | file://:0:0:0:0 | Load | m1834_6 | | file://:0:0:0:0 | Load | m1839_6 | @@ -847,6 +857,8 @@ | file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_4 | +| file://:0:0:0:0 | SideEffect | m0_4 | +| file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_14 | | file://:0:0:0:0 | SideEffect | m1078_23 | | file://:0:0:0:0 | SideEffect | m1078_23 | @@ -954,13 +966,14 @@ | ir.c:9:14:9:19 | Unary | r9_5 | | ir.c:9:14:9:31 | ChiPartial | partial:m9_7 | | ir.c:9:14:9:31 | ChiTotal | total:m8_10 | +| ir.c:9:14:9:31 | Load | m9_7 | | ir.c:9:14:9:31 | StoreValue | r9_9 | | ir.c:9:21:9:21 | Address | &:r9_6 | +| ir.c:9:21:9:21 | Address | &:r9_6 | | ir.c:9:25:9:27 | Address | &:r9_1 | | ir.c:9:25:9:27 | Left | r9_2 | | ir.c:9:25:9:27 | Load | m7_6 | | ir.c:9:25:9:31 | StoreValue | r9_4 | -| ir.c:9:25:9:31 | Unary | r9_4 | | ir.c:9:31:9:31 | Right | r9_3 | | ir.c:10:3:10:8 | Unary | r10_10 | | ir.c:10:3:10:26 | ChiPartial | partial:m10_12 | @@ -1329,18 +1342,22 @@ | ir.cpp:98:6:98:19 | SideEffect | m98_3 | | ir.cpp:98:25:98:25 | Address | &:r98_5 | | ir.cpp:99:9:99:9 | Address | &:r99_1 | -| ir.cpp:101:5:101:5 | Address | &:r101_6 | +| ir.cpp:101:5:101:5 | Address | &:r101_7 | +| ir.cpp:101:9:101:11 | Load | m101_5 | | ir.cpp:101:9:101:11 | Right | r101_3 | | ir.cpp:101:9:101:11 | StoreValue | r101_4 | -| ir.cpp:101:9:101:11 | StoreValue | r101_4 | +| ir.cpp:101:9:101:11 | StoreValue | r101_6 | +| ir.cpp:101:11:101:11 | Address | &:r101_1 | | ir.cpp:101:11:101:11 | Address | &:r101_1 | | ir.cpp:101:11:101:11 | Address | &:r101_1 | | ir.cpp:101:11:101:11 | Left | r101_2 | | ir.cpp:101:11:101:11 | Load | m98_6 | -| ir.cpp:102:5:102:5 | Address | &:r102_6 | +| ir.cpp:102:5:102:5 | Address | &:r102_7 | +| ir.cpp:102:9:102:11 | Load | m102_5 | | ir.cpp:102:9:102:11 | Right | r102_3 | | ir.cpp:102:9:102:11 | StoreValue | r102_4 | -| ir.cpp:102:9:102:11 | StoreValue | r102_4 | +| ir.cpp:102:9:102:11 | StoreValue | r102_6 | +| ir.cpp:102:11:102:11 | Address | &:r102_1 | | ir.cpp:102:11:102:11 | Address | &:r102_1 | | ir.cpp:102:11:102:11 | Address | &:r102_1 | | ir.cpp:102:11:102:11 | Left | r102_2 | @@ -1531,18 +1548,22 @@ | ir.cpp:144:6:144:17 | SideEffect | m144_3 | | ir.cpp:144:25:144:25 | Address | &:r144_5 | | ir.cpp:145:11:145:11 | Address | &:r145_1 | -| ir.cpp:147:5:147:5 | Address | &:r147_6 | +| ir.cpp:147:5:147:5 | Address | &:r147_7 | +| ir.cpp:147:9:147:11 | Load | m147_5 | | ir.cpp:147:9:147:11 | Right | r147_3 | | ir.cpp:147:9:147:11 | StoreValue | r147_4 | -| ir.cpp:147:9:147:11 | StoreValue | r147_4 | +| ir.cpp:147:9:147:11 | StoreValue | r147_6 | +| ir.cpp:147:11:147:11 | Address | &:r147_1 | | ir.cpp:147:11:147:11 | Address | &:r147_1 | | ir.cpp:147:11:147:11 | Address | &:r147_1 | | ir.cpp:147:11:147:11 | Left | r147_2 | | ir.cpp:147:11:147:11 | Load | m144_6 | -| ir.cpp:148:5:148:5 | Address | &:r148_6 | +| ir.cpp:148:5:148:5 | Address | &:r148_7 | +| ir.cpp:148:9:148:11 | Load | m148_5 | | ir.cpp:148:9:148:11 | Right | r148_3 | | ir.cpp:148:9:148:11 | StoreValue | r148_4 | -| ir.cpp:148:9:148:11 | StoreValue | r148_4 | +| ir.cpp:148:9:148:11 | StoreValue | r148_6 | +| ir.cpp:148:11:148:11 | Address | &:r148_1 | | ir.cpp:148:11:148:11 | Address | &:r148_1 | | ir.cpp:148:11:148:11 | Address | &:r148_1 | | ir.cpp:148:11:148:11 | Left | r148_2 | @@ -1840,18 +1861,22 @@ | ir.cpp:204:26:204:26 | Load | m204_6 | | ir.cpp:204:26:204:26 | SideEffect | m204_8 | | ir.cpp:205:10:205:10 | Address | &:r205_1 | -| ir.cpp:207:5:207:5 | Address | &:r207_6 | +| ir.cpp:207:5:207:5 | Address | &:r207_7 | +| ir.cpp:207:9:207:11 | Load | m207_5 | | ir.cpp:207:9:207:11 | Right | r207_3 | | ir.cpp:207:9:207:11 | StoreValue | r207_4 | -| ir.cpp:207:9:207:11 | StoreValue | r207_4 | +| ir.cpp:207:9:207:11 | StoreValue | r207_6 | +| ir.cpp:207:11:207:11 | Address | &:r207_1 | | ir.cpp:207:11:207:11 | Address | &:r207_1 | | ir.cpp:207:11:207:11 | Address | &:r207_1 | | ir.cpp:207:11:207:11 | Left | r207_2 | | ir.cpp:207:11:207:11 | Load | m204_6 | -| ir.cpp:208:5:208:5 | Address | &:r208_6 | +| ir.cpp:208:5:208:5 | Address | &:r208_7 | +| ir.cpp:208:9:208:11 | Load | m208_5 | | ir.cpp:208:9:208:11 | Right | r208_3 | | ir.cpp:208:9:208:11 | StoreValue | r208_4 | -| ir.cpp:208:9:208:11 | StoreValue | r208_4 | +| ir.cpp:208:9:208:11 | StoreValue | r208_6 | +| ir.cpp:208:11:208:11 | Address | &:r208_1 | | ir.cpp:208:11:208:11 | Address | &:r208_1 | | ir.cpp:208:11:208:11 | Address | &:r208_1 | | ir.cpp:208:11:208:11 | Left | r208_2 | @@ -4947,6 +4972,15 @@ | ir.cpp:1035:15:1035:15 | Address | &:r1035_1 | | ir.cpp:1038:6:1038:8 | Address | &:r1038_3 | | ir.cpp:1038:6:1038:8 | SideEffect | ~m1038_8 | +| ir.cpp:1038:12:1038:12 | Address | &:r1038_5 | +| ir.cpp:1038:12:1038:12 | Address | &:r1038_5 | +| ir.cpp:1038:12:1038:12 | Address | &:r1038_7 | +| ir.cpp:1038:12:1038:12 | Address | &:r1038_7 | +| ir.cpp:1038:12:1038:12 | ChiPartial | partial:m1038_3 | +| ir.cpp:1038:12:1038:12 | ChiTotal | total:m1038_2 | +| ir.cpp:1038:12:1038:12 | Load | m1038_6 | +| ir.cpp:1038:12:1038:12 | SideEffect | m1038_3 | +| ir.cpp:1038:12:1038:12 | SideEffect | m1038_8 | | ir.cpp:1038:12:1038:18 | Address | &:r1038_4 | | ir.cpp:1038:12:1038:18 | Address | &:r1038_4 | | ir.cpp:1038:12:1038:18 | ChiPartial | partial:m1038_7 | @@ -4986,6 +5020,15 @@ | ir.cpp:1040:34:1040:34 | Load | m1040_8 | | ir.cpp:1040:34:1040:34 | SideEffect | m1040_10 | | ir.cpp:1041:8:1041:19 | Address | &:r1041_1 | +| ir.cpp:1041:23:1041:23 | Address | &:r1041_5 | +| ir.cpp:1041:23:1041:23 | Address | &:r1041_5 | +| ir.cpp:1041:23:1041:23 | Address | &:r1041_7 | +| ir.cpp:1041:23:1041:23 | Address | &:r1041_7 | +| ir.cpp:1041:23:1041:23 | ChiPartial | partial:m1041_3 | +| ir.cpp:1041:23:1041:23 | ChiTotal | total:m1041_2 | +| ir.cpp:1041:23:1041:23 | Load | m1041_6 | +| ir.cpp:1041:23:1041:23 | SideEffect | m1041_3 | +| ir.cpp:1041:23:1041:23 | SideEffect | m1041_8 | | ir.cpp:1041:23:1041:49 | Address | &:r1041_2 | | ir.cpp:1041:23:1041:49 | Address | &:r1041_2 | | ir.cpp:1041:23:1041:49 | Load | m1041_3 | @@ -6610,8 +6653,6 @@ | ir.cpp:1376:5:1376:28 | SideEffect | ~m1374_11 | | ir.cpp:1376:5:1376:28 | StoreValue | r1376_3 | | ir.cpp:1376:5:1376:30 | Address | &:r1376_1 | -| ir.cpp:1376:5:1376:30 | Address | &:r1376_1 | -| ir.cpp:1376:5:1376:30 | Load | m1376_6 | | ir.cpp:1379:6:1379:30 | ChiPartial | partial:m1379_3 | | ir.cpp:1379:6:1379:30 | ChiTotal | total:m1379_2 | | ir.cpp:1379:6:1379:30 | SideEffect | ~m1388_5 | @@ -6686,8 +6727,6 @@ | ir.cpp:1388:5:1388:37 | SideEffect | ~m1386_10 | | ir.cpp:1388:5:1388:37 | StoreValue | r1388_3 | | ir.cpp:1388:5:1388:39 | Address | &:r1388_1 | -| ir.cpp:1388:5:1388:39 | Address | &:r1388_1 | -| ir.cpp:1388:5:1388:39 | Load | m1388_6 | | ir.cpp:1391:6:1391:31 | ChiPartial | partial:m1391_3 | | ir.cpp:1391:6:1391:31 | ChiTotal | total:m1391_2 | | ir.cpp:1391:6:1391:31 | SideEffect | ~m1401_6 | @@ -6787,8 +6826,6 @@ | ir.cpp:1399:5:1399:38 | SideEffect | ~m1398_10 | | ir.cpp:1399:5:1399:38 | StoreValue | r1399_3 | | ir.cpp:1399:5:1399:40 | Address | &:r1399_1 | -| ir.cpp:1399:5:1399:40 | Address | &:r1399_1 | -| ir.cpp:1399:5:1399:40 | Load | m1399_6 | | ir.cpp:1401:9:1401:9 | Address | &:r1401_1 | | ir.cpp:1401:13:1401:41 | CallTarget | func:r1401_3 | | ir.cpp:1401:13:1401:41 | ChiPartial | partial:m1401_5 | @@ -8171,14 +8208,10 @@ | ir.cpp:1713:30:1713:31 | Address | &:r1713_1 | | ir.cpp:1714:31:1714:32 | Address | &:r1714_1 | | ir.cpp:1714:36:1714:55 | Address | &:r1714_2 | -| ir.cpp:1714:36:1714:55 | Address | &:r1714_3 | -| ir.cpp:1714:36:1714:55 | Address | &:r1714_3 | -| ir.cpp:1714:36:1714:55 | Load | m1714_5 | -| ir.cpp:1714:36:1714:55 | StoreValue | r1714_4 | +| ir.cpp:1714:36:1714:55 | StoreValue | r1714_3 | | ir.cpp:1714:36:1714:55 | StoreValue | r1714_6 | -| ir.cpp:1714:36:1714:55 | StoreValue | r1714_9 | | ir.cpp:1714:36:1714:55 | Unary | r1714_2 | -| ir.cpp:1714:36:1714:55 | Unary | r1714_8 | +| ir.cpp:1714:36:1714:55 | Unary | r1714_5 | | ir.cpp:1716:10:1716:17 | Address | &:r1716_1 | | ir.cpp:1716:20:1718:5 | Address | &:r1716_2 | | ir.cpp:1716:20:1718:5 | Address | &:r1716_2 | @@ -8204,7 +8237,7 @@ | ir.cpp:1716:20:1718:5 | Load | m1712_8 | | ir.cpp:1716:20:1718:5 | Load | m1712_12 | | ir.cpp:1716:20:1718:5 | Load | m1713_2 | -| ir.cpp:1716:20:1718:5 | Load | m1714_10 | +| ir.cpp:1716:20:1718:5 | Load | m1714_7 | | ir.cpp:1716:20:1718:5 | StoreValue | r1716_6 | | ir.cpp:1716:20:1718:5 | StoreValue | r1716_17 | | ir.cpp:1716:20:1718:5 | StoreValue | r1716_23 | @@ -9037,22 +9070,25 @@ | ir.cpp:1929:10:1929:10 | Address | &:r1929_3 | | ir.cpp:1930:3:1930:3 | Address | &:r1930_5 | | ir.cpp:1930:7:1930:7 | Address | &:r1930_2 | +| ir.cpp:1930:7:1930:7 | Address | &:r1930_2 | +| ir.cpp:1930:7:1930:12 | Load | m1930_3 | | ir.cpp:1930:7:1930:12 | StoreValue | r1930_4 | | ir.cpp:1930:11:1930:12 | StoreValue | r1930_1 | -| ir.cpp:1930:11:1930:12 | Unary | r1930_1 | | ir.cpp:1933:6:1933:38 | ChiPartial | partial:m1933_3 | | ir.cpp:1933:6:1933:38 | ChiTotal | total:m1933_2 | | ir.cpp:1933:6:1933:38 | SideEffect | m1933_3 | | ir.cpp:1934:7:1934:7 | Address | &:r1934_1 | | ir.cpp:1934:10:1934:10 | Address | &:r1934_3 | | ir.cpp:1934:13:1934:14 | StoreValue | r1934_4 | -| ir.cpp:1935:3:1935:3 | Address | &:r1935_6 | +| ir.cpp:1935:3:1935:3 | Address | &:r1935_7 | +| ir.cpp:1935:8:1935:8 | Address | &:r1935_2 | | ir.cpp:1935:8:1935:8 | Address | &:r1935_2 | | ir.cpp:1935:8:1935:8 | Address | &:r1935_2 | | ir.cpp:1935:8:1935:8 | Left | r1935_3 | | ir.cpp:1935:8:1935:8 | Load | m1934_5 | +| ir.cpp:1935:8:1935:14 | Load | m1935_5 | | ir.cpp:1935:8:1935:14 | StoreValue | r1935_4 | -| ir.cpp:1935:8:1935:14 | StoreValue | r1935_4 | +| ir.cpp:1935:8:1935:14 | StoreValue | r1935_6 | | ir.cpp:1935:13:1935:14 | Right | r1935_1 | | ir.cpp:1942:15:1942:43 | Address | &:r1942_5 | | ir.cpp:1942:15:1942:43 | ChiPartial | partial:m1942_3 | diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index cbf7c564214c..c4774b10f89d 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -747,7 +747,7 @@ ir.c: # 9| r9_5(glval<(unnamed class/struct/union)>) = VariableAddress[coords] : # 9| r9_6(glval) = FieldAddress[y] : r9_5 # 9| mu9_7(int) = Store[?] : &:r9_6, r9_4 -# 9| r9_8(int) = CopyValue : r9_4 +# 9| r9_8(int) = Load[?] : &:r9_6, ~m? # 9| r9_9(glval<(unnamed class/struct/union)>) = VariableAddress[coords] : # 9| r9_10(glval) = FieldAddress[x] : r9_9 # 9| mu9_11(int) = Store[?] : &:r9_10, r9_8 @@ -1159,15 +1159,17 @@ ir.cpp: # 101| r101_3(int) = Constant[1] : # 101| r101_4(int) = Add : r101_2, r101_3 # 101| mu101_5(int) = Store[x] : &:r101_1, r101_4 -# 101| r101_6(glval) = VariableAddress[y] : -# 101| mu101_7(int) = Store[y] : &:r101_6, r101_4 +# 101| r101_6(int) = Load[x] : &:r101_1, ~m? +# 101| r101_7(glval) = VariableAddress[y] : +# 101| mu101_8(int) = Store[y] : &:r101_7, r101_6 # 102| r102_1(glval) = VariableAddress[x] : # 102| r102_2(int) = Load[x] : &:r102_1, ~m? # 102| r102_3(int) = Constant[1] : # 102| r102_4(int) = Sub : r102_2, r102_3 # 102| mu102_5(int) = Store[x] : &:r102_1, r102_4 -# 102| r102_6(glval) = VariableAddress[y] : -# 102| mu102_7(int) = Store[y] : &:r102_6, r102_4 +# 102| r102_6(int) = Load[x] : &:r102_1, ~m? +# 102| r102_7(glval) = VariableAddress[y] : +# 102| mu102_8(int) = Store[y] : &:r102_7, r102_6 # 103| r103_1(glval) = VariableAddress[x] : # 103| r103_2(int) = Load[x] : &:r103_1, ~m? # 103| r103_3(int) = Constant[1] : @@ -1375,15 +1377,17 @@ ir.cpp: # 147| r147_3(float) = Constant[1.0] : # 147| r147_4(float) = Add : r147_2, r147_3 # 147| mu147_5(float) = Store[x] : &:r147_1, r147_4 -# 147| r147_6(glval) = VariableAddress[y] : -# 147| mu147_7(float) = Store[y] : &:r147_6, r147_4 +# 147| r147_6(float) = Load[x] : &:r147_1, ~m? +# 147| r147_7(glval) = VariableAddress[y] : +# 147| mu147_8(float) = Store[y] : &:r147_7, r147_6 # 148| r148_1(glval) = VariableAddress[x] : # 148| r148_2(float) = Load[x] : &:r148_1, ~m? # 148| r148_3(float) = Constant[1.0] : # 148| r148_4(float) = Sub : r148_2, r148_3 # 148| mu148_5(float) = Store[x] : &:r148_1, r148_4 -# 148| r148_6(glval) = VariableAddress[y] : -# 148| mu148_7(float) = Store[y] : &:r148_6, r148_4 +# 148| r148_6(float) = Load[x] : &:r148_1, ~m? +# 148| r148_7(glval) = VariableAddress[y] : +# 148| mu148_8(float) = Store[y] : &:r148_7, r148_6 # 149| r149_1(glval) = VariableAddress[x] : # 149| r149_2(float) = Load[x] : &:r149_1, ~m? # 149| r149_3(float) = Constant[1.0] : @@ -1682,15 +1686,17 @@ ir.cpp: # 207| r207_3(int) = Constant[1] : # 207| r207_4(int *) = PointerAdd[4] : r207_2, r207_3 # 207| mu207_5(int *) = Store[p] : &:r207_1, r207_4 -# 207| r207_6(glval) = VariableAddress[q] : -# 207| mu207_7(int *) = Store[q] : &:r207_6, r207_4 +# 207| r207_6(int *) = Load[p] : &:r207_1, ~m? +# 207| r207_7(glval) = VariableAddress[q] : +# 207| mu207_8(int *) = Store[q] : &:r207_7, r207_6 # 208| r208_1(glval) = VariableAddress[p] : # 208| r208_2(int *) = Load[p] : &:r208_1, ~m? # 208| r208_3(int) = Constant[1] : # 208| r208_4(int *) = PointerSub[4] : r208_2, r208_3 # 208| mu208_5(int *) = Store[p] : &:r208_1, r208_4 -# 208| r208_6(glval) = VariableAddress[q] : -# 208| mu208_7(int *) = Store[q] : &:r208_6, r208_4 +# 208| r208_6(int *) = Load[p] : &:r208_1, ~m? +# 208| r208_7(glval) = VariableAddress[q] : +# 208| mu208_8(int *) = Store[q] : &:r208_7, r208_6 # 209| r209_1(glval) = VariableAddress[p] : # 209| r209_2(int *) = Load[p] : &:r209_1, ~m? # 209| r209_3(int) = Constant[1] : @@ -5746,6 +5752,26 @@ ir.cpp: # 1038| v1038_9(void) = AliasedUse : ~m? # 1038| v1038_10(void) = ExitFunction : +# 1038| void (lambda [] type at line 1038, col. 12)::(unnamed constructor)((lambda [] type at line 1038, col. 12)&&) +# 1038| Block 0 +# 1038| v1038_1(void) = EnterFunction : +# 1038| mu1038_2(unknown) = AliasedDefinition : +# 1038| mu1038_3(unknown) = InitializeNonLocal : +# 1038| r1038_4(glval) = VariableAddress[#this] : +# 1038| mu1038_5(glval) = InitializeParameter[#this] : &:r1038_4 +# 1038| r1038_6(glval) = Load[#this] : &:r1038_4, ~m? +# 1038| mu1038_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1038_6 +#-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : +#-----| mu0_2(lambda [] type at line 1038, col. 12 &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 +#-----| r0_3(lambda [] type at line 1038, col. 12 &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m? +#-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 +# 1038| v1038_8(void) = NoOp : +# 1038| v1038_9(void) = ReturnIndirection[#this] : &:r1038_6, ~m? +#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? +# 1038| v1038_10(void) = ReturnVoid : +# 1038| v1038_11(void) = AliasedUse : ~m? +# 1038| v1038_12(void) = ExitFunction : + # 1038| void (lambda [] type at line 1038, col. 12)::operator()() const # 1038| Block 0 # 1038| v1038_1(void) = EnterFunction : @@ -5940,6 +5966,26 @@ ir.cpp: # 1040| v1040_12(void) = AliasedUse : ~m? # 1040| v1040_13(void) = ExitFunction : +# 1041| void (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::(unnamed constructor)((void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)&&) +# 1041| Block 0 +# 1041| v1041_1(void) = EnterFunction : +# 1041| mu1041_2(unknown) = AliasedDefinition : +# 1041| mu1041_3(unknown) = InitializeNonLocal : +# 1041| r1041_4(glval) = VariableAddress[#this] : +# 1041| mu1041_5(glval) = InitializeParameter[#this] : &:r1041_4 +# 1041| r1041_6(glval) = Load[#this] : &:r1041_4, ~m? +# 1041| mu1041_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1041_6 +#-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : +#-----| mu0_2(lambda [] type at line 1041, col. 23 &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 +#-----| r0_3(lambda [] type at line 1041, col. 23 &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m? +#-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 +# 1041| v1041_8(void) = NoOp : +# 1041| v1041_9(void) = ReturnIndirection[#this] : &:r1041_6, ~m? +#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? +# 1041| v1041_10(void) = ReturnVoid : +# 1041| v1041_11(void) = AliasedUse : ~m? +# 1041| v1041_12(void) = ExitFunction : + # 1041| char (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::operator()(float) const # 1041| Block 0 # 1041| v1041_1(void) = EnterFunction : @@ -7697,7 +7743,6 @@ ir.cpp: # 1376| r1376_3(String) = Call[defaultConstruct] : func:r1376_2 # 1376| mu1376_4(unknown) = ^CallSideEffect : ~m? # 1376| mu1376_5(String) = Store[#temp1376:5] : &:r1376_1, r1376_3 -# 1376| r1376_6(String) = Load[#temp1376:5] : &:r1376_1, ~m? # 1377| v1377_1(void) = NoOp : # 1365| v1365_4(void) = ReturnVoid : # 1365| v1365_5(void) = AliasedUse : ~m? @@ -7762,7 +7807,6 @@ ir.cpp: # 1388| r1388_3(destructor_only) = Call[defaultConstruct] : func:r1388_2 # 1388| mu1388_4(unknown) = ^CallSideEffect : ~m? # 1388| mu1388_5(destructor_only) = Store[#temp1388:5] : &:r1388_1, r1388_3 -# 1388| r1388_6(destructor_only) = Load[#temp1388:5] : &:r1388_1, ~m? # 1389| v1389_1(void) = NoOp : # 1379| v1379_4(void) = ReturnVoid : # 1379| v1379_5(void) = AliasedUse : ~m? @@ -7840,7 +7884,6 @@ ir.cpp: # 1399| r1399_3(copy_constructor) = Call[defaultConstruct] : func:r1399_2 # 1399| mu1399_4(unknown) = ^CallSideEffect : ~m? # 1399| mu1399_5(copy_constructor) = Store[#temp1399:5] : &:r1399_1, r1399_3 -# 1399| r1399_6(copy_constructor) = Load[#temp1399:5] : &:r1399_1, ~m? # 1401| r1401_1(glval) = VariableAddress[y] : # 1401| r1401_2(glval) = VariableAddress[#temp1401:13] : # 1401| r1401_3(glval) = FunctionAddress[returnValue] : @@ -9241,14 +9284,11 @@ ir.cpp: # 1713| mu1713_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1713_1 # 1714| r1714_1(glval) = VariableAddress[l2] : # 1714| r1714_2(glval) = VariableAddress[#temp1714:36] : -# 1714| r1714_3(glval) = VariableAddress[#temp1714:36] : -# 1714| r1714_4(TrivialLambdaClass) = Constant[0] : -# 1714| mu1714_5(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_3, r1714_4 -# 1714| r1714_6(TrivialLambdaClass) = Load[#temp1714:36] : &:r1714_3, ~m? -# 1714| mu1714_7(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_2, r1714_6 -# 1714| r1714_8(glval) = Convert : r1714_2 -# 1714| r1714_9(TrivialLambdaClass &) = CopyValue : r1714_8 -# 1714| mu1714_10(TrivialLambdaClass &) = Store[l2] : &:r1714_1, r1714_9 +# 1714| r1714_3(TrivialLambdaClass) = Constant[0] : +# 1714| mu1714_4(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_2, r1714_3 +# 1714| r1714_5(glval) = Convert : r1714_2 +# 1714| r1714_6(TrivialLambdaClass &) = CopyValue : r1714_5 +# 1714| mu1714_7(TrivialLambdaClass &) = Store[l2] : &:r1714_1, r1714_6 # 1716| r1716_1(glval) = VariableAddress[l_outer1] : # 1716| r1716_2(glval) = VariableAddress[#temp1716:20] : # 1716| mu1716_3(decltype([...](...){...})) = Uninitialized[#temp1716:20] : &:r1716_2 @@ -10330,7 +10370,7 @@ ir.cpp: # 1930| r1930_1(int) = Constant[40] : # 1930| r1930_2(glval) = VariableAddress[j] : # 1930| mu1930_3(int) = Store[j] : &:r1930_2, r1930_1 -# 1930| r1930_4(int) = CopyValue : r1930_1 +# 1930| r1930_4(int) = Load[j] : &:r1930_2, ~m? # 1930| r1930_5(glval) = VariableAddress[i] : # 1930| mu1930_6(int) = Store[i] : &:r1930_5, r1930_4 # 1931| v1931_1(void) = NoOp : @@ -10353,8 +10393,9 @@ ir.cpp: # 1935| r1935_3(int) = Load[j] : &:r1935_2, ~m? # 1935| r1935_4(int) = Add : r1935_3, r1935_1 # 1935| mu1935_5(int) = Store[j] : &:r1935_2, r1935_4 -# 1935| r1935_6(glval) = VariableAddress[i] : -# 1935| mu1935_7(int) = Store[i] : &:r1935_6, r1935_4 +# 1935| r1935_6(int) = Load[j] : &:r1935_2, ~m? +# 1935| r1935_7(glval) = VariableAddress[i] : +# 1935| mu1935_8(int) = Store[i] : &:r1935_7, r1935_6 # 1936| v1936_1(void) = NoOp : # 1933| v1933_4(void) = ReturnVoid : # 1933| v1933_5(void) = AliasedUse : ~m? diff --git a/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp b/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp index 825e02b86162..14b6049d717c 100644 --- a/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp +++ b/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp @@ -672,7 +672,7 @@ void test17() { range(i); // $ range===50 i = 20 + (j -= 10); - range(i); // $ range="==Store: ... += ... | Store: ... = ...+10" range===60 + range(i); // $ range="==Store: ... += ... | Store: ... = ...+10" range===60 range="==Store: ... -= ...+20" } // Tests for unsigned multiplication. diff --git a/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected b/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected index f3c6737ad169..0065fe2648fc 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected @@ -15,6 +15,7 @@ localCallNodes postIsNotPre postHasUniquePre uniquePostUpdate +| allocators.cpp:4:24:4:26 | this indirection | Node has multiple PostUpdateNodes. | | cpp11.cpp:82:17:82:17 | this indirection | Node has multiple PostUpdateNodes. | | cpp11.cpp:82:17:82:55 | [...](...){...} indirection | Node has multiple PostUpdateNodes. | | ir.cpp:514:10:514:11 | definition of r2 indirection | Node has multiple PostUpdateNodes. | 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 b73feb125e2c..3539e52eecfb 100644 --- a/cpp/ql/test/library-tests/templates/type_instantiations/types.expected +++ b/cpp/ql/test/library-tests/templates/type_instantiations/types.expected @@ -1,5 +1,10 @@ | file://:0:0:0:0 | Cl * | | file://:0:0:0:0 | _Complex _Float16 | +| file://:0:0:0:0 | _Complex _Float32 | +| file://:0:0:0:0 | _Complex _Float32x | +| file://:0:0:0:0 | _Complex _Float64 | +| file://:0:0:0:0 | _Complex _Float64x | +| file://:0:0:0:0 | _Complex _Float128 | | file://:0:0:0:0 | _Complex __float128 | | file://:0:0:0:0 | _Complex double | | file://:0:0:0:0 | _Complex float | @@ -16,7 +21,9 @@ | file://:0:0:0:0 | _Imaginary double | | file://:0:0:0:0 | _Imaginary float | | file://:0:0:0:0 | _Imaginary long double | +| file://:0:0:0:0 | __bf16 | | file://:0:0:0:0 | __float128 | +| file://:0:0:0:0 | __fp16 | | file://:0:0:0:0 | __int128 | | file://:0:0:0:0 | __va_list_tag | | file://:0:0:0:0 | __va_list_tag & | @@ -44,6 +51,7 @@ | file://:0:0:0:0 | signed long | | file://:0:0:0:0 | signed long long | | file://:0:0:0:0 | signed short | +| file://:0:0:0:0 | std::float16_t | | file://:0:0:0:0 | unknown | | file://:0:0:0:0 | unsigned __int128 | | file://:0:0:0:0 | unsigned char | 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 69bfebe21959..b7bc9e04fe34 100644 --- a/cpp/ql/test/library-tests/type_sizes/type_sizes.expected +++ b/cpp/ql/test/library-tests/type_sizes/type_sizes.expected @@ -20,6 +20,11 @@ | file://:0:0:0:0 | UnionWithDef & | 8 | | file://:0:0:0:0 | UnionWithDef && | 8 | | file://:0:0:0:0 | _Complex _Float16 | 4 | +| file://:0:0:0:0 | _Complex _Float32 | 8 | +| file://:0:0:0:0 | _Complex _Float32x | 16 | +| file://:0:0:0:0 | _Complex _Float64 | 16 | +| file://:0:0:0:0 | _Complex _Float64x | 32 | +| file://:0:0:0:0 | _Complex _Float128 | 32 | | file://:0:0:0:0 | _Complex __float128 | 32 | | file://:0:0:0:0 | _Complex double | 16 | | file://:0:0:0:0 | _Complex float | 8 | @@ -37,7 +42,9 @@ | file://:0:0:0:0 | _Imaginary float | 4 | | file://:0:0:0:0 | _Imaginary long double | 16 | | file://:0:0:0:0 | __attribute((vector_size(16))) int | 16 | +| file://:0:0:0:0 | __bf16 | 2 | | 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 | __va_list_tag | 24 | | file://:0:0:0:0 | __va_list_tag & | 8 | @@ -83,6 +90,7 @@ | file://:0:0:0:0 | signed long | 8 | | file://:0:0:0:0 | signed long long | 8 | | file://:0:0:0:0 | signed short | 2 | +| file://:0:0:0:0 | std::float16_t | 2 | | file://:0:0:0:0 | unknown | 1 | | file://:0:0:0:0 | unsigned __int128 | 16 | | file://:0:0:0:0 | unsigned char | 1 | 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 d635ec8b5df6..91078ac1431f 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 @@ -2,6 +2,11 @@ | file://:0:0:0:0 | ..(*)(..) | ..(*)(..) | | file://:0:0:0:0 | Tmpl | Tmpl | | file://:0:0:0:0 | _Complex _Float16 | _Complex _Float16 | +| file://:0:0:0:0 | _Complex _Float32 | _Complex _Float32 | +| file://:0:0:0:0 | _Complex _Float32x | _Complex _Float32x | +| file://:0:0:0:0 | _Complex _Float64 | _Complex _Float64 | +| file://:0:0:0:0 | _Complex _Float64x | _Complex _Float64x | +| file://:0:0:0:0 | _Complex _Float128 | _Complex _Float128 | | file://:0:0:0:0 | _Complex __float128 | _Complex __float128 | | file://:0:0:0:0 | _Complex double | _Complex double | | file://:0:0:0:0 | _Complex float | _Complex float | @@ -18,7 +23,9 @@ | file://:0:0:0:0 | _Imaginary double | _Imaginary double | | file://:0:0:0:0 | _Imaginary float | _Imaginary float | | file://:0:0:0:0 | _Imaginary long double | _Imaginary long double | +| file://:0:0:0:0 | __bf16 | __bf16 | | 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 | __va_list_tag & | __va_list_tag & | | file://:0:0:0:0 | __va_list_tag && | __va_list_tag && | @@ -45,6 +52,7 @@ | file://:0:0:0:0 | signed long | signed long | | file://:0:0:0:0 | signed long long | signed long long | | file://:0:0:0:0 | signed short | signed short | +| file://:0:0:0:0 | std::float16_t | std::float16_t | | file://:0:0:0:0 | unknown | unknown | | file://:0:0:0:0 | unsigned __int128 | unsigned __int128 | | file://:0:0:0:0 | unsigned char | unsigned char | diff --git a/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected b/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected index 88e365023a11..794d35433dfa 100644 --- a/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected +++ b/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected @@ -756,7 +756,7 @@ test.cpp: # 92| valnum = r92_1, r92_3, r93_2 # 92| m92_4(int) = Store[x] : &:r92_3, r92_2 # 92| valnum = m92_4, m92_6, m93_4, r92_2, r92_5, r93_3 -# 92| r92_5(int) = CopyValue : r92_2 +# 92| r92_5(int) = Load[x] : &:r92_3, m92_4 # 92| valnum = m92_4, m92_6, m93_4, r92_2, r92_5, r93_3 # 92| m92_6(int) = Store[x] : &:r92_1, r92_5 # 92| valnum = m92_4, m92_6, m93_4, r92_2, r92_5, r93_3 diff --git a/cpp/ql/test/library-tests/variables/variables/types.expected b/cpp/ql/test/library-tests/variables/variables/types.expected index f086dec166a9..39659a7ae392 100644 --- a/cpp/ql/test/library-tests/variables/variables/types.expected +++ b/cpp/ql/test/library-tests/variables/variables/types.expected @@ -1,6 +1,11 @@ | ..()(..) | RoutineType | | | | | | ..(*)(..) | FunctionPointerType | | ..()(..) | | | | _Complex _Float16 | BinaryFloatingPointType, ComplexNumberType | | | | | +| _Complex _Float32 | BinaryFloatingPointType, ComplexNumberType | | | | | +| _Complex _Float32x | BinaryFloatingPointType, ComplexNumberType | | | | | +| _Complex _Float64 | BinaryFloatingPointType, ComplexNumberType | | | | | +| _Complex _Float64x | BinaryFloatingPointType, ComplexNumberType | | | | | +| _Complex _Float128 | BinaryFloatingPointType, ComplexNumberType | | | | | | _Complex __float128 | BinaryFloatingPointType, ComplexNumberType | | | | | | _Complex double | BinaryFloatingPointType, ComplexNumberType | | | | | | _Complex float | BinaryFloatingPointType, ComplexNumberType | | | | | @@ -17,7 +22,9 @@ | _Imaginary double | BinaryFloatingPointType, ImaginaryNumberType | | | | | | _Imaginary float | BinaryFloatingPointType, ImaginaryNumberType | | | | | | _Imaginary long double | BinaryFloatingPointType, ImaginaryNumberType | | | | | +| __bf16 | BinaryFloatingPointType, RealNumberType | | | | | | __float128 | Float128Type | | | | | +| __fp16 | BinaryFloatingPointType, RealNumberType | | | | | | __int128 | Int128Type | | | | | | __va_list_tag | DirectAccessHolder, MetricClass, Struct, StructLikeClass | | | | | | __va_list_tag & | LValueReferenceType | | __va_list_tag | | | @@ -83,6 +90,7 @@ | signed long | LongType | | | | | | signed long long | LongLongType | | | | | | signed short | ShortType | | | | | +| std::float16_t | BinaryFloatingPointType, RealNumberType | | | | | | unknown | UnknownType | | | | | | unsigned __int128 | Int128Type | | | | unsigned integral | | unsigned char | UnsignedCharType | | | | unsigned integral | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/argv/argvLocal.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/argv/argvLocal.expected index 814689b72026..2b27b7ff7322 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/argv/argvLocal.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/argv/argvLocal.expected @@ -67,8 +67,6 @@ edges | argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:15:136:18 | -- ... | | argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:15:136:18 | -- ... | | argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:15:136:18 | -- ... | -| argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:15:136:18 | -- ... | -| argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:15:136:18 | -- ... | | argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:17:136:18 | i4 | | argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:17:136:18 | i4 | | argvLocal.c:126:10:126:13 | argv | argvLocal.c:127:9:127:10 | i5 | @@ -163,7 +161,6 @@ nodes | argvLocal.c:135:9:135:12 | ... ++ | semmle.label | ... ++ | | argvLocal.c:136:15:136:18 | -- ... | semmle.label | -- ... | | argvLocal.c:136:15:136:18 | -- ... | semmle.label | -- ... | -| argvLocal.c:136:15:136:18 | -- ... | semmle.label | -- ... | | argvLocal.c:136:17:136:18 | i4 | semmle.label | i4 | | argvLocal.c:139:9:139:26 | ... ? ... : ... | semmle.label | ... ? ... : ... | | argvLocal.c:139:9:139:26 | ... ? ... : ... | semmle.label | ... ? ... : ... |