From patchwork Thu Nov 15 21:53:50 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Diego Novillo X-Patchwork-Id: 199445 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id EADD72C0419 for ; Fri, 16 Nov 2012 08:58:38 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1353621519; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Received:Received:Date:To:Subject:User-Agent: MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id: From:Mailing-List:Precedence:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:Sender:Delivered-To; bh=ZK3QWcx EkfnSCtlLJNe9/I/L+6Q=; b=mzHkgH+fLI7mwJBXwN1wtT8CD58fRoJ092M/cCl g1ga5Ms28GknZvUPQ7J3c3VsDnV/DRz6PxXCz3z7IhE963v1gX84ywFiwaczD35t 1bqTP9/dqvaolPFBoDMYjwRRiQJuANkqxifQWqSWvHSfge3ji7LG5/L+vpt0FhBf jx60= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:X-Google-DKIM-Signature:Received:Received:Received:Received:Date:To:Subject:User-Agent:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:From:X-Gm-Message-State:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=an4TjW7U/FwJjeEMBulj0RI4BYHL7JB/KdYL7xbYXgUShlbNbbG4zdwaPFopI0 5g0Cimp2WbMf2DjDXIH04v4zWs1GqgsOxL7oGy38DOiuNZ3rapLBV/IYoiPMzXyS LJN3Ore0YIE2i8GHqEdOM/KTowZiET8XF9VYAEkz50jlA=; Received: (qmail 11973 invoked by alias); 15 Nov 2012 21:54:43 -0000 Received: (qmail 11765 invoked by uid 22791); 15 Nov 2012 21:54:38 -0000 X-SWARE-Spam-Status: No, hits=-1.5 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, KAM_STOCKTIP, KHOP_RCVD_TRUST, RCVD_IN_DNSWL_LOW, RCVD_IN_HOSTKARMA_YE, RP_MATCHES_RCVD, TW_BJ, TW_TM X-Spam-Check-By: sourceware.org Received: from mail-ye0-f201.google.com (HELO mail-ye0-f201.google.com) (209.85.213.201) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 15 Nov 2012 21:53:51 +0000 Received: by mail-ye0-f201.google.com with SMTP id m15so229909yen.2 for ; Thu, 15 Nov 2012 13:53:51 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=date:to:subject:user-agent:mime-version:content-type :content-transfer-encoding:message-id:from:x-gm-message-state; bh=0LGb5YBhmqlHF2zyGFq1puqAErHQxej+4gbUCDixP9w=; b=HFcG2ohnme7ryU1FAGPII1L6CeV9P+k1OiwPeuSuYrzFUpuIdoG2p1lS5pRIthovph w9C8RfF8MZCcM320+hiQD3KGWXUuqFRLHxibnjPhXb0VY+ty3dRMIKGAckp0QvGJ+zwN wSPxMX1TDxJ/cAANJ1SkPiKu/9lrRkvIMaCZOZGkYYpJIwcKR3CFrh6i3rLhk3riH+7A Bug/rJqe7P8dIw0qFmCOF3U0pA5T6ic/AAfsJGrjnf2nbx0kmTeIS5Yegnd2TS5tZu5s oILgPCTY3Hi2vL/A7+IxUwk4AbPfZDtE3mz/Kvn49QvRRWr+9tpC8N6jtuCxvqCRyzqS ItGw== Received: by 10.100.83.14 with SMTP id g14mr435047anb.22.1353016431397; Thu, 15 Nov 2012 13:53:51 -0800 (PST) Received: from wpzn3.hot.corp.google.com (216-239-44-65.google.com [216.239.44.65]) by gmr-mx.google.com with ESMTPS id i27si1369348yhe.4.2012.11.15.13.53.51 (version=TLSv1/SSLv3 cipher=AES128-SHA); Thu, 15 Nov 2012 13:53:51 -0800 (PST) Received: from torture.tor.corp.google.com (torture.tor.corp.google.com [172.30.222.16]) by wpzn3.hot.corp.google.com (Postfix) with ESMTP id 264D7100307; Thu, 15 Nov 2012 13:53:51 -0800 (PST) Received: by torture.tor.corp.google.com (Postfix, from userid 54752) id B2C01C0916; Thu, 15 Nov 2012 16:53:50 -0500 (EST) Date: Thu, 15 Nov 2012 16:53:50 -0500 To: mikestump@comcast.net, gcc-patches@gcc.gnu.org Subject: VEC re-write [patch 11/25] User-Agent: Heirloom mailx 12.5 6/20/10 MIME-Version: 1.0 Message-Id: <20121115215350.B2C01C0916@torture.tor.corp.google.com> From: dnovillo@google.com (Diego Novillo) X-Gm-Message-State: ALoCoQliuzAZS7O5OH9j17s1GhhXMqPmQtnjideUAC82LE2hM90RmpcJGO1tM7w8EXRvDGQm0402W0Qwb0cwTs1rb+AkdaXzBR/QRERC5N/q5bp+wF68zjob0K4yuV7tiOH7ZHKTMlKqUEn1KdTuTvdGaZIRjNV5CBBLEiPOfReXTKGfxQm9E284xhzMU6J5OB7SlD5a/k8L X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org 2012-11-15 Diego Novillo Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec) * objc-act.c: Use new vec API in vec.h. * objc-act.h: Likewise. * objc-gnu-runtime-abi-01.c: Likewise. * objc-next-runtime-abi-01.c: Likewise. * objc-next-runtime-abi-02.c: Likewise. * objc-runtime-hooks.h: Likewise. * objc-runtime-shared-support.c: Likewise. * objc-runtime-shared-support.h: Likewise. diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index ed1a28f..3ef84cd 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -246,7 +246,7 @@ static char *errbuf; /* Buffer for error diagnostics */ /* An array of all the local variables in the current function that need to be marked as volatile. */ -VEC(tree,gc) *local_variables_to_volatilize = NULL; +vec *local_variables_to_volatilize = NULL; /* Store all constructed constant strings in a hash table so that they get uniqued properly. */ @@ -2067,7 +2067,7 @@ objc_build_struct (tree klass, tree fields, tree super_name) tree s = objc_start_struct (name); tree super = (super_name ? xref_tag (RECORD_TYPE, super_name) : NULL_TREE); tree t; - VEC(tree,heap) *objc_info = NULL; + vec objc_info = vec(); int i; if (super) @@ -2127,7 +2127,7 @@ objc_build_struct (tree klass, tree fields, tree super_name) for (t = TYPE_MAIN_VARIANT (s); t; t = TYPE_NEXT_VARIANT (t)) { INIT_TYPE_OBJC_INFO (t); - VEC_safe_push (tree, heap, objc_info, TYPE_OBJC_INFO (t)); + objc_info.safe_push (TYPE_OBJC_INFO (t)); } s = objc_finish_struct (s, fields); @@ -2158,12 +2158,12 @@ objc_build_struct (tree klass, tree fields, tree super_name) /* Replace TYPE_OBJC_INFO with the saved one. This restores any protocol information that may have been associated with the type. */ - TYPE_OBJC_INFO (t) = VEC_index (tree, objc_info, i); + TYPE_OBJC_INFO (t) = objc_info[i]; /* Replace the IDENTIFIER_NODE with an actual @interface now that we have it. */ TYPE_OBJC_INTERFACE (t) = klass; } - VEC_free (tree, heap, objc_info); + objc_info.release (); /* Use TYPE_BINFO structures to point at the super class, if any. */ objc_xref_basetypes (s, super); @@ -2187,9 +2187,9 @@ objc_volatilize_decl (tree decl) || TREE_CODE (decl) == PARM_DECL)) { if (local_variables_to_volatilize == NULL) - local_variables_to_volatilize = VEC_alloc (tree, gc, 8); + vec_alloc (local_variables_to_volatilize, 8); - VEC_safe_push (tree, gc, local_variables_to_volatilize, decl); + vec_safe_push (local_variables_to_volatilize, decl); } } @@ -2208,7 +2208,7 @@ objc_finish_function (void) { int i; tree decl; - FOR_EACH_VEC_ELT (tree, local_variables_to_volatilize, i, decl) + FOR_EACH_VEC_ELT (*local_variables_to_volatilize, i, decl) { tree t = TREE_TYPE (decl); @@ -2223,7 +2223,7 @@ objc_finish_function (void) } /* Now we delete the vector. This sets it to NULL as well. */ - VEC_free (tree, gc, local_variables_to_volatilize); + vec_free (local_variables_to_volatilize); } } @@ -2688,7 +2688,7 @@ objc_xref_basetypes (tree ref, tree basetype) tree base_binfo = objc_copy_binfo (TYPE_BINFO (basetype)); BINFO_INHERITANCE_CHAIN (base_binfo) = binfo; - BINFO_BASE_ACCESSES (binfo) = VEC_alloc (tree, gc, 1); + vec_alloc (BINFO_BASE_ACCESSES (binfo), 1); BINFO_BASE_APPEND (binfo, base_binfo); BINFO_BASE_ACCESS_APPEND (binfo, access_public_node); } @@ -3198,7 +3198,7 @@ objc_build_string_object (tree string) with type TYPE and elements ELTS. */ tree -objc_build_constructor (tree type, VEC(constructor_elt,gc) *elts) +objc_build_constructor (tree type, vec *elts) { tree constructor = build_constructor (type, elts); @@ -3209,7 +3209,7 @@ objc_build_constructor (tree type, VEC(constructor_elt,gc) *elts) #ifdef OBJCPLUS /* Adjust for impedance mismatch. We should figure out how to build CONSTRUCTORs that consistently please both the C and C++ gods. */ - if (!VEC_index (constructor_elt, elts, 0).index) + if (!(*elts)[0].index) TREE_TYPE (constructor) = init_list_type_node; #endif @@ -4995,7 +4995,7 @@ tree build_function_type_for_method (tree return_type, tree method, int context, bool super_flag) { - VEC(tree,gc) *argtypes = make_tree_vector (); + vec *argtypes = make_tree_vector (); tree t, ftype; bool is_varargs = false; @@ -5016,7 +5016,7 @@ build_function_type_for_method (tree return_type, tree method, appropriate. */ arg_type = objc_decay_parm_type (arg_type); - VEC_safe_push (tree, gc, argtypes, arg_type); + vec_safe_push (argtypes, arg_type); } if (METHOD_ADD_ARGS (method)) @@ -5028,7 +5028,7 @@ build_function_type_for_method (tree return_type, tree method, arg_type = objc_decay_parm_type (arg_type); - VEC_safe_push (tree, gc, argtypes, arg_type); + vec_safe_push (argtypes, arg_type); } if (METHOD_ADD_ARGS_ELLIPSIS_P (method)) diff --git a/gcc/objc/objc-act.h b/gcc/objc/objc-act.h index e958e66..b0c3d0a 100644 --- a/gcc/objc/objc-act.h +++ b/gcc/objc/objc-act.h @@ -254,7 +254,7 @@ struct GTY(()) hashed_entry { /* An array of all the local variables in the current function that need to be marked as volatile. */ -extern GTY(()) VEC(tree,gc) *local_variables_to_volatilize; +extern GTY(()) vec *local_variables_to_volatilize; /* Objective-C/Objective-C++ @implementation list. */ diff --git a/gcc/objc/objc-gnu-runtime-abi-01.c b/gcc/objc/objc-gnu-runtime-abi-01.c index 6bdffac..5cd39ef 100644 --- a/gcc/objc/objc-gnu-runtime-abi-01.c +++ b/gcc/objc/objc-gnu-runtime-abi-01.c @@ -104,8 +104,8 @@ static tree gnu_runtime_abi_01_get_class_super_ref (location_t, struct imp_entry static tree gnu_runtime_abi_01_get_category_super_ref (location_t, struct imp_entry *, bool); static tree gnu_runtime_abi_01_receiver_is_class_object (tree); -static void gnu_runtime_abi_01_get_arg_type_list_base (VEC(tree,gc) **, tree, - int, int); +static void gnu_runtime_abi_01_get_arg_type_list_base (vec **, + tree, int, int); static tree gnu_runtime_abi_01_build_objc_method_call (location_t, tree, tree, tree, tree, tree, int); @@ -585,8 +585,8 @@ gnu_runtime_abi_01_get_class_reference (tree ident) prototype. */ static void -gnu_runtime_abi_01_get_arg_type_list_base (VEC(tree,gc) **argtypes, tree meth, - int context, +gnu_runtime_abi_01_get_arg_type_list_base (vec **argtypes, + tree meth, int context, int superflag ATTRIBUTE_UNUSED) { tree receiver_type; @@ -596,9 +596,9 @@ gnu_runtime_abi_01_get_arg_type_list_base (VEC(tree,gc) **argtypes, tree meth, else receiver_type = objc_object_type; - VEC_safe_push (tree, gc, *argtypes, receiver_type); + vec_safe_push (*argtypes, receiver_type); /* Selector type - will eventually change to `int'. */ - VEC_safe_push (tree, gc, *argtypes, objc_selector_type); + vec_safe_push (*argtypes, objc_selector_type); } /* Unused for GNU runtime. */ @@ -662,8 +662,8 @@ build_objc_method_call (location_t loc, int super_flag, tree method_prototype, : (flag_objc_direct_dispatch ? umsg_fast_decl : umsg_decl)); tree rcv_p = (super_flag ? objc_super_type : objc_object_type); - VEC(tree, gc) *parms; - VEC(tree, gc) *tv; + vec *parms; + vec *tv; unsigned nparm = (method_params ? list_length (method_params) : 0); /* If a prototype for the method to be called exists, then cast @@ -692,30 +692,30 @@ build_objc_method_call (location_t loc, int super_flag, tree method_prototype, lookup_object = save_expr (lookup_object); /* Param list + 2 slots for object and selector. */ - parms = VEC_alloc (tree, gc, nparm + 2); - tv = VEC_alloc (tree, gc, 2); + vec_alloc (parms, nparm + 2); + vec_alloc (tv, 2); /* First, call the lookup function to get a pointer to the method, then cast the pointer, then call it with the method arguments. */ - VEC_quick_push (tree, tv, lookup_object); - VEC_quick_push (tree, tv, selector); + tv->quick_push (lookup_object); + tv->quick_push (selector); method = build_function_call_vec (loc, sender, tv, NULL); - VEC_free (tree, gc, tv); + vec_free (tv); /* Pass the appropriate object to the method. */ - VEC_quick_push (tree, parms, (super_flag ? self_decl : lookup_object)); + parms->quick_push ((super_flag ? self_decl : lookup_object)); /* Pass the selector to the method. */ - VEC_quick_push (tree, parms, selector); + parms->quick_push (selector); /* Now append the remainder of the parms. */ if (nparm) for (; method_params; method_params = TREE_CHAIN (method_params)) - VEC_quick_push (tree, parms, TREE_VALUE (method_params)); + parms->quick_push (TREE_VALUE (method_params)); /* Build an obj_type_ref, with the correct cast for the method call. */ t = build3 (OBJ_TYPE_REF, sender_cast, method, lookup_object, size_zero_node); t = build_function_call_vec (loc, t, parms, NULL); - VEC_free (tree, gc, parms); + vec_free (parms); return t; } @@ -900,7 +900,7 @@ gnu_runtime_abi_01_build_const_string_constructor (location_t loc, tree string, int length) { tree constructor, fields; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; /* GNU: (NXConstantString *) & ((__builtin_ObjCString) { NULL, string, length }) */ fields = TYPE_FIELDS (internal_const_str_type); @@ -1087,7 +1087,7 @@ build_protocol_initializer (tree type, tree protocol_name, tree protocol_list, { tree expr, ttyp; location_t loc; - VEC(constructor_elt,gc) *inits = NULL; + vec *inits = NULL; /* TODO: pass the loc in or find it from args. */ loc = input_location; @@ -1122,7 +1122,7 @@ static tree generate_protocol_list (tree i_or_p, tree klass_ctxt) { tree array_type, ptype, refs_decl, lproto, e, plist; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; char buf[BUFSIZE]; int size = 0; @@ -1200,7 +1200,7 @@ generate_v1_meth_descriptor_table (tree chain, tree protocol, const char *prefix { tree method_list_template, initlist, decl; int size; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; char buf[BUFSIZE]; if (!chain || !prefix) @@ -1348,7 +1348,7 @@ static tree generate_dispatch_table (tree chain, const char *name) { tree decl, method_list_template, initlist; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; int size = list_length (chain); if (!objc_method_template) @@ -1380,7 +1380,7 @@ build_category_initializer (tree type, tree cat_name, tree class_name, { tree expr, ltyp; location_t loc; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; /* TODO: pass the loc in or find it from args. */ /* TODO: pass the loc in or find it from args. */ @@ -1488,7 +1488,7 @@ build_shared_structure_initializer (tree type, tree isa, tree super, tree protocol_list) { tree expr, ltyp; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; /* isa = */ CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, isa); @@ -1584,7 +1584,7 @@ generate_ivars_list (tree chain, const char *name) { tree initlist, ivar_list_template, decl; int size; - VEC(constructor_elt,gc) *inits = NULL; + vec *inits = NULL; if (!chain) return NULL_TREE; @@ -1807,8 +1807,8 @@ static void build_gnu_selector_translation_table (void) { tree chain, expr; - VEC(constructor_elt,gc) *inits = NULL; - VEC(constructor_elt,gc) *v ; + vec *inits = NULL; + vec *v ; /* Cause the selector table (previously forward-declared) to be actually output. */ @@ -1857,7 +1857,7 @@ generate_static_references (void) = build_array_type (build_pointer_type (void_type_node), NULL_TREE); int num_inst, num_class; char buf[BUFSIZE]; - VEC(constructor_elt,gc) *decls = NULL; + vec *decls = NULL; /* FIXME: Remove NeXT runtime code. */ if (flag_next_runtime) @@ -1866,7 +1866,7 @@ generate_static_references (void) for (cl_chain = objc_static_instances, num_class = 0; cl_chain; cl_chain = TREE_CHAIN (cl_chain), num_class++) { - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; for (num_inst = 0, in_chain = TREE_PURPOSE (cl_chain); in_chain; num_inst++, in_chain = TREE_CHAIN (in_chain)); @@ -1917,7 +1917,7 @@ init_def_list (tree type) tree expr; struct imp_entry *impent; location_t loc; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; if (imp_count) for (impent = imp_list; impent; impent = impent->next) @@ -2004,7 +2004,7 @@ init_objc_symtab (tree type) { tree field, expr, ltyp; location_t loc; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; loc = UNKNOWN_LOCATION; @@ -2207,12 +2207,13 @@ static tree build_throw_stmt (location_t loc, tree throw_expr, bool rethrown ATTRIBUTE_UNUSED) { tree t; - VEC(tree, gc) *parms = VEC_alloc (tree, gc, 1); + vec *parms; + vec_alloc (parms, 1); /* A throw is just a call to the runtime throw function with the object as a parameter. */ - VEC_quick_push (tree, parms, throw_expr); + parms->quick_push (throw_expr); t = build_function_call_vec (loc, objc_exception_throw_decl, parms, NULL); - VEC_free (tree, gc, parms); + vec_free (parms); return add_stmt (t); } diff --git a/gcc/objc/objc-next-runtime-abi-01.c b/gcc/objc/objc-next-runtime-abi-01.c index cf24591..598141c 100644 --- a/gcc/objc/objc-next-runtime-abi-01.c +++ b/gcc/objc/objc-next-runtime-abi-01.c @@ -123,8 +123,8 @@ static tree next_runtime_abi_01_get_class_super_ref (location_t, struct imp_entr static tree next_runtime_abi_01_get_category_super_ref (location_t, struct imp_entry *, bool); static tree next_runtime_abi_01_receiver_is_class_object (tree); -static void next_runtime_abi_01_get_arg_type_list_base (VEC(tree,gc) **, tree, - int, int); +static void next_runtime_abi_01_get_arg_type_list_base (vec **, + tree, int, int); static tree next_runtime_abi_01_build_objc_method_call (location_t, tree, tree, tree, tree, tree, int); static bool next_runtime_abi_01_setup_const_string_class_decl (void); @@ -730,8 +730,9 @@ next_runtime_abi_01_get_class_reference (tree ident) prototype. */ static void -next_runtime_abi_01_get_arg_type_list_base (VEC(tree,gc) **argtypes, tree meth, - int context, int superflag) +next_runtime_abi_01_get_arg_type_list_base (vec **argtypes, + tree meth, int context, + int superflag) { tree receiver_type; @@ -742,9 +743,9 @@ next_runtime_abi_01_get_arg_type_list_base (VEC(tree,gc) **argtypes, tree meth, else receiver_type = objc_object_type; - VEC_safe_push (tree, gc, *argtypes, receiver_type); + vec_safe_push (*argtypes, receiver_type); /* Selector type - will eventually change to `int'. */ - VEC_safe_push (tree, gc, *argtypes, objc_selector_type); + vec_safe_push (*argtypes, objc_selector_type); } static tree @@ -820,7 +821,7 @@ build_objc_method_call (location_t loc, int super_flag, tree method_prototype, { tree sender, sender_cast, method, t; tree rcv_p = (super_flag ? objc_super_type : objc_object_type); - VEC(tree, gc) *parms; + vec *parms; unsigned nparm = (method_params ? list_length (method_params) : 0); /* If a prototype for the method to be called exists, then cast @@ -846,7 +847,7 @@ build_objc_method_call (location_t loc, int super_flag, tree method_prototype, lookup_object = save_expr (lookup_object); /* Param list + 2 slots for object and selector. */ - parms = VEC_alloc (tree, gc, nparm + 2); + vec_alloc (parms, nparm + 2); /* If we are returning a struct in memory, and the address of that memory location is passed as a hidden first @@ -869,19 +870,19 @@ build_objc_method_call (location_t loc, int super_flag, tree method_prototype, method = build_fold_addr_expr_loc (loc, sender); /* Pass the object to the method. */ - VEC_quick_push (tree, parms, lookup_object); + parms->quick_push (lookup_object); /* Pass the selector to the method. */ - VEC_quick_push (tree, parms, selector); + parms->quick_push (selector); /* Now append the remainder of the parms. */ if (nparm) for (; method_params; method_params = TREE_CHAIN (method_params)) - VEC_quick_push (tree, parms, TREE_VALUE (method_params)); + parms->quick_push (TREE_VALUE (method_params)); /* Build an obj_type_ref, with the correct cast for the method call. */ t = build3 (OBJ_TYPE_REF, sender_cast, method, lookup_object, size_zero_node); t = build_function_call_vec (loc, t, parms, NULL); - VEC_free (tree, gc, parms); + vec_free (parms); return t; } @@ -1005,7 +1006,7 @@ next_runtime_abi_01_build_const_string_constructor (location_t loc, tree string, int length) { tree constructor, fields, var; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; /* NeXT: (NSConstantString *) & ((__builtin_ObjCString) { isa, string, length }) */ fields = TYPE_FIELDS (internal_const_str_type); @@ -1145,7 +1146,7 @@ generate_v1_meth_descriptor_table (tree chain, tree protocol, { tree method_list_template, initlist, decl; int size; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; char buf[BUFSIZE]; if (!chain || !prefix) @@ -1186,7 +1187,7 @@ generate_v1_objc_protocol_extension (tree proto_interface, { int size; location_t loc; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; tree decl, expr; char buf[BUFSIZE]; @@ -1277,7 +1278,7 @@ static tree build_v1_property_table_initializer (tree type, tree context) { tree x; - VEC(constructor_elt,gc) *inits = NULL; + vec *inits = NULL; if (TREE_CODE (context) == PROTOCOL_INTERFACE_TYPE) x = CLASS_PROPERTY_DECL (context); @@ -1286,7 +1287,7 @@ build_v1_property_table_initializer (tree type, tree context) for (; x; x = TREE_CHAIN (x)) { - VEC(constructor_elt,gc) *elemlist = NULL; + vec *elemlist = NULL; tree attribute, name_ident = PROPERTY_NAME (x); CONSTRUCTOR_APPEND_ELT (elemlist, NULL_TREE, @@ -1313,7 +1314,7 @@ generate_v1_property_table (tree context, tree klass_ctxt) { tree x, decl, initlist, property_list_template; bool is_proto = false; - VEC(constructor_elt,gc) *inits = NULL; + vec *inits = NULL; int init_val, size = 0; char buf[BUFSIZE]; @@ -1365,7 +1366,7 @@ generate_v1_protocol_list (tree i_or_p, tree klass_ctxt) { tree array_type, ptype, refs_decl, lproto, e, plist, attr; int size = 0; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; char buf[BUFSIZE]; switch (TREE_CODE (i_or_p)) @@ -1447,7 +1448,7 @@ build_v1_protocol_initializer (tree type, tree protocol_name, tree protocol_list { tree expr, ttyp; location_t loc; - VEC(constructor_elt,gc) *inits = NULL; + vec *inits = NULL; if (!objc_protocol_extension_template) build_v1_objc_protocol_extension_template (); @@ -1659,7 +1660,7 @@ static tree generate_dispatch_table (tree chain, const char *name, tree attr) { tree decl, method_list_template, initlist; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; int size;; if (!chain || !name || !(size = list_length (chain))) @@ -1694,7 +1695,7 @@ build_v1_category_initializer (tree type, tree cat_name, tree class_name, location_t loc) { tree expr, ltyp; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, cat_name); CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, class_name); @@ -1807,7 +1808,7 @@ generate_objc_class_ext (tree property_list, tree context) tree weak_ivar_layout_tree; int size; location_t loc; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; char buf[BUFSIZE]; /* TODO: pass the loc in or find it from args. */ @@ -1879,7 +1880,7 @@ build_v1_shared_structure_initializer (tree type, tree isa, tree super, { tree expr, ltyp; location_t loc; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; /* TODO: fish the location out of the input data. */ loc = UNKNOWN_LOCATION; @@ -1964,7 +1965,7 @@ generate_ivars_list (tree chain, const char *name, tree attr) { tree initlist, ivar_list_template, decl; int size; - VEC(constructor_elt,gc) *inits = NULL; + vec *inits = NULL; if (!chain) return NULL_TREE; @@ -2138,7 +2139,7 @@ init_def_list (tree type) tree expr; location_t loc; struct imp_entry *impent; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; if (imp_count) for (impent = imp_list; impent; impent = impent->next) @@ -2215,7 +2216,7 @@ build_objc_symtab_template (void) static tree init_objc_symtab (tree type) { - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; /* sel_ref_cnt = { ..., 5, ... } */ @@ -2345,7 +2346,7 @@ generate_objc_image_info (void) int flags = ((flag_replace_objc_classes && imp_count ? 1 : 0) | (flag_objc_gc ? 2 : 0)); - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; tree array_type; array_type = build_sized_array_type (integer_type_node, 2); @@ -2892,12 +2893,13 @@ static tree build_throw_stmt (location_t loc, tree throw_expr, bool rethrown ATTRIBUTE_UNUSED) { tree t; - VEC(tree, gc) *parms = VEC_alloc (tree, gc, 1); + vec *parms; + vec_alloc (parms, 1); /* A throw is just a call to the runtime throw function with the object as a parameter. */ - VEC_quick_push (tree, parms, throw_expr); + parms->quick_push (throw_expr); t = build_function_call_vec (loc, objc_exception_throw_decl, parms, NULL); - VEC_free (tree, gc, parms); + vec_free (parms); return add_stmt (t); } diff --git a/gcc/objc/objc-next-runtime-abi-02.c b/gcc/objc/objc-next-runtime-abi-02.c index cf899d3..636c3cf 100644 --- a/gcc/objc/objc-next-runtime-abi-02.c +++ b/gcc/objc/objc-next-runtime-abi-02.c @@ -208,8 +208,8 @@ static tree next_runtime_abi_02_get_class_super_ref (location_t, struct imp_entr static tree next_runtime_abi_02_get_category_super_ref (location_t, struct imp_entry *, bool); static tree next_runtime_abi_02_receiver_is_class_object (tree); -static void next_runtime_abi_02_get_arg_type_list_base (VEC(tree,gc) **, tree, - int, int); +static void next_runtime_abi_02_get_arg_type_list_base (vec **, + tree, int, int); static tree next_runtime_abi_02_build_objc_method_call (location_t, tree, tree, tree, tree, tree, int); static bool next_runtime_abi_02_setup_const_string_class_decl (void); @@ -1015,8 +1015,6 @@ typedef struct GTY(()) ident_data_tuple { tree ident; tree data; } ident_data_tuple ; -DEF_VEC_O(ident_data_tuple); -DEF_VEC_ALLOC_O(ident_data_tuple, gc); /* This routine creates a file scope static variable of type 'Class' to hold the address of a class. */ @@ -1038,7 +1036,7 @@ build_v2_class_reference_decl (tree ident) ident is replaced with address of the class metadata (of type 'Class') in the output routine. */ -static GTY (()) VEC (ident_data_tuple, gc) * classrefs; +static GTY (()) vec *classrefs; static tree objc_v2_get_class_reference (tree ident) @@ -1049,7 +1047,7 @@ objc_v2_get_class_reference (tree ident) { int count; ident_data_tuple *ref; - FOR_EACH_VEC_ELT (ident_data_tuple, classrefs, count, ref) + FOR_EACH_VEC_ELT (*classrefs, count, ref) { if (ref->ident == ident) { @@ -1061,14 +1059,14 @@ objc_v2_get_class_reference (tree ident) } else /* Somewhat arbitrary initial provision. */ - classrefs = VEC_alloc (ident_data_tuple, gc, 16); + vec_alloc (classrefs, 16); /* We come here if we don't find the entry - or if the table was yet to be created. */ decl = build_v2_class_reference_decl (ident); e.ident = ident; e.data = decl; - VEC_safe_push (ident_data_tuple, gc, classrefs, e); + vec_safe_push (classrefs, e); return decl; } @@ -1080,17 +1078,17 @@ next_runtime_abi_02_get_class_reference (tree ident) else { /* We fall back to using objc_getClass (). */ - VEC(tree,gc) *vec = VEC_alloc (tree, gc, 1); + vec *v; + vec_alloc (v, 1); tree t; /* ??? add_class_reference (ident); - is pointless, since the system lib does not export the equivalent symbols. Maybe we need to build a class ref anyway. */ t = my_build_string_pointer (IDENTIFIER_LENGTH (ident) + 1, IDENTIFIER_POINTER (ident)); - VEC_quick_push (tree, vec, t); - t = build_function_call_vec (input_location, objc_get_class_decl, - vec, NULL); - VEC_free (tree, gc, vec); + v->quick_push (t); + t = build_function_call_vec (input_location, objc_get_class_decl, v, 0); + vec_free (v); return t; } } @@ -1103,8 +1101,9 @@ next_runtime_abi_02_get_class_reference (tree ident) prototype. */ static void -next_runtime_abi_02_get_arg_type_list_base (VEC(tree,gc) **argtypes, tree meth, - int context, int superflag) +next_runtime_abi_02_get_arg_type_list_base (vec **argtypes, + tree meth, int context, + int superflag) { tree receiver_type; @@ -1115,12 +1114,11 @@ next_runtime_abi_02_get_arg_type_list_base (VEC(tree,gc) **argtypes, tree meth, else receiver_type = objc_object_type; - VEC_safe_push (tree, gc, *argtypes, receiver_type); + vec_safe_push (*argtypes, receiver_type); /* Selector type - will eventually change to `int'. */ - VEC_safe_push (tree, gc, *argtypes, - (superflag - ? objc_v2_super_selector_type - : objc_v2_selector_type)); + vec_safe_push (*argtypes, + superflag ? objc_v2_super_selector_type + : objc_v2_selector_type); } /* TODO: Merge this with the message refs. */ @@ -1201,10 +1199,8 @@ typedef struct GTY(()) msgref_entry { tree selname; tree refdecl; } msgref_entry; -DEF_VEC_O(msgref_entry); -DEF_VEC_ALLOC_O(msgref_entry, gc); -static GTY (()) VEC (msgref_entry, gc) * msgrefs; +static GTY (()) vec *msgrefs; /* Build the list of (objc_msgSend_fixup_xxx, selector name), used later on to initialize the table of 'struct message_ref_t' @@ -1219,13 +1215,13 @@ build_v2_selector_messenger_reference (tree sel_name, tree message_func_decl) { int count; msgref_entry *ref; - FOR_EACH_VEC_ELT (msgref_entry, msgrefs, count, ref) + FOR_EACH_VEC_ELT (*msgrefs, count, ref) if (ref->func == message_func_decl && ref->selname == sel_name) return ref->refdecl; } else /* Somewhat arbitrary initial provision. */ - msgrefs = VEC_alloc (msgref_entry, gc, 32); + vec_alloc (msgrefs, 32); /* We come here if we don't find a match or at the start. */ decl = build_v2_message_reference_decl (sel_name, @@ -1233,7 +1229,7 @@ build_v2_selector_messenger_reference (tree sel_name, tree message_func_decl) e.func = message_func_decl; e.selname = sel_name; e.refdecl = decl; - VEC_safe_push (msgref_entry, gc, msgrefs, e); + vec_safe_push (msgrefs, e); return decl; } @@ -1258,9 +1254,7 @@ typedef struct GTY(()) prot_list_entry { tree id; tree refdecl; } prot_list_entry; -DEF_VEC_O(prot_list_entry); -DEF_VEC_ALLOC_O(prot_list_entry, gc); -static GTY (()) VEC (prot_list_entry, gc) * protrefs; +static GTY (()) vec *protrefs; static tree objc_v2_get_protocol_reference (tree ident) @@ -1271,7 +1265,7 @@ objc_v2_get_protocol_reference (tree ident) { int count; prot_list_entry *ref; - FOR_EACH_VEC_ELT (prot_list_entry, protrefs, count, ref) + FOR_EACH_VEC_ELT (*protrefs, count, ref) { if (ref->id == ident) { @@ -1283,14 +1277,14 @@ objc_v2_get_protocol_reference (tree ident) } else /* Somewhat arbitrary initial provision. */ - protrefs = VEC_alloc (prot_list_entry, gc, 32); + vec_alloc (protrefs, 32); /* We come here if we don't find the entry - or if the table was yet to be created. */ decl = build_v2_protocollist_ref_decl (ident); e.id = ident; e.refdecl = decl; - VEC_safe_push (prot_list_entry, gc, protrefs, e); + vec_safe_push (protrefs, e); return decl; } @@ -1436,8 +1430,8 @@ build_v2_superclass_ref_decl (tree ident, bool inst) return decl; } -static GTY (()) VEC (ident_data_tuple, gc) * class_super_refs; -static GTY (()) VEC (ident_data_tuple, gc) * metaclass_super_refs; +static GTY (()) vec *class_super_refs; +static GTY (()) vec *metaclass_super_refs; static tree next_runtime_abi_02_get_class_super_ref (location_t loc ATTRIBUTE_UNUSED, @@ -1446,14 +1440,14 @@ next_runtime_abi_02_get_class_super_ref (location_t loc ATTRIBUTE_UNUSED, tree decl; ident_data_tuple e; tree id = CLASS_NAME (imp->imp_context); - VEC (ident_data_tuple, gc) *list = inst_meth ? class_super_refs + vec *list = inst_meth ? class_super_refs : metaclass_super_refs; if (list) { int count; ident_data_tuple *ref; - FOR_EACH_VEC_ELT (ident_data_tuple, list, count, ref) + FOR_EACH_VEC_ELT (*list, count, ref) { if (ref->ident == id) { @@ -1467,16 +1461,22 @@ next_runtime_abi_02_get_class_super_ref (location_t loc ATTRIBUTE_UNUSED, { /* Somewhat arbitrary initial provision. */ if (inst_meth) - list = class_super_refs = VEC_alloc (ident_data_tuple, gc, 16); + { + vec_alloc (class_super_refs, 16); + list = class_super_refs; + } else - list = metaclass_super_refs = VEC_alloc (ident_data_tuple, gc, 16); + { + vec_alloc (metaclass_super_refs, 16); + list = metaclass_super_refs; + } } /* We come here if we don't find the entry - or if the table was yet to be created. */ decl = build_v2_superclass_ref_decl (id, inst_meth); e.ident = id; e.data = decl; - VEC_safe_push (ident_data_tuple, gc, list, e); + vec_safe_push (list, e); return decl; } @@ -1522,13 +1522,12 @@ next_runtime_abi_02_receiver_is_class_object (tree receiver) { if (TREE_CODE (receiver) == VAR_DECL && IS_CLASS (TREE_TYPE (receiver)) - && classrefs - && VEC_length (ident_data_tuple, classrefs)) + && vec_safe_length (classrefs)) { int count; ident_data_tuple *ref; /* The receiver is a variable created by build_class_reference_decl. */ - FOR_EACH_VEC_ELT (ident_data_tuple, classrefs, count, ref) + FOR_EACH_VEC_ELT (*classrefs, count, ref) if (ref->data == receiver) return ref->ident; } @@ -1626,7 +1625,7 @@ build_v2_build_objc_method_call (int super_flag, tree method_prototype, if (TREE_CODE (ret_type) == RECORD_TYPE || TREE_CODE (ret_type) == UNION_TYPE) { - VEC(constructor_elt,gc) *rtt = NULL; + vec *rtt = NULL; /* ??? CHECKME. hmmm..... think we need something more here. */ CONSTRUCTOR_APPEND_ELT (rtt, NULL_TREE, NULL_TREE); @@ -1748,7 +1747,7 @@ next_runtime_abi_02_build_const_string_constructor (location_t loc, tree string, int length) { tree constructor, fields, var; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; /* NeXT: (NSConstantString *) & ((__builtin_ObjCString) { isa, string, length }) */ fields = TYPE_FIELDS (internal_const_str_type); @@ -1896,12 +1895,12 @@ void build_v2_message_ref_translation_table (void) int count; msgref_entry *ref; - if (!msgrefs || !VEC_length (msgref_entry,msgrefs)) + if (!vec_safe_length (msgrefs)) return; - FOR_EACH_VEC_ELT (msgref_entry, msgrefs, count, ref) + FOR_EACH_VEC_ELT (*msgrefs, count, ref) { - VEC(constructor_elt,gc) *initializer; + vec *initializer; tree expr, constructor; tree struct_type = TREE_TYPE (ref->refdecl); location_t loc = DECL_SOURCE_LOCATION (ref->refdecl); @@ -1929,10 +1928,10 @@ build_v2_classrefs_table (void) int count; ident_data_tuple *ref; - if (!classrefs || !VEC_length (ident_data_tuple, classrefs)) + if (!vec_safe_length (classrefs)) return; - FOR_EACH_VEC_ELT (ident_data_tuple, classrefs, count, ref) + FOR_EACH_VEC_ELT (*classrefs, count, ref) { tree expr = ref->ident; tree decl = ref->data; @@ -1960,13 +1959,13 @@ build_v2_super_classrefs_table (bool metaclass) { int count; ident_data_tuple *ref; - VEC (ident_data_tuple, gc) *list = metaclass ? metaclass_super_refs + vec *list = metaclass ? metaclass_super_refs : class_super_refs; - if (!list || !VEC_length (ident_data_tuple, list)) + if (!vec_safe_length (list)) return; - FOR_EACH_VEC_ELT (ident_data_tuple, list, count, ref) + FOR_EACH_VEC_ELT (*list, count, ref) { tree expr = ref->ident; tree decl = ref->data; @@ -1986,17 +1985,15 @@ build_v2_super_classrefs_table (bool metaclass) /* Add the global class meta-data declaration to the list which later on ends up in the __class_list section. */ -static GTY(()) VEC(tree,gc) *class_list; +static GTY(()) vec *class_list; static void objc_v2_add_to_class_list (tree global_class_decl) { - if (!class_list) - class_list = VEC_alloc (tree, gc, imp_count?imp_count:1); - VEC_safe_push (tree, gc, class_list, global_class_decl); + vec_safe_push (class_list, global_class_decl); } -static GTY(()) VEC(tree,gc) *nonlazy_class_list; +static GTY(()) vec *nonlazy_class_list; /* Add the global class meta-data declaration to the list which later on ends up in the __nonlazy_class section. */ @@ -2004,12 +2001,10 @@ static GTY(()) VEC(tree,gc) *nonlazy_class_list; static void objc_v2_add_to_nonlazy_class_list (tree global_class_decl) { - if (!nonlazy_class_list) - nonlazy_class_list = VEC_alloc (tree, gc, imp_count?imp_count:1); - VEC_safe_push (tree, gc, nonlazy_class_list, global_class_decl); + vec_safe_push (nonlazy_class_list, global_class_decl); } -static GTY(()) VEC(tree,gc) *category_list; +static GTY(()) vec *category_list; /* Add the category meta-data declaration to the list which later on ends up in the __nonlazy_category section. */ @@ -2017,12 +2012,10 @@ static GTY(()) VEC(tree,gc) *category_list; static void objc_v2_add_to_category_list (tree decl) { - if (!category_list) - category_list = VEC_alloc (tree, gc, cat_count?cat_count:1); - VEC_safe_push (tree, gc, category_list, decl); + vec_safe_push (category_list, decl); } -static GTY(()) VEC(tree,gc) *nonlazy_category_list; +static GTY(()) vec *nonlazy_category_list; /* Add the category meta-data declaration to the list which later on ends up in the __category_list section. */ @@ -2030,9 +2023,7 @@ static GTY(()) VEC(tree,gc) *nonlazy_category_list; static void objc_v2_add_to_nonlazy_category_list (tree decl) { - if (!nonlazy_category_list) - nonlazy_category_list = VEC_alloc (tree, gc, cat_count?cat_count:1); - VEC_safe_push (tree, gc, nonlazy_category_list, decl); + vec_safe_push (nonlazy_category_list, decl); } static bool @@ -2054,16 +2045,16 @@ has_load_impl (tree clsmeth) all @implemented {class,category} meta-data. */ static void -build_v2_address_table (VEC(tree,gc) *src, const char *nam, tree attr) +build_v2_address_table (vec *src, const char *nam, tree attr) { int count=0; tree type, decl, expr; - VEC(constructor_elt,gc) *initlist = NULL; + vec *initlist = NULL; - if (!src || !VEC_length(tree,src)) + if (!vec_safe_length (src)) return; - FOR_EACH_VEC_ELT (tree, src, count, decl) + FOR_EACH_VEC_ELT (*src, count, decl) { #ifndef OBJCPLUS tree purpose = build_int_cst (NULL_TREE, count); @@ -2098,7 +2089,7 @@ build_v2_protocol_list_translation_table (void) if (!protrefs) return; - FOR_EACH_VEC_ELT (prot_list_entry, protrefs, count, ref) + FOR_EACH_VEC_ELT (*protrefs, count, ref) { char buf[BUFSIZE]; tree expr; @@ -2112,7 +2103,7 @@ build_v2_protocol_list_translation_table (void) /* TODO: Maybe we could explicitly delete the vec. now? */ } -static GTY (()) VEC (prot_list_entry, gc) * protlist; +static GTY (()) vec *protlist; /* Add the local protocol meta-data declaration to the list which later on ends up in the __protocol_list section. */ @@ -2123,10 +2114,10 @@ objc_add_to_protocol_list (tree protocol_interface_decl, tree protocol_decl) prot_list_entry e; if (!protlist) /* Arbitrary init count. */ - protlist = VEC_alloc (prot_list_entry, gc, 32); + vec_alloc (protlist, 32); e.id = protocol_interface_decl; e.refdecl = protocol_decl; - VEC_safe_push (prot_list_entry, gc, protlist, e); + vec_safe_push (protlist, e); } /* Build the __protocol_list section table containing address of all @@ -2137,10 +2128,10 @@ build_v2_protocol_list_address_table (void) { int count; prot_list_entry *ref; - if (!protlist || !VEC_length (prot_list_entry, protlist)) + if (!vec_safe_length (protlist)) return; - FOR_EACH_VEC_ELT (prot_list_entry, protlist, count, ref) + FOR_EACH_VEC_ELT (*protlist, count, ref) { tree decl, expr; char buf[BUFSIZE]; @@ -2165,7 +2156,7 @@ generate_v2_protocol_list (tree i_or_p, tree klass_ctxt) { tree refs_decl, lproto, e, plist, ptempl_p_t; int size = 0; - VEC(constructor_elt,gc) *initlist = NULL; + vec *initlist = NULL; char buf[BUFSIZE]; if (TREE_CODE (i_or_p) == CLASS_INTERFACE_TYPE @@ -2243,10 +2234,10 @@ generate_v2_protocol_list (tree i_or_p, tree klass_ctxt) static tree build_v2_descriptor_table_initializer (tree type, tree entries) { - VEC(constructor_elt,gc) *initlist = NULL; + vec *initlist = NULL; do { - VEC(constructor_elt,gc) *eltlist = NULL; + vec *eltlist = NULL; CONSTRUCTOR_APPEND_ELT (eltlist, NULL_TREE, build_selector (METHOD_SEL_NAME (entries))); CONSTRUCTOR_APPEND_ELT (eltlist, NULL_TREE, @@ -2301,7 +2292,7 @@ generate_v2_meth_descriptor_table (tree chain, tree protocol, { tree method_list_template, initlist, decl, methods; int size, entsize; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; char buf[BUFSIZE]; if (!chain || !prefix) @@ -2345,7 +2336,7 @@ static tree build_v2_property_table_initializer (tree type, tree context) { tree x; - VEC(constructor_elt,gc) *inits = NULL; + vec *inits = NULL; if (TREE_CODE (context) == PROTOCOL_INTERFACE_TYPE) x = CLASS_PROPERTY_DECL (context); else @@ -2353,7 +2344,7 @@ build_v2_property_table_initializer (tree type, tree context) for (; x; x = TREE_CHAIN (x)) { - VEC(constructor_elt,gc) *elemlist = NULL; + vec *elemlist = NULL; /* NOTE! sections where property name/attribute go MUST change later. */ tree attribute, name_ident = PROPERTY_NAME (x); @@ -2412,7 +2403,7 @@ generate_v2_property_table (tree context, tree klass_ctxt) { tree x, decl, initlist, property_list_template; bool is_proto = false; - VEC(constructor_elt,gc) *inits = NULL; + vec *inits = NULL; int init_val, size = 0; char buf[BUFSIZE]; @@ -2468,7 +2459,7 @@ build_v2_protocol_initializer (tree type, tree protocol_name, tree protocol_list { tree expr, ttyp; location_t loc; - VEC(constructor_elt,gc) *inits = NULL; + vec *inits = NULL; /* TODO: find a better representation of location from the inputs. */ loc = UNKNOWN_LOCATION; @@ -2615,7 +2606,7 @@ static tree generate_v2_dispatch_table (tree chain, const char *name, tree attr) { tree decl, method_list_template, initlist; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; int size, init_val; if (!chain || !name || !(size = list_length (chain))) @@ -2649,7 +2640,7 @@ build_v2_category_initializer (tree type, tree cat_name, tree class_name, location_t loc) { tree expr, ltyp; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, cat_name); CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, class_name); @@ -2766,10 +2757,8 @@ typedef struct GTY(()) ivarref_entry tree decl; tree offset; } ivarref_entry; -DEF_VEC_O(ivarref_entry); -DEF_VEC_ALLOC_O(ivarref_entry, gc); -static GTY (()) VEC (ivarref_entry, gc) * ivar_offset_refs; +static GTY (()) vec *ivar_offset_refs; static tree ivar_offset_ref (tree class_name, tree field_decl) @@ -2786,13 +2775,13 @@ ivar_offset_ref (tree class_name, tree field_decl) { int count; ivarref_entry *ref; - FOR_EACH_VEC_ELT (ivarref_entry, ivar_offset_refs, count, ref) + FOR_EACH_VEC_ELT (*ivar_offset_refs, count, ref) if (DECL_NAME (ref->decl) == field_decl_id) return ref->decl; } else /* Somewhat arbitrary initial provision. */ - ivar_offset_refs = VEC_alloc (ivarref_entry, gc, 32); + vec_alloc (ivar_offset_refs, 32); /* We come here if we don't find a match or at the start. */ global_var = (TREE_PUBLIC (field_decl) || TREE_PROTECTED (field_decl)); @@ -2806,7 +2795,7 @@ ivar_offset_ref (tree class_name, tree field_decl) e.decl = decl; e.offset = byte_position (field_decl); - VEC_safe_push (ivarref_entry, gc, ivar_offset_refs, e); + vec_safe_push (ivar_offset_refs, e); return decl; } @@ -2818,11 +2807,11 @@ ivar_offset_ref (tree class_name, tree field_decl) static tree build_v2_ivar_list_initializer (tree class_name, tree type, tree field_decl) { - VEC(constructor_elt,gc) *inits = NULL; + vec *inits = NULL; do { - VEC(constructor_elt,gc) *ivar = NULL; + vec *ivar = NULL; int val; tree id; @@ -2914,7 +2903,7 @@ static tree generate_v2_ivars_list (tree chain, const char *name, tree attr, tree templ) { tree decl, initlist, ivar_list_template; - VEC(constructor_elt,gc) *inits = NULL; + vec *inits = NULL; int size, ivar_t_size; if (!chain || !name || !(size = ivar_list_length (chain))) @@ -2947,7 +2936,7 @@ static tree build_v2_class_t_initializer (tree type, tree isa, tree superclass, tree ro, tree cache, tree vtable) { - VEC(constructor_elt,gc) *initlist = NULL; + vec *initlist = NULL; /* isa */ CONSTRUCTOR_APPEND_ELT (initlist, NULL_TREE, isa); @@ -2985,7 +2974,7 @@ build_v2_class_ro_t_initializer (tree type, tree name, { tree expr, unsigned_char_star, ltyp; location_t loc; - VEC(constructor_elt,gc) *initlist = NULL; + vec *initlist = NULL; /* TODO: fish out the real location from somewhere. */ loc = UNKNOWN_LOCATION; @@ -3059,7 +3048,7 @@ build_v2_class_ro_t_initializer (tree type, tree name, return objc_build_constructor (type, initlist); } -static GTY (()) VEC (ident_data_tuple, gc) * ehtype_list; +static GTY (()) vec *ehtype_list; /* Record a name as needing a catcher. */ static void @@ -3071,18 +3060,18 @@ objc_v2_add_to_ehtype_list (tree name) int count = 0; ident_data_tuple *ref; - FOR_EACH_VEC_ELT (ident_data_tuple, ehtype_list, count, ref) + FOR_EACH_VEC_ELT (*ehtype_list, count, ref) if (ref->ident == name) return; /* Already entered. */ } else /* Arbitrary initial count. */ - ehtype_list = VEC_alloc (ident_data_tuple, gc, 8); + vec_alloc (ehtype_list, 8); /* Not found, or new list. */ e.ident = name; e.data = NULL_TREE; - VEC_safe_push (ident_data_tuple, gc, ehtype_list, e); + vec_safe_push (ehtype_list, e); } static void @@ -3333,10 +3322,10 @@ build_v2_ivar_offset_ref_table (void) int count; ivarref_entry *ref; - if (!ivar_offset_refs || !VEC_length (ivarref_entry, ivar_offset_refs)) + if (!vec_safe_length (ivar_offset_refs)) return; - FOR_EACH_VEC_ELT (ivarref_entry, ivar_offset_refs, count, ref) + FOR_EACH_VEC_ELT (*ivar_offset_refs, count, ref) finish_var_decl (ref->decl, ref->offset); } @@ -3346,7 +3335,7 @@ static void generate_v2_objc_image_info (void) { tree decl, array_type; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; int flags = ((flag_replace_objc_classes && imp_count ? 1 : 0) | (flag_objc_gc ? 2 : 0)); @@ -3467,7 +3456,7 @@ build_v2_ehtype_template (void) static tree objc2_build_ehtype_initializer (tree name, tree cls) { - VEC(constructor_elt,gc) *initlist = NULL; + vec *initlist = NULL; tree addr, offs; /* This is done the same way as c++, missing the two first entries @@ -3555,10 +3544,10 @@ static void build_v2_eh_catch_objects (void) int count=0; ident_data_tuple *ref; - if (!ehtype_list || !VEC_length (ident_data_tuple, ehtype_list)) + if (!vec_safe_length (ehtype_list)) return; - FOR_EACH_VEC_ELT (ident_data_tuple, ehtype_list, count, ref) + FOR_EACH_VEC_ELT (*ehtype_list, count, ref) { char buf[BUFSIZE]; bool impl = is_implemented (ref->ident); @@ -3579,10 +3568,10 @@ lookup_ehtype_ref (tree id) int count=0; ident_data_tuple *ref; - if (!ehtype_list || !VEC_length (ident_data_tuple, ehtype_list)) + if (!vec_safe_length (ehtype_list)) return NULL_TREE; - FOR_EACH_VEC_ELT (ident_data_tuple, ehtype_list, count, ref) + FOR_EACH_VEC_ELT (*ehtype_list, count, ref) if (ref->ident == id) return ref->data; return NULL_TREE; @@ -3662,10 +3651,11 @@ build_throw_stmt (location_t loc, tree throw_expr, bool rethrown) else { /* Throw like the others... */ - VEC(tree, gc) *parms = VEC_alloc (tree, gc, 1); - VEC_quick_push (tree, parms, throw_expr); - t = build_function_call_vec (loc, objc_exception_throw_decl, parms, NULL); - VEC_free (tree, gc, parms); + vec *parms; + vec_alloc (parms, 1); + parms->quick_push (throw_expr); + t = build_function_call_vec (loc, objc_exception_throw_decl, parms, 0); + vec_free (parms); } return add_stmt (t); } diff --git a/gcc/objc/objc-runtime-hooks.h b/gcc/objc/objc-runtime-hooks.h index 9145681..8f307cf 100644 --- a/gcc/objc/objc-runtime-hooks.h +++ b/gcc/objc/objc-runtime-hooks.h @@ -75,7 +75,7 @@ typedef struct _objc_runtime_hooks_r /* Receiver is class Object, check runtime-specific. */ tree (*receiver_is_class_object) (tree); /* Get the start of a method argument type list (receiver, _cmd). */ - void (*get_arg_type_list_base) (VEC(tree,gc) **, tree, int, int); + void (*get_arg_type_list_base) (vec **, tree, int, int); /* Build method call. */ tree (*build_objc_method_call) (location_t, tree, tree, tree, tree, tree, int); diff --git a/gcc/objc/objc-runtime-shared-support.c b/gcc/objc/objc-runtime-shared-support.c index 0b6f937..594b66b 100644 --- a/gcc/objc/objc-runtime-shared-support.c +++ b/gcc/objc/objc-runtime-shared-support.c @@ -346,11 +346,11 @@ add_objc_string (tree ident, string_section section) tree build_descriptor_table_initializer (tree type, tree entries) { - VEC(constructor_elt,gc) *inits = NULL; + vec *inits = NULL; do { - VEC(constructor_elt,gc) *elts = NULL; + vec *elts = NULL; CONSTRUCTOR_APPEND_ELT (elts, NULL_TREE, build_selector (METHOD_SEL_NAME (entries))); @@ -371,11 +371,11 @@ build_descriptor_table_initializer (tree type, tree entries) tree build_dispatch_table_initializer (tree type, tree entries) { - VEC(constructor_elt,gc) *inits = NULL; + vec *inits = NULL; do { - VEC(constructor_elt,gc) *elems = NULL; + vec *elems = NULL; tree expr; CONSTRUCTOR_APPEND_ELT (elems, NULL_TREE, @@ -433,7 +433,7 @@ init_module_descriptor (tree type, long vers) { tree expr, ltyp; location_t loc; - VEC(constructor_elt,gc) *v = NULL; + vec *v = NULL; /* No really useful place to point to. */ loc = UNKNOWN_LOCATION; @@ -528,11 +528,11 @@ build_module_descriptor (long vers, tree attr) tree build_ivar_list_initializer (tree type, tree field_decl) { - VEC(constructor_elt,gc) *inits = NULL; + vec *inits = NULL; do { - VEC(constructor_elt,gc) *ivar = NULL; + vec *ivar = NULL; tree id; /* Set name. */ diff --git a/gcc/objc/objc-runtime-shared-support.h b/gcc/objc/objc-runtime-shared-support.h index 0db8bed..e5dc644 100644 --- a/gcc/objc/objc-runtime-shared-support.h +++ b/gcc/objc/objc-runtime-shared-support.h @@ -29,7 +29,7 @@ extern tree add_field_decl (tree, const char *, tree **); extern tree build_sized_array_type (tree, int); extern tree lookup_interface (tree); -extern tree objc_build_constructor (tree, VEC(constructor_elt,gc) *); +extern tree objc_build_constructor (tree, vec *); extern tree start_var_decl (tree, const char *); extern void finish_var_decl (tree, tree);