================================ declaration specs ================================ struct __declspec(dllexport) s2 { }; union __declspec(noinline) u2 { }; --- (translation_unit (struct_specifier (ms_declspec_modifier (identifier)) name: (type_identifier) body: (field_declaration_list)) (union_specifier (ms_declspec_modifier (identifier)) name: (type_identifier) body: (field_declaration_list))) ================================ pointers ================================ struct s2 { int * __restrict x; int * __sptr psp; int * __uptr pup; int * __unaligned pup; }; void sum2(int n, int * __restrict a, int * __restrict b, int * c, int * d) { int i; for (i = 0; i < n; i++) { a[i] = b[i] + c[i]; c[i] = b[i] + d[i]; } } void MyFunction(char * __uptr myValue); --- (translation_unit (struct_specifier name: (type_identifier) body: (field_declaration_list (field_declaration type: (primitive_type) declarator: (pointer_declarator (ms_pointer_modifier (ms_restrict_modifier)) declarator: (field_identifier))) (field_declaration type: (primitive_type) declarator: (pointer_declarator (ms_pointer_modifier (ms_signed_ptr_modifier)) declarator: (field_identifier))) (field_declaration type: (primitive_type) declarator: (pointer_declarator (ms_pointer_modifier (ms_unsigned_ptr_modifier)) declarator: (field_identifier))) (field_declaration type: (primitive_type) declarator: (pointer_declarator (ms_pointer_modifier (ms_unaligned_ptr_modifier)) declarator: (field_identifier))))) (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator (ms_pointer_modifier (ms_restrict_modifier)) declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator (ms_pointer_modifier (ms_restrict_modifier)) declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (for_statement initializer: (assignment_expression left: (identifier) right: (number_literal)) condition: (binary_expression left: (identifier) right: (identifier)) update: (update_expression argument: (identifier)) body: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (subscript_expression argument: (identifier) index: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (subscript_expression argument: (identifier) index: (identifier))))))))) (declaration type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator (ms_pointer_modifier (ms_unsigned_ptr_modifier)) declarator: (identifier))))))) ================================ call modifiers ================================ __cdecl void mymethod(){ return; } __fastcall void mymethod(){ return; } --- (translation_unit (function_definition (ms_call_modifier) type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list)) body: (compound_statement (return_statement))) (function_definition (ms_call_modifier) type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list)) body: (compound_statement (return_statement))))