summaryrefslogtreecommitdiff
path: root/debian/patches/svn-updates.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/svn-updates.diff')
-rw-r--r--debian/patches/svn-updates.diff406
1 files changed, 398 insertions, 8 deletions
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
index c195ec6..61a6eb2 100644
--- a/debian/patches/svn-updates.diff
+++ b/debian/patches/svn-updates.diff
@@ -1,10 +1,10 @@
-# DP: updates from the 4.7 branch upto 20130530 (r199435).
+# DP: updates from the 4.7 branch upto 20130614 (r200084).
last_updated()
{
cat > ${dir}LAST_UPDATED <<EOF
-Thu May 30 08:55:17 CEST 2013
-Thu May 30 06:55:17 UTC 2013 (revision 199435)
+Fri Jun 14 09:56:44 CEST 2013
+Fri Jun 14 07:56:44 UTC 2013 (revision 200084)
EOF
}
@@ -149,6 +149,19 @@ Index: libstdc++-v3/acinclude.m4
AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
AC_MSG_CHECKING([for clock_gettime, nanosleep and sched_yield])
+Index: libgcc/config.host
+===================================================================
+--- a/src/libgcc/config.host (.../tags/gcc_4_7_3_release)
++++ b/src/libgcc/config.host (.../branches/gcc-4_7-branch)
+@@ -315,7 +315,7 @@
+ md_unwind_header=alpha/vms-unwind.h
+ ;;
+ arm-wrs-vxworks)
+- tmake_file="$tmake_file arm/t-arm arm/t-vxworks t-fdpbit"
++ tmake_file="$tmake_file arm/t-arm arm/t-vxworks t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
+ extra_parts="$extra_parts crti.o crtn.o"
+ ;;
+ arm*-*-freebsd*)
Index: libgcc/Makefile.in
===================================================================
--- a/src/libgcc/Makefile.in (.../tags/gcc_4_7_3_release)
@@ -167,7 +180,20 @@ Index: libgcc/ChangeLog
===================================================================
--- a/src/libgcc/ChangeLog (.../tags/gcc_4_7_3_release)
+++ b/src/libgcc/ChangeLog (.../branches/gcc-4_7-branch)
-@@ -1,3 +1,18 @@
+@@ -1,3 +1,31 @@
++2013-06-08 Walter Lee <walt@tilera.com>
++
++ Backport from mainline:
++ 2013-06-08 Walter Lee <walt@tilera.com>
++
++ * config/tilepro/atomic.h: Don't include stdint.h or features.h.
++ Replace int64_t with long long. Add __extension__ where
++ appropriate.
++
++2013-06-06 Douglas B Rupp <rupp@adacore.com>
++
++ * config.host (arm-wrs-vxworks): Configure with other soft float.
++
+2013-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
+
+ Backport from mainline:
@@ -186,6 +212,124 @@ Index: libgcc/ChangeLog
2013-04-11 Release Manager
* GCC 4.7.3 released.
+Index: libgcc/config/tilepro/atomic.h
+===================================================================
+--- a/src/libgcc/config/tilepro/atomic.h (.../tags/gcc_4_7_3_release)
++++ b/src/libgcc/config/tilepro/atomic.h (.../branches/gcc-4_7-branch)
+@@ -1,6 +1,5 @@
+ /* Macros for atomic functionality for tile.
+- Copyright (C) 2011, 2012
+- Free Software Foundation, Inc.
++ Copyright (C) 2011-2013 Free Software Foundation, Inc.
+ Contributed by Walter Lee (walt@tilera.com)
+
+ This file is free software; you can redistribute it and/or modify it
+@@ -93,8 +92,6 @@
+ compare-and-exchange routine, so may be potentially less efficient. */
+ #endif
+
+-#include <stdint.h>
+-#include <features.h>
+ #ifdef __tilegx__
+ #include <arch/spr_def.h>
+ #else
+@@ -123,9 +120,9 @@
+
+ /* 64-bit integer compare-and-exchange. */
+ static __inline __attribute__ ((always_inline))
+- int64_t arch_atomic_val_compare_and_exchange_8 (volatile int64_t * mem,
+- int64_t oldval,
+- int64_t newval)
++ long long arch_atomic_val_compare_and_exchange_8 (volatile long long
++ *mem, long long oldval,
++ long long newval)
+ {
+ #ifdef __tilegx__
+ __insn_mtspr (SPR_CMPEXCH_VALUE, oldval);
+@@ -140,7 +137,7 @@
+ "R04" (newval_lo), "R05" (newval_hi),
+ "m" (*mem):"r20", "r21", "r22", "r23", "r24", "r25",
+ "r26", "r27", "r28", "r29", "memory");
+- return ((uint64_t) result_hi) << 32 | result_lo;
++ return ((long long) result_hi) << 32 | result_lo;
+ #endif
+ }
+
+@@ -151,11 +148,11 @@
+
+
+ #define arch_atomic_val_compare_and_exchange(mem, o, n) \
+- ({ \
++ __extension__ ({ \
+ (__typeof(*(mem)))(__typeof(*(mem)-*(mem))) \
+ ((sizeof(*(mem)) == 8) ? \
+ arch_atomic_val_compare_and_exchange_8( \
+- (volatile int64_t*)(mem), (__typeof((o)-(o)))(o), \
++ (volatile long long*)(mem), (__typeof((o)-(o)))(o), \
+ (__typeof((n)-(n)))(n)) : \
+ (sizeof(*(mem)) == 4) ? \
+ arch_atomic_val_compare_and_exchange_4( \
+@@ -165,7 +162,7 @@
+ })
+
+ #define arch_atomic_bool_compare_and_exchange(mem, o, n) \
+- ({ \
++ __extension__ ({ \
+ __typeof(o) __o = (o); \
+ __builtin_expect( \
+ __o == arch_atomic_val_compare_and_exchange((mem), __o, (n)), 1); \
+@@ -175,7 +172,7 @@
+ /* Loop with compare_and_exchange until we guess the correct value.
+ Normally "expr" will be an expression using __old and __value. */
+ #define __arch_atomic_update_cmpxchg(mem, value, expr) \
+- ({ \
++ __extension__ ({ \
+ __typeof(value) __value = (value); \
+ __typeof(*(mem)) *__mem = (mem), __old = *__mem, __guess; \
+ do { \
+@@ -190,12 +187,14 @@
+ /* Generic atomic op with 8- or 4-byte variant.
+ The _mask, _addend, and _expr arguments are ignored on tilegx. */
+ #define __arch_atomic_update(mem, value, op, _mask, _addend, _expr) \
+- ({ \
++ __extension__ ({ \
+ ((__typeof(*(mem))) \
+ ((sizeof(*(mem)) == 8) ? (__typeof(*(mem)-*(mem)))__insn_##op( \
+- (void *)(mem), (int64_t)(__typeof((value)-(value)))(value)) : \
++ (volatile void *)(mem), \
++ (long long)(__typeof((value)-(value)))(value)) : \
+ (sizeof(*(mem)) == 4) ? (int)__insn_##op##4( \
+- (void *)(mem), (int32_t)(__typeof((value)-(value)))(value)) : \
++ (volatile void *)(mem), \
++ (int)(__typeof((value)-(value)))(value)) : \
+ __arch_atomic_error_bad_argument_size())); \
+ })
+
+@@ -225,7 +224,7 @@
+ /* Generic atomic op with 8- or 4-byte variant.
+ The _op argument is ignored on tilepro. */
+ #define __arch_atomic_update(mem, value, _op, mask, addend, expr) \
+- ({ \
++ __extension__ ({ \
+ (__typeof(*(mem)))(__typeof(*(mem)-*(mem))) \
+ ((sizeof(*(mem)) == 8) ? \
+ __arch_atomic_update_cmpxchg((mem), (value), (expr)) : \
+@@ -264,13 +263,13 @@
+ __arch_atomic_update_cmpxchg(mem, mask, ~(__old & __value))
+
+ #define arch_atomic_bit_set(mem, bit) \
+- ({ \
++ __extension__ ({ \
+ __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit); \
+ __mask & arch_atomic_or((mem), __mask); \
+ })
+
+ #define arch_atomic_bit_clear(mem, bit) \
+- ({ \
++ __extension__ ({ \
+ __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit); \
+ __mask & arch_atomic_and((mem), ~__mask); \
+ })
Index: libgcc/config/arm/linux-atomic.c
===================================================================
--- a/src/libgcc/config/arm/linux-atomic.c (.../tags/gcc_4_7_3_release)
@@ -320,7 +464,7 @@ Index: gcc/DATESTAMP
+++ b/src/gcc/DATESTAMP (.../branches/gcc-4_7-branch)
@@ -1 +1 @@
-20130411
-+20130530
++20130614
Index: gcc/builtins.c
===================================================================
--- a/src/gcc/builtins.c (.../tags/gcc_4_7_3_release)
@@ -347,7 +491,35 @@ Index: gcc/ChangeLog
===================================================================
--- a/src/gcc/ChangeLog (.../tags/gcc_4_7_3_release)
+++ b/src/gcc/ChangeLog (.../branches/gcc-4_7-branch)
-@@ -1,3 +1,220 @@
+@@ -1,3 +1,248 @@
++2013-06-07 Uros Bizjak <ubizjak@gmail.com>
++
++ Backport from mainline
++ 2013-06-10 Uros Bizjak <ubizjak@gmail.com>
++
++ * config/alpha/alpha.c (alpha_emit_xfloating_compare): Also use
++ cmp_code to construct REG_EQUAL note.
++
++ Backport from mainline
++ 2013-06-05 Uros Bizjak <ubizjak@gmail.com>
++
++ * config/alpha/alpha.c (alpha_emit_conditional_move): Swap all
++ GE, GT, GEU and GTU compares, modulo DImode compares with zero.
++
++ Backport from mainline
++ 2013-05-23 Uros Bizjak <ubizjak@gmail.com>
++
++ PR target/57379
++ * config/alpha/alpha.md (unspec): Add UNSPEC_XFLT_COMPARE.
++ * config/alpha/alpha.c (alpha_emit_xfloating_compare): Construct
++ REG_EQUAL note as UNSPEC_XFLT_COMPARE unspec.
++
++2013-06-09 Jakub Jelinek <jakub@redhat.com>
++
++ PR target/57568
++ * config/i386/i386.md (TARGET_READ_MODIFY_WRITE peepholes): Ensure
++ that operands[2] doesn't overlap with operands[0].
++
+2013-05-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/57356
@@ -904,6 +1076,40 @@ Index: gcc/testsuite/gfortran.dg/size_kind_2.f90
+! { dg-final { scan-tree-dump "var2 = 4294967300;" "original" } }
+! { dg-final { scan-tree-dump "var3 = 2147483650;" "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
+Index: gcc/testsuite/gfortran.dg/do_5.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/do_5.f90 (.../tags/gcc_4_7_3_release)
++++ b/src/gcc/testsuite/gfortran.dg/do_5.f90 (.../branches/gcc-4_7-branch)
+@@ -0,0 +1,29 @@
++! { dg-do compile }
++!
++! PR fortran/54370
++!
++! The following program was ICEing at tree-check time
++! "L()" was regarded as default-kind logical.
++!
++! Contributed by Kirill Chilikin
++!
++ MODULE M
++ CONTAINS
++
++ LOGICAL(C_BOOL) FUNCTION L() BIND(C)
++ USE, INTRINSIC :: ISO_C_BINDING
++ L = .FALSE.
++ END FUNCTION
++
++ LOGICAL(8) FUNCTION L2() BIND(C) ! { dg-warning "may not be a C interoperable kind but it is bind" }
++ L2 = .FALSE._8
++ END FUNCTION
++
++ SUBROUTINE S()
++ DO WHILE (L())
++ ENDDO
++ DO WHILE (L2())
++ ENDDO
++ END
++
++ END
Index: gcc/testsuite/gfortran.dg/proc_ptr_41.f90
===================================================================
--- a/src/gcc/testsuite/gfortran.dg/proc_ptr_41.f90 (.../tags/gcc_4_7_3_release)
@@ -994,6 +1200,45 @@ Index: gcc/testsuite/gfortran.dg/namelist_81.f90
+call abort()
+ 60 close(99)
+end
+Index: gcc/testsuite/gfortran.dg/typebound_override_4.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/typebound_override_4.f90 (.../tags/gcc_4_7_3_release)
++++ b/src/gcc/testsuite/gfortran.dg/typebound_override_4.f90 (.../branches/gcc-4_7-branch)
+@@ -0,0 +1,34 @@
++! { dg-do compile }
++!
++! PR 57217: [4.7/4.8/4.9 Regression][OOP] Accepts invalid TBP overriding - lacking arguments check
++!
++! Contributed by Salvatore Filippone <filippone.salvatore@gmail.com>
++
++module base_mod
++ implicit none
++ type base_type
++ contains
++ procedure, pass(map) :: clone => base_clone
++ end type
++contains
++ subroutine base_clone(map,mapout)
++ class(base_type) :: map
++ class(base_type) :: mapout
++ end subroutine
++end module
++
++module r_mod
++ use base_mod
++ implicit none
++ type, extends(base_type) :: r_type
++ contains
++ procedure, pass(map) :: clone => r_clone ! { dg-error "Type/rank mismatch in argument" }
++ end type
++contains
++ subroutine r_clone(map,mapout)
++ class(r_type) :: map
++ class(r_type) :: mapout
++ end subroutine
++end module
++
++! { dg-final { cleanup-modules "base_mod r_mod" } }
Index: gcc/testsuite/gfortran.dg/namelist_78.f90
===================================================================
--- a/src/gcc/testsuite/gfortran.dg/namelist_78.f90 (.../tags/gcc_4_7_3_release)
@@ -1033,6 +1278,23 @@ Index: gcc/testsuite/gfortran.dg/namelist_78.f90
+ if (der%d(1)%k%j /= 1) call abort
+ if (der%d(2)%k%j /= 2) call abort
+end program namelist
+Index: gcc/testsuite/gcc.c-torture/execute/pr57568.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/execute/pr57568.c (.../tags/gcc_4_7_3_release)
++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr57568.c (.../branches/gcc-4_7-branch)
+@@ -0,0 +1,12 @@
++/* PR target/57568 */
++
++extern void abort (void);
++int a[6][9] = { }, b = 1, *c = &a[3][5];
++
++int
++main ()
++{
++ if (b && (*c = *c + *c))
++ abort ();
++ return 0;
++}
Index: gcc/testsuite/gcc.c-torture/execute/pr56866.c
===================================================================
--- a/src/gcc/testsuite/gcc.c-torture/execute/pr56866.c (.../tags/gcc_4_7_3_release)
@@ -1247,7 +1509,26 @@ Index: gcc/testsuite/ChangeLog
===================================================================
--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_4_7_3_release)
+++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-4_7-branch)
-@@ -1,3 +1,114 @@
+@@ -1,3 +1,133 @@
++2013-06-09 Jakub Jelinek <jakub@redhat.com>
++
++ PR target/57568
++ * gcc.c-torture/execute/pr57568.c: New test.
++
++2013-06-06 Tobias Burnus <burnus@net-b.de>
++
++ Backport from mainline
++ 2012-08-27 Tobias Burnus <burnus@net-b.de>
++
++ PR fortran/54370
++ * gfortran.dg/do_5.f90: New.
++
++2013-06-01 Janus Weil <janus@gcc.gnu.org>
++ Tobias Burnus <burnus@net-b.de>
++
++ PR fortran/57217
++ * gfortran.dg/typebound_override_4.f90: New.
++
+2013-05-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/specs/last_bit.ads: New test.
@@ -1686,11 +1967,40 @@ Index: gcc/ada/gcc-interface/trans.c
/* If this has a PLACEHOLDER_EXPR, qualify it by the object we are
handling. */
+Index: gcc/fortran/interface.c
+===================================================================
+--- a/src/gcc/fortran/interface.c (.../tags/gcc_4_7_3_release)
++++ b/src/gcc/fortran/interface.c (.../branches/gcc-4_7-branch)
+@@ -987,7 +987,8 @@
+ bool type_must_agree, char *errmsg, int err_len)
+ {
+ /* Check type and rank. */
+- if (type_must_agree && !compare_type_rank (s2, s1))
++ if (type_must_agree &&
++ (!compare_type_rank (s1, s2) || !compare_type_rank (s2, s1)))
+ {
+ if (errmsg != NULL)
+ snprintf (errmsg, err_len, "Type/rank mismatch in argument '%s'",
Index: gcc/fortran/ChangeLog
===================================================================
--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_4_7_3_release)
+++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-4_7-branch)
-@@ -1,3 +1,43 @@
+@@ -1,3 +1,58 @@
++2013-06-06 Tobias Burnus <burnus@net-b.de>
++
++ Backport from mainline
++ 2012-08-27 Tobias Burnus <burnus@net-b.de>
++
++ PR fortran/54370
++ * trans-stmt.c (gfc_trans_do_while): Don't change the logical
++ kind for negation of the condition.
++
++2013-06-01 Janus Weil <janus@gcc.gnu.org>
++ Tobias Burnus <burnus@net-b.de>
++
++ PR fortran/57217
++ * interface.c (check_dummy_characteristics): Symmetrize type check.
++
+2013-05-22 Janne Blomqvist <jb@gcc.gnu.org>
+
+ * intrinsic.texi (RANDOM_SEED): Improve example.
@@ -1734,6 +2044,19 @@ Index: gcc/fortran/ChangeLog
2013-04-11 Release Manager
* GCC 4.7.3 released.
+Index: gcc/fortran/trans-stmt.c
+===================================================================
+--- a/src/gcc/fortran/trans-stmt.c (.../tags/gcc_4_7_3_release)
++++ b/src/gcc/fortran/trans-stmt.c (.../branches/gcc-4_7-branch)
+@@ -1743,7 +1743,7 @@
+ gfc_conv_expr_val (&cond, code->expr1);
+ gfc_add_block_to_block (&block, &cond.pre);
+ cond.expr = fold_build1_loc (code->expr1->where.lb->location,
+- TRUTH_NOT_EXPR, boolean_type_node, cond.expr);
++ TRUTH_NOT_EXPR, TREE_TYPE (cond.expr), cond.expr);
+
+ /* Build "IF (! cond) GOTO exit_label". */
+ tmp = build1_v (GOTO_EXPR, exit_label);
Index: gcc/fortran/expr.c
===================================================================
--- a/src/gcc/fortran/expr.c (.../tags/gcc_4_7_3_release)
@@ -2153,6 +2476,57 @@ Index: gcc/sched-deps.c
flush_pending_lists (deps, insn, true, true);
reg_pending_barrier = NOT_A_BARRIER;
+Index: gcc/config/alpha/alpha.md
+===================================================================
+--- a/src/gcc/config/alpha/alpha.md (.../tags/gcc_4_7_3_release)
++++ b/src/gcc/config/alpha/alpha.md (.../branches/gcc-4_7-branch)
+@@ -25,6 +25,7 @@
+ ;; Uses of UNSPEC in this file:
+
+ (define_c_enum "unspec" [
++ UNSPEC_XFLT_COMPARE
+ UNSPEC_ARG_HOME
+ UNSPEC_LDGP1
+ UNSPEC_INSXH
+Index: gcc/config/alpha/alpha.c
+===================================================================
+--- a/src/gcc/config/alpha/alpha.c (.../tags/gcc_4_7_3_release)
++++ b/src/gcc/config/alpha/alpha.c (.../branches/gcc-4_7-branch)
+@@ -2658,12 +2658,12 @@
+ break;
+
+ case GE: case GT: case GEU: case GTU:
+- /* These must be swapped. */
+- if (op1 != CONST0_RTX (cmp_mode))
+- {
+- code = swap_condition (code);
+- tem = op0, op0 = op1, op1 = tem;
+- }
++ /* These normally need swapping, but for integer zero we have
++ special patterns that recognize swapped operands. */
++ if (cmp_mode == DImode && op1 == const0_rtx)
++ break;
++ code = swap_condition (code);
++ tem = op0, op0 = op1, op1 = tem;
+ break;
+
+ default:
+@@ -3025,12 +3025,9 @@
+ operands[1] = op1;
+ out = gen_reg_rtx (DImode);
+
+- /* What's actually returned is -1,0,1, not a proper boolean value,
+- so use an EXPR_LIST as with a generic libcall instead of a
+- comparison type expression. */
+- note = gen_rtx_EXPR_LIST (VOIDmode, op1, NULL_RTX);
+- note = gen_rtx_EXPR_LIST (VOIDmode, op0, note);
+- note = gen_rtx_EXPR_LIST (VOIDmode, func, note);
++ /* What's actually returned is -1,0,1, not a proper boolean value. */
++ note = gen_rtx_fmt_ee (cmp_code, VOIDmode, op0, op1);
++ note = gen_rtx_UNSPEC (DImode, gen_rtvec (1, note), UNSPEC_XFLT_COMPARE);
+ alpha_emit_xfloating_libcall (func, out, operands, 2, note);
+
+ return out;
Index: gcc/config/sparc/sparc.c
===================================================================
--- a/src/gcc/config/sparc/sparc.c (.../tags/gcc_4_7_3_release)
@@ -2338,6 +2712,22 @@ Index: gcc/config/i386/i386.md
"!(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
"stosb"
[(set_attr "type" "str")
+@@ -17190,6 +17194,7 @@
+ "(TARGET_READ_MODIFY_WRITE || optimize_insn_for_size_p ())
+ && peep2_reg_dead_p (4, operands[0])
+ && !reg_overlap_mentioned_p (operands[0], operands[1])
++ && !reg_overlap_mentioned_p (operands[0], operands[2])
+ && (<MODE>mode != QImode
+ || immediate_operand (operands[2], QImode)
+ || q_regs_operand (operands[2], QImode))
+@@ -17254,6 +17259,7 @@
+ || immediate_operand (operands[2], SImode)
+ || q_regs_operand (operands[2], SImode))
+ && !reg_overlap_mentioned_p (operands[0], operands[1])
++ && !reg_overlap_mentioned_p (operands[0], operands[2])
+ && ix86_match_ccmode (peep2_next_insn (3),
+ (GET_CODE (operands[3]) == PLUS
+ || GET_CODE (operands[3]) == MINUS)
Index: gcc/config/i386/sse.md
===================================================================
--- a/src/gcc/config/i386/sse.md (.../tags/gcc_4_7_3_release)