diff options
author | doko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca> | 2014-07-24 22:16:18 +0000 |
---|---|---|
committer | doko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca> | 2014-07-24 22:16:18 +0000 |
commit | 26d8993a95b7cba59d15b5cb40397acf34125603 (patch) | |
tree | 629f3cf99a1d2c35e8f28d8c18e704c18825c0b5 | |
parent | 4a2e634ed8e6277d9ceb8e04b764ca59cf8e4a04 (diff) | |
download | gcc-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/changelog | 6 | ||||
-rw-r--r-- | debian/patches/gcc-elfv2-abi-warn1.diff | 99 | ||||
-rw-r--r-- | debian/patches/gcc-elfv2-abi-warn2.diff | 106 | ||||
-rw-r--r-- | debian/patches/gcc-elfv2-abi-warn3.diff | 158 | ||||
-rw-r--r-- | debian/patches/gcc-elfv2-abi-warn4.diff | 56 | ||||
-rw-r--r-- | debian/patches/svn-updates.diff | 386 | ||||
-rw-r--r-- | debian/rules.patch | 4 |
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 \ |