1. 29 Jun, 2004 14 commits
    • 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 26 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
    • expmed.c (expand_smod_pow2): New function to expand signed remainder by a… · 0b55e932
      expmed.c (expand_smod_pow2): New function to expand signed remainder by a constant power of 2, such as "x % 16".
      
      
      	* expmed.c (expand_smod_pow2): New function to expand signed
      	remainder by a constant power of 2, such as "x % 16".
      	(expand_divmod): Call new expand_smod_pow2 when appropriate.
      	Minor corrections to comments, e.g. wrapping long lines.
      
      From-SVN: r83815
      Roger Sayle committed
    • ptrmem4.C: Change to compile only test. · 3b50d22e
      2004-06-28  Andrew Pinski  <apinski@apple.com>
      
              * g++.dg/opt/ptrmem4.C: Change to compile only test.
      
      From-SVN: r83808
      Andrew Pinski committed
    • cpp_type_traits.h: Move the additions to namespace __gnu_internal outside of namespace std... · ff89096a
      2004-06-28  Paolo Carlini  <pcarlini@suse.de>
      
      	* include/bits/cpp_type_traits.h: Move the additions to
      	namespace __gnu_internal outside of namespace std; trivial
      	formatting fixes.
      
      From-SVN: r83806
      Paolo Carlini committed
    • safe_base.h (__gnu_debug::_Safe_sequence_base): Revert -Weffc++ changes that… · 4723805a
      safe_base.h (__gnu_debug::_Safe_sequence_base): Revert -Weffc++ changes that defined copy ctory and or assignment operator.
      
      
      2004-06-28  Benjamin Kosnik  <bkoz@redhat.com>
      
      	* include/debug/safe_base.h (__gnu_debug::_Safe_sequence_base):
      	Revert -Weffc++ changes that defined copy ctory and or assignment
      	operator.
      	* libsupc++/tinfo.cc (__upcast_result): Same.
      
      From-SVN: r83804
      Benjamin Kosnik committed
    • * Makefile.in (vec.o): Fix dependencies. · 5afdc07a
      From-SVN: r83803
      Ulrich Weigand committed
    • Makefile.in: Fix parallel make dependency problem on vec.o. · 8ead23b3
      2004-06-28  Andreas Tobler <a.tobler@schweiz.ch>
      
      	* Makefile.in: Fix parallel make dependency problem on vec.o.
      
      From-SVN: r83802
      Andreas Tobler committed
    • cp-demangle.h: Declare cplus_demangle_operators... · 0cf61401
      libiberty:
      	* cp-demangle.h: Declare cplus_demangle_operators,
      	cplus_demangle_builtin_types, cplus_demangle_mangled_name, and
      	cplus_demangle_type as static if IN_GLIBCPP_V3.
      libobjc:
      	* encoding.c: Rename target_flags with a #define to avoid
      	conflict with a prior declaration.
      
      From-SVN: r83800
      Zack Weinberg committed
    • * testsuite/demangle-expected: Add test case. · 5cd29062
      From-SVN: r83799
      Ian Lance Taylor committed
    • re PR target/14041 (H8300-elf unaligned word/longword access of zero initialized variables) · 6cdd2721
              PR target/14041
              * config/h8300/h8300.h (ASM_OUTPUT_ALIGNED_BSS): Define.
      
             PR target/14041
              * gcc.dg/h8300-bss-align-1.c : New.
      
      From-SVN: r83797
      Dhananjay Deshpande committed
    • cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK, [...]): Use appropriate TREE_CHECK… · 086e3095
      cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK, [...]): Use appropriate TREE_CHECK macro.:qOR_FUNCTION_DECL_CHECK,
      
               * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK,
              VAR_FUNCTION_OR_PARM_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK,
              BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Use appropriate
              TREE_CHECK macro.:qOR_FUNCTION_DECL_CHECK,
              * tree.h (tree_check_failed): Make varadic.
              (tree_not_check_failed): New prototype.
              (tree_check2_failed, tree_check3_failed,
              tree_check4_failed, tree_check5_failed): Remove.
              (TREE_CHECK, TREE_CHECK2, TREE_CHECK3, TREE_CHECK4,
              TREE_CHECK5): Adjust.
              (TREE_NOT_CHECK, TREE_NOT_CHECK2, TREE_NOT_CHECK3, TREE_NOT_CHECK4,
              TREE_NOT_CHECK5): New.
              (TREE_VEC_ELT_CHECK, PHI_NODE_ELT_CHECK, TREE_OPERAND_CHECK_CODE,
              TREE_RTL_OPERAND_CHECK): Adjust.
              * tree.c (tree_check_failed): Make varadic.
              (tree_not_check_failed): New.
              (tree_check2_failed, tree_check3_failed,
              tree_check4_failed, tree_check5_failed): Remove.
      cp:
              * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK,
              VAR_FUNCTION_OR_PARM_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK,
              BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Use appropriate
              TREE_CHECK macro.
      
      From-SVN: r83796
      Nathan Sidwell committed
    • re PR c++/16240 (g++ generates incorrect mangled name) · 00a5aa9c
      	PR other/16240
      	* cp-demangle.c (d_expr_primary): Check for a failure return from
      	cplus_demangle_type.
      
      From-SVN: r83791
      Ian Lance Taylor committed
    • cp-tree.h (struct deferred_access): Move to ... · 3e1f1ba5
      	* cp-tree.h (struct deferred_access): Move to ...
      	* semantics.c (struct deferred_access): ... here. Adjust.
      	(deferred_access_stack): Make a VEC(deferred_access),
      	(deferred_access_free_list): Remove.
      	(deferred_access_no_check): New.
      	(push_deferring_access_checks, resume_deferring_access_checks,
      	stop_deferring_access_checks, pop_deferring_access_checks,
      	get_deferred_access_checks, pop_to_parent_deferring_access_checks,
      	perform_deferred_access_checks, perform_or_defer_access_check): Adjust.
      
      From-SVN: r83790
      Nathan Sidwell committed
    • [multiple changes] · 246d2ceb
      2004-06-28  Robert Dewar  <dewar@gnat.com>
      
      	* mlib-tgt-tru64.adb, mlib-tgt-aix.adb, mlib-tgt-irix.adb,
      	mlib-tgt-irix.adb, mlib-tgt-hpux.adb, mlib-tgt-linux.adb,
      	mlib-tgt-linux.adb, mlib-tgt-solaris.adb, mlib-tgt-solaris.adb,
      	mlib-tgt-vms-alpha.adb, mlib-tgt-vms-alpha.adb, mlib-tgt-vms-ia64.adb,
      	a-strmap.adb, a-strmap.ads, clean.adb: Minor reformatting
      
      	* exp_util.adb (Is_Possibly_Unaligned_Slice): Completely rewritten, to
      	deal with problem of inefficient slices on machines with strict
      	alignment, when the slice is a component of a composite.
      
      	* checks.adb (Apply_Array_Size_Check): Do not special case 64-bit
      	machines, we need the check there as well.
      
      2004-06-28  Ed Schonberg  <schonberg@gnat.com>
      
      	* exp_ch5.adb (Expand_Assign_Array): Use correct condition to
      	determine safe copying direction for overlapping slice assignments
      	when component is controlled.
      
      	* sem_ch12.adb (Instantiate_Formal_Package): Implicit operations of a
      	formal derived type in the actual for a formal package are visible in
      	the enclosing instance.
      
      2004-06-28  Ed Schonberg  <schonberg@gnat.com>
      
      	PR ada/15600
      	* sem_util.adb (Trace_Components): Diagnose properly an illegal
      	circularity involving a private type whose completion includes a
      	self-referential component.
      	(Enter_Name): Use Is_Inherited_Operation to distinguish a source
      	renaming or an instantiation from an implicit derived operation.
      
      2004-06-28  Pascal Obry  <obry@gnat.com>
      
      	* mlib-tgt-mingw.adb: (Library_Exists_For): Remove "lib" prefix from
      	DLL.
      	(Library_File_Name_For): Idem.
      
      2004-06-28  Matthew Gingell  <gingell@gnat.com>
      
      	* g-traceb.ads: Add explanatory note on the format of addresses
      	expected by addr2line.
      
      2004-06-28  Jerome Guitton  <guitton@act-europe.fr>
      
      	* Makefile.in: Force debugging information on s-tasdeb.adb,
      	a-except.adb and s-assert.adb needed by the debugger.
      
      2004-06-28  Vincent Celier  <celier@gnat.com>
      
      	* make.adb (Collect_Arguments_And_Compile): Change Flag1 to
      	Need_To_Build_Lib.
      	(Gnatmake): Ditto.
      
      	* mlib-prj.adb (Check_Library): Replace Flag1 with Need_To_Build_Lib
      
      	* prj.adb: Minor reformatting
      	(Project_Empty): Change Flag1 to Need_To_Build_Lib. Remove Flag2.
      
      	* prj.ads: Comment updates
      	Minor reformatting
      	(Project_Data): Change Flag1 to Need_To_Build_Lib.
      	Remove Flag2: not used.
      
      	* prj-dect.adb (Parse_Declarative_Items): Accept "null" as a
      	declaration.
      
      	* gnat_ugn.texi: Put a "null;" declaration in one project file example
      
      	* gnat_rm.texi: Document Empty declarations "null;".
      
      	* makegpr.adb (Compile_Link_With_Gnatmake): Put the global archives in
      	front of the linker options.
      	(Link_Foreign): Put the global archives and the libraries in front of
      	the linker options.
      
      2004-06-28  Javier Miranda  <miranda@gnat.com>
      
      	* rtsfind.adb: (Get_Unit_Name): Fix typo in comment
      	(RTU_Loaded): Code cleanup
      	(Set_RTU_Loaded): New procedure to register as *loaded* explicitly
      	withed predefined units.
      
      	* rtsfind.ads (Set_RTU_Loaded): New procedure to register as *loaded*
      	explicitly withed predefined units.
      	Fix typo in comment
      
      	* sem_ch10.adb (Analyze_Compilation_Unit): Register as *loaded*
      	explicitly withed predefined units.
      
      From-SVN: r83789
      Arnaud Charlet committed
    • combine.c (can_combine_p): Do not prevent building insns that use and clobber… · 45da19e3
      combine.c (can_combine_p): Do not prevent building insns that use and clobber the same fixed hard register.
      
      	* combine.c (can_combine_p): Do not prevent building insns that use
      	and clobber the same fixed hard register.
      	(reg_dead_at_p): Likewise.
      
      From-SVN: r83785
      Ulrich Weigand committed
    • tree-sra.c (is_sra_candidate_ref): Remove second arg; all callers changed. · 03797ac5
      	* tree-sra.c (is_sra_candidate_ref): Remove second arg; all callers
      	changed.
      	(is_sra_candidate_complex_ref): New function.
      	(scalarize_modify_expr): Call it and check for LHS also.
      
      From-SVN: r83784
      Richard Kenner committed
    • tree-pretty-print.c (dump_function_declaration): New. · 5f2dcbe1
      	* tree-pretty-print.c (dump_function_declaration): New.
      	(dump_generic_node, case FUNCTION_TYPE): Call it.
      	(dump_generic_node, case RECORD_TYPE): Don't output dup semicolon.
      	(dump_generic_node, case DECL_EXPR): New case.
      	(dump_generic_node, case PLACEHOLDER_EXPR): Handle.
      	(print_declaration): Handle type and function declarations.
      
      From-SVN: r83782
      Richard Kenner committed
    • tree-nested.c (create_tmp_var_for): Allow ARRAY_TYPE. · 70883f72
      	* tree-nested.c (create_tmp_var_for): Allow ARRAY_TYPE.
      	(convert_nonlocal_reference, convert_local_reference): Properly
      	convert nest of handled component references.
      
      From-SVN: r83781
      Richard Kenner committed