summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordoko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>2014-07-24 22:16:18 +0000
committerdoko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>2014-07-24 22:16:18 +0000
commit26d8993a95b7cba59d15b5cb40397acf34125603 (patch)
tree629f3cf99a1d2c35e8f28d8c18e704c18825c0b5
parent4a2e634ed8e6277d9ceb8e04b764ca59cf8e4a04 (diff)
downloadgcc-49-26d8993a95b7cba59d15b5cb40397acf34125603.tar.gz
* Update to SVN 20140724 (r213031) from the gcc-4_9-branch.
git-svn-id: svn://svn.debian.org/svn/gcccvs/branches/sid/gcc-4.9@7527 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
-rw-r--r--debian/changelog6
-rw-r--r--debian/patches/gcc-elfv2-abi-warn1.diff99
-rw-r--r--debian/patches/gcc-elfv2-abi-warn2.diff106
-rw-r--r--debian/patches/gcc-elfv2-abi-warn3.diff158
-rw-r--r--debian/patches/gcc-elfv2-abi-warn4.diff56
-rw-r--r--debian/patches/svn-updates.diff386
-rw-r--r--debian/rules.patch4
7 files changed, 375 insertions, 440 deletions
diff --git a/debian/changelog b/debian/changelog
index 47c7ab6..cf571ce 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,6 @@
-gcc-4.9 (4.9.1-2) UNRELEASED; urgency=medium
+gcc-4.9 (4.9.1-2) unstable; urgency=medium
- * Update to SVN 20140724 (r212995) from the gcc-4_9-branch.
+ * Update to SVN 20140724 (r213031) from the gcc-4_9-branch.
* Fix installing test logs and summaries.
* Warn about ppc ELFv2 ABI issues, which will change in GCC 4.10.
@@ -8,7 +8,7 @@ gcc-4.9 (4.9.1-2) UNRELEASED; urgency=medium
* Build libphobos on armel and armhf. Closes: #755390.
* Update the Linaro support to the 4.9-2014.07 release.
- -- Matthias Klose <doko@debian.org> Thu, 24 Jul 2014 16:47:07 +0200
+ -- Matthias Klose <doko@debian.org> Thu, 24 Jul 2014 23:59:49 +0200
gcc-4.9 (4.9.1-1) unstable; urgency=medium
diff --git a/debian/patches/gcc-elfv2-abi-warn1.diff b/debian/patches/gcc-elfv2-abi-warn1.diff
deleted file mode 100644
index 437ba17..0000000
--- a/debian/patches/gcc-elfv2-abi-warn1.diff
+++ /dev/null
@@ -1,99 +0,0 @@
-# DP: ppc64el, fix ELFv2 homogeneous float aggregate ABI bug
-
-Subject: [PATCH, rs6000, 4.8/4.9] Fix ELFv2 homogeneous float aggregate ABI bug
-
-Hello,
-
-this is the variant intended for the 4.8/4.9 branches of the patch:
-https://gcc.gnu.org/ml/gcc-patches/2014-07/msg00994.html
-
-As discussed, it does *not* actually change ABI, but only warn when
-encountering a situation where the ABI will change in a future GCC.
-(Avoiding the specific term "GCC 4.10" here since I'm not certain
-whether the next GCC release will in fact be called that ...)
-
-Tested on powerpc64-linux and powerpc64le-linux; also verified using
-the ABI compat suite (against an unpatched GCC) that this patch does
-not change the ABI.
-
-OK for 4.8/4.9 once the mainline patch is in?
-
-Bye,
-Ulrich
-
-
-gcc/ChangeLog:
-
- * config/rs6000/rs6000.c (rs6000_function_arg): If a float argument
- does not fit fully into floating-point registers, and there is still
- space in the register parameter area, issue -Wpsabi note that the ABI
- will change in a future GCC release.
-
-gcc/testsuite/ChangeLog:
-
- * gcc.target/powerpc/ppc64-abi-warn-1.c: New test.
-
-
---- a/src/gcc/config/rs6000/rs6000.c
-+++ b/src/gcc/config/rs6000/rs6000.c
-@@ -10225,6 +10225,7 @@ rs6000_function_arg (cumulative_args_t c
- rtx r, off;
- int i, k = 0;
- unsigned long n_fpreg = (GET_MODE_SIZE (elt_mode) + 7) >> 3;
-+ int fpr_words;
-
- /* Do we also need to pass this argument in the parameter
- save area? */
-@@ -10253,6 +10254,37 @@ rs6000_function_arg (cumulative_args_t c
- rvec[k++] = gen_rtx_EXPR_LIST (VOIDmode, r, off);
- }
-
-+ /* If there were not enough FPRs to hold the argument, the rest
-+ usually goes into memory. However, if the current position
-+ is still within the register parameter area, a portion may
-+ actually have to go into GPRs.
-+
-+ Note that it may happen that the portion of the argument
-+ passed in the first "half" of the first GPR was already
-+ passed in the last FPR as well.
-+
-+ For unnamed arguments, we already set up GPRs to cover the
-+ whole argument in rs6000_psave_function_arg, so there is
-+ nothing further to do at this point.
-+
-+ GCC 4.8/4.9 Note: This was implemented incorrectly in earlier
-+ GCC releases. To avoid any ABI change on the release branch,
-+ we retain that original implementation here, but warn if we
-+ encounter a case where the ABI will change in the future. */
-+ fpr_words = (i * GET_MODE_SIZE (elt_mode)) / (TARGET_32BIT ? 4 : 8);
-+ if (i < n_elts && align_words + fpr_words < GP_ARG_NUM_REG
-+ && cum->nargs_prototype > 0)
-+ {
-+ static bool warned;
-+ if (!warned && warn_psabi)
-+ {
-+ warned = true;
-+ inform (input_location,
-+ "the ABI of passing homogeneous float aggregates"
-+ " will change in a future GCC release");
-+ }
-+ }
-+
- return rs6000_finish_function_arg (mode, rvec, k);
- }
- else if (align_words < GP_ARG_NUM_REG)
---- /dev/null
-+++ b/src/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c
-@@ -0,0 +1,12 @@
-+/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */
-+/* { dg-options "-mabi=elfv2" } */
-+
-+struct f8
-+ {
-+ float x[8];
-+ };
-+
-+void test (struct f8 a, struct f8 b) /* { dg-message "note: the ABI of passing homogeneous float aggregates will change" } */
-+{
-+}
-+
diff --git a/debian/patches/gcc-elfv2-abi-warn2.diff b/debian/patches/gcc-elfv2-abi-warn2.diff
deleted file mode 100644
index 5309998..0000000
--- a/debian/patches/gcc-elfv2-abi-warn2.diff
+++ /dev/null
@@ -1,106 +0,0 @@
-# DP: ppc64el, fix aggregate alignment ABI issue
-
-this is the variant intended for the 4.8/4.9 branches of the patch:
-https://gcc.gnu.org/ml/gcc-patches/2014-07/msg00995.html
-
-As discussed, it does *not* actually change ABI, but only warn when
-encountering a situation where the ABI will change in a future GCC.
-(Avoiding the specific term "GCC 4.10" here since I'm not certain
-whether the next GCC release will in fact be called that ...)
-
-Tested on powerpc64-linux and powerpc64le-linux; also verified using
-the ABI compat suite (against an unpatched GCC) that this patch does
-not change the ABI.
-
-OK for 4.8/4.9 once the mainline patch is in?
-
-Bye,
-Ulrich
-
-
-gcc/ChangeLog:
-
- * config/rs6000/rs6000.c (rs6000_function_arg_boundary): Issue
- -Wpsabi note when encountering a type where future GCC releases
- will apply different alignment requirements.
-
-gcc/testsuite/ChangeLog:
-
- * gcc.target/powerpc/ppc64-abi-warn-2.c: New test.
-
-
---- a/src/gcc/config/rs6000/rs6000.c
-+++ b/src/gcc/config/rs6000/rs6000.c
-@@ -9180,14 +9180,51 @@ rs6000_function_arg_boundary (enum machi
- || (type && TREE_CODE (type) == VECTOR_TYPE
- && int_size_in_bytes (type) >= 16))
- return 128;
-- else if (((TARGET_MACHO && rs6000_darwin64_abi)
-- || DEFAULT_ABI == ABI_ELFv2
-- || (DEFAULT_ABI == ABI_AIX && !rs6000_compat_align_parm))
-- && mode == BLKmode
-- && type && TYPE_ALIGN (type) > 64)
-+
-+ /* Aggregate types that need > 8 byte alignment are quadword-aligned
-+ in the parameter area in the ELFv2 ABI, and in the AIX ABI unless
-+ -mcompat-align-parm is used. */
-+ if (((DEFAULT_ABI == ABI_AIX && !rs6000_compat_align_parm)
-+ || DEFAULT_ABI == ABI_ELFv2)
-+ && type && TYPE_ALIGN (type) > 64)
-+ {
-+ /* "Aggregate" means any AGGREGATE_TYPE except for single-element
-+ or homogeneous float/vector aggregates here. We already handled
-+ vector aggregates above, but still need to check for float here. */
-+ bool aggregate_p = (AGGREGATE_TYPE_P (type)
-+ && !SCALAR_FLOAT_MODE_P (elt_mode));
-+
-+ /* We used to check for BLKmode instead of the above aggregate type
-+ check. Warn when this results in any difference to the ABI. */
-+ if (aggregate_p != (mode == BLKmode))
-+ {
-+ static bool warned;
-+ if (!warned && warn_psabi)
-+ {
-+ warned = true;
-+ inform (input_location,
-+ "the ABI of passing aggregates with %d-byte alignment"
-+ " will change in a future GCC release",
-+ (int) TYPE_ALIGN (type) / BITS_PER_UNIT);
-+ }
-+ }
-+
-+ /* GCC 4.8/4.9 Note: To avoid any ABI change on a release branch, we
-+ keep using the BLKmode check, but warn if there will be differences
-+ in future GCC releases. */
-+ if (mode == BLKmode)
-+ return 128;
-+ }
-+
-+ /* Similar for the Darwin64 ABI. Note that for historical reasons we
-+ implement the "aggregate type" check as a BLKmode check here; this
-+ means certain aggregate types are in fact not aligned. */
-+ if (TARGET_MACHO && rs6000_darwin64_abi
-+ && mode == BLKmode
-+ && type && TYPE_ALIGN (type) > 64)
- return 128;
-- else
-- return PARM_BOUNDARY;
-+
-+ return PARM_BOUNDARY;
- }
-
- /* The offset in words to the start of the parameter save area. */
---- /dev/null
-+++ b/src/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c
-@@ -0,0 +1,11 @@
-+/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */
-+
-+struct test
-+ {
-+ long a __attribute__((aligned (16)));
-+ };
-+
-+void test (struct test a) /* { dg-message "note: the ABI of passing aggregates with 16-byte alignment will change" } */
-+{
-+}
-+
diff --git a/debian/patches/gcc-elfv2-abi-warn3.diff b/debian/patches/gcc-elfv2-abi-warn3.diff
deleted file mode 100644
index 637d8d7..0000000
--- a/debian/patches/gcc-elfv2-abi-warn3.diff
+++ /dev/null
@@ -1,158 +0,0 @@
-# DP: ppc64*, fix alignment of non-Altivec vector struct fields
-
-this is the variant intended for the 4.8/4.9 branches of the patch:
-https://gcc.gnu.org/ml/gcc-patches/2014-07/msg01072.html
-
-As discussed, it does *not* actually change ABI, but only warn when
-encountering a situation where the ABI will change in a future GCC.
-(Avoiding the specific term "GCC 4.10" here since I'm not certain
-whether the next GCC release will in fact be called that ...)
-
-Tested on powerpc64-linux and powerpc64le-linux; also verified using
-the ABI compat suite (against an unpatched GCC) that this patch does
-not change the ABI.
-
-OK for 4.8/4.9 once the mainline patch is in?
-
-Bye,
-Ulrich
-
-
-gcc/ChangeLog:
-
- * config/rs6000/rs6000-protos.h (rs6000_special_adjust_field_align_p):
- Add prototype.
- * config/rs6000/rs6000.c (rs6000_special_adjust_field_align_p): New
- function. Issue -Wpsabi warning if future GCC releases will use
- different field alignment rules for this type.
- * config/rs6000/sysv4.h (ADJUST_FIELD_ALIGN): Call it.
- * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
- * config/rs6000/freebsd64.h (ADJUST_FIELD_ALIGN): Likewise.
-
-gcc/testsuite/ChangeLog:
-
- * gcc.target/powerpc/ppc64-abi-warn-3.c: New test.
-
- * gcc.c-torture/execute/20050316-1.x: Add -Wno-psabi.
- * gcc.c-torture/execute/20050604-1.x: Add -Wno-psabi.
- * gcc.c-torture/execute/20050316-3.x: New file. Add -Wno-psabi.
- * gcc.c-torture/execute/pr23135.x: Likewise.
-
---- a/src/gcc/config/rs6000/rs6000-protos.h
-+++ b/src/gcc/config/rs6000/rs6000-protos.h
-@@ -155,6 +155,7 @@ extern void rs6000_split_logical (rtx []
-
- #ifdef TREE_CODE
- extern unsigned int rs6000_data_alignment (tree, unsigned int, enum data_align);
-+extern bool rs6000_special_adjust_field_align_p (tree, unsigned int);
- extern unsigned int rs6000_special_round_type_align (tree, unsigned int,
- unsigned int);
- extern unsigned int darwin_rs6000_special_round_type_align (tree, unsigned int,
---- a/src/gcc/config/rs6000/rs6000.c
-+++ b/src/gcc/config/rs6000/rs6000.c
-@@ -5871,6 +5871,34 @@ rs6000_data_alignment (tree type, unsign
- return align;
- }
-
-+/* Previous GCC releases forced all vector types to have 16-byte alignment. */
-+
-+bool
-+rs6000_special_adjust_field_align_p (tree field, unsigned int computed)
-+{
-+ if (TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (field)) == VECTOR_TYPE)
-+ {
-+ if (computed != 128)
-+ {
-+ static bool warned;
-+ if (!warned && warn_psabi)
-+ {
-+ warned = true;
-+ inform (input_location,
-+ "the layout of aggregates containing vectors with"
-+ " %d-byte alignment will change in a future GCC release",
-+ computed / BITS_PER_UNIT);
-+ }
-+ }
-+ /* GCC 4.8/4.9 Note: To avoid any ABI change on a release branch, we
-+ keep the special treatment of vector types, but warn if there will
-+ be differences in future GCC releases. */
-+ return true;
-+ }
-+
-+ return false;
-+}
-+
- /* AIX increases natural record alignment to doubleword if the first
- field is an FP double while the FP fields remain word aligned. */
-
---- a/src/gcc/config/rs6000/sysv4.h
-+++ b/src/gcc/config/rs6000/sysv4.h
-@@ -292,7 +292,7 @@ do { \
- /* An expression for the alignment of a structure field FIELD if the
- alignment computed in the usual way is COMPUTED. */
- #define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
-- ((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE) \
-+ (rs6000_special_adjust_field_align_p ((FIELD), (COMPUTED)) \
- ? 128 : COMPUTED)
-
- #undef BIGGEST_FIELD_ALIGNMENT
---- a/src/gcc/config/rs6000/linux64.h
-+++ b/src/gcc/config/rs6000/linux64.h
-@@ -246,7 +246,7 @@ extern int dot_symbols;
- /* PowerPC64 Linux word-aligns FP doubles when -malign-power is given. */
- #undef ADJUST_FIELD_ALIGN
- #define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
-- ((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE) \
-+ (rs6000_special_adjust_field_align_p ((FIELD), (COMPUTED)) \
- ? 128 \
- : (TARGET_64BIT \
- && TARGET_ALIGN_NATURAL == 0 \
---- a/src/gcc/config/rs6000/freebsd64.h
-+++ b/src/gcc/config/rs6000/freebsd64.h
-@@ -367,7 +367,7 @@ extern int dot_symbols;
- /* PowerPC64 Linux word-aligns FP doubles when -malign-power is given. */
- #undef ADJUST_FIELD_ALIGN
- #define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
-- ((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE) \
-+ (rs6000_special_adjust_field_align_p ((FIELD), (COMPUTED)) \
- ? 128 \
- : (TARGET_64BIT \
- && TARGET_ALIGN_NATURAL == 0 \
---- a/src/gcc/testsuite/gcc.c-torture/execute/20050316-1.x
-+++ b/src/gcc/testsuite/gcc.c-torture/execute/20050316-1.x
-@@ -4,4 +4,5 @@ if { [check_effective_target_int16] } {
- return 1
- }
-
-+set additional_flags "-Wno-psabi"
- return 0;
---- /dev/null
-+++ b/src/gcc/testsuite/gcc.c-torture/execute/20050316-3.x
-@@ -0,0 +1,2 @@
-+set additional_flags "-Wno-psabi"
-+return 0
---- a/src/gcc/testsuite/gcc.c-torture/execute/20050604-1.x
-+++ b/src/gcc/testsuite/gcc.c-torture/execute/20050604-1.x
-@@ -6,4 +6,5 @@ if { [istarget "i?86-*-*"] || [istarget
- set additional_flags "-mno-mmx"
- }
-
-+set additional_flags "-Wno-psabi"
- return 0
---- /dev/null
-+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr23135.x
-@@ -0,0 +1,2 @@
-+set additional_flags "-Wno-psabi"
-+return 0
---- /dev/null
-+++ b/src/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c
-@@ -0,0 +1,9 @@
-+/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */
-+/* { dg-require-effective-target powerpc_altivec_ok } */
-+/* { dg-options "-maltivec" } */
-+
-+struct test
-+ {
-+ int a __attribute__((vector_size (8)));
-+ }; /* { dg-message "note: the layout of aggregates containing vectors with 8-byte alignment will change" } */
-+
diff --git a/debian/patches/gcc-elfv2-abi-warn4.diff b/debian/patches/gcc-elfv2-abi-warn4.diff
deleted file mode 100644
index 5b11ece..0000000
--- a/debian/patches/gcc-elfv2-abi-warn4.diff
+++ /dev/null
@@ -1,56 +0,0 @@
-# DP: Reliably prune GCC notes in C++ compat suite
-
-in testing the rs6000 ABI patches I noted a weird effect: usually, the
--Wpsabi warning notes are ignored in the compat test suites, so we get
-a clean test run anyway.
-
-However, when running the C++ version of the struct-layout-1.exp case
-*alone* (using RUNTESTFLAGS=struct-layout-1.exp), suddenly tests are
-failing because of those extra notes. This does *not* happen with
-the C version of that suite ...
-
-It turns out that that pruning those notes is supposed to happen
-from within gcc-defs.exp:${tool}_check_compile:
- if { [info proc ${tool}-dg-prune] != "" } {
- global target_triplet
- set gcc_output [${tool}-dg-prune $target_triplet $gcc_output]
- }
-
-However, the g++-dg-prune routine is defined in g++-dg.exp, which
-is never included from g++.dg/compat/struct-layout-1.exp (directly
-or indirectly). Now, when running the full suite, that file would
-have been loaded by some earlier g++.dg .exp file, so everything
-works out. But when running struct-layout-1.exp stand-alone, the
-g++-dg-prune routine is never defined and thus silently no pruning
-takes place.
-
-To fix this, the following patch simply loads g++-dg.exp directly
-from g++.dg/compat/struct-layout-1.exp.
-
-Tested on powerpc64-linux and powerpc64le-linux.
-
-OK for mainline (and 4.8/4.9 once the rs6000 ABI patches are
-backported there)?
-
-Bye,
-Ulrich
-
-
-gcc/testsuite/ChangeLog:
-
- * g++.dg/compat/struct-layout-1.exp: Load g++-dg.exp
-
-
---- a/src/gcc/testsuite/g++.dg/compat/struct-layout-1.exp
-+++ b/src/gcc/testsuite/g++.dg/compat/struct-layout-1.exp
-@@ -89,6 +89,9 @@ proc compat-use-tst-compiler { } {
- # This must be done after the compat-use-*-compiler definitions.
- load_lib compat.exp
-
-+# Provide the g++-dg-prune routine (gcc-dp.exp is loaded by compat.exp)
-+load_lib g++-dg.exp
-+
- g++_init
-
- # Save variables for the C++ compiler under test, which each test will
-
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
index 5d2874f..c8050f7 100644
--- a/debian/patches/svn-updates.diff
+++ b/debian/patches/svn-updates.diff
@@ -1,10 +1,10 @@
-# DP: updates from the 4.9 branch upto 20140724 (r212995).
+# DP: updates from the 4.9 branch upto 20140724 (r213031).
last_update()
{
cat > ${dir}LAST_UPDATED <EOF
-Thu Jul 24 16:26:03 CEST 2014
-Thu Jul 24 14:26:03 UTC 2014 (revision 212995)
+Fri Jul 25 00:07:18 CEST 2014
+Thu Jul 24 22:07:18 UTC 2014 (revision 213031)
EOF
}
@@ -97,7 +97,35 @@ Index: gcc/ChangeLog
===================================================================
--- a/src/gcc/ChangeLog (.../tags/gcc_4_9_1_release)
+++ b/src/gcc/ChangeLog (.../branches/gcc-4_9-branch)
-@@ -1,3 +1,138 @@
+@@ -1,3 +1,166 @@
++2014-07-24 Kyle McMartin <kyle@redhat.com>
++
++ * config/aarch64/aarch64-linux.h (TARGET_ASM_FILE_END): Define.
++
++2014-07-24 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
++
++ * config/rs6000/rs6000-protos.h (rs6000_special_adjust_field_align_p):
++ Add prototype.
++ * config/rs6000/rs6000.c (rs6000_special_adjust_field_align_p): New
++ function. Issue -Wpsabi warning if future GCC releases will use
++ different field alignment rules for this type.
++ * config/rs6000/sysv4.h (ADJUST_FIELD_ALIGN): Call it.
++ * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
++ * config/rs6000/freebsd64.h (ADJUST_FIELD_ALIGN): Likewise.
++
++2014-07-24 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
++
++ * config/rs6000/rs6000.c (rs6000_function_arg_boundary): Issue
++ -Wpsabi note when encountering a type where future GCC releases
++ will apply different alignment requirements.
++
++2014-07-24 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
++
++ * config/rs6000/rs6000.c (rs6000_function_arg): If a float argument
++ does not fit fully into floating-point registers, and there is still
++ space in the register parameter area, issue -Wpsabi note that the ABI
++ will change in a future GCC release.
++
+2014-07-23 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * config/arm/t-rtems-eabi: Add
@@ -236,7 +264,7 @@ Index: gcc/ChangeLog
2014-07-16 Release Manager
* GCC 4.9.1 released.
-@@ -4,14 +142,14 @@
+@@ -4,14 +170,14 @@
2014-07-10 Cary Coutant <ccoutant@google.com>
@@ -255,7 +283,7 @@ Index: gcc/ChangeLog
2014-07-10 Tom G. Christensen <tgc@jupiterrise.com>
-@@ -33,13 +171,13 @@
+@@ -33,13 +199,13 @@
PR target/61062
* config/arm/arm_neon.h (vtrn_s8, vtrn_s16, vtrn_u8, vtrn_u16, vtrn_p8,
vtrn_p16, vtrn_s32, vtrn_f32, vtrn_u32, vtrnq_s8, vtrnq_s16, vtrnq_s32,
@@ -276,7 +304,7 @@ Index: gcc/ChangeLog
2014-07-09 Alan Lawrence <alan.lawrence@arm.com>
-@@ -157,11 +295,9 @@
+@@ -157,11 +323,9 @@
2014-06-24 Jakub Jelinek <jakub@redhat.com>
* gimplify.c (gimplify_scan_omp_clauses) <case OMP_CLAUSE_MAP,
@@ -290,7 +318,7 @@ Index: gcc/ChangeLog
(gimplify_adjust_omp_clauses): Likewise.
* omp-low.c (lower_rec_simd_input_clauses,
lower_rec_input_clauses, expand_omp_simd): Handle non-constant
-@@ -176,9 +312,8 @@
+@@ -176,9 +340,8 @@
2014-06-18 Jakub Jelinek <jakub@redhat.com>
@@ -302,7 +330,7 @@ Index: gcc/ChangeLog
(struct gimplify_adjust_omp_clauses_data): New type.
(gimplify_adjust_omp_clauses_1): Adjust for data being
a struct gimplify_adjust_omp_clauses_data pointer instead
-@@ -196,14 +331,12 @@
+@@ -196,14 +359,12 @@
gimple_seq * argument to omp_finish_clause hook.
* omp-low.c (scan_sharing_clauses): Call scan_omp_op on
non-DECL_P OMP_CLAUSE_DECL if ctx->outer.
@@ -320,7 +348,7 @@ Index: gcc/ChangeLog
2014-06-10 Jakub Jelinek <jakub@redhat.com>
-@@ -227,8 +360,7 @@
+@@ -227,8 +388,7 @@
OMP_CLAUSE_LINEAR_STMT.
* omp-low.c (lower_rec_input_clauses): Fix typo.
(maybe_add_implicit_barrier_cancel, lower_omp_1): Add
@@ -330,7 +358,7 @@ Index: gcc/ChangeLog
2014-06-30 Jason Merrill <jason@redhat.com>
-@@ -279,8 +411,7 @@
+@@ -279,8 +439,7 @@
(aarch64_sqdmlsl_lane<mode>): Likewise.
(aarch64_sqdmull_lane<mode>): Likewise.
(aarch64_sqdmull2_lane<mode>): Likewise.
@@ -340,6 +368,53 @@ Index: gcc/ChangeLog
Emit aarch64_sqdmlal_laneq<mode>_internal insn.
(aarch64_sqdmlal2_laneq<mode>): Emit
aarch64_sqdmlal2_laneq<mode>_internal insn.
+Index: gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c (.../tags/gcc_4_9_1_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c (.../branches/gcc-4_9-branch)
+@@ -0,0 +1,12 @@
++/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */
++/* { dg-options "-mabi=elfv2" } */
++
++struct f8
++ {
++ float x[8];
++ };
++
++void test (struct f8 a, struct f8 b) /* { dg-message "note: the ABI of passing homogeneous float aggregates will change" } */
++{
++}
++
+Index: gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c (.../tags/gcc_4_9_1_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c (.../branches/gcc-4_9-branch)
+@@ -0,0 +1,11 @@
++/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */
++
++struct test
++ {
++ long a __attribute__((aligned (16)));
++ };
++
++void test (struct test a) /* { dg-message "note: the ABI of passing aggregates with 16-byte alignment will change" } */
++{
++}
++
+Index: gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c (.../tags/gcc_4_9_1_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c (.../branches/gcc-4_9-branch)
+@@ -0,0 +1,9 @@
++/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-maltivec" } */
++
++struct test
++ {
++ int a __attribute__((vector_size (8)));
++ }; /* { dg-message "note: the layout of aggregates containing vectors with 8-byte alignment will change" } */
++
Index: gcc/testsuite/gcc.target/i386/pr61855.c
===================================================================
--- a/src/gcc/testsuite/gcc.target/i386/pr61855.c (.../tags/gcc_4_9_1_release)
@@ -413,6 +488,40 @@ Index: gcc/testsuite/gfortran.dg/dependency_44.f90
+! print *, res2
+ if (any(res1 /= res2)) call abort ()
+end program prgm3
+Index: gcc/testsuite/gcc.c-torture/execute/pr23135.x
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/execute/pr23135.x (.../tags/gcc_4_9_1_release)
++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr23135.x (.../branches/gcc-4_9-branch)
+@@ -0,0 +1,2 @@
++set additional_flags "-Wno-psabi"
++return 0
+Index: gcc/testsuite/gcc.c-torture/execute/20050604-1.x
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/execute/20050604-1.x (.../tags/gcc_4_9_1_release)
++++ b/src/gcc/testsuite/gcc.c-torture/execute/20050604-1.x (.../branches/gcc-4_9-branch)
+@@ -6,4 +6,5 @@
+ set additional_flags "-mno-mmx"
+ }
+
++set additional_flags "-Wno-psabi"
+ return 0
+Index: gcc/testsuite/gcc.c-torture/execute/20050316-1.x
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/execute/20050316-1.x (.../tags/gcc_4_9_1_release)
++++ b/src/gcc/testsuite/gcc.c-torture/execute/20050316-1.x (.../branches/gcc-4_9-branch)
+@@ -4,4 +4,5 @@
+ return 1
+ }
+
++set additional_flags "-Wno-psabi"
+ return 0;
+Index: gcc/testsuite/gcc.c-torture/execute/20050316-3.x
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/execute/20050316-3.x (.../tags/gcc_4_9_1_release)
++++ b/src/gcc/testsuite/gcc.c-torture/execute/20050316-3.x (.../branches/gcc-4_9-branch)
+@@ -0,0 +1,2 @@
++set additional_flags "-Wno-psabi"
++return 0
Index: gcc/testsuite/gnat.dg/pack20.adb
===================================================================
--- a/src/gcc/testsuite/gnat.dg/pack20.adb (.../tags/gcc_4_9_1_release)
@@ -528,7 +637,40 @@ Index: gcc/testsuite/ChangeLog
===================================================================
--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_4_9_1_release)
+++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-4_9-branch)
-@@ -1,3 +1,61 @@
+@@ -1,3 +1,94 @@
++2014-07-24 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
++
++ Backport from mainline
++ 2014-07-24 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
++
++ * gcc.target/powerpc/ppc64-abi-warn-3.c: New test.
++
++ * gcc.c-torture/execute/20050316-1.x: Add -Wno-psabi.
++ * gcc.c-torture/execute/20050604-1.x: Add -Wno-psabi.
++ * gcc.c-torture/execute/20050316-3.x: New file. Add -Wno-psabi.
++ * gcc.c-torture/execute/pr23135.x: Likewise.
++
++2014-07-24 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
++
++ Backport from mainline
++ 2014-07-24 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
++
++ * gcc.target/powerpc/ppc64-abi-warn-2.c: New test.
++
++2014-07-24 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
++
++ Backport from mainline
++ 2014-07-24 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
++
++ * gcc.target/powerpc/ppc64-abi-warn-1.c: New test.
++
++2014-07-24 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
++
++ Backport from mainline
++ 2014-07-24 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
++
++ * g++.dg/compat/struct-layout-1.exp: Load g++-dg.exp.
++
+2014-07-24 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/61160
@@ -590,7 +732,7 @@ Index: gcc/testsuite/ChangeLog
2014-07-16 Release Manager
* GCC 4.9.1 released.
-@@ -17,7 +75,8 @@
+@@ -17,7 +108,8 @@
2014-06-09 Alan Lawrence <alan.lawrence@arm.com>
PR target/61062
@@ -600,7 +742,7 @@ Index: gcc/testsuite/ChangeLog
2014-07-08 Jakub Jelinek <jakub@redhat.com>
-@@ -34,8 +93,8 @@
+@@ -34,8 +126,8 @@
2014-07-08 Alan Lawrence <alan.lawrence@arm.com>
@@ -611,6 +753,20 @@ Index: gcc/testsuite/ChangeLog
PR target/59843
* gcc.dg/vect/vect-singleton_1.c: New file.
+Index: gcc/testsuite/g++.dg/compat/struct-layout-1.exp
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/compat/struct-layout-1.exp (.../tags/gcc_4_9_1_release)
++++ b/src/gcc/testsuite/g++.dg/compat/struct-layout-1.exp (.../branches/gcc-4_9-branch)
+@@ -89,6 +89,9 @@
+ # This must be done after the compat-use-*-compiler definitions.
+ load_lib compat.exp
+
++# Provide the g++-dg-prune routine (gcc-dp.exp is loaded by compat.exp)
++load_lib g++-dg.exp
++
+ g++_init
+
+ # Save variables for the C++ compiler under test, which each test will
Index: gcc/testsuite/g++.dg/ipa/pr61160-1.C
===================================================================
--- a/src/gcc/testsuite/g++.dg/ipa/pr61160-1.C (.../tags/gcc_4_9_1_release)
@@ -1759,10 +1915,212 @@ Index: gcc/config/cris/cris-protos.h
extern void cris_order_for_addsi3 (rtx *, int);
extern void cris_emit_trap_for_misalignment (rtx);
#endif /* RTX_CODE */
+Index: gcc/config/aarch64/aarch64-linux.h
+===================================================================
+--- a/src/gcc/config/aarch64/aarch64-linux.h (.../tags/gcc_4_9_1_release)
++++ b/src/gcc/config/aarch64/aarch64-linux.h (.../branches/gcc-4_9-branch)
+@@ -44,4 +44,6 @@
+ } \
+ while (0)
+
++#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
++
+ #endif /* GCC_AARCH64_LINUX_H */
+Index: gcc/config/rs6000/freebsd64.h
+===================================================================
+--- a/src/gcc/config/rs6000/freebsd64.h (.../tags/gcc_4_9_1_release)
++++ b/src/gcc/config/rs6000/freebsd64.h (.../branches/gcc-4_9-branch)
+@@ -367,7 +367,7 @@
+ /* PowerPC64 Linux word-aligns FP doubles when -malign-power is given. */
+ #undef ADJUST_FIELD_ALIGN
+ #define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
+- ((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE) \
++ (rs6000_special_adjust_field_align_p ((FIELD), (COMPUTED)) \
+ ? 128 \
+ : (TARGET_64BIT \
+ && TARGET_ALIGN_NATURAL == 0 \
+Index: gcc/config/rs6000/rs6000-protos.h
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000-protos.h (.../tags/gcc_4_9_1_release)
++++ b/src/gcc/config/rs6000/rs6000-protos.h (.../branches/gcc-4_9-branch)
+@@ -155,6 +155,7 @@
+
+ #ifdef TREE_CODE
+ extern unsigned int rs6000_data_alignment (tree, unsigned int, enum data_align);
++extern bool rs6000_special_adjust_field_align_p (tree, unsigned int);
+ extern unsigned int rs6000_special_round_type_align (tree, unsigned int,
+ unsigned int);
+ extern unsigned int darwin_rs6000_special_round_type_align (tree, unsigned int,
+Index: gcc/config/rs6000/linux64.h
+===================================================================
+--- a/src/gcc/config/rs6000/linux64.h (.../tags/gcc_4_9_1_release)
++++ b/src/gcc/config/rs6000/linux64.h (.../branches/gcc-4_9-branch)
+@@ -246,7 +246,7 @@
+ /* PowerPC64 Linux word-aligns FP doubles when -malign-power is given. */
+ #undef ADJUST_FIELD_ALIGN
+ #define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
+- ((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE) \
++ (rs6000_special_adjust_field_align_p ((FIELD), (COMPUTED)) \
+ ? 128 \
+ : (TARGET_64BIT \
+ && TARGET_ALIGN_NATURAL == 0 \
+Index: gcc/config/rs6000/rs6000.c
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000.c (.../tags/gcc_4_9_1_release)
++++ b/src/gcc/config/rs6000/rs6000.c (.../branches/gcc-4_9-branch)
+@@ -5871,6 +5871,34 @@
+ return align;
+ }
+
++/* Previous GCC releases forced all vector types to have 16-byte alignment. */
++
++bool
++rs6000_special_adjust_field_align_p (tree field, unsigned int computed)
++{
++ if (TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (field)) == VECTOR_TYPE)
++ {
++ if (computed != 128)
++ {
++ static bool warned;
++ if (!warned && warn_psabi)
++ {
++ warned = true;
++ inform (input_location,
++ "the layout of aggregates containing vectors with"
++ " %d-byte alignment will change in a future GCC release",
++ computed / BITS_PER_UNIT);
++ }
++ }
++ /* GCC 4.8/4.9 Note: To avoid any ABI change on a release branch, we
++ keep the special treatment of vector types, but warn if there will
++ be differences in future GCC releases. */
++ return true;
++ }
++
++ return false;
++}
++
+ /* AIX increases natural record alignment to doubleword if the first
+ field is an FP double while the FP fields remain word aligned. */
+
+@@ -9180,14 +9208,51 @@
+ || (type && TREE_CODE (type) == VECTOR_TYPE
+ && int_size_in_bytes (type) >= 16))
+ return 128;
+- else if (((TARGET_MACHO && rs6000_darwin64_abi)
+- || DEFAULT_ABI == ABI_ELFv2
+- || (DEFAULT_ABI == ABI_AIX && !rs6000_compat_align_parm))
+- && mode == BLKmode
+- && type && TYPE_ALIGN (type) > 64)
++
++ /* Aggregate types that need > 8 byte alignment are quadword-aligned
++ in the parameter area in the ELFv2 ABI, and in the AIX ABI unless
++ -mcompat-align-parm is used. */
++ if (((DEFAULT_ABI == ABI_AIX && !rs6000_compat_align_parm)
++ || DEFAULT_ABI == ABI_ELFv2)
++ && type && TYPE_ALIGN (type) > 64)
++ {
++ /* "Aggregate" means any AGGREGATE_TYPE except for single-element
++ or homogeneous float/vector aggregates here. We already handled
++ vector aggregates above, but still need to check for float here. */
++ bool aggregate_p = (AGGREGATE_TYPE_P (type)
++ && !SCALAR_FLOAT_MODE_P (elt_mode));
++
++ /* We used to check for BLKmode instead of the above aggregate type
++ check. Warn when this results in any difference to the ABI. */
++ if (aggregate_p != (mode == BLKmode))
++ {
++ static bool warned;
++ if (!warned && warn_psabi)
++ {
++ warned = true;
++ inform (input_location,
++ "the ABI of passing aggregates with %d-byte alignment"
++ " will change in a future GCC release",
++ (int) TYPE_ALIGN (type) / BITS_PER_UNIT);
++ }
++ }
++
++ /* GCC 4.8/4.9 Note: To avoid any ABI change on a release branch, we
++ keep using the BLKmode check, but warn if there will be differences
++ in future GCC releases. */
++ if (mode == BLKmode)
++ return 128;
++ }
++
++ /* Similar for the Darwin64 ABI. Note that for historical reasons we
++ implement the "aggregate type" check as a BLKmode check here; this
++ means certain aggregate types are in fact not aligned. */
++ if (TARGET_MACHO && rs6000_darwin64_abi
++ && mode == BLKmode
++ && type && TYPE_ALIGN (type) > 64)
+ return 128;
+- else
+- return PARM_BOUNDARY;
++
++ return PARM_BOUNDARY;
+ }
+
+ /* The offset in words to the start of the parameter save area. */
+@@ -10225,6 +10290,7 @@
+ rtx r, off;
+ int i, k = 0;
+ unsigned long n_fpreg = (GET_MODE_SIZE (elt_mode) + 7) >> 3;
++ int fpr_words;
+
+ /* Do we also need to pass this argument in the parameter
+ save area? */
+@@ -10253,6 +10319,37 @@
+ rvec[k++] = gen_rtx_EXPR_LIST (VOIDmode, r, off);
+ }
+
++ /* If there were not enough FPRs to hold the argument, the rest
++ usually goes into memory. However, if the current position
++ is still within the register parameter area, a portion may
++ actually have to go into GPRs.
++
++ Note that it may happen that the portion of the argument
++ passed in the first "half" of the first GPR was already
++ passed in the last FPR as well.
++
++ For unnamed arguments, we already set up GPRs to cover the
++ whole argument in rs6000_psave_function_arg, so there is
++ nothing further to do at this point.
++
++ GCC 4.8/4.9 Note: This was implemented incorrectly in earlier
++ GCC releases. To avoid any ABI change on the release branch,
++ we retain that original implementation here, but warn if we
++ encounter a case where the ABI will change in the future. */
++ fpr_words = (i * GET_MODE_SIZE (elt_mode)) / (TARGET_32BIT ? 4 : 8);
++ if (i < n_elts && align_words + fpr_words < GP_ARG_NUM_REG
++ && cum->nargs_prototype > 0)
++ {
++ static bool warned;
++ if (!warned && warn_psabi)
++ {
++ warned = true;
++ inform (input_location,
++ "the ABI of passing homogeneous float aggregates"
++ " will change in a future GCC release");
++ }
++ }
++
+ return rs6000_finish_function_arg (mode, rvec, k);
+ }
+ else if (align_words < GP_ARG_NUM_REG)
Index: gcc/config/rs6000/sysv4.h
===================================================================
--- a/src/gcc/config/rs6000/sysv4.h (.../tags/gcc_4_9_1_release)
+++ b/src/gcc/config/rs6000/sysv4.h (.../branches/gcc-4_9-branch)
+@@ -292,7 +292,7 @@
+ /* An expression for the alignment of a structure field FIELD if the
+ alignment computed in the usual way is COMPUTED. */
+ #define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
+- ((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE) \
++ (rs6000_special_adjust_field_align_p ((FIELD), (COMPUTED)) \
+ ? 128 : COMPUTED)
+
+ #undef BIGGEST_FIELD_ALIGNMENT
@@ -949,3 +949,19 @@
#define TARGET_USES_SYSV4_OPT 1
diff --git a/debian/rules.patch b/debian/rules.patch
index 829f6b7..25c1c59 100644
--- a/debian/rules.patch
+++ b/debian/rules.patch
@@ -84,10 +84,6 @@ debian_patches += \
pr61126 \
gcc-setmultilib-fix \
sparc64-biarch-long-double-128 \
- gcc-elfv2-abi-warn1 \
- gcc-elfv2-abi-warn2 \
- gcc-elfv2-abi-warn3 \
- gcc-elfv2-abi-warn4 \
# FIXME: only needed for isl-0.13 for now
# isl-0.13-compat \