1. 15 Feb, 2011 17 commits
    • Don't let array indexes be untyped. · 1c4a5fc8
      From-SVN: r170193
      Ian Lance Taylor committed
    • Don't crash defining function in different package. · 8d620a1a
      From-SVN: r170192
      Ian Lance Taylor committed
    • Fix PR 47755 · e3a69bb4
      From-SVN: r170189
      Michael Meissner committed
    • re PR debug/47106 (-fcompare-debug failure (length) with -fpartial-inlining… · de650422
      re PR debug/47106 (-fcompare-debug failure (length) with  -fpartial-inlining -flto -fconserve-stack)
      
      PR debug/47106
      PR debug/47402
      * cgraph.h (compute_inline_parameters): Return void.
      * ipa-inline.c (compute_inline_parameters): Adjust.
      
      From-SVN: r170188
      Alexandre Oliva committed
    • re PR debug/47106 (-fcompare-debug failure (length) with -fpartial-inlining… · 30925d94
      re PR debug/47106 (-fcompare-debug failure (length) with  -fpartial-inlining -flto -fconserve-stack)
      
      PR debug/47106
      PR debug/47402
      * tree-inline.h (estimated_stack_frame_size): Take cgraph node
      rather than decl.
      * cfgexpand.c (estimated_stack_frame_size): Likewise.
      * ipa-inline.c (compute_inline_parameters): Adjust.
      
      From-SVN: r170187
      Alexandre Oliva committed
    • re PR debug/47106 (-fcompare-debug failure (length) with -fpartial-inlining… · 1b9a784a
      re PR debug/47106 (-fcompare-debug failure (length) with  -fpartial-inlining -flto -fconserve-stack)
      
      PR debug/47106
      PR debug/47402
      * tree-flow.h (FOR_EACH_REFERENCED_VAR): Add FN argument.
      Adjust all users.  Pass FN to...
      * tree-flow-inline.h (first_referenced_var): ... this.  Add
      fn argument.
      * ipa-struct-reorg.c: Adjust.
      * tree-dfa.c: Adjust.
      * tree-into-ssa.c: Adjust.
      * tree-sra.c: Adjust.
      * tree-ssa-alias.c: Adjust.
      * tree-ssa-live.c: Adjust.
      * tree-ssa.c: Adjust.
      * tree-ssanames.c: Adjust.
      * tree-tailcall.c: Adjust.
      
      From-SVN: r170186
      Alexandre Oliva committed
    • re PR debug/47106 (-fcompare-debug failure (length) with -fpartial-inlining… · 27c6b086
      re PR debug/47106 (-fcompare-debug failure (length) with  -fpartial-inlining -flto -fconserve-stack)
      
      PR debug/47106
      PR debug/47402
      * tree-flow.h (referenced_var_lookup): Add fn parameter.
      Adjust all callers.
      * tree-dfa.c (referenced_var_lookup): Use fn instead of cfun.
      * tree-flow-inline.h: Adjust.
      * gimple-pretty-print.c: Adjust.
      * tree-into-ssa.c: Adjust.
      * tree-ssa.c: Adjust.
      * cfgexpand.c: Adjust.
      
      From-SVN: r170185
      Alexandre Oliva committed
    • make iq2000 use constraints.md · 679e8183
      	make iq2000 use constraints.md
              * config/iq2000/i2000.h (REG_CLASS_FROM_LETTER): Delete.
              (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
              (EXTRA_CONSTRAINT): Delete.
              * config/iq2000/constraints.md: New file.
              * config/iq2000/iq2000.md: Include it.
      	(define_insn ""): Delete.
      	(movsi_internal2, movhi_internal2, movqi_internal2): Delete
      	unsupported constraint letters from patterns.
      	(call_value, call_value_internal1): Likewise.
      	(call_value_multiple_internal1): Likewise.
      
      From-SVN: r170184
      Nathan Froyd committed
    • mn10300.c: Include tm-constrs.h. · a45d420a
      	* config/mn10300/mn10300.c: Include tm-constrs.h.
      	(struct liw_data): New data structure describing an LIW candidate
      	instruction.
      	(extract_bundle): Use struct liw_data.  Allow small integer
      	operands for some instructions.
      	(check_liw_constraints): Use struct liw_data.  Remove swapped
      	parameter.  Add comments describing the checks.  Fix bug when
      	assigning the source of liw1 to the source of liw2.
      	(liw_candidate): Delete.  Code moved into extract_bundle.
      	(mn10300_bundle_liw): Use struct liw_data.  Check constraints
      	before swapping.
      	* config/mn10300/predicates.md (liw_operand): New predicate.
      	Allows registers and small integer constants.
      	* config/mn10300/constraints.md (O): New constraint.  Accetps
      	integers in the range -8 to +7 inclusive.
      	* config/mn10300/mn10300.md (movesi_internal): Add an alternative
      	for moving a small integer into a register.  Give this alternative
      	LIW attributes.
      	(addsi3, subsi3, cmpsi, lshrsi3, ashrsi3): Likewise.
      	(ashlsi3): Likewise, plus give LIW attributes to the alternatives
      	using the J,K,L and M constraints,
      	(liw): Remove SI mode on second operands to allow for HI and QI
      	mode values.
      	(cmp_liw, liw_cmp): Likewise.  Plus fix order of operands in the
      	instruction.
      
      From-SVN: r170182
      Nick Clifton committed
    • Check zero/sign extended hard registers. · 8a73faf1
      gcc/
      
      2011-02-15  H.J. Lu  <hongjiu.lu@intel.com>
      
      	PR middle-end/47725
      	* combine.c (cant_combine_insn_p): Check zero/sign extended
      	hard registers.
      
      gcc/testsuite/
      
      2011-02-15  H.J. Lu  <hongjiu.lu@intel.com>
      
      	PR middle-end/47725
      	* gcc.dg/torture/pr47725.c: New.
      
      From-SVN: r170179
      H.J. Lu committed
    • re PR middle-end/47743 (PRE ICE in fold_convert_loc) · 48feba28
      2011-02-15  Richard Guenther  <rguenther@suse.de>
      
      	PR tree-optimization/47743
      	* tree-ssa-pre.c (phi_translate_1): If we didn't get a value-number
      	for a non-type-compatible VN lookup bail out.
      
      	* gcc.dg/torture/pr47743.c: New testcase.
      
      From-SVN: r170173
      Richard Guenther committed
    • make fr30 use constraints.md · ad1c1eeb
      	make fr30 use constraints.md
      	* config/fr30/constraints.md: New file.
      	* config/fr30/fr30.md: Include it.
      	* config/fr30/fr30.h (REG_CLASS_FROM_LETTER): Delete.
      	(CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
      	(EXTRA_CONSTRAINT): Delete.
      
      From-SVN: r170172
      Nathan Froyd committed
    • make frv use constraints.md · 49ac143d
      	make frv use constraints.md
      	* config/frv/constraints.md: New file.
      	* config/frv/predicates.md: Include it.
      	* config/frv/frv.c (reg_class_from_letter): Delete.
      	(frv_option_override): Don't initialize it.
      	* config/frv/frv.h (REG_CLASS_FROM_LETTER): Delete.
      	(CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K): Delete.
      	(CONST_OK_FOR_L, CONST_OK_FOR_M, CONST_OK_FOR_N): Delete.
      	(CONST_OK_FOR_O, CONST_OK_FOR_P, CONST_OK_FOR_LETTER_P): Delete.
      	(CONST_DOUBLE_OK_FOR_G, CONST_DOUBLE_OK_FOR_H): Delete.
      	(CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
      	(EXTRA_CONSTRAINT_FOR_Q, EXTRA_CONSTRAINT_FOR_R): Delete.
      	(EXTRA_CONSTRAINT_FOR_S, EXTRA_CONSTRAINT_FOR_T): Delete.
      	(EXTRA_CONSTRAINT_FOR_U, EXTRA_CONSTRAINT): Delete.
      	(EXTRA_MEMORY_CONSTRAINT, CONSTRAINT_LEN): Delete.
      	(REG_CLASS_FROM_CONSTRAINT): Delete.
      
      From-SVN: r170171
      Nathan Froyd committed
    • re PR middle-end/47581 (Unnecessary adjustments to stack pointer) · c95f9494
      	PR middle-end/47581
      	* config/i386/i386.c (ix86_compute_frame_size): Don't align offset
      	if frame size is 0 in a leaf function.
      
      	* gcc.target/i386/pr47581.c: New test.
      
      From-SVN: r170170
      Jakub Jelinek committed
    • Fixed ChangeLog typo. · c1e2901e
      From-SVN: r170169
      Rainer Orth committed
    • re PR pch/14940 (PCH largefile test fails on various platforms) · 13aed611
      	PR pch/14940
      	* config/alpha/host-osf.c: New file.
      	* config/alpha/x-osf: New file.
      	* config.host (alpha*-dec-osf*): Use it.
      
      From-SVN: r170166
      Rainer Orth committed
    • Daily bump. · a86f3aaf
      From-SVN: r170163
      GCC Administrator committed
  2. 14 Feb, 2011 23 commits
    • Fix class name in ChangeLog of previous commit, r170158. · 4a4a7c31
      From-SVN: r170159
      Jonathan Wakely committed
    • regex.h (sub_match::sub_match): Add. · bf6319b9
      2011-02-14  Jonathan Wakely  <jwakely.gcc@gmail.com>
      
      	* include/bits/regex.h (sub_match::sub_match): Add.
      	(match_results::ready): Add.
      	(match_results::empty): Adjust.
      	(match_results::length): Add missing dereference.
      	(match_results::operator[],prefix,suffix): Add debug mode checks.
      	(match_results::cend): Re-use end().
      	(match_results::format): Adjust signatures.
      	(operator==(match_results,match_results)): Implement.
      	* include/bits/regex_compiler.h (_Scanner_base): Use constexpr.
      	* include/bits/regex_constants.h (syntax_option_type): Likewise.
      	* include/bits/regex_grep_matcher.h: Fix comment typo.
      	(_Specialized_results::_Specialized_results): Simplify.
      	* include/bits/regex_cursor.h: Fix comment typo.
      	* include/bits/regex_nfa.h: Likewise.
      	* testsuite/28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc:
      	Fix error code, remove xfail.
      	* testsuite/28_regex/basic_regex/ctors/extended/
      	string_range_01_02_03.cc: Likewise.
      
      From-SVN: r170158
      Jonathan Wakely committed
    • re PR fortran/47730 ([OOP] ICE on invalid source in connection with SELECT TYPE) · 01efe923
      2011-02-14  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/47730
      	* parse.c (gfc_build_block_ns): Commit 'block@' symbol.
      
      2011-02-14  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/47730
      	* gfortran.dg/select_type_22.f03: New.
      
      From-SVN: r170157
      Janus Weil committed
    • re PR c++/47482 ([C++0x] ICE: unexpected expression ‘sizeof ("A")’ of kind sizeof_expr) · c9e71b36
      	PR c++/47482
      	* parser.c (cp_parser_enumerator_definition): Call
      	fold_non_dependent_expr.
      
      From-SVN: r170156
      Jason Merrill committed
    • rx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Remove. · b09c3081
      	* config/rx/rx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Remove.
      	* config/rx/rx-protos.h (rx_is_mode_dependent_addr): Remove.
      	* config/xtensa/xtensa.c (rx_is_mode_dependent_addr): Rename to...
      	(rx_mode_dependent_address_p): ...this. Make static. Change argument
      	type to const_rtx.
      	(TARGET_MODE_DEPENDENT_ADDRESS_P): Define.
      
      From-SVN: r170154
      Anatoly Sokolov committed
    • make stormy16 use constraints.md · d634083b
      	make stormy16 use constraints.md
      	* config/stormy16/constraints.md: New file.
      	* config/stormy16/predicates.md (nonimmediate_nonstack_operand):
      	Use satisfies_constraint_Q and satisfies_constraint_R.
      	* config/stormy16/stomry16-protos.h (xstormy16_extra_constraint_p):
      	Delete.
      	(xstormy16_legitiamte_address_p): Declare.
      	* config/stormy16/stormy16.h (REG_CLASS_FROM_LETTER): Delete.
      	(CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
      	(EXTRA_CONSTRAINT): Delete.
      	* config/stormy16/stormy16.c (xstormy16_legitiamte_address_p):
      	Un-staticize.
      	(xstormy16_extra_constraint_p): Delete.
      
      From-SVN: r170152
      Nathan Froyd committed
    • misc.c (gnat_init_options): Do not concatenate -I and its argument, except for… · 400a2d24
      misc.c (gnat_init_options): Do not concatenate -I and its argument, except for the special -I- switch.
      
      	* gcc-interface/misc.c (gnat_init_options): Do not concatenate -I and
      	its argument, except for the special -I- switch.
      
      From-SVN: r170150
      Eric Botcazou committed
    • re PR bootstrap/47736 (libquadmath build broken with pre-2.10 glibc) · 12967872
      	PR bootstrap/47736
      	* configure.ac (HAVE_PRINTF_HOOKS): Test if printf_info struct has
      	user field.
      	* printf/quadmath-printf.c (quadmath_snprintf): Clear whole info
      	field instead of setting individual fields to 0.  Don't set info.user
      	to -1.
      	* configure: Regenerated.
      
      From-SVN: r170147
      Jakub Jelinek committed
    • re PR fortran/47728 ([OOP] ICE on invalid CLASS declaration) · ce2ab24c
      2011-02-14  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/47728
      	* class.c (gfc_build_class_symbol): Give a fatal error on polymorphic
      	arrays.
      	* primary.c (gfc_match_varspec): Avoid ICE for invalid class
      	declaration.
      
      2011-02-14  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/47728
      	* gfortran.dg/class_38.f03: New.
      
      From-SVN: r170144
      Janus Weil committed
    • re PR tree-optimization/46494 (ICE: verify_flow_info failed when casting-out… · c7dd803e
      re PR tree-optimization/46494 (ICE: verify_flow_info failed when casting-out attribute noreturn with -fno-tree-ccp -fno-tree-fre -ftree-vrp)
      
      	PR tree-optimization/46494
      	* loop-unroll.c (split_edge_and_insert): Adjust comment.
      	* loop-init.c (loop_optimizer_finalize): Do not call verify_flow_info.
      	(pass_rtl_loop_done): Add TODO_verify_flow.
      	* fwprop.c (pass_rtl_fwprop): Likewise.
      	* modulo-sched.c (pass_sms): Likewise.
      	* tree-ssa-dom.c (pass_dominator): Likewise.
      	* tree-ssa-loop-ch.c (pass_ch): Likewise.
      	* tree-ssa-loop.c (pass_complete_unrolli): Likewise.
      	(pass_tree_loop_done): Likewise.
      	* tree-ssa-pre.c (execute_pre): Likewise.
      	* tree-ssa-reassoc.c (pass_reassoc): Likewise.
      	* tree-ssa-sink.c (pass_sink_code): Likewise.
      	* tree-vrp.c (pass_vrp): Likewise.
      
      From-SVN: r170141
      Eric Botcazou committed
    • make v850 use constraints.md · c6150df6
      	make v850 use constraints.md
              * config/v850/constraints.md: New file.
              * config/v850/v850.md: Include it.
              * config/v850/predicates.md (reg_or_0_operand): Use
              satisfies_constraint_G.
              (special_symbolref_operand): Use satisfies_constraint_K.
              * config/v850/v850.h (CONSTANT_ADDRESS_P): Use constraint_satisfied_p.
              (GO_IF_LEGITIMATE_ADDRESS): Likewise.
              (REG_CLASS_FROM_LETTER, INT_7_BITS, INT_8_BITS): Delete.
              (CONST_OK_FOR_P, CONST_OK_FOR_LETTER_P): Delete.
              (EXTRA_CONSTRAINT): Delete.
              (CONST_OK_FOR_I, CONST_OK_FOR_J): Use insn_const_int_ok_for_constraint.
              (CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M): Likewise.
              (CONST_OK_FOR_N, CONST_OK_FOR_O): Likewise.
      
      From-SVN: r170140
      Nathan Froyd committed
    • configure.ac (HAVE_HIDDEN_VISIBILITY): Test with -Werror in CFLAGS. · 49f0e1ba
      	* configure.ac (HAVE_HIDDEN_VISIBILITY): Test with -Werror in CFLAGS.
      	* printf/printf_fp.c: Don't include <alloca.h>.
      	* printf/quadmath-printf.h (_itoa): Redefine to __quadmath_itoa.
      	* configure: Regenerated.
      
      From-SVN: r170139
      Jakub Jelinek committed
    • Insert libgcj's Python module directory at the start of the search · fce0280a
      path, rather than at the end.
      
      From-SVN: r170138
      Gary Benson committed
    • re PR target/47696 ([AVR] Compilation for atmega2560 produces incomplete… · 30dd1ea3
      re PR target/47696 ([AVR] Compilation for atmega2560 produces incomplete interrupt vector table (USART2,3))
      
      	PR target/47696
      	* config/avr/avr-devices.c (avr_mcu_types): Fix ATmega2560 device
      	description.
      
      From-SVN: r170137
      Anatoly Sokolov committed
    • re PR fortran/47642 (real(kind=16) - libquadmath - segfault on amd64 FreeBSD) · 1d92226b
      	PR fortran/47642
      	* libquadmath.texi (quadmath_snprintf): Document.
      	(quadmath_flt128tostr): Remove.
      	* Makefile.am (libquadmath_la_SOURCES): Add printf/*.c.
      	Remove  quadmath_io.c, gdtoa/gdtoa.c, gdtoa/g__fmt.c,
      	gdtoa/g_Qfmt.c, gdtoa/dmisc.c and gdtoa/ulp.c.
      	* quadmath.h (quadmath_snprintf): New prototype.
      	(quadmath_flt128tostr): Remove.
      	* quadmath_weak.h (quadmath_snprintf): Add.
      	(quadmath_flt128tostr): Remove.
      	* configure.ac: New AC_CHECK_HEADERS headers: langinfo.h, wchar.h,
      	wctype.h, limits.h, ctype.h, printf.h, errno.h.
      	(AC_USE_SYSTEM_EXTENSIONS): Add.
      	(HAVE_HIDDEN_VISIBILITY, HAVE_PRINTF_HOOKS,
      	USE_LOCALE_SUPPORT, USE_I18N_NUMBER_H): New checks.
      	* quadmath.map (QUADMATH_1.0): Add quadmath_snprintf.  Remove
      	quadmath_flt128tostr.
      	* printf/printf_fphex.c: New file.
      	* printf/_itowa.h: New file.
      	* printf/mul_n.c: New file.
      	* printf/quadmath-printf.h: New file.
      	* printf/submul_1.c: New file.
      	* printf/quadmath-printf.c: New file.
      	* printf/gmp-impl.h: New file.
      	* printf/lshift.c: New file.
      	* printf/fpioconst.h: New file.
      	* printf/add_n.c: New file.
      	* printf/cmp.c: New file.
      	* printf/sub_n.c: New file.
      	* printf/mul.c: New file.
      	* printf/divrem.c: New file.
      	* printf/addmul_1.c: New file.
      	* printf/printf_fp.c: New file.
      	* printf/_itoa.h: New file.
      	* printf/fpioconst.c: New file.
      	* printf/_i18n_number.h: New file.
      	* printf/flt1282mpn.c: New file.
      	* printf/rshift.c: New file.
      	* printf/mul_1.c: New file.
      	* quadmath_io.c: Removed.
      	* gdtoa/gdtoa.c: Removed.
      	* gdtoa/g__fmt.c: Removed.
      	* gdtoa/g_Qfmt.c: Removed.
      	* gdtoa/dmisc.c: Removed.
      	* gdtoa/ulp.c: Removed.
      	* config.h.in: Regenerated.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      
      	* io/write_float.def (DTOAQ): Use quadmath_snprintf instead of
      	quadmath_flt128tostr.
      	* io/transfer128.c (tmp2): Initialize to quadmath_snprintf instead
      	of quadmath_flt128tostr.
      
      From-SVN: r170135
      Jakub Jelinek committed
    • make mcore use constraints.md · 944f4bb3
      	make mcore use constraints.md
      	* config/mcore/constraints.md: New file.
      	* config/mcore/mcore.md: Include it.
      	* config/mcore/mcore.c (reg_class_from_letter): Delete.
      	* config/mcore/mcore.h (reg_class_from_letter): Delete.
      	(REG_CLASS_FROM_LETTER): Delete.
      	(CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_L): Use
      	insn_const_int_ok_for_constraint.
      	(CONST_OK_FOR_K, CONST_OK_FOR_M, CONST_OK_FOR_N): Likewise.
      	(CONST_OK_FOR_O, CONST_OK_FOR_P): Likewise.
      	(CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
      	(EXTRA_CONSTRAINT): Delete.
      
      From-SVN: r170134
      Nathan Froyd committed
    • re PR libgomp/47731 (futex_wait broken on Linux) · 53b4d41d
      	PR libgomp/47731
      	* config/linux/futex.h (futex_wait): Pass NULL as timeout argument
      	to FUTEX_WAIT futex syscall.
      	* config/linux/wait.h: Include <futex.h> instead of "futex.h".
      
      From-SVN: r170133
      Jakub Jelinek committed
    • attr-weak-hidden-1.c: Make definition of foo strong. · 88d0743e
      2011-02-14  Richard Guenther  <rguenther@suse.de>
      
      	* gcc.dg/attr-weak-hidden-1.c: Make definition of foo strong.
      
      From-SVN: r170128
      Richard Guenther committed
    • re PR ada/41929 (64-bit null_pointer_deref1 gnat.dg test consumes all available memory) · ad56a54c
      	gcc:
      	PR ada/41929
      	* config/sparc/sol2-unwind.h: Include <sys/frame.h>, <sys/stack.h>
      	(IS_SIGHANDLER): Define.
      	(sparc64_is_sighandler): New function, split off from
      	sparc64_fallback_frame_state.
      	(sparc_is_sighandler): New function, split off from
      	sparc_fallback_frame_state.
      	(sparc64_fallback_frame_state): Merge with ...
      	(sparc_fallback_frame_state): ... this into ...
      	(MD_FALLBACK_FRAME_STATE_FOR): ... this.
      	Change new_cfa to long.
      	Remove regs_off, fpu_save_off, fpu_save.
      	Define nframes, mctx.
      	Use IS_SIGHANDLER, handler_args, mctx, walk stack instead of
      	hardcoded offsets.
      
      	gcc/testsuite:
      	PR ada/41929
      	* gnat.dg/null_pointer_deref1.exp: Don't skip on
      	sparc*-sun-solaris2.11.
      
      From-SVN: r170126
      Rainer Orth committed
    • re PR fortran/47349 (missing warning: Actual argument contains too few elements) · 93302a24
      2011-02-14  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/47349
      	* interface.c (get_expr_storage_size): Handle derived-type components.
      
      
      2011-02-14  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/47349
      	* gfortran.dg/argument_checking_18.f90: New.
      
      From-SVN: r170125
      Janus Weil committed
    • regex_compiler.h: Remove unnecessary bind() calls. · 75eec5b6
      2011-02-14  Jonathan Wakely  <jwakely.gcc@gmail.com>
      
      	* include/bits/regex_compiler.h: Remove unnecessary bind() calls.
      	* include/bits/regex_nfa.h: Remove unnecessary base classes.
      
      From-SVN: r170124
      Jonathan Wakely committed
    • Fixes to gccgo.texi. · 1e263792
      gcc/:
      	* go/gccgo.texi (Top, Import and Export): Fix a typo and a
      	markup nit.
      
      From-SVN: r170122
      Ralf Wildenhues committed