Kaz Kojima [Wed, 20 Jun 2007 05:52:05 +0000 (05:52 +0000)]
re PR rtl-optimization/28011 ([SH] g++ generates wrong code, if '-fno-exceptions' and '-O' options are specified)
PR rtl-optimization/28011
Backport from mainline.
* reload.c (push_reload): Set dont_share if IN appears in OUT
also when IN is a PLUS rtx.
(reg_overlap_mentioned_for_reload_p): Return true if X and IN
are same PLUS rtx.
backport: pa.md: Split tgd_load, tld_load and tie_load into pic and non-pic versions.
Backport from mainline:
2007-05-05 Aurelien Jarno <aurelien@aurel32.net>
* config/pa/pa.md: Split tgd_load, tld_load and tie_load
into pic and non-pic versions. Mark r19 as used for
tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
for tgd_load, tld_load and tie_load .
* config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
version of tgd_load, tld_load and tie_load depending on the
value of flag_pic.
Kaz Kojima [Sun, 20 May 2007 23:57:32 +0000 (23:57 +0000)]
re PR target/31701 (SH: wrong epilogue for sibling calls)
PR target/31701
Backport from mainline.
* config/sh/sh.c (output_stack_adjust): Avoid using the frame
register itself to hold the offset constant. Tell flow the use
of r4 and r5 when they are used.
Richard Guenther [Wed, 16 May 2007 11:57:09 +0000 (11:57 +0000)]
backport: re PR bootstrap/26998 (bootstrap failure building libdecnumber, ICE in compare_values, tree-vrp.c:432)
2007-05-16 Richard Guenther <rguenther@suse.de>
Backport from mainline:
2006-06-09 Richard Guenther <rguenther@suse.de>
PR tree-optimization/26998
* tree-vrp.c (extract_range_from_unary_expr): For NEGATE_EXPR
of signed types, only TYPE_MIN_VALUE is special, but for both,
minimum and maximum value. Likewise VR_ANTI_RANGE is special
in this case, as is -fwrapv.
* gcc.dg/torture/pr26998.c: New testcase.
* gcc.dg/tree-ssa/vrp29.c: New testcase.
re PR middle-end/30761 (Error: unsupported relocation against sfp)
PR middle-end/30761
* reload1.c (eliminate_regs_in_insn): In the single_set special
case, attempt to re-recognize the insn before falling back to
having reload fix it up.
Ian Lance Taylor [Fri, 27 Apr 2007 04:45:53 +0000 (04:45 +0000)]
re PR target/28675 (ICE in extract_insn, at recog.c:2084 (unrecognizable insn) [arm])
./: PR target/28675
* reload.c (find_reloads_subreg_address): If the address was valid
in the original mode but not in the new mode, reload the whole
address.
testsuite/:
PR target/28675
* gcc.c-torture/compile/pr28675.c: New test.
Richard Guenther [Wed, 25 Apr 2007 16:10:31 +0000 (16:10 +0000)]
re PR tree-optimization/31698 (ICE in compare_name_with_value, at tree-vrp.c:3272)
2007-04-25 Richard Guenther <rguenther@suse.de>
PR tree-optimization/31698
* g++.dg/other/pr31698.C: New testcase.
Backport from mainline:
2006-10-13 Richard Guenther <rguenther@suse.de>
PR tree-optimization/29446
* tree-vrp.c (fix_equivalence_set): Remove.
(extract_range_from_assert): Do not call fix_equivalence_set.
(debug_value_range): Print a newline.
(compare_name_with_value): For equivalence sets with
inconsistent value ranges conservatively bail out.
(compare_names): Likewise.
Andreas Krebbel [Tue, 24 Apr 2007 12:15:11 +0000 (12:15 +0000)]
re PR target/31641 (ICE in s390_expand_setmem, at config/s390/s390.c:3618)
2007-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
PR target/31641
* config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
argument of 0 for memset.
(s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
unsigned shift instead of the signed variant.
2007-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
PR target/31641
* gcc.c-torture/compile/pr31641.c: New testcase.
re PR target/28623 (ICE in extract_insn, at recog.c:2077 (nrecognizable insn) [alpha])
PR target/28623
* config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
argument; update all callers.
(get_unaligned_offset): New.
* config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
get_unaligned_address, just pass on the address directly.
(unaligned_extendqidi): Use gen_lowpart instead of open-coding
the subreg in the helper patterns.
(unaligned_extendqidi_le): Use get_unaligned_offset.
(unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
(unaligned_extendhidi_be): Likewise.
(unaligned_extendhidi): Tidy.
* config/alpha/alpha-protos.h: Update.
* configure.ac (alpha*-*-*): Define HAVE_LONG_DOUBLE.
* configure: Regenerate.
* include/ffi.h.in (ffi_type_longdouble): Define as ffi_type_double
if HAVE_LONG_DOUBLE is false.
* src/alpha/ffi.c (ffi_prep_cif_machdep): Support the 128-bit
long double type.
(ffi_call_osf, ffi_closure_osf): Likewise.
* src/alpha/osf.S (ffi_call_osf, ffi_closure_osf): Mark hidden.
* src/types.c (ffi_type_longdouble): For alpha, always generate
for the 128-bit long double type.
Jakub Jelinek [Fri, 20 Apr 2007 11:49:37 +0000 (13:49 +0200)]
re PR tree-optimization/31632 (ICE in compare_values)
PR tree-optimization/31632
* fold-const.c (fold_binary): Use op0 and op1 instead of arg0
and arg1 for optimizations of comparison against min/max values.
Fold arg0 to arg1's type for optimizations of comparison against
min+1 and max-1 values.