void pp_c_specifier_qualifier_list (c_pretty_printer *pp, tree t) { const enum tree_code code = TREE_CODE (t); if (TREE_CODE (t) != POINTER_TYPE) pp_c_type_qualifier_list (pp, t); switch (code) { case REFERENCE_TYPE: case POINTER_TYPE: /* APPLE LOCAL blocks */ case BLOCK_POINTER_TYPE: { /* Get the types-specifier of this type. */ tree pointee = strip_pointer_operator (TREE_TYPE (t)); pp_c_specifier_qualifier_list (pp, pointee); if (TREE_CODE (pointee) == ARRAY_TYPE || TREE_CODE (pointee) == FUNCTION_TYPE) { pp_c_whitespace (pp); pp_c_left_paren (pp); } else if (!c_dialect_cxx ()) pp_c_whitespace (pp); pp_ptr_operator (pp, t); } break; case FUNCTION_TYPE: case ARRAY_TYPE: pp_c_specifier_qualifier_list (pp, TREE_TYPE (t)); break; case VECTOR_TYPE: case COMPLEX_TYPE: pp_c_specifier_qualifier_list (pp, TREE_TYPE (t)); if (code == COMPLEX_TYPE) pp_c_identifier (pp, flag_isoc99 ? "_Complex" : "__complex__"); else if (code == VECTOR_TYPE) pp_c_identifier (pp, "__vector__"); break; default: pp_simple_type_specifier (pp, t); break; } }
void pp_c_declaration_specifiers (c_pretty_printer *pp, tree t) { pp_storage_class_specifier (pp, t); pp_function_specifier (pp, t); pp_c_specifier_qualifier_list (pp, DECL_P (t) ? TREE_TYPE (t) : t); }
static void pp_cxx_type_specifier_seq (cxx_pretty_printer *pp, tree t) { switch (TREE_CODE (t)) { case TEMPLATE_DECL: case TEMPLATE_TYPE_PARM: case TEMPLATE_TEMPLATE_PARM: case TYPE_DECL: case BOUND_TEMPLATE_TEMPLATE_PARM: pp_cxx_cv_qualifier_seq (pp, t); pp_cxx_simple_type_specifier (pp, t); break; case METHOD_TYPE: pp_cxx_type_specifier_seq (pp, TREE_TYPE (t)); pp_cxx_space_for_pointer_operator (pp, TREE_TYPE (t)); pp_cxx_nested_name_specifier (pp, TYPE_METHOD_BASETYPE (t)); break; default: if (!(TREE_CODE (t) == FUNCTION_DECL && DECL_CONSTRUCTOR_P (t))) pp_c_specifier_qualifier_list (pp_c_base (pp), t); } }
void pp_c_type_id (c_pretty_printer *pp, tree t) { pp_c_specifier_qualifier_list (pp, t); pp_abstract_declarator (pp, t); }