aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2007-04-24 21:03:24 +0000
committerJakub Jelinek <jakub@redhat.com>2007-04-24 21:03:24 +0000
commit39634b3dde4bc543a4dfbea48669836b41aa23b8 (patch)
tree325fc849a06e1791107b388195ccfe273822ab12
parent061b7a82c3d75e49639266bc99f7ec70ced0822a (diff)
svn merge -r123951:124100 svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_1-branch
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_1-branch@124124 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog89
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/config/alpha/alpha-protos.h3
-rw-r--r--gcc/config/alpha/alpha.c24
-rw-r--r--gcc/config/alpha/alpha.md83
-rw-r--r--gcc/config/alpha/linux.h1
-rw-r--r--gcc/config/i386/i386.c2
-rw-r--r--gcc/config/s390/s390.c12
-rw-r--r--gcc/expr.c9
-rw-r--r--gcc/fold-const.c33
-rw-r--r--gcc/po/ChangeLog4
-rw-r--r--gcc/po/sv.po246
-rw-r--r--gcc/testsuite/ChangeLog18
-rw-r--r--gcc/testsuite/g++.old-deja/g++.warn/flow1.C14
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20070419-1.c17
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr31448.c36
-rw-r--r--gcc/testsuite/gcc.target/i386/ordcmp-1.c36
-rw-r--r--gcc/testsuite/gcc.target/i386/unordcmp-1.c36
-rw-r--r--gcc/version.c2
-rw-r--r--libcpp/ChangeLog6
-rw-r--r--libcpp/mkdeps.c10
-rw-r--r--libffi/ChangeLog13
-rwxr-xr-xlibffi/configure16
-rw-r--r--libffi/configure.ac18
-rw-r--r--libffi/include/ffi.h.in6
-rw-r--r--libffi/src/alpha/ffi.c54
-rw-r--r--libffi/src/alpha/osf.S10
-rw-r--r--libffi/src/types.c13
-rw-r--r--libstdc++-v3/ChangeLog8
-rw-r--r--libstdc++-v3/acinclude.m42
-rwxr-xr-xlibstdc++-v3/configure22
31 files changed, 566 insertions, 279 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0022f4b8e6d..e92f78cda88 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,48 @@
+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-22 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR middle-end/31448
+ * expr.c (reduce_to_bit_field_precision): Handle
+ CONST_INT rtx's.
+
+2007-04-20 Richard Henderson <rth@redhat.com>
+
+ 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.
+
+2007-04-20 Richard Henderson <rth@redhat.com>
+
+ * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
+
+2007-04-20 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
+ for __builtin_ia32_cmpordss.
+
+ 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.
+
2007-04-18 Anatoly Sokolov <aesok@post.ru>
* config/avr/avr.c (ptrreg_to_str): Replace error() with
@@ -11,8 +56,8 @@
2007-04-16 Matthias Klose <doko@debian.org>
- * gcc/config/alpha/linux.h (CPP_SPEC): Define.
- * gcc/config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
+ * config/alpha/linux.h (CPP_SPEC): Define.
+ * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
2007-04-16 H.J. Lu <hongjiu.lu@intel.com>
@@ -56,20 +101,20 @@
2007-04-04 Richard Henderson <rth@redhat.com>
- PR target/31361
- * config/i386/i386.c (ix86_init_mmx_sse_builtins): Remove
+ PR target/31361
+ * config/i386/i386.c (ix86_init_mmx_sse_builtins): Remove
v8hi_ftype_v8hi_v2di, v4si_ftype_v4si_v2di. Use like-types for
the variable shift builtins.
- (ix86_expand_builtin): Properly expand the variable shift builtins.
- * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
- operand 2 be TImode.
- * config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32,
+ (ix86_expand_builtin): Properly expand the variable shift builtins.
+ * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
+ operand 2 be TImode.
+ * config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32,
_mm_slli_epi64, _mm_srai_epi16, _mm_srai_epi32, _mm_srli_epi16,
_mm_srli_epi32, _mm_srli_epi64): Turn into macros.
- (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
- (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
- _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
- two-vector shift builtins.
+ (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
+ (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
+ _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
+ two-vector shift builtins.
2007-04-14 Jakub Jelinek <jakub@redhat.com>
@@ -193,7 +238,7 @@
2007-03-12 Richard Henderson <rth@redhat.com>
- PR target/26090
+ PR target/26090
* config/alpha/alpha.c (alpha_elf_select_section): New.
(alpha_elf_unique_section, alpha_elf_section_type_flags): New.
(alpha_elf_select_rtx_section): Force flag_pic true.
@@ -815,7 +860,7 @@
2006-12-17 Matthias Klose <doko@debian.org>
PR libstdc++/11953
- * gcc/config/mips/linux.h (SUBTARGET_CPP_SPEC): Extend.
+ * config/mips/linux.h (SUBTARGET_CPP_SPEC): Extend.
2006-12-16 Joseph Myers <joseph@codesourcery.com>
David Edelsohn <edelsohn@gnu.org>
@@ -1383,7 +1428,7 @@
2006-08-23 Stuart Hastings <stuart@apple.com>
PR target/28825
- * gcc/config/i386/i386.c (ix86_expand_vector_init_duplicate,
+ * config/i386/i386.c (ix86_expand_vector_init_duplicate,
ix86_expand_vector_init_one_nonzero): Remove TARGET_SSE test.
2006-10-16 Richard Guenther <rguenther@suse.de>
@@ -3822,7 +3867,7 @@
2006-03-16 Paul Brook <paul@codesourcery.com>
Backport from mainline.
- * gcc/config/arm/arm.c (minipool_pad): New.
+ * config/arm/arm.c (minipool_pad): New.
(add_minipool_forward_ref): Include pool alignment padding in address
calculation.
(push_minipool_fix): Set minipool_pad.
@@ -4663,7 +4708,7 @@
2006-01-31 Nathan Sidwell <nathan@codesourcery.com>
- * gcc/config/m68k/lb1sf68.asm: Use moveq to load small constants.
+ * config/m68k/lb1sf68.asm: Use moveq to load small constants.
2006-01-31 Jakub Jelinek <jakub@redhat.com>
@@ -4975,7 +5020,7 @@
Backport
2006-01-03 Adrian Straetling <straetling@de.ibm.com>
- * gcc/builtins.c (get_builtin_sync_mem): New function.
+ * builtins.c (get_builtin_sync_mem): New function.
(expand_builtin_sync_operation, expand_builtin_compare_and_swap,
expand_builtin_lock_test_and_set, expand_builtin_lock_release):
Call get_builtin_sync_mem to generate mem rtx.
@@ -5146,7 +5191,7 @@
2006-01-19 Paul Brook <paul@codesourcery.com>
- * gcc/config/arm/arm.c (arm_compute_func_type): Treat all functions
+ * config/arm/arm.c (arm_compute_func_type): Treat all functions
as nothrow when unwinding tables are disabled.
2006-01-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
@@ -6345,7 +6390,7 @@
(_Unwind_Stop_Fn): New typedef.
(_Unwind_ForcedUnwind): Declare.
(_Unwind_Resume_or_Rethrow): Declare.
- * gcc/config/arm/libunwind.S (UNWIND_WRAPER): Add nargs
+ * config/arm/libunwind.S (UNWIND_WRAPER): Add nargs
argument. Adjust.
(_Unwind_Resume_or_Rethrow, _Unwind_ForcedUnwind): New.
* config/arm/unwind-arm.c (UCB_FORCED_STOP_FN)
@@ -7213,8 +7258,8 @@
2005-11-04 Francois-Xavier Coudert <coudert@clipper.ens.fr>
PR fortran/18452
- * gcc/c.opt: Add a -lang-fortran option.
- * gcc/c-opts.c: Add a lang_fortran flag.
+ * c.opt: Add a -lang-fortran option.
+ * c-opts.c: Add a lang_fortran flag.
(c_common_init_options): Handling the -lang-fortran option.
(c_common_handle_option): Add a case for Fortran options in
preprocessing. Remove cases for -ffixed-form and
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 881da842fe9..f5b5e167ad3 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20070418
+20070424
diff --git a/gcc/config/alpha/alpha-protos.h b/gcc/config/alpha/alpha-protos.h
index 5dd57343c58..4ead6b3a7dc 100644
--- a/gcc/config/alpha/alpha-protos.h
+++ b/gcc/config/alpha/alpha-protos.h
@@ -51,7 +51,8 @@ extern rtx alpha_legitimize_reload_address (rtx, enum machine_mode,
extern rtx split_small_symbolic_operand (rtx);
extern void get_aligned_mem (rtx, rtx *, rtx *);
-extern rtx get_unaligned_address (rtx, int);
+extern rtx get_unaligned_address (rtx);
+extern rtx get_unaligned_offset (rtx, HOST_WIDE_INT);
extern enum reg_class alpha_preferred_reload_class (rtx, enum reg_class);
extern enum reg_class secondary_reload_class (enum reg_class,
enum machine_mode, rtx, int);
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index abffd928071..3732d9fdb70 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -1549,7 +1549,7 @@ get_aligned_mem (rtx ref, rtx *paligned_mem, rtx *pbitnum)
Add EXTRA_OFFSET to the address we return. */
rtx
-get_unaligned_address (rtx ref, int extra_offset)
+get_unaligned_address (rtx ref)
{
rtx base;
HOST_WIDE_INT offset = 0;
@@ -1569,7 +1569,23 @@ get_unaligned_address (rtx ref, int extra_offset)
if (GET_CODE (base) == PLUS)
offset += INTVAL (XEXP (base, 1)), base = XEXP (base, 0);
- return plus_constant (base, offset + extra_offset);
+ return plus_constant (base, offset);
+}
+
+/* Compute a value X, such that X & 7 == (ADDR + OFS) & 7.
+ X is always returned in a register. */
+
+rtx
+get_unaligned_offset (rtx addr, HOST_WIDE_INT ofs)
+{
+ if (GET_CODE (addr) == PLUS)
+ {
+ ofs += INTVAL (XEXP (addr, 1));
+ addr = XEXP (addr, 0);
+ }
+
+ return expand_simple_binop (Pmode, PLUS, addr, GEN_INT (ofs & 7),
+ NULL_RTX, 1, OPTAB_LIB_WIDEN);
}
/* On the Alpha, all (non-symbolic) constants except zero go into
@@ -2318,7 +2334,7 @@ alpha_expand_mov_nobwx (enum machine_mode mode, rtx *operands)
seq = ((mode == QImode
? gen_unaligned_loadqi
: gen_unaligned_loadhi)
- (subtarget, get_unaligned_address (operands[1], 0),
+ (subtarget, get_unaligned_address (operands[1]),
temp1, temp2));
alpha_set_memflags (seq, operands[1]);
emit_insn (seq);
@@ -2357,7 +2373,7 @@ alpha_expand_mov_nobwx (enum machine_mode mode, rtx *operands)
rtx seq = ((mode == QImode
? gen_unaligned_storeqi
: gen_unaligned_storehi)
- (get_unaligned_address (operands[0], 0),
+ (get_unaligned_address (operands[0]),
operands[1], temp1, temp2, temp3));
alpha_set_memflags (seq, operands[0]);
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md
index d9f9e09e808..6cc25e79671 100644
--- a/gcc/config/alpha/alpha.md
+++ b/gcc/config/alpha/alpha.md
@@ -1607,10 +1607,7 @@
if (unaligned_memory_operand (operands[1], QImode))
{
- rtx seq
- = gen_unaligned_extendqidi (operands[0],
- get_unaligned_address (operands[1], 1));
-
+ rtx seq = gen_unaligned_extendqidi (operands[0], XEXP (operands[1], 0));
alpha_set_memflags (seq, operands[1]);
emit_insn (seq);
DONE;
@@ -1670,9 +1667,7 @@
if (unaligned_memory_operand (operands[1], HImode))
{
- rtx seq
- = gen_unaligned_extendhidi (operands[0],
- get_unaligned_address (operands[1], 2));
+ rtx seq = gen_unaligned_extendhidi (operands[0], XEXP (operands[1], 0));
alpha_set_memflags (seq, operands[1]);
emit_insn (seq);
@@ -1687,12 +1682,13 @@
;; as a pattern saves one instruction. The code is similar to that for
;; the unaligned loads (see below).
;;
-;; Operand 1 is the address + 1 (+2 for HI), operand 0 is the result.
+;; Operand 1 is the address, operand 0 is the result.
(define_expand "unaligned_extendqidi"
[(use (match_operand:QI 0 "register_operand" ""))
(use (match_operand:DI 1 "address_operand" ""))]
""
{
+ operands[0] = gen_lowpart (DImode, operands[0]);
if (WORDS_BIG_ENDIAN)
emit_insn (gen_unaligned_extendqidi_be (operands[0], operands[1]));
else
@@ -1701,48 +1697,40 @@
})
(define_expand "unaligned_extendqidi_le"
- [(set (match_dup 2) (match_operand:DI 1 "address_operand" ""))
- (set (match_dup 3)
- (mem:DI (and:DI (plus:DI (match_dup 2) (const_int -1))
- (const_int -8))))
+ [(set (match_dup 3)
+ (mem:DI (and:DI (match_operand:DI 1 "" "") (const_int -8))))
(set (match_dup 4)
(ashift:DI (match_dup 3)
(minus:DI (const_int 64)
(ashift:DI
(and:DI (match_dup 2) (const_int 7))
(const_int 3)))))
- (set (subreg:DI (match_operand:QI 0 "register_operand" "") 0)
+ (set (match_operand:DI 0 "register_operand" "")
(ashiftrt:DI (match_dup 4) (const_int 56)))]
"! WORDS_BIG_ENDIAN"
{
- operands[2] = gen_reg_rtx (DImode);
+ operands[2] = get_unaligned_offset (operands[1], 1);
operands[3] = gen_reg_rtx (DImode);
operands[4] = gen_reg_rtx (DImode);
})
(define_expand "unaligned_extendqidi_be"
- [(set (match_dup 2) (match_operand:DI 1 "address_operand" ""))
- (set (match_dup 3) (plus:DI (match_dup 2) (const_int -1)))
+ [(set (match_dup 3)
+ (mem:DI (and:DI (match_operand:DI 1 "" "") (const_int -8))))
(set (match_dup 4)
- (mem:DI (and:DI (match_dup 3)
- (const_int -8))))
- (set (match_dup 5) (plus:DI (match_dup 2) (const_int -2)))
- (set (match_dup 6)
- (ashift:DI (match_dup 4)
+ (ashift:DI (match_dup 3)
(ashift:DI
(and:DI
- (plus:DI (match_dup 5) (const_int 1))
+ (plus:DI (match_dup 2) (const_int 1))
(const_int 7))
(const_int 3))))
- (set (subreg:DI (match_operand:QI 0 "register_operand" "") 0)
- (ashiftrt:DI (match_dup 6) (const_int 56)))]
+ (set (match_operand:DI 0 "register_operand" "")
+ (ashiftrt:DI (match_dup 4) (const_int 56)))]
"WORDS_BIG_ENDIAN"
{
- operands[2] = gen_reg_rtx (DImode);
+ operands[2] = get_unaligned_offset (operands[1], -1);
operands[3] = gen_reg_rtx (DImode);
operands[4] = gen_reg_rtx (DImode);
- operands[5] = gen_reg_rtx (DImode);
- operands[6] = gen_reg_rtx (DImode);
})
(define_expand "unaligned_extendhidi"
@@ -1751,17 +1739,16 @@
""
{
operands[0] = gen_lowpart (DImode, operands[0]);
- emit_insn ((WORDS_BIG_ENDIAN
- ? gen_unaligned_extendhidi_be
- : gen_unaligned_extendhidi_le) (operands[0], operands[1]));
+ if (WORDS_BIG_ENDIAN)
+ emit_insn (gen_unaligned_extendhidi_be (operands[0], operands[1]));
+ else
+ emit_insn (gen_unaligned_extendhidi_le (operands[0], operands[1]));
DONE;
})
(define_expand "unaligned_extendhidi_le"
- [(set (match_dup 2) (match_operand:DI 1 "address_operand" ""))
- (set (match_dup 3)
- (mem:DI (and:DI (plus:DI (match_dup 2) (const_int -2))
- (const_int -8))))
+ [(set (match_dup 3)
+ (mem:DI (and:DI (match_operand:DI 1 "" "") (const_int -8))))
(set (match_dup 4)
(ashift:DI (match_dup 3)
(minus:DI (const_int 64)
@@ -1772,34 +1759,28 @@
(ashiftrt:DI (match_dup 4) (const_int 48)))]
"! WORDS_BIG_ENDIAN"
{
- operands[2] = gen_reg_rtx (DImode);
+ operands[2] = get_unaligned_offset (operands[1], 2);
operands[3] = gen_reg_rtx (DImode);
operands[4] = gen_reg_rtx (DImode);
})
(define_expand "unaligned_extendhidi_be"
- [(set (match_dup 2) (match_operand:DI 1 "address_operand" ""))
- (set (match_dup 3) (plus:DI (match_dup 2) (const_int -2)))
+ [(set (match_dup 3)
+ (mem:DI (and:DI (match_operand:DI 1 "" "") (const_int -8))))
(set (match_dup 4)
- (mem:DI (and:DI (match_dup 3)
- (const_int -8))))
- (set (match_dup 5) (plus:DI (match_dup 2) (const_int -3)))
- (set (match_dup 6)
- (ashift:DI (match_dup 4)
+ (ashift:DI (match_dup 3)
(ashift:DI
(and:DI
- (plus:DI (match_dup 5) (const_int 1))
+ (plus:DI (match_dup 2) (const_int 1))
(const_int 7))
(const_int 3))))
(set (match_operand:DI 0 "register_operand" "")
- (ashiftrt:DI (match_dup 6) (const_int 48)))]
+ (ashiftrt:DI (match_dup 4) (const_int 48)))]
"WORDS_BIG_ENDIAN"
{
- operands[2] = gen_reg_rtx (DImode);
+ operands[2] = get_unaligned_offset (operands[1], -1);
operands[3] = gen_reg_rtx (DImode);
operands[4] = gen_reg_rtx (DImode);
- operands[5] = gen_reg_rtx (DImode);
- operands[6] = gen_reg_rtx (DImode);
})
(define_insn "*extxl_const"
@@ -5997,7 +5978,7 @@
else
scratch = gen_rtx_REG (DImode, REGNO (operands[2]));
- addr = get_unaligned_address (operands[1], 0);
+ addr = get_unaligned_address (operands[1]);
operands[0] = gen_rtx_REG (DImode, REGNO (operands[0]));
seq = gen_unaligned_loadqi (operands[0], addr, scratch, operands[0]);
alpha_set_memflags (seq, operands[1]);
@@ -6031,7 +6012,7 @@
else
scratch = gen_rtx_REG (DImode, REGNO (operands[2]));
- addr = get_unaligned_address (operands[1], 0);
+ addr = get_unaligned_address (operands[1]);
operands[0] = gen_rtx_REG (DImode, REGNO (operands[0]));
seq = gen_unaligned_loadhi (operands[0], addr, scratch, operands[0]);
alpha_set_memflags (seq, operands[1]);
@@ -6055,7 +6036,7 @@
}
else
{
- rtx addr = get_unaligned_address (operands[0], 0);
+ rtx addr = get_unaligned_address (operands[0]);
rtx scratch1 = gen_rtx_REG (DImode, REGNO (operands[2]));
rtx scratch2 = gen_rtx_REG (DImode, REGNO (operands[2]) + 1);
rtx scratch3 = scratch1;
@@ -6087,7 +6068,7 @@
}
else
{
- rtx addr = get_unaligned_address (operands[0], 0);
+ rtx addr = get_unaligned_address (operands[0]);
rtx scratch1 = gen_rtx_REG (DImode, REGNO (operands[2]));
rtx scratch2 = gen_rtx_REG (DImode, REGNO (operands[2]) + 1);
rtx scratch3 = scratch1;
diff --git a/gcc/config/alpha/linux.h b/gcc/config/alpha/linux.h
index cda7596a9e1..d97934be0bd 100644
--- a/gcc/config/alpha/linux.h
+++ b/gcc/config/alpha/linux.h
@@ -49,6 +49,7 @@ Boston, MA 02110-1301, USA. */
%{shared:-lc} \
%{!shared: %{profile:-lc_p}%{!profile:-lc}}"
+#undef CPP_SPEC
#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
/* Show that we need a GP when profiling. */
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 7d577ae0124..94d2f11fefc 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -14477,7 +14477,7 @@ static const struct builtin_description bdesc_2arg[] =
BUILTIN_DESC_SWAP_OPERANDS },
{ MASK_SSE, CODE_FOR_sse_vmmaskcmpv4sf3, "__builtin_ia32_cmpngess", IX86_BUILTIN_CMPNGESS, UNGT,
BUILTIN_DESC_SWAP_OPERANDS },
- { MASK_SSE, CODE_FOR_sse_vmmaskcmpv4sf3, "__builtin_ia32_cmpordss", IX86_BUILTIN_CMPORDSS, UNORDERED, 0 },
+ { MASK_SSE, CODE_FOR_sse_vmmaskcmpv4sf3, "__builtin_ia32_cmpordss", IX86_BUILTIN_CMPORDSS, ORDERED, 0 },
{ MASK_SSE, CODE_FOR_sminv4sf3, "__builtin_ia32_minps", IX86_BUILTIN_MINPS, 0, 0 },
{ MASK_SSE, CODE_FOR_smaxv4sf3, "__builtin_ia32_maxps", IX86_BUILTIN_MAXPS, 0, 0 },
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 233ee6097ec..0544c124e1e 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -3545,7 +3545,7 @@ s390_expand_movmem (rtx dst, rtx src, rtx len)
if (temp != count)
emit_move_insn (count, temp);
- temp = expand_binop (mode, ashr_optab, count, GEN_INT (8), blocks, 1, 0);
+ temp = expand_binop (mode, lshr_optab, count, GEN_INT (8), blocks, 1, 0);
if (temp != blocks)
emit_move_insn (blocks, temp);
@@ -3582,10 +3582,12 @@ s390_expand_movmem (rtx dst, rtx src, rtx len)
void
s390_expand_setmem (rtx dst, rtx len, rtx val)
{
- gcc_assert (GET_CODE (len) != CONST_INT || INTVAL (len) > 0);
+ if (GET_CODE (len) == CONST_INT && INTVAL (len) == 0)
+ return;
+
gcc_assert (GET_CODE (val) == CONST_INT || GET_MODE (val) == QImode);
- if (GET_CODE (len) == CONST_INT && INTVAL (len) <= 257)
+ if (GET_CODE (len) == CONST_INT && INTVAL (len) > 0 && INTVAL (len) <= 257)
{
if (val == const0_rtx && INTVAL (len) <= 256)
emit_insn (gen_clrmem_short (dst, GEN_INT (INTVAL (len) - 1)));
@@ -3659,7 +3661,7 @@ s390_expand_setmem (rtx dst, rtx len, rtx val)
if (temp != count)
emit_move_insn (count, temp);
- temp = expand_binop (mode, ashr_optab, count, GEN_INT (8), blocks, 1, 0);
+ temp = expand_binop (mode, lshr_optab, count, GEN_INT (8), blocks, 1, 0);
if (temp != blocks)
emit_move_insn (blocks, temp);
@@ -3751,7 +3753,7 @@ s390_expand_cmpmem (rtx target, rtx op0, rtx op1, rtx len)
if (temp != count)
emit_move_insn (count, temp);
- temp = expand_binop (mode, ashr_optab, count, GEN_INT (8), blocks, 1, 0);
+ temp = expand_binop (mode, lshr_optab, count, GEN_INT (8), blocks, 1, 0);
if (temp != blocks)
emit_move_insn (blocks, temp);
diff --git a/gcc/expr.c b/gcc/expr.c
index 82df27e5e14..c9e2c9510ac 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -8569,7 +8569,14 @@ reduce_to_bit_field_precision (rtx exp, rtx target, tree type)
HOST_WIDE_INT prec = TYPE_PRECISION (type);
if (target && GET_MODE (target) != GET_MODE (exp))
target = 0;
- if (TYPE_UNSIGNED (type))
+ /* For constant values, reduce using build_int_cst_type. */
+ if (GET_CODE (exp) == CONST_INT)
+ {
+ HOST_WIDE_INT value = INTVAL (exp);
+ tree t = build_int_cst_type (type, value);
+ return expand_expr (t, target, VOIDmode, EXPAND_NORMAL);
+ }
+ else if (TYPE_UNSIGNED (type))
{
rtx mask;
if (prec < HOST_BITS_PER_WIDE_INT)
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index e45ff46db13..458d1ab4076 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -9375,13 +9375,13 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
return omit_one_operand (type, integer_zero_node, arg0);
case GE_EXPR:
- return fold_build2 (EQ_EXPR, type, arg0, arg1);
+ return fold_build2 (EQ_EXPR, type, op0, op1);
case LE_EXPR:
return omit_one_operand (type, integer_one_node, arg0);
case LT_EXPR:
- return fold_build2 (NE_EXPR, type, arg0, arg1);
+ return fold_build2 (NE_EXPR, type, op0, op1);
/* The GE_EXPR and LT_EXPR cases above are not normally
reached because of previous transformations. */
@@ -9396,10 +9396,14 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
{
case GT_EXPR:
arg1 = const_binop (PLUS_EXPR, arg1, integer_one_node, 0);
- return fold_build2 (EQ_EXPR, type, arg0, arg1);
+ return fold_build2 (EQ_EXPR, type,
+ fold_convert (TREE_TYPE (arg1), arg0),
+ arg1);
case LE_EXPR:
arg1 = const_binop (PLUS_EXPR, arg1, integer_one_node, 0);
- return fold_build2 (NE_EXPR, type, arg0, arg1);
+ return fold_build2 (NE_EXPR, type,
+ fold_convert (TREE_TYPE (arg1), arg0),
+ arg1);
default:
break;
}
@@ -9412,7 +9416,7 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
return omit_one_operand (type, integer_zero_node, arg0);
case LE_EXPR:
- return fold_build2 (EQ_EXPR, type, arg0, arg1);
+ return fold_build2 (EQ_EXPR, type, op0, op1);
case GE_EXPR:
return omit_one_operand (type, integer_one_node, arg0);
@@ -9430,10 +9434,14 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
{
case GE_EXPR:
arg1 = const_binop (MINUS_EXPR, arg1, integer_one_node, 0);
- return fold_build2 (NE_EXPR, type, arg0, arg1);
+ return fold_build2 (NE_EXPR, type,
+ fold_convert (TREE_TYPE (arg1), arg0),
+ arg1);
case LT_EXPR:
arg1 = const_binop (MINUS_EXPR, arg1, integer_one_node, 0);
- return fold_build2 (EQ_EXPR, type, arg0, arg1);
+ return fold_build2 (EQ_EXPR, type,
+ fold_convert (TREE_TYPE (arg1), arg0),
+ arg1);
default:
break;
}
@@ -9449,12 +9457,11 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
and X >= signed_max+1 because previous transformations. */
if (code == LE_EXPR || code == GT_EXPR)
{
- tree st0, st1;
- st0 = lang_hooks.types.signed_type (TREE_TYPE (arg0));
- st1 = lang_hooks.types.signed_type (TREE_TYPE (arg1));
- return fold_build2 (code == LE_EXPR ? GE_EXPR: LT_EXPR,
- type, fold_convert (st0, arg0),
- build_int_cst (st1, 0));
+ tree st;
+ st = lang_hooks.types.signed_type (TREE_TYPE (arg1));
+ return fold_build2 (code == LE_EXPR ? GE_EXPR : LT_EXPR,
+ type, fold_convert (st, arg0),
+ build_int_cst (st, 0));
}
}
}
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index 98a90f84f9f..09c5ae7cc53 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2007-04-21 Joseph S. Myers <joseph@codesourcery.com>
+
+ * sv.po: Update.
+
2007-03-08 Joseph S. Myers <joseph@codesourcery.com>
* sr.po: New.
diff --git a/gcc/po/sv.po b/gcc/po/sv.po
index d531577ff40..4817029091d 100644
--- a/gcc/po/sv.po
+++ b/gcc/po/sv.po
@@ -1,7 +1,7 @@
# Swedish messages for GCC.
-# Copyright © 2000, 2005, 2006 Free Software Foundation, Inc.
+# Copyright © 2000, 2005, 2006, 2007 Free Software Foundation, Inc.
# Dennis Björklund <db@zigo.dhs.org>, 2000, 2001, 2002.
-# Göran Uddeborg <goeran@uddeborg.se>, 2005, 2006.
+# Göran Uddeborg <goeran@uddeborg.se>, 2005, 2006, 2007.
#
# Remember: GCC team does not want RCS keywords in the header!
#
@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: gcc 4.1.1\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
"POT-Creation-Date: 2006-05-24 16:19-0700\n"
-"PO-Revision-Date: 2006-12-13 22:05+0100\n"
+"PO-Revision-Date: 2007-04-03 09:58+0200\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"MIME-Version: 1.0\n"
@@ -364,7 +364,7 @@ msgstr "klamrar saknas runt initierare"
#: c-typeck.c:5209
msgid "braces around scalar initializer"
-msgstr "klamrar funt skalär initierare"
+msgstr "klamrar runt skalär initierare"
#: c-typeck.c:5266
msgid "initialization of flexible array member in a nested context"
@@ -9266,19 +9266,19 @@ msgstr "-private_bundle är inte tillåten med -dynamiclib"
#: java/lang.opt:66
msgid "Warn if a deprecated compiler feature, class, method, or field is used"
-msgstr "Varna om en kompilatorfunktion, klass, metod eller fält som avrådes ifrån används"
+msgstr "Varna för en kompilatorfunktion, klass, metod eller fält som bör undvikas används"
#: java/lang.opt:70
msgid "Warn if deprecated empty statements are found"
-msgstr "Varna om föråldrade tomma satser finns"
+msgstr "Varna för tomma satser som bör undvikas finns"
#: java/lang.opt:74
msgid "Warn if .class files are out of date"
-msgstr "Varna om .class-filer är inaktuella"
+msgstr "Varna för .class-filer är inaktuella"
#: java/lang.opt:78
msgid "Warn if modifiers are specified when not necessary"
-msgstr "Varna om modifierare anges när de inte behövs"
+msgstr "Varna för modifierare anges när de inte behövs"
#: java/lang.opt:82
msgid "Deprecated; use --classpath instead"
@@ -9370,23 +9370,23 @@ msgstr "Lägg MODULE-filer i \"directory\""
#: fortran/lang.opt:42
msgid "Warn about possible aliasing of dummy arguments"
-msgstr "Varna om eventuell aliasning av atrappargument"
+msgstr "Varna för eventuell aliasning av atrappargument"
#: fortran/lang.opt:46
msgid "Warn about missing ampersand in continued character literals"
-msgstr "Varna om saknade ampersander i fortsatta teckenliteraler"
+msgstr "Varna för saknade ampersander i fortsatta teckenliteraler"
#: fortran/lang.opt:50
msgid "Warn about implicit conversion"
-msgstr "Varna om implicita konverteringar"
+msgstr "Varna för implicita konverteringar"
#: fortran/lang.opt:54
msgid "Warn about calls with implicit interface"
-msgstr "Varna om anrop med implicit gränssnitt"
+msgstr "Varna för anrop med implicit gränssnitt"
#: fortran/lang.opt:58
msgid "Warn about truncated source lines"
-msgstr "Varna om avhuggna källkodsrader"
+msgstr "Varna för avhuggna källkodsrader"
#: fortran/lang.opt:62
msgid "Warn about usage of non-standard intrinsics"
@@ -9394,11 +9394,11 @@ msgstr "Varna för användning av inbyggda som inte är standard"
#: fortran/lang.opt:66
msgid "Warn about \"suspicious\" constructs"
-msgstr "Varna om \"misstänkta\" konstruktioner"
+msgstr "Varna för \"misstänkta\" konstruktioner"
#: fortran/lang.opt:70
msgid "Warn about underflow of numerical constant expressions"
-msgstr "Varna om underspill i numeriska konstantuttryck"
+msgstr "Varna för underspill i numeriska konstantuttryck"
#: fortran/lang.opt:74 common.opt:162
msgid "Warn when a label is unused"
@@ -9936,11 +9936,11 @@ msgstr "använd mvcle"
#: config/s390/s390.opt:92
msgid "Warn if a function uses alloca or creates an array with dynamic size"
-msgstr "Varna om en funktion använder alloca eller skapar en vektor med dynamisk storlek"
+msgstr "Varna för en funktion använder alloca eller skapar en vektor med dynamisk storlek"
#: config/s390/s390.opt:96
msgid "Warn if a single function's framesize exceeds the given framesize"
-msgstr "Varna om en enskild funktions ramstorlek överskrider den angivna ramstorleken"
+msgstr "Varna för en enskild funktions ramstorlek överskrider den angivna ramstorleken"
#: config/s390/s390.opt:100
msgid "z/Architecture"
@@ -10690,7 +10690,7 @@ msgstr "Undvik alla avståndsgränser vid anropsinstruktioner"
#: config/rs6000/rs6000.opt:215
msgid "Warn about deprecated 'vector long ...' AltiVec type usage"
-msgstr "Varna för användning av AltiVec-typen \"vector long ...\" som avrådes från"
+msgstr "Varna för användning av AltiVec-typen \"vector long ...\" som bör undvikas"
#: config/rs6000/rs6000.opt:219
msgid "Select GPR floating point method"
@@ -12214,7 +12214,7 @@ msgstr "Avdefiniera <makro>"
#: c.opt:117
msgid "Warn about things that will change when compiling with an ABI-compliant compiler"
-msgstr "Varna om saker som skulle ändras vid kompilering med en kompilator som följer ABI"
+msgstr "Varna för saker som skulle ändras vid kompilering med en kompilator som följer ABI"
#: c.opt:121
msgid "Enable most warning messages"
@@ -12226,23 +12226,23 @@ msgstr "Varna när en Objective-C-tilldelning fångas upp av skräpsamlaren"
#: c.opt:129
msgid "Warn about casting functions to incompatible types"
-msgstr "Varna om typkonvertering av funktioner till inkompatibla typer"
+msgstr "Varna för typkonvertering av funktioner till inkompatibla typer"
#: c.opt:133
msgid "Warn about C constructs that are not in the common subset of C and C++"
-msgstr "Varna om C-konstruktioner som inte är i den gemensamma delmängden av C och C++"
+msgstr "Varna för C-konstruktioner som inte är i den gemensamma delmängden av C och C++"
#: c.opt:138
msgid "Warn about casts which discard qualifiers"
-msgstr "Varna om typkonvertering som slänger kvalificerare"
+msgstr "Varna för typkonvertering som slänger kvalificerare"
#: c.opt:142
msgid "Warn about subscripts whose type is \"char\""
-msgstr "Varna om index vars typ är \"char\""
+msgstr "Varna för index vars typ är \"char\""
#: c.opt:146
msgid "Warn about possibly nested block comments, and C++ comments spanning more than one physical line"
-msgstr "Varna om möjliga nästade blockkommentarer, och C++-kommentarer som spänner över mer än en fysisk rad"
+msgstr "Varna för möjliga nästade blockkommentarer, och C++-kommentarer som spänner över mer än en fysisk rad"
#: c.opt:150
msgid "Synonym for -Wcomment"
@@ -12250,7 +12250,7 @@ msgstr "Synonym för -Wcommment"
#: c.opt:154
msgid "Warn about possibly confusing type conversions"
-msgstr "Varna om eventuellt förvirrande typkonverteringar"
+msgstr "Varna för eventuellt förvirrande typkonverteringar"
#: c.opt:158
msgid "Warn when all constructors and destructors are private"
@@ -12262,19 +12262,19 @@ msgstr "Varna när en deklaration hittas efter en sats"
#: c.opt:166
msgid "Warn about deprecated compiler features"
-msgstr "Varna om kompilatorfunktioner som undanbedes"
+msgstr "Varna för kompilatorfunktioner bör undvikas"
#: c.opt:170
msgid "Warn about compile-time integer division by zero"
-msgstr "Varna om heltalsdivision med noll vid kompileringstillfället"
+msgstr "Varna för heltalsdivision med noll vid kompileringstillfället"
#: c.opt:174
msgid "Warn about violations of Effective C++ style rules"
-msgstr "Varna om brott mot Effective C++ stilregler"
+msgstr "Varna för brott mot stilreglerna i Effective C++"
#: c.opt:178
msgid "Warn about stray tokens after #elif and #endif"
-msgstr "Varna om vilsekomna symboler efter #elif och #endif"
+msgstr "Varna för vilsekomna symboler efter #elif och #endif"
#: c.opt:186
msgid "Make implicit function declarations an error"
@@ -12286,35 +12286,35 @@ msgstr "Varna vid test av flyttal på likhet"
#: c.opt:194
msgid "Warn about printf/scanf/strftime/strfmon format string anomalies"
-msgstr "Varna om anomalier i formatsträngar till printf/scanf/strftime/strfmon"
+msgstr "Varna för anomalier i formatsträngar till printf/scanf/strftime/strfmon"
#: c.opt:198
msgid "Warn if passing too many arguments to a function for its format string"
-msgstr "Varna om för många argument argument till en funktion för dess formatsträng"
+msgstr "Varna för för många argument argument till en funktion för dess formatsträng"
#: c.opt:202
msgid "Warn about format strings that are not literals"
-msgstr "Varna om formatsträngar som inte är literaler"
+msgstr "Varna för formatsträngar som inte är literaler"
#: c.opt:206
msgid "Warn about possible security problems with format functions"
-msgstr "Varna om möjliga säkerhetsproblem med formatfunktioner"
+msgstr "Varna för möjliga säkerhetsproblem med formatfunktioner"
#: c.opt:210
msgid "Warn about strftime formats yielding 2-digit years"
-msgstr "Varna om format till strftime som ger 2-siffrigt årtal"
+msgstr "Varna för format till strftime som ger 2-siffrigt årtal"
#: c.opt:214
msgid "Warn about zero-length formats"
-msgstr "Varna om format med längden noll"
+msgstr "Varna för format med längden noll"
#: c.opt:221
msgid "Warn about variables which are initialized to themselves"
-msgstr "Varna om variabler som intieras till sig själva"
+msgstr "Varna för variabler som intieras till sig själva"
#: c.opt:228
msgid "Warn about implicit function declarations"
-msgstr "Varna om implicita funktionsdeklarationer"
+msgstr "Varna för implicita funktionsdeklarationer"
#: c.opt:232
msgid "Warn when a declaration does not specify a type"
@@ -12326,15 +12326,15 @@ msgstr "Avrådes ifrån. Denna flagga har ingen effekt"
#: c.opt:240
msgid "Warn when there is a cast to a pointer from an integer of a different size"
-msgstr "Varna om typkonverteringar till pekare från ett heltal med annan storlek"
+msgstr "Varna för typkonverteringar till pekare från ett heltal med annan storlek"
#: c.opt:244
msgid "Warn about invalid uses of the \"offsetof\" macro"
-msgstr "Varna om ogiltiga användningar av makrot \"offsetof\""
+msgstr "Varna för ogiltiga användningar av makrot \"offsetof\""
#: c.opt:248
msgid "Warn about PCH files that are found but not used"
-msgstr "Varna om PCH-filer som hittas men inte används"
+msgstr "Varna för PCH-filer som hittas men inte används"
#: c.opt:252
msgid "Do not warn about using \"long long\" when -pedantic"
@@ -12342,31 +12342,31 @@ msgstr "Varna inte om användning av \"long long\" vid -pedantic"
#: c.opt:256
msgid "Warn about suspicious declarations of \"main\""
-msgstr "Varna om tveksamma deklarationer av \"main\""
+msgstr "Varna för tveksamma deklarationer av \"main\""
#: c.opt:260
msgid "Warn about possibly missing braces around initializers"
-msgstr "Varna om eventuellt saknade klamrar runt initierare"
+msgstr "Varna för eventuellt saknade klamrar runt initierare"
#: c.opt:264
msgid "Warn about global functions without previous declarations"
-msgstr "Varna om globala globala funktioner utan tidigare deklaration"
+msgstr "Varna för globala globala funktioner utan tidigare deklaration"
#: c.opt:268
msgid "Warn about missing fields in struct initializers"
-msgstr "Varna om saknade fält i postinitierare"
+msgstr "Varna för saknade fält i postinitierare"
#: c.opt:272
msgid "Warn about functions which might be candidates for format attributes"
-msgstr "Varna om funktioner som kan vara kandidater för formatattribut"
+msgstr "Varna för funktioner som kan vara kandidater för formatattribut"
#: c.opt:276
msgid "Warn about user-specified include directories that do not exist"
-msgstr "Varna om användarangivna inkluderingskataloger som inte finns"
+msgstr "Varna för användarangivna inkluderingskataloger som inte finns"
#: c.opt:280
msgid "Warn about global functions without prototypes"
-msgstr "Varna om globala funktioner utan prototyper"
+msgstr "Varna för globala funktioner utan prototyper"
#: c.opt:284
msgid "Warn about use of multi-character character constants"
@@ -12374,7 +12374,7 @@ msgstr "Varna vid användning av flerteckens teckenkonstant"
#: c.opt:288
msgid "Warn about \"extern\" declarations not at file scope"
-msgstr "Varna om \"extern\"-deklaration som inte är på filnivå"
+msgstr "Varna för \"extern\"-deklaration som inte är på filnivå"
#: c.opt:292
msgid "Warn when non-templatized friend functions are declared within a template"
@@ -12382,31 +12382,31 @@ msgstr "Varna när en vänfuktion som inte är en mall deklareras inuti en mall"
#: c.opt:296
msgid "Warn about non-virtual destructors"
-msgstr "Varna om ickevirtuella destruerare"
+msgstr "Varna för ickevirtuella destruerare"
#: c.opt:300
msgid "Warn about NULL being passed to argument slots marked as requiring non-NULL"
-msgstr "Varna om NULL skickas som argument till fack markerde att de kräver icke-NULL"
+msgstr "Varna om NULL skickas som argument som är markerade att de kräver icke-NULL"
#: c.opt:304
msgid "Warn about non-normalised Unicode strings"
-msgstr "Varna om icke normaliserade Unicodesträngar"
+msgstr "Varna för icke normaliserade Unicodesträngar"
#: c.opt:308
msgid "Warn if a C-style cast is used in a program"
-msgstr "Varna om en typkonvertering i C-stil används i ett program"
+msgstr "Varna för en typkonvertering i C-stil används i ett program"
#: c.opt:312
msgid "Warn if an old-style parameter definition is used"
-msgstr "Varna om en gammaldags parameterdefinition används"
+msgstr "Varna för en gammaldags parameterdefinition används"
#: c.opt:316
msgid "Warn about overloaded virtual function names"
-msgstr "Varna om överlastade virtuella funktionsnamn"
+msgstr "Varna för överlagrade virtuella funktionsnamn"
#: c.opt:320
msgid "Warn about possibly missing parentheses"
-msgstr "Varna om eventuellt saknade parenteser"
+msgstr "Varna för eventuellt saknade parenteser"
#: c.opt:324
msgid "Warn when converting the type of pointers to member functions"
@@ -12414,7 +12414,7 @@ msgstr "Varna vid typkonvertering av pekare till medlemsfunktioner"
#: c.opt:328
msgid "Warn about function pointer arithmetic"
-msgstr "Varna om aritmetik med funktionspekare"
+msgstr "Varna för aritmetik med funktionspekare"
#: c.opt:332
msgid "Warn when a pointer is cast to an integer of a different size"
@@ -12422,15 +12422,15 @@ msgstr "Varna när en pkare typkonverteras till ett heltal av annan storlek"
#: c.opt:336
msgid "Warn about misuses of pragmas"
-msgstr "Varna om missbruk av pragman"
+msgstr "Varna för missbruk av pragman"
#: c.opt:340
msgid "Warn if inherited methods are unimplemented"
-msgstr "Varna om ärvda metoder är oimplementerade"
+msgstr "Varna för ärvda metoder är oimplementerade"
#: c.opt:344
msgid "Warn about multiple declarations of the same object"
-msgstr "Varna om multipla deklarationer av samma objekt"
+msgstr "Varna för multipla deklarationer av samma objekt"
#: c.opt:348
msgid "Warn when the compiler reorders code"
@@ -12442,31 +12442,31 @@ msgstr "Varna när en funktions returtyp får \"int\" som skönsvärde (C), eller om
#: c.opt:356
msgid "Warn if a selector has multiple methods"
-msgstr "Varna om en väljare har multipla metoder"
+msgstr "Varna för en väljare har multipla metoder"
#: c.opt:360
msgid "Warn about possible violations of sequence point rules"
-msgstr "Varna om möjliga brott mot sekvenspunktregler"
+msgstr "Varna för möjliga brott mot sekvenspunktregler"
#: c.opt:364
msgid "Warn about signed-unsigned comparisons"
-msgstr "Varna om jämförelser mellan signed/unsigned"
+msgstr "Varna för jämförelser mellan signed/unsigned"
#: c.opt:368
msgid "Warn when overload promotes from unsigned to signed"
-msgstr "Varna när överlastning anpassar från teckenlöst till med tecken"
+msgstr "Varna när överlagring anpassar från teckenlöst till med tecken"
#: c.opt:372
msgid "Warn about uncasted NULL used as sentinel"
-msgstr "Varna om ej typkonverterad NULL används som vaktpost"
+msgstr "Varna för ej typkonverterad NULL används som vaktpost"
#: c.opt:376
msgid "Warn about unprototyped function declarations"
-msgstr "Varna om funktionsdeklarationer utan prototyp"
+msgstr "Varna för funktionsdeklarationer utan prototyp"
#: c.opt:380
msgid "Warn if type signatures of candidate methods do not match exactly"
-msgstr "Varna om typsignaturer till kandidatmetoder inte stämmer exakt"
+msgstr "Varna för typsignaturer till kandidatmetoder inte stämmer exakt"
#: c.opt:384
msgid "Warn when synthesis behavior differs from Cfront"
@@ -12478,27 +12478,27 @@ msgstr "Undertryck inte varningar från systemhuvudfiler"
#: c.opt:392
msgid "Warn about features not present in traditional C"
-msgstr "Varna om funktioner som inte finns i traditionell C"
+msgstr "Varna för funktioner som inte finns i traditionell C"
#: c.opt:396
msgid "Warn if trigraphs are encountered that might affect the meaning of the program"
-msgstr "Varna om trigrafer upptäcks som kan påverka betydelsen av programmet"
+msgstr "Varna för trigrafer upptäcks som kan påverka betydelsen av programmet"
#: c.opt:400
msgid "Warn about @selector()s without previously declared methods"
-msgstr "Varna om @selector()er utan tidigare deklarerade metoder"
+msgstr "Varna för @selector()er utan tidigare deklarerade metoder"
#: c.opt:404
msgid "Warn if an undefined macro is used in an #if directive"
-msgstr "Varna om ett odefinierat makro används i ett #if-direktiv"
+msgstr "Varna för ett odefinierat makro används i ett #if-direktiv"
#: c.opt:408
msgid "Warn about unrecognized pragmas"
-msgstr "Varna om okända pragman"
+msgstr "Varna för okända pragman"
#: c.opt:412
msgid "Warn about macros defined in the main file that are not used"
-msgstr "Varna om makron definierade i huvudfilen som inte används"
+msgstr "Varna för makron definierade i huvudfilen som inte används"
#: c.opt:416
msgid "Do not warn about using variadic macros when -pedantic"
@@ -12886,23 +12886,23 @@ msgstr "Optimera för storlek istället för hastighet"
#: common.opt:54
msgid "This switch is deprecated; use -Wextra instead"
-msgstr "Denna flagga avrådes ifrån, använd -Wextra istället"
+msgstr "Denna flagga bör undvikas, använd -Wextra istället"
#: common.opt:58
msgid "Warn about returning structures, unions or arrays"
-msgstr "Varna om retur av poster, unioner eller vektorer"
+msgstr "Varna för retur av poster, unioner eller vektorer"
#: common.opt:62
msgid "Warn about inappropriate attribute usage"
-msgstr "Varna om felaktig användning av attribut"
+msgstr "Varna för felaktig användning av attribut"
#: common.opt:66
msgid "Warn about pointer casts which increase alignment"
-msgstr "Varna om typkonvertering av pekare som ökar justeringen"
+msgstr "Varna för typkonvertering av pekare som ökar justeringen"
#: common.opt:70
msgid "Warn about uses of __attribute__((deprecated)) declarations"
-msgstr "Varna om användning av __attribute__((deprecated))-deklarationer"
+msgstr "Varna för användning av __attribute__((deprecated))-deklarationer"
#: common.opt:74
msgid "Warn when an optimization pass is disabled"
@@ -12926,15 +12926,15 @@ msgstr "Varna när en inline:ad funktion inte kan inline:as"
#: common.opt:94
msgid "Warn if an object is larger than <number> bytes"
-msgstr "Varna om ett objekt är större än <antal> byte"
+msgstr "Varna för ett objekt är större än <antal> byte"
#: common.opt:98
msgid "Warn if the loop cannot be optimized due to nontrivial assumptions."
-msgstr "Varna om slingan inte kan optimeras på grund av icketriviala antaganden."
+msgstr "Varna för slingan inte kan optimeras på grund av icketriviala antaganden."
#: common.opt:102
msgid "Warn about functions which might be candidates for __attribute__((noreturn))"
-msgstr "Varna om funktioner som är möjliga kandidater för __attribute__((noreturn))"
+msgstr "Varna för funktioner som är möjliga kandidater för __attribute__((noreturn))"
#: common.opt:106
msgid "Warn when the packed attribute has no effect on struct layout"
@@ -12950,31 +12950,31 @@ msgstr "Varna när en lokal variabel skuggar en annan"
#: common.opt:118
msgid "Warn when not issuing stack smashing protection for some reason"
-msgstr "Varna när stacksprängningsskydd inte läggs ut av någon anledning"
+msgstr "Varna när stacköverskrivningsskydd inte läggs ut av någon anledning"
#: common.opt:122 common.opt:126
msgid "Warn about code which might break strict aliasing rules"
-msgstr "Varna om kod som kan bryta strikta aliasregler"
+msgstr "Varna för kod som kan bryta strikta aliasregler"
#: common.opt:130
msgid "Warn about enumerated switches, with no default, missing a case"
-msgstr "Varna om uppräkningshopptabeller, utan standardfall, saknar ett fall"
+msgstr "Varna när hopptabeller för uppräkningstyper inte har standardfall och saknar ett fall"
#: common.opt:134
msgid "Warn about enumerated switches missing a \"default:\" statement"
-msgstr "Varna om uppräkningshopptabeller saknar en \"default:\"-sats"
+msgstr "Varna för uppräkningshopptabeller saknar en \"default:\"-sats"
#: common.opt:138
msgid "Warn about all enumerated switches missing a specific case"
-msgstr "Varna om alla uppräkningshopptabeller som saknar ett specifikt fall"
+msgstr "Varna för alla uppräkningshopptabeller som saknar ett specifikt fall"
#: common.opt:146
msgid "Warn about uninitialized automatic variables"
-msgstr "Varna om oinitierade automatiska variabler"
+msgstr "Varna för oinitierade automatiska variabler"
#: common.opt:150
msgid "Warn about code that will never be executed"
-msgstr "Varna om kod som aldrig kommer köras"
+msgstr "Varna för kod som aldrig kommer köras"
#: common.opt:154
msgid "Enable all -Wunused- warnings"
@@ -13106,7 +13106,7 @@ msgstr "Uteslut intervallreduktionssteget när komplex division görs"
#: common.opt:334
msgid "Place data items into their own section"
-msgstr "Placera dataföremål i sin egen sektion"
+msgstr "Placera dataobjekt i sin egen sektion"
#: common.opt:340
msgid "Defer popping functions args from stack until later"
@@ -13118,7 +13118,7 @@ msgstr "Försök fylla fördröjningsfack av greninstruktioner"
#: common.opt:348
msgid "Delete useless null pointer checks"
-msgstr "Tag bort oanvändbara nollpekarkontroller"
+msgstr "Tag bort onödiga nollpekarkontroller"
#: common.opt:352
msgid "How often to emit source location at the beginning of line-wrapped diagnostics"
@@ -13214,7 +13214,7 @@ msgstr "Hantera #ident-direktiv"
#: common.opt:464
msgid "Perform conversion of conditional jumps to branchless equivalents"
-msgstr "Utvör konvertering av villkorliga hopp till grenlösa motsvarigheter"
+msgstr "Utför konvertering av villkorliga hopp till grenlösa motsvarigheter"
#: common.opt:468
msgid "Perform conversion of conditional jumps to conditional execution"
@@ -13730,15 +13730,15 @@ msgstr "Använd uttrycksvärdeprofiler i optimeringar"
#: common.opt:1034
msgid "Construct webs and split unrelated uses of single variable"
-msgstr "Kostruera nät och dela orelaterade användningar av en enskild variabel"
+msgstr "Konstruera nät och dela orelaterade användningar av en enskild variabel"
#: common.opt:1038
msgid "Perform whole program optimizations"
-msgstr "Utför optimeringav hela program"
+msgstr "Utför optimering av hela program"
#: common.opt:1042
msgid "Assume signed arithmetic overflow wraps around"
-msgstr "Anta spill vid teckenaritmetik slår runt"
+msgstr "Anta att spill vid teckenaritmetik slår runt"
#: common.opt:1046
msgid "Put zero initialized data in the bss section"
@@ -14044,7 +14044,7 @@ msgstr "negativt heltal implicit konverterat till unsigned typ"
#: c-common.c:975
#, gcc-internal-format
msgid "type-punning to incomplete type might break strict-aliasing rules"
-msgstr "typstampning till ofullständiga typ kan bryta strikta aliasregler"
+msgstr "typstampning till ofullständig typ kan bryta strikta aliasregler"
#: c-common.c:983
#, gcc-internal-format
@@ -14059,7 +14059,7 @@ msgstr "dereferering av en typstampad pekare kan bryta strikta aliasregler"
#: c-common.c:1049
#, gcc-internal-format
msgid "overflow in implicit constant conversion"
-msgstr "spill i implicit constant konvertering"
+msgstr "spill i implicit konstant konvertering"
#: c-common.c:1185
#, gcc-internal-format
@@ -14129,12 +14129,12 @@ msgstr "pekare av typen %<void *%> använd i aritmetik"
#: c-common.c:2288
#, gcc-internal-format
msgid "pointer to a function used in arithmetic"
-msgstr "pekare till funktion använd med aritmetik"
+msgstr "pekare till funktion använd i aritmetik"
#: c-common.c:2294
#, gcc-internal-format
msgid "pointer to member function used in arithmetic"
-msgstr "pekare till medlemsfunktion använd med aritmetik"
+msgstr "pekare till medlemsfunktion använd i aritmetik"
#. Common Ada/Pascal programmer's mistake. We always warn
#. about this since it is so bad.
@@ -14196,7 +14196,7 @@ msgstr "tomt intervall angivet"
#: c-common.c:3724
#, gcc-internal-format
msgid "duplicate (or overlapping) case value"
-msgstr "dubbla (eller överlappand) case-värden"
+msgstr "dubbla (eller överlappande) case-värden"
#: c-common.c:3725
#, gcc-internal-format
@@ -14236,7 +14236,7 @@ msgstr "%Jcase-värde %qs är inte i uppräkningstyp %qT"
#: c-common.c:3844
#, gcc-internal-format
msgid "%Hswitch missing default case"
-msgstr "%Hswitch saknare default-fall"
+msgstr "%Hswitch saknar default-fall"
#. Warn if there are enumerators that don't correspond to
#. case expressions.
@@ -14279,7 +14279,7 @@ msgstr "okänt maskinläge %qs"
#: c-common.c:4540
#, gcc-internal-format
msgid "specifying vector types with __attribute__ ((mode)) is deprecated"
-msgstr "det avrådes från att ange vektortyper med __attribute__ ((sätt))"
+msgstr "att ange vektortyper med __attribute__ ((sätt)) bör unvikas"
#: c-common.c:4543
#, gcc-internal-format
@@ -14339,7 +14339,7 @@ msgstr "efterfrågad minnesjustering är inte konstant"
#: c-common.c:4708
#, gcc-internal-format
msgid "requested alignment is not a power of 2"
-msgstr "efterrågad minnesjustering är inte en potens av 2"
+msgstr "efterfågad minnesjustering är inte en potens av 2"
#: c-common.c:4713
#, gcc-internal-format
@@ -19077,7 +19077,7 @@ msgstr "asm-operand %d stämmer förmodligen inte med begränsningarna"
#: stmt.c:910
#, gcc-internal-format
msgid "use of memory input without lvalue in asm operand %d is deprecated"
-msgstr "användning av minnesindata utan lvärde i asm-operand %d undanbedes"
+msgstr "användning av minnesindata utan lvärde i asm-operand %d bör undvikas"
#: stmt.c:1057
#, gcc-internal-format
@@ -19234,22 +19234,22 @@ msgstr "%q+D är definierad men inte använd"
#: toplev.c:892 toplev.c:916
#, gcc-internal-format
msgid "%qs is deprecated (declared at %s:%d)"
-msgstr "%qs undanbedes (deklarerad vid %s:%d)"
+msgstr "%qs bör undvikas (deklarerad vid %s:%d)"
#: toplev.c:920
#, gcc-internal-format
msgid "type is deprecated (declared at %s:%d)"
-msgstr "typen undanbedes (deklarerad vid %s:%d)"
+msgstr "typen bör undvikas (deklarerad vid %s:%d)"
#: toplev.c:926
#, gcc-internal-format
msgid "%qs is deprecated"
-msgstr "%qs undanbedes"
+msgstr "%qs bör undvikas"
#: toplev.c:928
#, gcc-internal-format
msgid "type is deprecated"
-msgstr "type undanbedes"
+msgstr "typen bör undvikas"
#: toplev.c:1095
#, gcc-internal-format
@@ -21694,7 +21694,7 @@ msgstr "argument till %qs måste vara en 2-bitars literal utan tecken"
#: config/rs6000/rs6000.c:7259
#, gcc-internal-format
msgid "unresolved overload for Altivec builtin %qF"
-msgstr "ej upplöst överlastning för inbyggd Altivec %qF"
+msgstr "ej upplöst överlagring för inbyggd Altivec %qF"
#: config/rs6000/rs6000.c:7341
#, gcc-internal-format
@@ -21729,7 +21729,7 @@ msgstr "användning av %<long%> i AltiVec-typer är ogiltigt för 64-bitskod"
#: config/rs6000/rs6000.c:17299
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
-msgstr "användning av %<long%> i AltiVec-typer undanbedes, använd %<int%>"
+msgstr "användning av %<long%> i AltiVec-typer bör undvikas, använd %<int%>"
#: config/rs6000/rs6000.c:17303
#, gcc-internal-format
@@ -22307,7 +22307,7 @@ msgstr "ingen funktion som stämmer för anrop av %<%D(%A)%>"
#: cp/call.c:2800 cp/call.c:2858
#, gcc-internal-format
msgid "call of overloaded %<%D(%A)%> is ambiguous"
-msgstr "anrop av överlastad %<%D(%A)%> är tvetydigt"
+msgstr "anrop av överlagrad %<%D(%A)%> är tvetydigt"
#. It's no good looking for an overloaded operator() on a
#. pointer-to-member-function.
@@ -22522,7 +22522,7 @@ msgstr "ingen matchande funktion för anrop av %<%T::%s(%A)%#V%>"
#: cp/call.c:5404
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
-msgstr "anrop av överlastad %<%s(%A)%> är tvetydigt"
+msgstr "anrop av överlagrad %<%s(%A)%> är tvetydigt"
#: cp/call.c:5428
#, gcc-internal-format
@@ -22602,7 +22602,7 @@ msgstr "using-deklaration %q+D står i konflikt med en tidigare using-deklaration
#: cp/class.c:1061
#, gcc-internal-format
msgid "%q+#D cannot be overloaded"
-msgstr "%q+#D kan inte överlastas"
+msgstr "%q+#D kan inte överlagras"
#: cp/class.c:1062
#, gcc-internal-format
@@ -22880,7 +22880,7 @@ msgstr "språksträng %<\"%E\"%> känns inte igen"
#: cp/class.c:5714
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
-msgstr "det går inte att lösa upp överlastad funktion %qD baserat på konvertering till typ %qT"
+msgstr "det går inte att lösa upp överlagrad funktion %qD baserat på konvertering till typ %qT"
#: cp/class.c:5841
#, gcc-internal-format
@@ -22890,7 +22890,7 @@ msgstr "ingen match som konverterar funktionen %qD till typen %q#T"
#: cp/class.c:5864
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
-msgstr "konvertering av överlastad funktion %qD till typ %q#T är tvetydig"
+msgstr "konvertering av överlagrad funktion %qD till typ %q#T är tvetydig"
#: cp/class.c:5890
#, gcc-internal-format
@@ -23022,7 +23022,7 @@ msgstr "objekt %qE med ofullständig typ %qT kommer inte användas i %s"
#: cp/cvt.c:902
#, gcc-internal-format
msgid "%s cannot resolve address of overloaded function"
-msgstr "%s kan inte lösa upp adress till överlastad funktion"
+msgstr "%s kan inte lösa upp adress till överlagrad funktion"
#. Only warn when there is no &.
#: cp/cvt.c:908
@@ -23565,7 +23565,7 @@ msgstr "%qT har ingen icke-statisk medlem med namnet %qD"
#: cp/decl.c:4387
#, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
-msgstr "klamrar funt skalär initierare för typen %qT"
+msgstr "klamrar runt skalär initierare för typen %qT"
#: cp/decl.c:4465
#, gcc-internal-format
@@ -24427,7 +24427,7 @@ msgstr "konvertering till %s%s kommer aldrig använda en typkonverteringsoperator
#: cp/decl.c:9012
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
-msgstr "ISO C++ förhindrar överlastning av operatorn ?:"
+msgstr "ISO C++ förhindrar överlagring av operatorn ?:"
#: cp/decl.c:9015
#, gcc-internal-format
@@ -24848,7 +24848,7 @@ msgstr "kastar NULL, som har heltals-, inte pekartyp"
#: cp/except.c:631 cp/init.c:1929
#, gcc-internal-format
msgid "%qD should never be overloaded"
-msgstr "%qD skall aldrig överlastas"
+msgstr "%qD skall aldrig överlagras"
#: cp/except.c:698
#, gcc-internal-format
@@ -25242,7 +25242,7 @@ msgstr "det finns inga argument till %qD som beror på en mallparameter, så en de
#: cp/lex.c:651
#, gcc-internal-format
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
-msgstr "(om du använder %<-fpermissive%>, kommer G++ acceptera din kod, men det avrådes från att tillåta användning av ett odeklarerat namn)"
+msgstr "(om du använder %<-fpermissive%>, kommer G++ acceptera din kod, men man bör undvika att tillåta användning av ett odeklarerat namn)"
#: cp/mangle.c:2139
#, gcc-internal-format
@@ -25562,7 +25562,7 @@ msgstr "XXX lämnar pop_everything ()\n"
#: cp/parser.c:1875
#, gcc-internal-format
msgid "minimum/maximum operators are deprecated"
-msgstr "minimum-/maximumoperatorer undanbedes"
+msgstr "minimum-/maximumoperatorer bör undvikas"
#: cp/parser.c:1895
#, gcc-internal-format
@@ -25905,7 +25905,7 @@ msgstr "filen tar slut i standardargument"
#: cp/parser.c:12370
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
-msgstr "undanbedd användning av standardargument för parametrar till annat än funktioner"
+msgstr "användning av standardargument för parametrar till annat än funktioner bör undvikas"
#: cp/parser.c:12373
#, gcc-internal-format
@@ -26728,7 +26728,7 @@ msgstr "%qT är en oåtkomlig bas till %qT"
#: cp/search.c:1847
#, gcc-internal-format
msgid "deprecated covariant return type for %q+#D"
-msgstr "undanbedd kovariant returtyp för %q+#D"
+msgstr "kovariant returtyp för %q+#D bör undvikas"
#: cp/search.c:1849 cp/search.c:1864 cp/search.c:1869
#, gcc-internal-format
@@ -27013,7 +27013,7 @@ msgstr "ogiltig användning av icke-statisk medlemsfunktion"
#: cp/typeck.c:1502
#, gcc-internal-format
msgid "deprecated conversion from string constant to %qT'"
-msgstr "undanbedd konvertering från strängkonstant till %qT'"
+msgstr "konvertering från strängkonstant till %qT' bör undvikas"
#: cp/typeck.c:1613 cp/typeck.c:1961
#, gcc-internal-format
@@ -27155,7 +27155,7 @@ msgstr "för få argument till funktion"
#: cp/typeck.c:2885 cp/typeck.c:2895
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
-msgstr "antar typkonvertering till %qT från överlastad funktion"
+msgstr "antar typkonvertering till %qT från överlagrad funktion"
#: cp/typeck.c:2963
#, gcc-internal-format
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cb003bfce47..4db13c2262b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,21 @@
+2007-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ PR target/31641
+ * gcc.c-torture/compile/pr31641.c: New testcase.
+
+2007-04-22 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR middle-end/31448
+ * gcc.c-torture/execute/pr31448.c: New testcase.
+
+2007-04-20 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.target/i386/ordcmp-1.c: New test.
+ * gcc.target/i386/unordcmp-1.c: New test.
+
+ PR tree-optimization/31632
+ * gcc.c-torture/compile/20070419-1.c: New test.
+
2007-04-17 Simon Martin <simartin@users.sourceforge.net>
PR c++/31517
diff --git a/gcc/testsuite/g++.old-deja/g++.warn/flow1.C b/gcc/testsuite/g++.old-deja/g++.warn/flow1.C
index 61f6a554970..e69de29bb2d 100644
--- a/gcc/testsuite/g++.old-deja/g++.warn/flow1.C
+++ b/gcc/testsuite/g++.old-deja/g++.warn/flow1.C
@@ -1,14 +0,0 @@
-// { dg-do assemble }
-// { dg-options "-Wreturn-type" }
-// Test that we don't get a warning about flowing off the end.
-
-struct A {
- ~A ();
-};
-
-int f()
-{
- A a1[2];
- A a2[2];
- return 1234567;
-}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20070419-1.c b/gcc/testsuite/gcc.c-torture/compile/20070419-1.c
new file mode 100644
index 00000000000..ea23bf8bdc0
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20070419-1.c
@@ -0,0 +1,17 @@
+/* PR tree-optimization/31632 */
+
+struct S
+{
+ long int l;
+ void *m;
+};
+
+int
+foo (struct S *x)
+{
+ unsigned long a;
+ a = x->l;
+ if (a <= ((void *) 0))
+ x->m = 0;
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr31448.c b/gcc/testsuite/gcc.c-torture/execute/pr31448.c
new file mode 100644
index 00000000000..720ba926eaa
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr31448.c
@@ -0,0 +1,36 @@
+/* PR middle-end/31448, this used to ICE during expand because
+ reduce_to_bit_field_precision was not ready to handle constants. */
+
+typedef struct _st {
+ int iIndex : 24;
+ int iIndex1 : 24;
+} st;
+st *next;
+void g(void)
+{
+ st *next = 0;
+ int nIndx;
+ const static int constreg[] = { 0,};
+ nIndx = 0;
+ next->iIndex = constreg[nIndx];
+}
+void f(void)
+{
+ int nIndx;
+ const static int constreg[] = { 0xFEFEFEFE,};
+ nIndx = 0;
+ next->iIndex = constreg[nIndx];
+ next->iIndex1 = constreg[nIndx];
+}
+int main(void)
+{
+ st a;
+ next = &a;
+ f();
+ if (next->iIndex != 0xFFFEFEFE)
+ __builtin_abort ();
+ if (next->iIndex1 != 0xFFFEFEFE)
+ __builtin_abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/ordcmp-1.c b/gcc/testsuite/gcc.target/i386/ordcmp-1.c
new file mode 100644
index 00000000000..1a70e19192d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/ordcmp-1.c
@@ -0,0 +1,36 @@
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O2 -msse2" } */
+/* { dg-final { scan-assembler "cmpordss" } } */
+/* { dg-final { scan-assembler "cmpordps" } } */
+/* { dg-final { scan-assembler "cmpordsd" } } */
+/* { dg-final { scan-assembler "cmpordpd" } } */
+/* { dg-final { scan-assembler-not "cmpunordss" } } */
+/* { dg-final { scan-assembler-not "cmpunordps" } } */
+/* { dg-final { scan-assembler-not "cmpunordsd" } } */
+/* { dg-final { scan-assembler-not "cmpunordpd" } } */
+
+#include <emmintrin.h>
+
+__m128
+f1 (__m128 x, __m128 y)
+{
+ return _mm_cmpord_ss (x, y);
+}
+
+__m128
+f2 (__m128 x, __m128 y)
+{
+ return _mm_cmpord_ps (x, y);
+}
+
+__m128d
+f3 (__m128d x, __m128d y)
+{
+ return _mm_cmpord_sd (x, y);
+}
+
+__m128d
+f4 (__m128d x, __m128d y)
+{
+ return _mm_cmpord_pd (x, y);
+}
diff --git a/gcc/testsuite/gcc.target/i386/unordcmp-1.c b/gcc/testsuite/gcc.target/i386/unordcmp-1.c
new file mode 100644
index 00000000000..3123fe9ada2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/unordcmp-1.c
@@ -0,0 +1,36 @@
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O2 -msse2" } */
+/* { dg-final { scan-assembler "cmpunordss" } } */
+/* { dg-final { scan-assembler "cmpunordps" } } */
+/* { dg-final { scan-assembler "cmpunordsd" } } */
+/* { dg-final { scan-assembler "cmpunordpd" } } */
+/* { dg-final { scan-assembler-not "cmpordss" } } */
+/* { dg-final { scan-assembler-not "cmpordps" } } */
+/* { dg-final { scan-assembler-not "cmpordsd" } } */
+/* { dg-final { scan-assembler-not "cmpordpd" } } */
+
+#include <emmintrin.h>
+
+__m128
+f1 (__m128 x, __m128 y)
+{
+ return _mm_cmpunord_ss (x, y);
+}
+
+__m128
+f2 (__m128 x, __m128 y)
+{
+ return _mm_cmpunord_ps (x, y);
+}
+
+__m128d
+f3 (__m128d x, __m128d y)
+{
+ return _mm_cmpunord_sd (x, y);
+}
+
+__m128d
+f4 (__m128d x, __m128d y)
+{
+ return _mm_cmpunord_pd (x, y);
+}
diff --git a/gcc/version.c b/gcc/version.c
index af2558dfd95..56d718f41de 100644
--- a/gcc/version.c
+++ b/gcc/version.c
@@ -8,7 +8,7 @@
in parentheses. You may also wish to include a number indicating
the revision of your modified compiler. */
-#define VERSUFFIX " (Red Hat 4.1.2-9)"
+#define VERSUFFIX " (Red Hat 4.1.2-11)"
/* This is the location of the online document giving instructions for
reporting bugs. If you distribute a modified version of GCC,
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 4e3d396bea4..c72f26f93c4 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,9 @@
+2007-04-23 Tom Tromey <tromey@redhat.com>
+
+ PR preprocessor/30468:
+ * mkdeps.c (apply_vpath): Strip successive '/'s if we stripped
+ './'.
+
2006-12-28 Tom Tromey <tromey@redhat.com>
PR preprocessor/30001:
diff --git a/libcpp/mkdeps.c b/libcpp/mkdeps.c
index 3e2c4d82e96..8aa96c529e3 100644
--- a/libcpp/mkdeps.c
+++ b/libcpp/mkdeps.c
@@ -1,5 +1,5 @@
/* Dependency generator for Makefile fragments.
- Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2003, 2007 Free Software Foundation, Inc.
Contributed by Zack Weinberg, Mar 2000
This program is free software; you can redistribute it and/or modify it
@@ -141,7 +141,13 @@ apply_vpath (struct deps *d, const char *t)
/* Remove leading ./ in any case. */
while (t[0] == '.' && IS_DIR_SEPARATOR (t[1]))
- t += 2;
+ {
+ t += 2;
+ /* If we removed a leading ./, then also remove any /s after the
+ first. */
+ while (IS_DIR_SEPARATOR (t[0]))
+ ++t;
+ }
return t;
}
diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index b244c46bd28..febc439ac13 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,16 @@
+2007-04-20 Richard Henderson <rth@redhat.com>
+
+ * 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.
+
2007-04-03 Jakub Jelinek <jakub@redhat.com>
* src/closures.c: Include sys/statfs.h.
diff --git a/libffi/configure b/libffi/configure
index 0c32170a753..583d553c45b 100755
--- a/libffi/configure
+++ b/libffi/configure
@@ -5393,7 +5393,11 @@ sparc*-sun-*) TARGET=SPARC; TARGETDIR=sparc;;
sparc-*-linux* | sparc-*-netbsdelf* | sparc-*-knetbsd*-gnu) TARGET=SPARC; TARGETDIR=sparc;;
sparc*-*-rtems*) TARGET=SPARC; TARGETDIR=sparc;;
sparc64-*-linux* | sparc64-*-freebsd* | sparc64-*-netbsd* | sparc64-*-knetbsd*-gnu) TARGET=SPARC; TARGETDIR=sparc;;
-alpha*-*-linux* | alpha*-*-osf* | alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu | alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu) TARGET=ALPHA; TARGETDIR=alpha;;
+alpha*-*-linux* | alpha*-*-osf* | alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu | alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu)
+ TARGET=ALPHA; TARGETDIR=alpha
+ # Support 128-bit long double, changable via command-line switch.
+ HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)'
+ ;;
ia64*-*-*) TARGET=IA64; TARGETDIR=ia64;;
m32r*-*-linux* ) TARGET=M32R; TARGETDIR=m32r;;
m68k-*-linux*) TARGET=M68K; TARGETDIR=m68k;;
@@ -7124,15 +7128,17 @@ _ACEOF
# Also AC_SUBST this variable for ffi.h.
-HAVE_LONG_DOUBLE=0
-if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
- if test $ac_cv_sizeof_long_double != 0; then
- HAVE_LONG_DOUBLE=1
+if test -z "$HAVE_LONG_DOUBLE"; then
+ HAVE_LONG_DOUBLE=0
+ if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
+ if test $ac_cv_sizeof_long_double != 0; then
+ HAVE_LONG_DOUBLE=1
cat >>confdefs.h <<\_ACEOF
#define HAVE_LONG_DOUBLE 1
_ACEOF
+ fi
fi
fi
diff --git a/libffi/configure.ac b/libffi/configure.ac
index e80c262dc32..4446582f8b7 100644
--- a/libffi/configure.ac
+++ b/libffi/configure.ac
@@ -58,7 +58,11 @@ sparc*-sun-*) TARGET=SPARC; TARGETDIR=sparc;;
sparc-*-linux* | sparc-*-netbsdelf* | sparc-*-knetbsd*-gnu) TARGET=SPARC; TARGETDIR=sparc;;
sparc*-*-rtems*) TARGET=SPARC; TARGETDIR=sparc;;
sparc64-*-linux* | sparc64-*-freebsd* | sparc64-*-netbsd* | sparc64-*-knetbsd*-gnu) TARGET=SPARC; TARGETDIR=sparc;;
-alpha*-*-linux* | alpha*-*-osf* | alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu | alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu) TARGET=ALPHA; TARGETDIR=alpha;;
+alpha*-*-linux* | alpha*-*-osf* | alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu | alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu)
+ TARGET=ALPHA; TARGETDIR=alpha
+ # Support 128-bit long double, changable via command-line switch.
+ HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)'
+ ;;
ia64*-*-*) TARGET=IA64; TARGETDIR=ia64;;
m32r*-*-linux* ) TARGET=M32R; TARGETDIR=m32r;;
m68k-*-linux*) TARGET=M68K; TARGETDIR=m68k;;
@@ -130,11 +134,13 @@ AC_CHECK_SIZEOF(double)
AC_CHECK_SIZEOF(long double)
# Also AC_SUBST this variable for ffi.h.
-HAVE_LONG_DOUBLE=0
-if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
- if test $ac_cv_sizeof_long_double != 0; then
- HAVE_LONG_DOUBLE=1
- AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the long double type and it is bigger than a double])
+if test -z "$HAVE_LONG_DOUBLE"; then
+ HAVE_LONG_DOUBLE=0
+ if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
+ if test $ac_cv_sizeof_long_double != 0; then
+ HAVE_LONG_DOUBLE=1
+ AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the long double type and it is bigger than a double])
+ fi
fi
fi
AC_SUBST(HAVE_LONG_DOUBLE)
diff --git a/libffi/include/ffi.h.in b/libffi/include/ffi.h.in
index 9f704343b3d..e7a7fd2878e 100644
--- a/libffi/include/ffi.h.in
+++ b/libffi/include/ffi.h.in
@@ -145,9 +145,13 @@ extern ffi_type ffi_type_uint64;
extern ffi_type ffi_type_sint64;
extern ffi_type ffi_type_float;
extern ffi_type ffi_type_double;
-extern ffi_type ffi_type_longdouble;
extern ffi_type ffi_type_pointer;
+#if @HAVE_LONG_DOUBLE@
+extern ffi_type ffi_type_longdouble;
+#else
+#define ffi_type_longdouble ffi_type_double
+#endif
typedef enum {
FFI_OK = 0,
diff --git a/libffi/src/alpha/ffi.c b/libffi/src/alpha/ffi.c
index d139423f90e..cfa7b69e839 100644
--- a/libffi/src/alpha/ffi.c
+++ b/libffi/src/alpha/ffi.c
@@ -25,11 +25,22 @@
#include <ffi.h>
#include <ffi_common.h>
-
#include <stdlib.h>
-extern void ffi_call_osf(void *, unsigned long, unsigned, void *, void (*)());
-extern void ffi_closure_osf(void);
+/* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE;
+ all further uses in this file will refer to the 128-bit type. */
+#if defined(__LONG_DOUBLE_128__)
+# if FFI_TYPE_LONGDOUBLE != 4
+# error FFI_TYPE_LONGDOUBLE out of date
+# endif
+#else
+# undef FFI_TYPE_LONGDOUBLE
+# define FFI_TYPE_LONGDOUBLE 4
+#endif
+
+extern void ffi_call_osf(void *, unsigned long, unsigned, void *, void (*)())
+ FFI_HIDDEN;
+extern void ffi_closure_osf(void) FFI_HIDDEN;
ffi_status
@@ -49,6 +60,11 @@ ffi_prep_cif_machdep(ffi_cif *cif)
cif->flags = cif->rtype->type;
break;
+ case FFI_TYPE_LONGDOUBLE:
+ /* 128-bit long double is returned in memory, like a struct. */
+ cif->flags = FFI_TYPE_STRUCT;
+ break;
+
default:
cif->flags = FFI_TYPE_INT;
break;
@@ -57,6 +73,7 @@ ffi_prep_cif_machdep(ffi_cif *cif)
return FFI_OK;
}
+
void
ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
{
@@ -64,8 +81,6 @@ ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
long i, avn;
ffi_type **arg_types;
- FFI_ASSERT (cif->abi == FFI_OSF);
-
/* If the return value is a struct and we don't have a return
value address then we need to make one. */
if (rvalue == NULL && cif->flags == FFI_TYPE_STRUCT)
@@ -84,6 +99,8 @@ ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
while (i < avn)
{
+ size_t size = (*arg_types)->size;
+
switch ((*arg_types)->type)
{
case FFI_TYPE_SINT8:
@@ -129,6 +146,12 @@ ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
*(double *) argp = *(double *)(* avalue);
break;
+ case FFI_TYPE_LONGDOUBLE:
+ /* 128-bit long double is passed by reference. */
+ *(long double **) argp = (long double *)(* avalue);
+ size = sizeof (long double *);
+ break;
+
case FFI_TYPE_STRUCT:
memcpy(argp, *avalue, (*arg_types)->size);
break;
@@ -137,7 +160,7 @@ ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
FFI_ASSERT(0);
}
- argp += ALIGN((*arg_types)->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG;
+ argp += ALIGN(size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG;
i++, arg_types++, avalue++;
}
@@ -154,8 +177,6 @@ ffi_prep_closure_loc (ffi_closure* closure,
{
unsigned int *tramp;
- FFI_ASSERT (cif->abi == FFI_OSF);
-
tramp = (unsigned int *) &closure->tramp[0];
tramp[0] = 0x47fb0401; /* mov $27,$1 */
tramp[1] = 0xa77b0010; /* ldq $27,16($27) */
@@ -178,7 +199,8 @@ ffi_prep_closure_loc (ffi_closure* closure,
return FFI_OK;
}
-int
+
+long FFI_HIDDEN
ffi_closure_osf_inner(ffi_closure *closure, void *rvalue, unsigned long *argp)
{
ffi_cif *cif;
@@ -206,6 +228,8 @@ ffi_closure_osf_inner(ffi_closure *closure, void *rvalue, unsigned long *argp)
/* Grab the addresses of the arguments from the stack frame. */
while (i < avn)
{
+ size_t size = arg_types[i]->size;
+
switch (arg_types[i]->type)
{
case FFI_TYPE_SINT8:
@@ -237,16 +261,22 @@ ffi_closure_osf_inner(ffi_closure *closure, void *rvalue, unsigned long *argp)
avalue[i] = &argp[argn - (argn < 6 ? 6 : 0)];
break;
+ case FFI_TYPE_LONGDOUBLE:
+ /* 128-bit long double is passed by reference. */
+ avalue[i] = (long double *) argp[argn];
+ size = sizeof (long double *);
+ break;
+
default:
- FFI_ASSERT(0);
+ abort ();
}
- argn += ALIGN(arg_types[i]->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG;
+ argn += ALIGN(size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG;
i++;
}
/* Invoke the closure. */
- (closure->fun) (cif, rvalue, avalue, closure->user_data);
+ closure->fun (cif, rvalue, avalue, closure->user_data);
/* Tell ffi_closure_osf how to perform return type promotions. */
return cif->rtype->type;
diff --git a/libffi/src/alpha/osf.S b/libffi/src/alpha/osf.S
index 36052b3de09..a6a7b1fc249 100644
--- a/libffi/src/alpha/osf.S
+++ b/libffi/src/alpha/osf.S
@@ -1,10 +1,8 @@
/* -----------------------------------------------------------------------
- osf.S - Copyright (c) 1998, 2001 Red Hat
+ osf.S - Copyright (c) 1998, 2001, 2007 Red Hat
Alpha/OSF Foreign Function Interface
- $Id: osf.S,v 1.1.1.1 1998/11/29 16:48:16 green Exp $
-
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
``Software''), to deal in the Software without restriction, including
@@ -42,6 +40,8 @@
.align 3
.globl ffi_call_osf
.ent ffi_call_osf
+ FFI_HIDDEN(ffi_call_osf)
+
ffi_call_osf:
.frame $15, 32, $26, 0
.mask 0x4008000, -32
@@ -129,6 +129,8 @@ $LFE1:
.align 3
.globl ffi_closure_osf
.ent ffi_closure_osf
+ FFI_HIDDEN(ffi_closure_osf)
+
ffi_closure_osf:
.frame $30, 16*8, $26, 0
.mask 0x4000000, -16*8
@@ -265,7 +267,7 @@ $load_table:
.gprel32 $load_32 # FFI_TYPE_INT
.gprel32 $load_float # FFI_TYPE_FLOAT
.gprel32 $load_double # FFI_TYPE_DOUBLE
- .gprel32 $load_double # FFI_TYPE_LONGDOUBLE
+ .gprel32 $load_none # FFI_TYPE_LONGDOUBLE
.gprel32 $load_u8 # FFI_TYPE_UINT8
.gprel32 $load_s8 # FFI_TYPE_SINT8
.gprel32 $load_u16 # FFI_TYPE_UINT16
diff --git a/libffi/src/types.c b/libffi/src/types.c
index b65787359fe..ad7ef6044a2 100644
--- a/libffi/src/types.c
+++ b/libffi/src/types.c
@@ -57,4 +57,17 @@ FFI_TYPEDEF(pointer, void*, FFI_TYPE_POINTER);
FFI_TYPEDEF(float, float, FFI_TYPE_FLOAT);
FFI_TYPEDEF(double, double, FFI_TYPE_DOUBLE);
+
+#ifdef __alpha__
+/* Even if we're not configured to default to 128-bit long double,
+ maintain binary compatibility, as -mlong-double-128 can be used
+ at any time. */
+/* Validate the hard-coded number below. */
+# if defined(__LONG_DOUBLE_128__) && FFI_TYPE_LONGDOUBLE != 4
+# error FFI_TYPE_LONGDOUBLE out of date
+# endif
+# undef ffi_type_longdouble
+ffi_type ffi_type_longdouble = { 16, 16, 4, NULL };
+#elif FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
FFI_TYPEDEF(longdouble, long double, FFI_TYPE_LONGDOUBLE);
+#endif
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 93c6f3aee08..f371608b515 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2007-04-23 Matthias Klose <doko@debian.org>
+
+ Backport from mainline:
+ 2007-02-27 Richard Guenther <rguenther@suse.de>
+
+ * acinclude.m4: Adjust regular expression for ld version extraction.
+ * configure: Regenerate.
+
2007-02-21 Mark Mitchell <mark@codesourcery.com>
* testsuite/lib/libstdc++.exp (libstdc++_init): Compile testglue
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 597270f7f02..3c059d4acfe 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -225,7 +225,7 @@ AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES], [
if test x"$with_gnu_ld" = x"yes"; then
changequote(,)
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
changequote([,])
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 8da67da5110..e814736f976 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -8281,7 +8281,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -53122,7 +53122,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -74456,7 +74456,7 @@ done
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -75953,7 +75953,7 @@ done
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -77326,7 +77326,7 @@ done
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -79486,7 +79486,7 @@ done
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -80305,7 +80305,7 @@ done
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -81680,7 +81680,7 @@ done
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -83447,7 +83447,7 @@ echo "${ECHO_T}$glibcxx_cv_WRITEV" >&6
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -84664,7 +84664,7 @@ _ACEOF
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -85665,7 +85665,7 @@ done
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`