aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
1998-02-28I've backed out of including stat.h via system.h because stat.h can define...Kaveh R. Ghazi3-1/+4
I've backed out of including stat.h via system.h because stat.h can define static functions (eg on x86 svr4 according to jfc@mit.edu) causing code bloat. * system.h: Remove sys/stat.h. * gcc.c: Add sys/stat.h. From-SVN: r18289
1998-02-28ChangeLog entry, omitted for change described below, is now installed:Kaveh Ghazi1-0/+14
* genattr.c: Wrap prototype of `free' in NEED_DECLARATION_FREE. * genattrtab.c: Likewise. * genconfig.c: Likewise. * genemit.c: Likewise. * genextract.c: Likewise. * genflags.c: Likewise. * genopinit.c: Likewise. * genoutput.c: Likewise. * genpeep.c: Likewise. * genrecog.c: Likewise. * tlink.c: Likewise. Also wrap `getenv' in NEED_DECLARATION_GETENV. From-SVN: r18288
1998-02-27newJason Merrill2-0/+39
From-SVN: r18287
1998-02-27pt.c (add_to_template_args): Fix thinko.Jason Merrill2-4/+8
* pt.c (add_to_template_args): Fix thinko. (instantiate_class_template): Call it later. From-SVN: r18286
1998-02-27Support partial specialization of member class templates.Jason Merrill6-23/+71
* pt.c (get_class_bindings): Add outer_args parm. (most_specialized_class): Likewise. (instantiate_class_template): Pass it. (more_specialized_class): Likewise. (lookup_template_class): Get context from template if none was specified. (finish_member_template_decl): Don't do anything with a partial specialization. * decl2.c (check_member_template): Use IS_AGGR_TYPE instead of AGGREGATE_TYPE_P. * class.c (finish_struct): Member class templates have already been checked for name clashes. * decl.c (pushdecl_with_scope): Handle pushing at class level. From-SVN: r18285
1998-02-27genattr.c: Wrap prototype of `free' in NEED_DECLARATION_FREE.Kaveh Ghazi11-7/+31
* genattr.c: Wrap prototype of `free' in NEED_DECLARATION_FREE. * genattrtab.c: Likewise. * genconfig.c: Likewise. * genemit.c: Likewise. * genextract.c: Likewise. * genflags.c: Likewise. * genopinit.c: Likewise. * genoutput.c: Likewise. * genpeep.c: Likewise. * genrecog.c: Likewise. * tlink.c: Likewise. Also wrap `getenv' in NEED_DECLARATION_GETENV. From-SVN: r18284
1998-02-26newJason Merrill1-0/+13
From-SVN: r18283
1998-02-26commentJason Merrill2-0/+4
From-SVN: r18282
1998-02-27* invoke.texi: Use @itemx for a secondary item in a @table.Andreas Schwab2-2/+4
From-SVN: r18281
1998-02-26pt.c (tsubst, [...]): Support member class templates.Jason Merrill11-3362/+3434
* pt.c (tsubst, TEMPLATE_DECL): Support member class templates. (tsubst, *_PARM): Support multiple levels of template classes. (instantiate_class_template): Look up the pattern from the original template. (lookup_template_class): Handle getting a template for d1. (push_template_decl): Correct setting of 'primary'. (reduce_template_parm_level): Add 'levels' parm. (finish_member_template_decl): Support member class templates. (template_class_depth): Handle multiple levels. * parse.y (component_decl_1, fn.def2): Remove member template case. (component_decl): Add member template cases. * decl2.c (check_member_template): We now handle member template classes. * decl.c (pushtag): Handle member templates. * method.c (do_inline_function_hair): Don't touch IDENTIFIER_GLOBAL_VALUE. * init.c (build_offset_ref): If name isn't an identifier, just return it. * spew.c (yylex): Handle PTYPENAME like TYPENAME. * typeck.c (get_delta_difference): Do adjust for conversions to and from virtual base. From-SVN: r18280
1998-02-27Update copyrightAndreas Schwab1-1/+1
From-SVN: r18279
1998-02-27m68k.md (movsf+1): Optimize moving a CONST_DOUBLE zero.Andreas Schwab2-0/+41
* config/m68k/m68k.md (movsf+1): Optimize moving a CONST_DOUBLE zero. From-SVN: r18278
1998-02-26regclass.c (init_reg_sets): Move init of move cost tables...Ken Raeburn2-33/+38
* regclass.c (init_reg_sets): Move init of move cost tables... (init_reg_sets_1): ...to here. From-SVN: r18273
1998-02-25Initial revisionJeff Law1-0/+33
From-SVN: r18245
1998-02-25choose-temp.c: Fix handling of sys/file.h to work in libiberty.Jeff Law1-9/+13
8 * choose-temp.c: Fix handling of sys/file.h to work in libiberty. From-SVN: r18242
1998-02-25choose-temp.c: Fix handling of sys/file.h to work in libiberty.Ian Lance Taylor1-0/+4
* choose-temp.c: Fix handling of sys/file.h to work in libiberty. From-SVN: r18241
1998-02-25New testcase for x86 specific crash.Jeff Law1-0/+12
From-SVN: r18239
1998-02-25i386.c (struct machine_function): Add new fields for PIC stuff.Jeffrey A Law2-1/+19
* i386.c (struct machine_function): Add new fields for PIC stuff. (save_386_machine_status): Fix argument to xmalloc. Save pic_label_rtx and pic_label_name. (restore_386_machine_status): Corresponding changes. (clear_386_stack_locals): Also clear pic_label_rtx and pic_label_name. From-SVN: r18237
1998-02-25Add .cvsignore file.Mark Mitchell1-0/+3
From-SVN: r18231
1998-02-25typeck.c (get_delta_difference): Give hard error for conversion from virtual ↵Jason Merrill3-23/+25
base. * typeck.c (get_delta_difference): Give hard error for conversion from virtual base. * cp-tree.h: Tweak formatting. From-SVN: r18229
1998-02-24updateJason Merrill9-13/+12
From-SVN: r18228
1998-02-24Partial implementation of namespaces.Jason Merrill11-80/+597
* decl.c (push_namespace): Handle redeclaration error. * cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro. (IDENTIFIER_NAMESPACE_BINDINGS): New macro. (NAMESPACE_BINDING): New macro. (IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING. * *.c: Use them. * pt.c (push_template_decl): Use innermost_args. * decl.c (get_unique_name): Tweak from earlier in the name. * cp-tree.def: Add CPLUS_BINDING node. * cp-tree.h (tree_binding): new struct (BINDING_SCOPE, BINDING_VALUE): new macros (current_namespace, global_namespace): declare extern (struct lang_decl_flags): new field in_namespace (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): new macros (DECL_NAMESPACE, SET_DECL_NAMESPACE): new macros (TREE_INDIRECT_USING): new macro * decl2.c (current_namespace, global_namespace): Declare. The value is a NAMESPACE_DECL now, not a TREE_LIST. (is_namespace_ancestor, namespace_ancestor):new static functions. (add_using_namespace, ambiguous_decl): likewise. (lookup_using_namespace): new support function for lookup_name. (qualified_lookup_using_namespace): new support function for do_scoped_id and lookup_namespace_name (get_namespace_id): mark as obsolete. (current_namespace_id): Likewise. (do_namespace_alias): Implement. (do_using_directive): Implement as call to add_using_namespace. * decl.c (binding_for_name): new function. (push_namespace, pop_namespace): implement. (push_decl): don't install a FUNCTION_DECL in the global branch. (lookup_namespace_name): implement using qualified lookup. (lookup_name_real): For global scoping, lookup in global_namespace. For namespace scoping, lookup in given namespace. For unscoped lookup, iterate over namespace, considering using directives. (init_decl_processing): initialize global_namespace. (grokvardecl): Build assembler name as static name for globals. (grokdeclarator): Remove old namespace mangling. (xref_tag): When installing a global binding for the tag, make sure we have an identifier. * method.c (build_overload_nested_name): mangle namespaces. (build_qualified_name): Likewise. (build_decl_overload_real): Likewise. * lex.c (build_lang_decl): set namespace for new declaration to current_namespace. (do_scoped_id): find global names in global or current namespace, or using qualified namespace lookup, depending on context. * init.c (build_member_call): When scope is namespace, use build_x_function_call instead. (build_offset_ref): When scope is namespace, collapse processing to lookup_namespace_name instead. * error.c (dump_decl): Support NAMESPACE_DECL. * decl.c (pushdecl): Bind globals to current namespace. (push_overloaded_decl): Likewise. (lookup_tag): Likewise. (lookup_name_current_level): Likewise. (xref_tag): Likewise. (start_function): Likewise. * lex.c (do_identifier): Likewise. (identifier_typedecl_value): Likewise. (real_yylex): Likewise. * method.c (do_inline_function_hair): Likewise. * parse.y (unscoped): Likewise. * pt.c (check_explicit_specialization): Likewise. (lookup_template_class): Likewise. * rtti.c (call_void_fn): Likewise. * sig.c (build_sigtable): Likewise. * ptree.c (lang_print_xnode): New function. From-SVN: r18227
1998-02-24c-parse.y (undeclared variable error): Tweak error message to be clearer.Jeffrey A Law3-5/+10
* c-parse.y (undeclared variable error): Tweak error message to be clearer. From-SVN: r18226
1998-02-24flags.h (g_switch_value, [...]): Declare.Richard Henderson5-30/+87
* flags.h (g_switch_value, g_switch_set): Declare. * alpha.c (override_options): Set g_switch_value=8 if not set. * alpha/elf.h (CC1_SPEC): New. (ASM_SPEC): New. (LINK_SPEC): Pass along the -G value we were given. (LOCAL_ASM_OP): Remove. (ASM_OUTPUT_ALIGNED_LOCAL): Output to .bss or .sbss by size. (MAX_OFILE_ALIGNMENT): New. (BSS_SECTION_ASM_OP, SBSS_SECTION_ASM_OP, SDATA_SECTION_ASM_OP): New. (EXTRA_SECTIONS): Add sbss and sdata. (SECTION_FUNCTION_TEMPLATE): New. (EXTRA_SECTION_FUNCTIONS): Use it. (CTORS_SECTION_FUNCTION, DTORS_SECTION_FUNCTION): Remove. (SELECT_SECTION): Use sdata when small enough. * alpha/linux.h (ASM_SPEC): Remove. From-SVN: r18225
1998-02-24decl.c (finish_function): Give a pedwarn for reaching end of non-void ↵Brendan Kehoe2-6/+1
function, not just a warning. * decl.c (finish_function): Give a pedwarn for reaching end of non-void function, not just a warning. Remove the above. From-SVN: r18218
1998-02-24decl.c (finish_function): Give a pedwarn for reaching end of non-void ↵Brendan Kehoe2-1/+6
function, not just a warning. * decl.c (finish_function): Give a pedwarn for reaching end of non-void function, not just a warning. From-SVN: r18217
1998-02-23pt.c (instantiate_class_template): Don't instantiate if pedantic and the ↵Jason Merrill3-3/+27
args use template parms. * pt.c (instantiate_class_template): Don't instantiate if pedantic and the args use template parms. * pt.c (push_tinst_level): If the instantiaton uses template parms, fail silently. * decl.c (xref_basetypes): Do call complete_type for basetypes that involve template parameters. From-SVN: r18215
1998-02-23* typeck2.c (process_init_constructor): Fix labeled init check.Jason Merrill2-0/+5
From-SVN: r18214
1998-02-23From Bruno Haible <haible@ilog.fr>:Robert Lipe2-0/+36
* execute/980223.c: New test. From-SVN: r18210
1998-02-23* config.sub (sco5): Fix typo.Bruno Haible2-1/+4
From-SVN: r18209
1998-02-23tweakJason Merrill1-1/+0
From-SVN: r18208
1998-02-23commentJason Merrill1-0/+2
From-SVN: r18207
1998-02-23t-linux (LIBGCC1, [...]): Add macros and set to empty.Manfred Hollstein4-15/+7
e * config/t-linux (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Add macros and set to empty. * config/t-linux-aout (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Likewise. * config/alpha/t-linux: Remove file. * config/sparc/t-linux: Remove file. * config/m68k/t-linux (LIBGCC1, CROSS_LIBGCC1): Remove. * config/m68k/t-linux-aout (LIBGCC1, CROSS_LIBGCC1): Likewise. * configure.in (alpha*-*-linux-gnulibc1*): Use t-linux instead of alpha/t-linux for tmake_file. (alpha*-*-linux-gnu*): Likewise. (sparc-*-linux-gnulibc1*): Use t-linux instead of sparc/t-linux for tmake_file. (sparc-*-linux-gnu*): Likewise. From-SVN: r18206
1998-02-23t-linux (LIBGCC1, [...]): Add macros and set to empty.Manfred Hollstein2-4/+7
# * config/t-linux (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Add macros and set to empty. * config/t-linux-aout (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Likewise. * config/alpha/t-linux: Remove file. * config/sparc/t-linux: Remove file. * config/m68k/t-linux (LIBGCC1, CROSS_LIBGCC1): Remove. * config/m68k/t-linux-aout (LIBGCC1, CROSS_LIBGCC1): Likewise. * configure.in (alpha*-*-linux-gnulibc1*): Use t-linux instead of alpha/t-linux for tmake_file. (alpha*-*-linux-gnu*): Likewise. (sparc-*-linux-gnulibc1*): Use t-linux instead of sparc/t-linux for tmake_file. (sparc-*-linux-gnu*): Likewise. From-SVN: r18205
1998-02-23t-linux (LIBGCC1, [...]): Add macros and set to empty.Manfred Hollstein1-4/+4
a * config/t-linux (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Add macros and set to empty. * config/t-linux-aout (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Likewise. * config/alpha/t-linux: Remove file. * config/sparc/t-linux: Remove file. * config/m68k/t-linux (LIBGCC1, CROSS_LIBGCC1): Remove. * config/m68k/t-linux-aout (LIBGCC1, CROSS_LIBGCC1): Likewise. * configure.in (alpha*-*-linux-gnulibc1*): Use t-linux instead of alpha/t-linux for tmake_file. (alpha*-*-linux-gnu*): Likewise. (sparc-*-linux-gnulibc1*): Use t-linux instead of sparc/t-linux for tmake_file. (sparc-*-linux-gnu*): Likewise. From-SVN: r18204
1998-02-23t-linux (LIBGCC1, [...]): Add macros and set to empty.Manfred Hollstein2-4/+18
d * config/t-linux (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Add macros and set to empty. * config/t-linux-aout (LIBGCC1, CROSS_LIBGCC1, LIBGCC1_TEST): Likewise. * config/alpha/t-linux: Remove file. * config/sparc/t-linux: Remove file. * config/m68k/t-linux (LIBGCC1, CROSS_LIBGCC1): Remove. * config/m68k/t-linux-aout (LIBGCC1, CROSS_LIBGCC1): Likewise. * configure.in (alpha*-*-linux-gnulibc1*): Use t-linux instead of alpha/t-linux for tmake_file. (alpha*-*-linux-gnu*): Likewise. (sparc-*-linux-gnulibc1*): Use t-linux instead of sparc/t-linux for tmake_file. (sparc-*-linux-gnu*): Likewise. From-SVN: r18203
1998-02-23collect2.c (ldd_file_name): Bracket declaration with same manifests as use.Robert Lipe2-9/+9
* collect2.c (ldd_file_name): Bracket declaration with same manifests as use. (full_real_ld_suffix): Deleted. Variable was calloced and written into, but never read. From-SVN: r18202
1998-02-23pt.c, [...]: Remove unused NARGS argument to tsubst and friends.Jason Merrill6-190/+159
* pt.c, call.c, decl.c, method.c, cp-tree.h: Remove unused NARGS argument to tsubst and friends. From-SVN: r18201
1998-02-22* pt.c (tsubst, FUNCTION_DECL): Tidy.Jason Merrill2-56/+49
From-SVN: r18200
1998-02-22newJason Merrill19-1/+417
From-SVN: r18199
1998-02-22Support for friend templates.Jason Merrill17-330/+874
* typeck.c (build_x_function_call): Handle static member function templates like non-templates. Handle friend templates like normal function templates. * pt.c (tsubst, *_PARM): Don't use orig_level. (get_bindings): Don't call add_to_template_args. (instantiate_template): Likewise. (tsubst, FUNCTION_DECL): Call add_to_template_args as appropriate. * ptree.c (print_lang_type): Print index/level for template parms. * Make-lang.in (cc1plus): Note that cc1plus depends on cp/cp-tree.h and cp/cp-tree.def. * cp-tree.def (TEMPLATE_CONST_PARM): Remove. (TEMPLATE_PARM_INDEX): New tree code, used to indicate a position in a template parameter list. * cp-tree.h (template_parm_index): New structure, used as the tree structure for a TEMPLATE_PARM_INDEX. (TEMPLATE_PARM_IDX): New macro. (TEMPLATE_PARM_LEVEL): Likewise. (TEMPLATE_PARM_DESCENDANTS): Likewise. (TEMPLATE_PARM_ORIG_LEVEL): Likewise. (TEMPLATE_PARM_DECL): Likewise. (TEMPLATE_TYPE_PARM_INDEX): Likewise. (TEMPLATE_TYPE_ORIG_LEVEL): Likewise. (TEMPLATE_TYPE_DECL): Likewise. (TEMPLATE_CONST_IDX): Remove. (TEMPLATE_CONST_LEVEL): Likewise. (TEMPLATE_CONST_SET_INFO): Likewise. (TEMPLATE_TYPE_SET_INFO): Likewise. (TEMPLATE_TYPE_IDX): Redefine in terms of TEMPLATE_PARM_INDEX node. (TEMPLATE_TYPE_LEVEL): Likewise. * decl.c (decls_match): Call comp_template_parms, rather than expanding it inline. (duplicate_decls): If two template declarations are being merged, then their TEMPLATE_INFOs should be merged as well. (grokfndecl): Save template-id information when declaring a friend with explicit template arguments. Pass arguments to check_explicit_specialization via correct convention; at some point check_explicit_specialization changed, but these call-sites did not. (grokdeclarator): Tidy up slightly. * decl2.c (check_classfn): Tidy up slightly. Don't assume that two template functions with the same DECL_ASSEMBLER_NAME the same, since the names are not yet mangled. * error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM. (dump_expr): Likewise. Use the TEMPLATE_PARM_DECL to get at the decl for a non-type parameter, rather than printing `<tparm ...>'. * friend.c (is_friend): Handle TEMPLATE_DECL friends. (do_friend): Deal with template friends. * lex.c (do_pending_inlines): Call maybe_begin_member_template_processing, rather than conditionally calling begin_member_template_processing. (process_next_inline): Likewise. Call maybe_end_member_template_processing, rather than conditionally calling end_member_template_processing. (do_pending_defargs): Likewise. (do_identifier): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM. * method.c (build_mangled_template_parm_index): New function. (build_overload_value): Use it. (build_overload_name): Likewise. * pt.c (finish_member_template_decl): Allow friend declarations. (template_class_depth): New function. (is_member_template): Rename, and modify, to become... (is_member_or_friend_template): New function. (end_member_template_processing): Rename, and modify, to become... (maybe_end_member_template_processing). (build_template_parm_index): New function. (reduce_template_parm_level): New function. (process_template_parm): Modify to use build_template_parm_index. (current_template_args): Change name to current_template_parms. (push_template_decl): Deal with friend templates. (uses_template_parms): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM. (tsubst_friend_function): New function. (instantiate_class_template): Generate the DECL_FRIENDLIST for a new instantiation by using tsubst_friend_function rather than just tsubst. (tsubst): Don't tsubst into a type which is a TEMPLATE_DECL. Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM, and the appropriate new macros. Use reduce_template_parm_level to generate lower-level template parameters. Handle tsubst'ing into TEMPLATE_DECLS that declare TEMPLATE_TEMPLATE_PARMS. Don't forget to tsubst the DECL_CONTEXT and DECL_CLASS_CONTEXT of newly created templates. Similarly for the template parameters for a new template. (tsubst_copy): Tidy up slightly. Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM. Handle TYPE_DECLs by tsubsting into them. (unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM. (get_bindings): Call add_to_template_args if necessary. (instantiate_decl): Handle instantiations of friend templates. * search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a TEMPLATE_TYPE_PARM as a list of fields; it's not! * spew.c (yylex): Do a little manual constant propogation to clarify the code. From-SVN: r18198
1998-02-22configure.in: Add support for i386-wrs-vxworks configuration.Mike Stump4-0/+36
* configure.in: Add support for i386-wrs-vxworks configuration. * i386/vxi386.h: New file. From-SVN: r18197
1998-02-22tree.c (contains_placeholder_p): Ensure function always returns a value.Bruno Haible3-0/+16
* tree.c (contains_placeholder_p): Ensure function always returns a value. * sparc.md (movdi_sp64_insn): Add default case in enumeration switch. (movsf_const_insn, movdf_const_insn, movtf_const_insn): Likewise. From-SVN: r18196
1998-02-22* vms.h (SELECT_SECTION): Use TREE_CODE_CLASS correctly.Jeffrey A Law2-1/+15
From-SVN: r18195
1998-02-22expr.c (ffeexpr_token_arguments_): Make sure outer exprstack isn't null.Craig Burley3-0/+11
* expr.c (ffeexpr_token_arguments_): Make sure outer exprstack isn't null. From-SVN: r18190
1998-02-22* Make-lang.in (f77.install-info): Fix typo in script.Craig Burley2-1/+3
From-SVN: r18189
1998-02-22Another bunch of patches from Craig. See ChangeLogs for details.Jeff Law8-187/+439
From-SVN: r18188
1998-02-22Improve run-time diagnostic for "PRINT '(I1', 42":Craig Burley5-47/+197
* com.c (ffecom_char_args_x_): Renamed from ffecom_char_args_, which is now a macro (to avoid lots of changes to other code) with new arg, ffecom_char_args_with_null_ being another new macro to call same function with different value for new arg. This function now appends a null byte to opCONTER expression if the new arg is TRUE. (ffecom_arg_ptr_to_expr): Support NULL length pointer. * ste.c (ffeste_io_cilist_): (ffeste_io_icilist_): Pass NULL length ptr for FORMAT expression, so null byte gets appended where feasible. * target.c (ffetarget_character1): (ffetarget_concatenate_character1): (ffetarget_substr_character1): (ffetarget_convert_character1_character1): (ffetarget_convert_character1_hollerith): (ffetarget_convert_character1_integer4): (ffetarget_convert_character1_logical4): (ffetarget_convert_character1_typeless): (ffetarget_hollerith): Append extra phantom null byte as part of FFETARGET-NULL-BYTE kludge. Yes, even more patches from Craig :-) From-SVN: r18187
1998-02-22intrin.c (ffeintrin_check_): No longer ignore explicit omitted trailing args.Craig Burley2-6/+10
* intrin.c (ffeintrin_check_): No longer ignore explicit omitted trailing args. * intrin.c (ffeintrin_fulfill_generic): Don't generate FFEBAD_INTRINSIC_TYPE for CHARACTER*(*) intrinsic. More patches from Craig From-SVN: r18186
1998-02-22Make-lang.in (f77.install-common): Don't install, and don't uninstall ↵Craig Burley2-6/+16
existing, Info files if f/g77.info doesn't exit. * Make-lang.in (f77.install-common): Don't install, and don't uninstall existing, Info files if f/g77.info doesn't exit. (This is a somewhat modified version of an egcs patch on 1998-01-07 12:05:51 by Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>. From-SVN: r18185