From c021f10b188584445b45ec9649cff4d39e640c3e Mon Sep 17 00:00:00 2001 From: Nathan Froyd Date: Tue, 6 Jul 2010 02:26:33 +0000 Subject: vec.h (FOR_EACH_VEC_ELT_REVERSE): New macro. gcc/ * vec.h (FOR_EACH_VEC_ELT_REVERSE): New macro. * function.h (struct_function): Change type of local_decls field to a VEC. (add_local_decl): New function. (FOR_EACH_LOCAL_DECL): New macro. * cfgexpand.c (init_vars_expansion): Adjust for new type of cfun->local_decls. (estimated_stack_frame_size): Likewise. (expand_used_vars): Likewise. * cgraphbuild.c (build_cgraph_edges): Likewise. * function.c (instantiate_decls_1): Likewise. * ipa-struct-reorg.c (build_data_structure): Likewise. * ipa-type-escape.c (analyze_function): Likewise. * lto-streamer-in.c (input_function): Likewise. * lto-streamer-out.c (output_function): Likewise. * tree-ssa-live.c (remove_unused_locals): Likewise. * tree.c (free_lang_data_in_decl): Likewise. (find_decls_types_in_node): Likewise. * omp-low.c (remove_exit_barrier): Likewise. (expand_omp_taskreg): Likewise. (list2chain): Rename to... (vec2chain): ...this. Adjust. * cgraphunit.c (assemble_thunk): Call add_local_decl. * tree-cfg.c (replace_by_duplicate_decl): Likewise. * gimple-low.c (record_vars_into): Likewise. * tree-inline.c (remap_decls): Likewise. (declare_return_variable): Likewise. (declare_inline_vars): Likewise. (copy_forbidden): Adjust for new type of cfun->local_decls. (add_local_variables): New function. (expand_call_inline): Call it. (tree_function_versioning): Likewise. gcc/cp/ * decl.c (cp_finish_decl): Call add_local_decl. * optimize.c (clone_body): Adjust for new type of cfun->local_decls. From-SVN: r161862 --- gcc/vec.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'gcc/vec.h') diff --git a/gcc/vec.h b/gcc/vec.h index e6c42bc..a652250 100644 --- a/gcc/vec.h +++ b/gcc/vec.h @@ -190,6 +190,13 @@ along with GCC; see the file COPYING3. If not see #define VEC_iterate(T,V,I,P) (VEC_OP(T,base,iterate)(VEC_BASE(V),I,&(P))) +/* Convenience macro for reverse iteration. */ + +#define FOR_EACH_VEC_ELT_REVERSE(T,V,I,P) \ + for (I = VEC_length (T, (V)) - 1; \ + VEC_iterate (T, (V), (I), (P)); \ + (I)--) + /* Allocate new vector. VEC(T,A) *VEC_T_A_alloc(int reserve); -- cgit v1.1