1. 05 Jan, 2006 15 commits
  2. 04 Jan, 2006 25 commits
    • re PR c++/25632 (ICE with const int copied into two different functions) · 57b37fe3
      	PR c++/25632
      	* init.c (constant_value_1): Unshare use of DECL_INITIAL.  Fix a typo
      	in condition.
      
      From-SVN: r109354
      Zdenek Dvorak committed
    • decNumber.c (__NO_STRING_INLINES): Define to prevent glibc macro definition of… · 7a6d30ce
      decNumber.c (__NO_STRING_INLINES): Define to prevent glibc macro definition of strcpy from generating compilation...
      
      
      	* decNumber.c (__NO_STRING_INLINES): Define to prevent glibc macro
      	definition of strcpy from generating compilation warnings.
      
      
      Co-Authored-By: Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
      
      From-SVN: r109351
      Roger Sayle committed
    • posix-threads.cc (_Jv_InitThreads): #ifdef PTHREAD_STACK_MIN · 1916e588
      2006-01-04  Krister Walfridsson  <cato@df.lth.se>
      
      	* posix-threads.cc (_Jv_InitThreads): #ifdef PTHREAD_STACK_MIN
      
      From-SVN: r109350
      Krister Walfridsson committed
    • typeck2.c: update copyright to 2006 · b7af94d8
      2006-01-04  Chris Lattner  <sabre@gnu.org>
      
              * typeck2.c: update copyright to 2006
              (split_nonconstant_init_1):  Set TREE_CONSTANT to true.
      
      From-SVN: r109348
      Chris Lattner committed
    • another trivial tweak for consistency · a9210574
      From-SVN: r109347
      Chris Lattner committed
    • obvious typo fix · 0eaf8e17
      From-SVN: r109346
      Chris Lattner committed
    • Add myself. · c76c0c83
      From-SVN: r109345
      Chris Lattner committed
    • re PR c++/24782 (wrongly accepted nested private typedef) · 19e65f30
      	PR c++/24782
      	* parser.c (cp_parser_nested_name_specifier_opt): Preserve access
      	checks, even when parsing tentatively.
      	PR c++/24782
      	* g++.dg/parse/access9.C: New test.
      	* g++.dg/tc1/dr52.C: Tweak error markers.
      
      From-SVN: r109342
      Mark Mitchell committed
    • Class.h (_Jv_CopyClassesToSystemLoader): Updated. · 2fb13888
      	* java/lang/Class.h (_Jv_CopyClassesToSystemLoader): Updated.
      	* java/lang/natClassLoader.cc (_Jv_CopyClassesToSystemLoader):
      	Changed argument type.  Use SystemClassLoader.addClass.
      	* gnu/gcj/runtime/SystemClassLoader.java (addClass): New method.
      
      From-SVN: r109340
      Tom Tromey committed
    • m68k.c (m68k_output_mi_thunk): Use jmp, not jsr. · a8c253d0
      2006-01-04  Paul Brook  <paul@codesourcery.com>
      
      	* config/m68k/m68k.c (m68k_output_mi_thunk): Use jmp, not jsr.
      
      From-SVN: r109338
      Paul Brook committed
    • lambda-code.c (can_put_in_inner_loop): Relax restrictions. · dc006c70
      2006-01-04  Daniel Berlin  <dberlin@dberlin.org>
      
      	* lambda-code.c (can_put_in_inner_loop): Relax
      	restrictions.
      	(can_put_after_inner_loop): New function.
      	(can_convert_to_perfect_nest): Use can_put_after_inner_loop as well.
      	(perfect_nestify): Change to make copies and modify uses.
      
      From-SVN: r109337
      Daniel Berlin committed
    • directives.c (struct pragma_entry): Add is_deferred. · bc4071dd
      libcpp/
      	* directives.c (struct pragma_entry): Add is_deferred.  Add ident
      	entry to value union.
      	(end_directive): Don't eat the line if in_deferred_pragma.
      	(run_directive): Remove pragma hacks.
      	(insert_pragma_entry): Remove.
      	(new_pragma_entry): New.
      	(register_pragma_1): Split out of register_pragma.  Only handle
      	the lookup tree and return the new entry.
      	(cpp_register_pragma): Fill in the pragma entry here.
      	(cpp_register_deferred_pragma): New.
      	(register_pragma_internal): New.
      	(_cpp_init_internal_pragmas): Use register_pragma_internal.
      	(do_pragma): Allow pragma expansion after namespace.  For deferred
      	pragmas, don't slurp the line into a string.
      	(destringize_and_run): Save tokens for deferred pragmas.
      	(cpp_handle_deferred_pragma): Remove.
      	* macro.c (builtin_macro): Remove pragma token hack.
      	(_cpp_push_token_context): Rename from push_token_context and export.
      	* internal.h (struct lexer_state): Add pragma_allow_expansion.
      	(_cpp_push_token_context): Declare.
      	* lex.c (_cpp_lex_token): Allow _cpp_handle_directive to return
      	a token.  Update the line number correctly if so.
      	(_cpp_lex_direct): Emit CPP_PRAGMA_EOL tokens.
      	(cpp_token_val_index): Return CPP_TOKEN_FLD_PRAGMA for pragmas.
      	* include/cpplib.h (PRAGMA_EOL): New.
      	(CPP_TOKEN_FLD_PRAGMA): New.
      	(struct cpp_token): Add val.pragma.
      	(struct cpp_options): Remove defer_pragmas.
      	(cpp_handle_deferred_pragma): Remove.
      	(cpp_register_deferred_pragma): Declare.
      
      gcc/
      	* c-lex.c (c_lex_with_flags) <CPP_PRAGMA>: Smuggle pragma id
      	via integer constant.
      	(pragma_lex): Remove.
      	* c-pch.c (c_common_pch_pragma): Accept the name as an argument,
      	rather than parsing it.
      	* c-pragma.c (handle_pragma_weak, handle_pragma_redefine_extname,
      	handle_pragma_extern_prefix): Add %< %> quotes.
      	(registered_pragmas): New.
      	(c_register_pragma_1): New.
      	(c_register_pragma): Use it.
      	(c_register_pragma_with_expansion): Likewise.
      	(c_invoke_pragma_handler): New.
      	(init_pragma): Use cpp_register_deferred_pragma directly for
      	pch_preprocess.
      	* c-pragma.h (enum pragma_kind): New.
      	(pragma_handler): New.
      	(c_invoke_pragma_handler): Declare.
      	* c-common.c (c_parse_error): Pretty print CPP_PRAGMA and
      	CPP_PRAGMA_EOL.
      	* c-common.h (c_common_pch_pragma): Update decl.
      	* Makefile.in (c-parser.o): Update dependencies.
      	(GTFILES): Add c-pragma.h.
      	* c-parser.c (struct c_token): Add pragma_kind.
      	(struct c_parser): Add in_pragma.
      	(c_lex_one_token): Always initialize keyword and pragma_kind.
      	Extract data for CPP_PRAGMA.
      	(c_parser_peek_2nd_token): Deny CPP_PRAGMA_EOL.
      	(c_parser_consume_token): Don't allow CPP_PRAGMA unless errors.
      	Don't allow CPP_PRAGMA_EOL if in_pragma.
      	(c_parser_consume_pragma): New.
      	(c_parser_skip_until_found): Stop on CPP_PRAGMA_EOL.
      	(c_parser_skip_to_end_of_parameter): Likewise.
      	(c_parser_skip_to_end_of_block_or_statement): Likewise.
      	(c_parser_skip_to_pragma_eol): New.
      	(c_parser_external_declaration): Handle CPP_PRAGMA.
      	(c_parser_compound_statement_nostart): Likewise.
      	(c_parser_statement_after_labels): Likewise.
      	(c_parser_pragma): New.
      	(pragma_lex): Likewise.
      	(c_parser_pragma_pch_preprocess): New.
      	(c_parser_new): Merge into ...
      	(c_parse_file): ... here.  Call c_parser_pragma_pch_preprocess.
      
      gcc/cp/
      	* lex.c (handle_pragma_java_exceptions): Fix whitespace.
      	* parser.c (struct cp_token): Add pragma_kind.
      	(eof_token): Update to match.
      	(struct cp_lexer): Add in_pragma; rearrange next for better packing.
      	(cp_parser_initial_pragma): New.
      	(cp_lexer_new_main): Use it.  Don't bother clearing
      	c_lex_return_raw_strings.
      	(cp_lexer_get_preprocessor_token): Always initialize keyword
      	and pragma_kind fields.  Handle CPP_PRAGMA.
      	(cp_lexer_consume_token): Don't allow CPP_PRAGMA_EOL when 
      	in_pragma is set.
      	(cp_lexer_handle_pragma): Remove.  Update callers to cp_parser_pragma.
      	(cp_lexer_print_token) <CPP_PRAGMA>: Don't print as a string.
      	(cp_parser_skip_to_pragma_eol): New.
      	(cp_parser_error): Use it.
      	(cp_parser_skip_to_closing_parenthesis): Stop at CPP_PRAGMA_EOL;
      	rearrange with switch statement.
      	(cp_parser_skip_to_end_of_statement): Likewise.
      	(cp_parser_skip_to_end_of_block_or_statement): Likewise.
      	(cp_parser_skip_to_closing_brace): Likewise.
      	(cp_parser_skip_until_found): Likewise.
      	(cp_parser_statement): Add in_compound argument; update callers.
      	Use it to decide how to handle pragma parsing.
      	(cp_parser_labeled_statement): Add in_compound argument; pass
      	it on to cp_parser_statement.
      	(cp_parser_statement_seq_opt): Stop at CPP_PRAGMA_EOL.
      	(cp_parser_declaration_seq_opt): Likewise.
      	(cp_parser_parameter_declaration): Likewise.
      	(cp_parser_member_specification_opt): Likewise.
      	(cp_parser_function_definition_after_decl): Likewise.
      	(cp_parser_cache_group): Handle CPP_PRAGMA/CPP_PRAGMA_EOL pairs.
      	(cp_parser_pragma): New.
      	(pragma_lex): New.
      
      gcc/testsuite/
      	* g++.dg/parse/pragma2.C: Update expected error lines.
      
      From-SVN: r109336
      Richard Henderson committed
    • re PR ada/24994 (raised STORAGE_ERROR : stack overflow or erroneous memory access) · 59bb84ef
              PR ada/24994
              * tree-cfg.c (bsi_replace): Remove the original statement
              from the EH throw statement table.
      
      From-SVN: r109335
      Jeff Law committed
    • decl.c (finish_constructor_body): create simple compound stmt instead of a if(1) { } construct. · ebfd9521
      2002-01-04  Dirk Mueller <dmueller@suse.com>
      
      	* decl.c (finish_constructor_body): create simple
      	compound stmt instead of a if(1) { } construct.
      
      From-SVN: r109331
      Dirk Mueller committed
    • Fix "node B dominates node B" to "node B dominates node A" · d8701f02
      From-SVN: r109330
      Daniel Berlin committed
    • re PR middle-end/24252 (Missing "warning: control reaches end of non-void… · 2d309510
      re PR middle-end/24252 (Missing "warning: control reaches end of non-void function" in static function)
      
      2006-01-04  Paolo Bonzini  <bonzini@gnu.org>
      
      	PR bootstrap/24252
      
      	* Makefile.def (flags_to_pass): Add STAGE1_CFLAGS and STAGE1_LANGUAGES.
      	* Makefile.tpl (OBJDUMP): New.
      	(EXTRA_HOST_FLAGS): Add it.
      	(EXTRA_GCC_FLAGS): Remove flags already specified in flags_to_pass.
      
              * Makefile.tpl (stage[+id+]-start, stage[+id+]-end): Do not try
              to use symbolic links between directories.  Avoid race conditions
              or make them harmless.
              * configure.in: Do not try to use symbolic links between directories.
      
      	* Makefile.def (LEAN): Pass.
      	* Makefile.tpl (LEAN): Define.
      	(stage[+id+]-start): Accept that the previous directory does not
      	exist, if the bootstrap is lean.
      	(stage[+id+]-bubble): Invoke lean bootstrap commands after
      	stage[+id+]-start.  Use a makefile variable and an `if' instead of a
      	configure substitution.
      	([+compare-target+]): Likewise.
      	([+bootstrap-target+]-lean): New.
      	* configure.in: Remove lean bootstrap support from here.
      
              * Makefile.in: Regenerate.
              * configure: Regenerate.
      
      From-SVN: r109325
      Paolo Bonzini committed
    • sso_string_base.h (__sso_string_base<>::_M_dataplus): Use _CharT_alloc_type as base class. · f7ace77f
      2006-01-04  Paolo Carlini  <pcarlini@suse.de>
      
              * include/ext/sso_string_base.h (__sso_string_base<>::_M_dataplus):
              Use _CharT_alloc_type as base class.
              (_M_get_allocator, _M_swap, _M_create, _M_destroy): Adjust.
              * include/ext/vstring.h (get_allocator): Tidy.
      
      2006-01-04  Paolo Carlini  <pcarlini@suse.de>
      
      	Implement Option 3 of DR 431 for all the containers.
      	* include/bits/allocator.h (struct __alloc_swap): Add, swaps
      	allocators, optimized to nothing in case they are empty.
      	* include/bits/stl_deque.h (deque<>::swap): Use it.
      	* include/bits/stl_list.h (list<>::swap): Likewise.
      	* include/bits/stl_tree.h (_Rb_tree<>::swap): Likewise.
      	* include/bits/stl_vector.h (vector<>::swap): Likewise.
      	* include/tr1/hashtable (hashtable<>::swap): Likewise.
      	* include/ext/rc_string_base.h (__rc_string_base<>::_M_swap):
      	Likewise.
      	* include/ext/sso_string_base.h (__sso_string_base<>::_M_swap):
      	Likewise.
      	* include/ext/vstring_util.h (__vstring_utility<>::_Alloc_hider):
      	Clean-up (now vstring uses the generic __alloc_swap facility).
      	* include/tr1/unordered_map: Adjust includes.
      	* include/tr1/unordered_set: Likewise.
      	* docs/html/ext/howto.html: Add an entry for DR 431.
      	* testsuite/23_containers/deque/modifiers/swap.cc: Move to...
      	* testsuite/23_containers/deque/modifiers/swap/1.cc: ... here.		
      	* testsuite/23_containers/deque/modifiers/swap/2.cc: New.
      	* testsuite/23_containers/deque/modifiers/swap/3.cc: New.
      	* testsuite/23_containers/list/modifiers/swap.cc: Move to...
      	* testsuite/23_containers/list/modifiers/swap/1.cc: ... here.		
      	* testsuite/23_containers/list/modifiers/swap/2.cc: New.
      	* testsuite/23_containers/list/modifiers/swap/3.cc: New.
      	* testsuite/23_containers/vector/modifiers/swap.cc: Move to...
      	* testsuite/23_containers/vector/modifiers/swap/1.cc: ... here.		
      	* testsuite/23_containers/vector/modifiers/swap/2.cc: New.
      	* testsuite/23_containers/vector/modifiers/swap/3.cc: New.
      	* testsuite/23_containers/set/modifiers/swap.cc: Move to...
      	* testsuite/23_containers/set/modifiers/swap/1.cc: ... here.		
      	* testsuite/23_containers/set/modifiers/swap/2.cc: New.
      	* testsuite/23_containers/set/modifiers/swap/3.cc: New.
      	* testsuite/23_containers/map/modifiers/swap.cc: Move to...
      	* testsuite/23_containers/map/modifiers/swap/1.cc: ... here.		
      	* testsuite/23_containers/map/modifiers/swap/2.cc: New.
      	* testsuite/23_containers/map/modifiers/swap/3.cc: New.
      	* testsuite/23_containers/multiset/modifiers/swap.cc: Move to...
      	* testsuite/23_containers/multiset/modifiers/swap/1.cc: ... here.		
      	* testsuite/23_containers/multiset/modifiers/swap/2.cc: New.
      	* testsuite/23_containers/multiset/modifiers/swap/3.cc: New.
      	* testsuite/23_containers/multimap/modifiers/swap.cc: Move to...
      	* testsuite/23_containers/multimap/modifiers/swap/1.cc: ... here.		
      	* testsuite/23_containers/multimap/modifiers/swap/2.cc: New.
      	* testsuite/23_containers/multimap/modifiers/swap/3.cc: New.
      	* testsuite/tr1/6_containers/unordered/swap/unordered_set/1.cc: New.	
      	* testsuite/tr1/6_containers/unordered/swap/unordered_set/2.cc: New.
      	* testsuite/tr1/6_containers/unordered/swap/unordered_map/1.cc: New.	
      	* testsuite/tr1/6_containers/unordered/swap/unordered_map/2.cc: New.
      	* testsuite/tr1/6_containers/unordered/swap/unordered_multiset/1.cc: New.	
      	* testsuite/tr1/6_containers/unordered/swap/unordered_multiset/2.cc: New.
      	* testsuite/tr1/6_containers/unordered/swap/unordered_multimap/1.cc: New.	
      	* testsuite/tr1/6_containers/unordered/swap/unordered_multimap/2.cc: New.
      
      From-SVN: r109324
      Paolo Carlini committed
    • sso_string_base.h (__sso_string_base<>::_M_dataplus): Use _CharT_alloc_type as base class. · db5d99e8
      2006-01-04  Paolo Carlini  <pcarlini@suse.de>
      
              * include/ext/sso_string_base.h (__sso_string_base<>::_M_dataplus):
              Use _CharT_alloc_type as base class.
              (_M_get_allocator, _M_swap, _M_create, _M_destroy): Adjust.
              * include/ext/vstring.h (get_allocator): Tidy.
      
      2006-01-04  Paolo Carlini  <pcarlini@suse.de>
      
      	Implement Option 3 of DR 431 for all the containers.
      	* include/bits/allocator.h (struct __alloc_swap): Add, swaps
      	allocators, optimized to nothing in case they are empty.
      	* include/bits/stl_deque.h (deque<>::swap): Use it.
      	* include/bits/stl_list.h (list<>::swap): Likewise.
      	* include/bits/stl_tree.h (_Rb_tree<>::swap): Likewise.
      	* include/bits/stl_vector.h (vector<>::swap): Likewise.
      	* include/tr1/hashtable (hashtable<>::swap): Likewise.
      	* include/ext/rc_string_base.h (__rc_string_base<>::_M_swap):
      	Likewise.
      	* include/ext/sso_string_base.h (__sso_string_base<>::_M_swap):
      	Likewise.
      	* include/ext/vstring_util.h (__vstring_utility<>::_Alloc_hider):
      	Clean-up (now vstring uses the generic __alloc_swap facility).
      	* include/tr1/unordered_map: Adjust includes.
      	* include/tr1/unordered_set: Likewise.
      	* docs/html/ext/howto.html: Add an entry for DR 431.
      	* testsuite/23_containers/deque/modifiers/swap.cc: Move to...
      	* testsuite/23_containers/deque/modifiers/swap/1.cc: ... here.		
      	* testsuite/23_containers/deque/modifiers/swap/2.cc: New.
      	* testsuite/23_containers/deque/modifiers/swap/3.cc: New.
      	* testsuite/23_containers/list/modifiers/swap.cc: Move to...
      	* testsuite/23_containers/list/modifiers/swap/1.cc: ... here.		
      	* testsuite/23_containers/list/modifiers/swap/2.cc: New.
      	* testsuite/23_containers/list/modifiers/swap/3.cc: New.
      	* testsuite/23_containers/vector/modifiers/swap.cc: Move to...
      	* testsuite/23_containers/vector/modifiers/swap/1.cc: ... here.		
      	* testsuite/23_containers/vector/modifiers/swap/2.cc: New.
      	* testsuite/23_containers/vector/modifiers/swap/3.cc: New.
      	* testsuite/23_containers/set/modifiers/swap.cc: Move to...
      	* testsuite/23_containers/set/modifiers/swap/1.cc: ... here.		
      	* testsuite/23_containers/set/modifiers/swap/2.cc: New.
      	* testsuite/23_containers/set/modifiers/swap/3.cc: New.
      	* testsuite/23_containers/map/modifiers/swap.cc: Move to...
      	* testsuite/23_containers/map/modifiers/swap/1.cc: ... here.		
      	* testsuite/23_containers/map/modifiers/swap/2.cc: New.
      	* testsuite/23_containers/map/modifiers/swap/3.cc: New.
      	* testsuite/23_containers/multiset/modifiers/swap.cc: Move to...
      	* testsuite/23_containers/multiset/modifiers/swap/1.cc: ... here.		
      	* testsuite/23_containers/multiset/modifiers/swap/2.cc: New.
      	* testsuite/23_containers/multiset/modifiers/swap/3.cc: New.
      	* testsuite/23_containers/multimap/modifiers/swap.cc: Move to...
      	* testsuite/23_containers/multimap/modifiers/swap/1.cc: ... here.		
      	* testsuite/23_containers/multimap/modifiers/swap/2.cc: New.
      	* testsuite/23_containers/multimap/modifiers/swap/3.cc: New.
      	* testsuite/tr1/6_containers/unordered/swap/unordered_set/1.cc: New.	
      	* testsuite/tr1/6_containers/unordered/swap/unordered_set/2.cc: New.
      	* testsuite/tr1/6_containers/unordered/swap/unordered_map/1.cc: New.	
      	* testsuite/tr1/6_containers/unordered/swap/unordered_map/2.cc: New.
      	* testsuite/tr1/6_containers/unordered/swap/unordered_multiset/1.cc: New.	
      	* testsuite/tr1/6_containers/unordered/swap/unordered_multiset/2.cc: New.
      	* testsuite/tr1/6_containers/unordered/swap/unordered_multimap/1.cc: New.	
      	* testsuite/tr1/6_containers/unordered/swap/unordered_multimap/2.cc: New.
      
      From-SVN: r109323
      Paolo Carlini committed
    • pmm_malloc.h (posix_memalign): If __cplusplus, make the prototype extern "C" and add throw (). · 1f0e2ace
      	* config/i386/pmm_malloc.h (posix_memalign): If __cplusplus,
      	make the prototype extern "C" and add throw ().
      
      	* g++.dg/other/i386-2.C: New test.
      
      From-SVN: r109318
      Jakub Jelinek committed
    • re PR target/25554 (unrecognizable insn on x86_64 with -O2 -ftracer (… · d90ee6be
      re PR target/25554 (unrecognizable insn on x86_64 with -O2 -ftracer ( -fno-tree-dominator-opts on the mainline))
      
      	PR target/25554
      	* config/i386/i386.md (testqi_ext_3): Ensure len is positive
      	and pos non-negative and pos + len <= 32.
      	(testqi_ext_3_rex64): Ensure len is positive and pos non-negative,
      	drop pos + len < HOST_BITS_PER_WIDE_INT test.
      	(testqi_ext_3* splitter): Handle pos + len == HOST_BITS_PER_WIDE_INT.
      
      	* gcc.c-torture/compile/20051228-1.c: New test.
      
      From-SVN: r109317
      Jakub Jelinek committed
    • re PR c/25559 (Internal compiler error when specifying vector_size(2) of int) · ee8960e5
      	PR c/25559
      	* c-common.c (handle_vector_size_attribute): Reject zero vector size
      	as well as sizes not multiple of component size.
      
      	* gcc.dg/pr25559.c: New test.
      
      From-SVN: r109316
      Jakub Jelinek committed
    • re PR debug/25562 (cannot debug VLA local) · 434eba35
      	PR debug/25562
      	* function.c (instantiate_expr): New function.
      	(instantiate_decls_1, instantiate_decls): If DECL_HAS_VALUE_EXPR_P,
      	walk its DECL_VALUE_EXPR with instantiate_expr.
      
      	* dwarf2out.c (loc_descriptor_from_tree_1): Don't add
      	DW_OP_deref{,_size} if address isn't going to be added.
      
      From-SVN: r109315
      Jakub Jelinek committed
    • fp-bit.h: Use top-of-file comment from libgcc2.c. · 9c3b204a
      	* config/fp-bit.h: Use top-of-file comment from libgcc2.c.
      	* config/fp-bit.c: Likewise.
      
      From-SVN: r109309
      Ben Elliston committed
    • dominance.c: Add comment about why we use DFS numbering of dominance tree. · b629276a
      2006-01-03  Daniel Berlin  <dberlin@dberlin.org>
      
      	* dominance.c: Add comment about why we use DFS numbering
      	of dominance tree.
      
      From-SVN: r109308
      Daniel Berlin committed
    • re PR c++/25492 (friend class nested in derived class problem) · 862e1e62
      	PR c++/25492
      	* name-lookup.c (push_class_level_binding): When a derived class
      	provides a type binding, eliminate any type binding from a base
      	class. 
      	PR c++/25625
      	* repo.c (repo_emit_p): Always instantiate static data members
      	initialized by constant expressions, so that there values are
      	available.
      	PR c++/25492
      	* g++.dg/lookup/friend9.C: New test.
      	PR c++/25625
      	* g++.dg/template/repo5.C: New test.
      
      From-SVN: r109307
      Mark Mitchell committed