1. 29 Jun, 2004 33 commits
    • Make sure types in assignments are compatible. · 7ab92584
      2004-06-29  Steven Bosscher  <stevenb@suse.de>
      
      	Make sure types in assignments are compatible.  Mostly mechanical.
      	* trans-const.h (gfc_index_one_node): New define.
      	* trans-array.c (gfc_trans_allocate_array_storage,
      	gfc_trans_allocate_temp_array, gfc_trans_array_constructor_subarray,
      	gfc_trans_array_constructor_value, gfc_trans_array_constructor,
      	gfc_conv_array_ubound, gfc_conv_array_ref,
      	gfc_trans_scalarized_loop_end, gfc_conv_section_startstride,
      	gfc_conv_ss_startstride, gfc_conv_loop_setup, gfc_array_init_size,
      	gfc_trans_array_bounds, gfc_trans_dummy_array_bias,
      	gfc_conv_expr_descriptor, gfc_trans_deferred_array): Use the correct
      	types in assignments, conversions and conditionals for expressions.
      	* trans-expr.c (gfc_conv_expr_present, gfc_conv_substring,
      	gfc_conv_unary_op, gfc_conv_cst_int_power, gfc_conv_string_tmp,
      	gfc_conv_function_call, gfc_trans_pointer_assignment,
      	gfc_trans_scalar_assign): Likewise.
      	* trans-intrinsic.c (build_fixbound_expr, gfc_conv_intrinsic_bound,
      	gfc_conv_intrinsic_anyall, gfc_conv_intrinsic_count,
      	gfc_conv_intrinsic_minmaxloc, gfc_conv_intrinsic_btest,
      	gfc_conv_intrinsic_singlebitop, gfc_conv_intrinsic_ishft,
      	gfc_conv_intrinsic_ishftc, gfc_conv_intrinsic_strcmp,
      	gfc_conv_allocated, gfc_conv_associated,
      	gfc_conv_intrinsic_rrspacing, gfc_conv_intrinsic_trim): Likewise.
      	* trans-io.c (set_string): Likewise.
      	* trans-stmt.c (gfc_trans_do, gfc_trans_forall_loop,
      	gfc_do_allocate, generate_loop_for_temp_to_lhs,
      	generate_loop_for_rhs_to_temp, compute_inner_temp_size,
      	compute_overall_iter_number, gfc_trans_assign_need_temp,
      	gfc_trans_pointer_assign_need_temp, gfc_trans_forall_1,
      	gfc_evaluate_where_mask, gfc_trans_where_assign,
      	gfc_trans_where_2): Likewise.
      	* trans-types.c (gfc_get_character_type, gfc_build_array_type,
      	gfc_get_nodesc_array_type, gfc_get_array_type_bounds): Likewise.
      
      	* trans.c (gfc_add_modify_expr): Add sanity check that types
      	for the lhs and rhs are the same for scalar assignments.
      
      From-SVN: r83877
      Steven Bosscher committed
    • Fix ChangeLog entry · e23667c6
      From-SVN: r83876
      Tobias Schlüter committed
    • Revert previous accidental commit. · 439251f7
      From-SVN: r83875
      Tobias Schlüter committed
    • dump-parse-tree.c (show_common): New function. · fbc9b453
      * dump-parse-tree.c (show_common): New function.
      (gfc_show_namespace): Show commons.
      
      From-SVN: r83874
      Tobias Schlüter committed
    • vector-defs.h: Use vector_size attribute only for GCC 3.5+... · 57512331
      	* gcc.dg/compat/vector-defs.h: Use vector_size attribute
      	only for GCC 3.5+, for GCC up to 3.4 mode(V*) attribute instead.
      
      From-SVN: r83873
      Jakub Jelinek committed
    • re PR target/16195 ([3.4 only] Miscompilation of GCC 3.3.x by 3.4.x) · b4db40bf
      	PR target/16195
      	* config/rs6000/rs6000.c (rs6000_conditional_register_usage): Make
      	r30 fixed if TARGET_TOC && TARGET_MINIMAL_TOC.
      	(first_reg_to_save): Pretend call_used_regs[30] is 0 if
      	TARGET_TOC && TARGET_MINIMAL_TOC.
      	(rs6000_emit_prologue, rs6000_emit_epilogue): Likewise.
      
      	* gcc.dg/20040625-1.c: New test.
      
      From-SVN: r83872
      Jakub Jelinek committed
    • Andrew Vaught <andyv@firstinter.net> · 9056bd70
      2004-06-29  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>
      Andrew Vaught  <andyv@firstinter.net>
      
      PR fortran/13249
      PR fortran/15481
      * declc (gfc_match_save): Adapt to new common structures,
      don't allow saving USE-associated common.
      * dump-parse-tree (gfc_show_attr): (saved_)common are not
      symbol attributes any longer.
      (gfc_show_symbol): Don't show old-style commons any longer.
      (gfc_show_namespace): Adapt call to gfc_traverse_symtree to new
      interface.
      * gfortran.h (symbol_attribute): Remove common and saved_common
      attributes.
      (gfc_symbol): Remove common_head element.
      (gfc_common_head): New struct.
      (gfc_get_common_head): New macro.
      (gfc_symtree): Add field 'common' to union.
      (gfc_namespace): Add field 'common_root'; change type of field
      'blank_common' to blank_common.
      (gfc_add_data): New prototype.
      (gfc_traverse_symtree): Expect a symtree as first argument
      instead of namespace.
      * match.c (gfc_get_common): New function.
      (match_common_name): Change to take char * as argument, adapt,
      fix bug with empty name.
      (gfc_match_common): Adapt to new data structures. Disallow
      redeclaration of USE-associated COMMON-block. Fix bug with
      empty common.
      (var_element): Adapt to new common structures.
      * match.h (gfc_get_common): Declare.
      * module.c: Add 2004 to copyright years, add commons to module
      file layout description.
      (ab_attribute, attr_bits, mio_symbol_attributes): Remove code
      for removed attributes.
      (mio_symbol): Adapt to new way of storing common relations.
      (load_commons): New function.
      (read_module): Skip common list on first pass, load_commons at
      second.
      (write_commons): New function.
      (write_module): Call write_commons().
      * symbol.c (gfc_add_saved_comon, gfc_add_common): Remove
      functions related to removed attributes.
      (gfc_add_data): New function.
      (gfc_clear_attr): Don't set removed attributes.
      (gfc_copy_attr): Don't copy removed attributes.
      (traverse_symtree): Remove.
      (gfc_traverse_symtree): Don't traverse symbol
      tree of the passed namespace, but require a symtree to be passed
      instead. Unify with traverse_symtree.
      (gfc_traverse_ns): Call gfc_traverse_symtree according to new
      interface.
      (save_symbol): Remove setting of removed attribute.
      * trans-common.c (gfc_sym_mangled_common_id): Change to
      take 'char *' argument instead of 'gfc_symbol'.
      (build_common_decl, new_segment, translate_common): Adapt to new
      data structures, add new
      argument name.
      (create_common): Adapt to new data structures, add new
      argument name. Fix typo in intialization of derived types.
      (finish_equivalences): Add second argument in call to
      create_common.
      (named_common): take 'gfc_symtree' instead of 'gfc_symbol'.
      (gfc_trans_common): Adapt to new data structures.
      * trans-decl.c (gfc_create_module_variables): Also output
      symbols from commons.
      
      Co-Authored-By: Andrew Vaught <andyv@firstinter.net>
      
      From-SVN: r83871
      Tobias Schlüter committed
    • * io.c: Add 2004 to copyright years. · 50d78f96
      From-SVN: r83870
      Tobias Schlüter committed
    • re PR tree-optimization/16249 (ICE in calculate_live_on_entry, at tree-ssa-live.c:724) · b4bbd47e
      	* testsuite/libjava.compile/PR16249.java: New test case. PR
      	gcc/16249.
      
      From-SVN: r83869
      Bryce McKinlay committed
    • Andrew Vaught <andyv@firstinter.net> · c9543002
      2004-06-29  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>
      Andrew Vaught  <andyv@firstinter.net>
      
      * gfortran.h (gfc_gsymbol): New typedef.
      (gfc_gsym_root): New variable.
      (gfc_get_gsymbol, gfc_find_gsym): New prototypes.
      * parse.c (global_used): New function.
      (parse_block_data): Check for double empty BLOCK DATA,
      use global symbol table.
      (parse_module): Use global symbol table.
      (add_global_procedure, add_global_program): New functions.
      (gfc_parse_file): Use global symbol table.
      * symbol.c (gfc_gsym_root): New variable.
      (gfc_find_gsym, gsym_compare, gfc_get_gsymbol): New
      functions.
      
      Co-Authored-By: Andrew Vaught <andyv@firstinter.net>
      
      From-SVN: r83868
      Tobias Schlüter committed
    • re PR java/1262 (Method with default access can be overridden in another package) · 9c5fdae6
      	PR java/1262
      	* class.c (layout_class_method): Do not override package-private
      	method if its in a different package.
      	(split_qualified_name): Move here from parse.y. Rename from
      	breakdown_qualified. Add comment.
      	(in_same_package): Move here from parse.y. Add comment.
      	* java-tree.h (break_down_qualified, in_same_package): Declare.
      	(in_same_package): Likewise.
      	* parse.y (breakdown_qualified, in_same_package): Moved to class.c.
      	Callers updated.
      
      From-SVN: r83867
      Bryce McKinlay committed
    • Fix gcc.dg/builtin-apply2.c failures: · 49616835
      	* sh.h (TARGET_VARARGS_PRETEND_ARGS): Define.
      	* sh.c (extra_push): Delete.
      	(sh_expand_prologue): Don't do extra stack adjustment for
      	current_function_pretend_args_size if it comes from varargs setup.
      	Use TARGET_VARARGS_PRETEND_ARGS.  Don't set extra_push.
      	(sh_expand_epilogue): Don't use extra_push.
      	(sh_setup_incoming_varargs): Set pretend_arg_size when necessary.
      
      From-SVN: r83864
      Joern Rennecke committed
    • Fix gcc.dg/builtin-apply2.c failures: · 8d2fb08d
      	* sh.h (TARGET_VARARGS_PRETEND_ARGS): Define.
      	* sh.c (extra_push): Delete.
      	(sh_expand_prologue): Don't do extra stack adjustment for
      	current_function_pretend_args_size if it comes from varargs setup.
      	Use TARGET_VARARGS_PRETEND_ARGS.  Don't set extra_push.
      	(sh_expand_epilogue): Don't use extra_push.
      	(sh_setup_incoming_varargs): Set pretend_arg_size when necessary.
      
      [[Split portion of a mixed commit.]]
      
      From-SVN: r83863.2
      Joern Rennecke committed
    • module.c (mio_gmp_real): Correct writing of negative numbers. · 78f2fb08
      fortran/
      * module.c (mio_gmp_real): Correct writing of negative numbers.
      
      testsuite/
      * gfortran.fortran-torture/execute/parameter_2.f90: New test.
      
      Also corrected dates in previous ChangeLog entries
      
      From-SVN: r83862
      Tobias Schlüter committed
    • expmed.c (expand_smod_pow2): Provide alternate implementations that avoid conditional jumps... · 1c234fcb
      
      	* expmed.c (expand_smod_pow2): Provide alternate implementations
      	that avoid conditional jumps, and choose between them based upon
      	the target's rtx_costs.
      
      From-SVN: r83861
      Roger Sayle committed
    • tree-sra.c: Include expr.h for definition of MOVE_RATIO. · e1514303
      2004-06-29  Andrew Pinski  <apinski@apple.com>
      
              * tree-sra.c: Include expr.h for definition of MOVE_RATIO.
              * Makefile.in (tree-sra.c): Update dependencies.
      
      From-SVN: r83860
      Andrew Pinski committed
    • re PR fortran/15963 (Error when comparing characters in restricted expression) · e063a048
      fortran/
      PR fortran/15963
      * expr.c (check_intrinsic_op): Allow comparison of characters.
      Make logic easier.
      
      testsuite/
      PR fortran/15963
      * gfortran.fortran-torture/execute/initialization_1.f90: New test.
      
      From-SVN: r83859
      Tobias Schlüter committed
    • tree-sra.c: Rewrite from scratch. · 97e73bd2
              * tree-sra.c: Rewrite from scratch.  Handle nested aggregates.
              * gcc.dg/tree-ssa/20040430-1.c: Expect zero if's.
      
      From-SVN: r83858
      Richard Henderson committed
    • except.c (expand_start_java_handler): Push a new binding level. · ba60e475
      2004-06-29  Andrew Haley  <aph@redhat.com>
      
              * except.c (expand_start_java_handler): Push a new binding level.
              Don't build a TRY_CATCH_EXPR now, we'll do it later.  Call
              register_exception_range() to register where we'll do it.
              (expand_end_java_handler): Remove old bogus code.  Replace with
              new logic that simply builds TRY_CATCH_EXPRs and inserts them at
              the top of the expression we're curently building.
              (maybe_end_try): Delete.
              * decl.c (binding_level.exception_range): New field.
              (clear_binding_level): Add field exception_range.  Reformat.
              (poplevel): Call expand_end_java_handler().
              (poplevel): Call java_add_stmt only if functionbody is false.
              (maybe_poplevels): Don't call maybe_end_try() from here.
              (end_java_method): Clear no longer used trees in function decl.
              (register_exception_range): New function.
              * java-tree.h (register_exception_range, struct eh_range): Declare.
      
      From-SVN: r83857
      Andrew Haley committed
    • vec.h (VEC_T_safe_push, [...]): Tweak for when size_t is bigger than int. · 9f6eb0f4
      	* vec.h (VEC_T_safe_push, VEC_T_safe_insert): Tweak for when
      	size_t is bigger than int.
      
      From-SVN: r83855
      Nathan Sidwell committed
    • target-def.h (TARGET_CXX_GET_COOKIE_SIZE, [...]): Define. · 46e995e0
      gcc/
      	* target-def.h (TARGET_CXX_GET_COOKIE_SIZE,
      	TARGET_CXX_COOKIE_HAS_SIZE): Define.
      	(TARGET_CXX): Use them.
      	* target.h (struct gcc_target): Add cxx.get_cookie_size and
      	cxx.cookie_has_size.
      	* targhooks.c (default_cxx_get_cookie_size): New fucntion.
      	* targhooks.h (default_cxx_get_cookie_size): Add prototype.
      	* config/arm/arm.c (TARGET_CXX_GET_COOKIE_SIZE,
      	TARGET_CXX_COOKIE_HAS_SIZE): Define.
      	(arm_get_cookie_size, arm_cookie_has_size): New functions.
      	* Make-lang.in (cp/init.o): Add dependency on $(TARGET_H).
      	* doc/tm.texi: Document TARGET_CXX_GET_COOKIE_SIZE and
      	TARGET_CXX_COOKIE_HAS_SIZE.
      gcc/cp/
      	* init.c: Include target.h.
      	(get_cookie_size): Remove and replace with target hook.
      	Update callers.
      	(build_new_1): Store the element size in the cookie.
      libstdc++-v3/
      	* libsupc++/vec.cc (__cxa_vec_new2, __cxa_vec_new3): Store the
      	element size in the cookie.
      testsuite/
      	* g++.old-deja/g++.abi/arraynew.C: Handle ARM EABI cookies.
      	* g++.old-deja/g++.abi/cxa_vec.C: Allocate larger cookies for AEABI.
      
      From-SVN: r83854
      Paul Brook committed
    • * lrealpath.c (lrealpath): Add _WIN32 support. · 50a2de96
      From-SVN: r83853
      Danny Smith committed
    • re PR c++/16260 (ICE in template function) · fe88415f
      cp:
              PR c++/16260
              * parser.c (cp_parser_template_declaration_after_export): Disable
              access checks here ...
              (cp_parser_class_specifier): ... not here.
      testsuite:
              PR c++/16260
              * g++.dg/parse/crash15.C: New.
      
      From-SVN: r83851
      Nathan Sidwell committed
    • configure.ac (AC_CHECK_HEADERS): Add dirent.h configure: Regenerate. · 962fe395
      configure.ac (AC_CHECK_HEADERS): Add dirent.h
      configure: Regenerate.
      mf-hooks2.c: Surround uses of dirent.h with #ifdef HAVE_DIRENT_H.
        Remove spurious inclusion of <strings.h>.
      
      From-SVN: r83850
      Nick Clifton committed
    • cfglayout.c (fixup_reorder_chain): Don't do anything for e_fall->dest == EXIT_BLOCK_PTR. · 313329e1
      	* cfglayout.c (fixup_reorder_chain): Don't do anything for
      	e_fall->dest == EXIT_BLOCK_PTR.
      
      From-SVN: r83849
      J"orn Rennecke committed
    • tree-cfg.c (verify_stmt): Add last_in_block parameter. · 1eaba2f2
              * tree-cfg.c (verify_stmt): Add last_in_block parameter.  Verify
              that eh stmts can throw.
              (verify_stmts): Update verify_stmt call.
              (tree_purge_dead_eh_edges, tree_purge_all_dead_eh_edges): New.
              * tree-eh.c (remove_stmt_from_eh_region): New.
              (lower_eh_constructs): Fix throw_stmt_table delete routine.
              (tree_could_trap_p): Match may_trap_p.
              (maybe_clean_eh_stmt): New.
              * tree-flow.h: Update decls.
              * tree-ssa-ccp.c (pass_ccp): Add TODO_verify_stmts.
              (substitute_and_fold): Clean eh edges.
              * tree-ssa-dce.c (mark_control_dependent_edges_necessary): Handle
              empty basic blocks.
              * tree-ssa-dom.c (need_eh_cleanup): New.
              (tree_ssa_dominator_optimize): Allocate it.  Cleanup eh edges.
              (optimize_stmt): Cleanup eh stmts; set need_eh_cleanup.
      
      From-SVN: r83843
      Richard Henderson committed
    • function.c (assign_parms): Don't abort with zero size stack parm failing the PARM_BOUNDARY check. · afc066ef
      	* function.c (assign_parms): Don't abort with zero size stack
      	parm failing the PARM_BOUNDARY check.
      
      From-SVN: r83840
      Alan Modra committed
    • pr14963.c: Remove the dg-warning as it is dected by the error already. · e440ec57
      2004-06-28  Andrew Pinski  <apinski@apple.com>
      
              * gcc.dg/pr14963.c: Remove the dg-warning as it is dected
              by the error already.
      
      From-SVN: r83839
      Andrew Pinski committed
    • jacks.xfail: Remove 8.1.3-superclass-6. · b5493719
      	* testsuite/libjava.jacks/jacks.xfail: Remove
      	8.1.3-superclass-6.
      
      From-SVN: r83838
      Bryce McKinlay committed
    • common.opt (ftree-fre): New flag. · ff2ad0f7
      
      	* common.opt (ftree-fre): New flag.
      	* flags.h (flag_tree_fre): Declare.
      	* opts.c (decode_options): Set.
      	* timevar.def (TV_TREE_FRE): Define.
      	* tree-flow-inline.h (may_propagate_copy): Re-arrange for
      	readability.  Handle destinations that are not SSA_NAMEs.
      	* tree-flow.h (struct ptr_info_def): Move from tree.h
      	(cprop_into_stmt, cprop_into_successor_phis): Remove.
      	(vn_compute, vn_lookup_or_add, vn_add, vn_lookup): Add
      	vuse_optype parameter.
      	* tree-pass.h (pass_fre): Declare.
      	* tree-ssa-copy.c (cprop_operand): Move to tree-ssa-dom.c
      	(cprop_into_stmt): Likewise.
      	(cprop_into_successor_phis): Likewise.
      	* tree-ssa-dom.c (eliminate_redundant_computations): Fix
      	argument ordering in call to may_propagate_copy.
      	* tree-ssa-pre.c (is_undefined_value): Assume hard registers
      	to be always defined.
      	(add_to_sets): New local function.
      	(create_value_expr_from): New local function.
      	(compute_avail): Call them.
      	(eliminate): Don't ignore statements with virtual operands.
      	(init_pre): New local function.
      	(fini_pre): New local function.
      	(execute_pre): Call them.
      	Add argument DO_FRE.  Don't do insertion if DO_FRE is true.
      	(do_pre): New function.
      	(do_fre): New function.
      	(gate_fre): New function.
      	(pass_fre): Declare.
      	* tree-ssa.c (init_tree_ssa): Don't call vn_init.
      	(delete_tree_ssa): Don't call vn_delete.
      	* tree-vn.c (val_expr_pair_d): Add documentation.
      	(vn_compute): Add VUSES argument to incorporate in computing
      	hash values.  Update all callers.
      	(expressions_equal_p): Call operand_equal_p with
      	OEP_PURE_SAME.
      	(vn_add): Add VUSES argument.  Update all callers.
      	(vn_lookup): Likewise.
      	(vn_lookup_or_add): Likewise.
      	* doc/invoke.texi: Document -ftree-fre and -fdump-tree-fre.
      
      From-SVN: r83837
      Diego Novillo committed
    • Expression.java: New file. · 7b63e340
      2004-06-28  Jerry Quinn  <jlquinn@optonline.net>
      
      	* java/beans/Expression.java: New file.
      	* java/beans/Statement.java: New file.
      	* Makefile.am: Added new files.
      	* Makefile.in: Re-generate.
      
      From-SVN: r83836
      Jerry Quinn committed
    • Daily bump. · b1fe2e04
      From-SVN: r83834
      GCC Administrator committed
  2. 28 Jun, 2004 7 commits
    • m32r.c (m32r_sched_odd_word_p, [...]): Remove. · 5ad6fca5
      	* config/m32r/m32r.c (m32r_sched_odd_word_p, m32r_adjust_cost,
      	m32r_sched_init, m32r_sched_reorder, m32r_variable_issue): Remove.
      	(TARGET_SCHED_ADJUST_COST, TARGET_SCHED_VARIABLE_ISSUE,
      	TARGET_SCHED_INIT, TARGET_SCHED_REORDER): Don't define.
      	* config/m32r/m32r.md: Rewrite the pipeline description as a DFA.
      
      From-SVN: r83829
      Steven Bosscher committed
    • tree.def (REALPART_EXPR, [...]): Change class to 'r'. · 497be978
              * tree.def (REALPART_EXPR, IMAGPART_EXPR): Change class to 'r'.
              * fold-const.c (operand_equal_p <case 'r'>): Add REALPART_EXPR,
              IMAGPART_EXPR.
              * tree-dump.c (dequeue_and_dump): Handle REALPART_EXPR and
              IMAGPART_EXPR explicitly.
              * tree-inline.c (estimate_num_insns_1): Don't handle REALPART_EXPR
              and IMAGPART_EXPR specially.
              * tree.c (build1_stat): Copy TREE_THIS_VOLATILE into class 'r'.
      
      From-SVN: r83825
      Richard Henderson committed
    • Typo fix. · 4aaf65cb
      From-SVN: r83819
      Joern Rennecke committed
    • builtins.def (execl, [...]): Change to DEF_EXT_LIB_BUILTIN. · f51af25f
      	* builtins.def (execl, execlp, execle, execv, execvp, execve,
      	fork): Change to DEF_EXT_LIB_BUILTIN.
      
      From-SVN: r83817
      Joseph Myers committed
    • decl.c: Remove calls to add_decl_expr... · 909f21b3
      	* decl.c: Remove calls to add_decl_expr, pushdecl, rest_of_compilation,
      	and rest_of_type_compilation; add arg to create_*_decl.
       	(annotate_decl_with_node): Deleted.
      	(gnat_to_gnu_entity, case E_Array_Type): Set location of fields.
      	* gigi.h (get_decls, block_has_vars, pushdecl): Deleted.
      	(get_current_block_context, gnat_pushdecl): New declarations.
      	(gnat_init_stmt_group): Likewise.
      	(create_var_decl, create_type_decl, create_subprog_decl): Add new arg.
      	* misc.c (LANG_HOOKS_CLEAR_BINDING_STACK): Deleted.
      	(LANG_HOOKS_GETDECLS, LANG_HOOKS_PUSHDECL): Deleted.
      	(gnat_init): Call gnat_init_stmt_group.
      	* trans.c (global_stmt_group, gnu_elab_proc_decl): New variables.
      	(gnu_pending_elaboration_list): Deleted.
      	(mark_visited, mark_unvisited, gnat_init_stmt_group): New functions.
      	(gigi): Rearrange initialization calls and move some to last above.
      	(gnat_to_gnu): If statement and not in procedure, go into elab proc.
      	Delete calls to add_decl_expr; add arg to create_*_decl.
      	(gnat_to_gnu, case N_Loop): Recalculate side effects on COND_EXPR.
      	(gnat_to_gnu, case N_Subprogram_Body): Move some code to
      	begin_subprog_body and call it.
      	Don't push and pop ggc context.
      	(gnat_to_gnu, case N_Compilation_Unit): Rework to support elab proc.
      	(add_stmt): Remove handling of DECL_EXPR from here.
      	If not in function, mark visited.
      	(add_decl_expr): Put global at top level.
      	Check for cases of DECL_INITIAL we have to handle here.
      	(process_type): Add extra arg to create_type_decl.
      	(build_unit_elab): Rework to just gimplify.
      	* utils.c (pending_elaborations, elist_stack, getdecls): Deleted.
      	(block_has_vars, mark_visited, add_pending_elaborations): Likewise.
      	(get_pending_elaborations, pending_elaborations_p): Likewise.
      	(push_pending_elaborations, pop_pending_elaborations): Likewise.
      	(get_elaboration_location, insert_elaboration_list): Likewise.
      	(gnat_binding_level): Renamed from ada_binding_level.
      	(init_gnat_to_gnu): Don't clear pending_elaborations.
      	(global_bindings_p): Treat as global if no current_binding_level.
      	(set_current_block_context): New function.
      	(gnat_pushdecl): Renamed from pushdecl; major rework.
      	All callers changed.
      	(create_type_decl, create_var_decl, create_subprog_decl): Add new arg.
      	(finish_record_type): Call call pushdecl for stub decl.
      	(function_nesting_depth): Deleted.
      	(begin_subprog_body): Delete obsolete code.
      	* utils2.c (build_call_alloc_dealloc): Add new arg to create_var_decl.
      
      From-SVN: r83816
      Richard Kenner committed