aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Lyon <christophe.lyon@linaro.org>2014-01-13 20:59:05 +0100
committerChristophe Lyon <christophe.lyon@linaro.org>2014-01-13 20:59:05 +0100
commitd707b9a269ecdf4e62a0df3b47902880226317b2 (patch)
tree4df2c56f8884e7d9d562b3702e9863b7f0c4b014
parent361930491cddcfbc6d1c04acb5511383d0546c18 (diff)
parenta4be5d67ff49874fab7c503604579e5f7b8902a7 (diff)
Merge from FSF GCC 4.7.4 (svn branches/gcc-4_7-branch 206380)
-rw-r--r--ChangeLog.linaro8
-rw-r--r--gcc/ChangeLog16
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/ada/ChangeLog4
-rw-r--r--gcc/ada/gcc-interface/Make-lang.in2
-rw-r--r--gcc/config/i386/i386.c7
-rw-r--r--gcc/doc/invoke.texi6
-rw-r--r--gcc/testsuite/ChangeLog15
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-vmovapd-256-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-vmovapd-256-2.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-movapd-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-movapd-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c21
-rw-r--r--libgcc/ChangeLog5
-rw-r--r--libgcc/config/rs6000/ibm-ldouble.c11
15 files changed, 91 insertions, 14 deletions
diff --git a/ChangeLog.linaro b/ChangeLog.linaro
index 05b050d7879..66236e5c69d 100644
--- a/ChangeLog.linaro
+++ b/ChangeLog.linaro
@@ -1,3 +1,7 @@
+2014-01-07 Christophe lyon <christophe.lyon@linaro.org>
+
+ Merge from FSF GCC 4.7.4 (svn branches/gcc-4_7-branch 206380).
+
2014-01-06 Christophe Lyon <christophe.lyon@linaro.org>
gcc/
@@ -7,8 +11,8 @@
GCC Linaro 4.7-2013.12 released.
- gcc/
- * LINARO-VERSION: Update.
+ gcc/
+ * LINARO-VERSION: Update.
2013-12-20 Christophe Lyon <christophe.lyon@linaro.org>
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 649926ba202..01c2c3aa3b5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,19 @@
+2013-12-28 Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/invoke.texi (output file options): Add missing markers.
+
+2013-12-11 Kai Tietz <ktietz@redhat.com>
+
+ PR target/56807
+ * config/i386/i386.c (ix86_expand_prologue): plus_constant
+ takes no mode-argument.
+
+2013-12-10 Kai Tietz <ktietz@redhat.com>
+
+ PR target/56807
+ * config/i386/i386.c (ix86_expand_prologue): Address saved
+ registers stack-relative, not via frame-pointer.
+
2013-12-03 Marek Polacek <polacek@redhat.com>
Backport from mainline
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 8e321fc7137..09431768587 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20131207
+20140107
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index fce5a217ae5..4ebba1aa52f 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,7 @@
+2013-12-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/Make-lang.in (ada/doctools/xgnatugn): Use gnatmake.
+
2013-10-19 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/utils.c (gnat_set_type_context): New function.
diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in
index ec95398ecbe..0131e301030 100644
--- a/gcc/ada/gcc-interface/Make-lang.in
+++ b/gcc/ada/gcc-interface/Make-lang.in
@@ -660,7 +660,7 @@ ada.tags: force
ada/doctools/xgnatugn$(build_exeext): ada/xgnatugn.adb
-$(MKDIR) ada/doctools
$(CP) $^ ada/doctools
- cd ada/doctools && $(GNATMAKE) -q xgnatugn
+ cd ada/doctools && gnatmake -q xgnatugn
# Note that doc/gnat_ugn.texi and doc/projects.texi do not depend on
# xgnatugn being built so we can distribute a pregenerated doc/gnat_ugn.info
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index c74dba0506a..d7d013bec33 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -10431,14 +10431,15 @@ ix86_expand_prologue (void)
if (r10_live && eax_live)
{
- t = choose_baseaddr (m->fs.sp_offset - allocate);
+ t = plus_constant (stack_pointer_rtx, allocate);
emit_move_insn (r10, gen_frame_mem (Pmode, t));
- t = choose_baseaddr (m->fs.sp_offset - allocate - UNITS_PER_WORD);
+ t = plus_constant (stack_pointer_rtx,
+ allocate - UNITS_PER_WORD);
emit_move_insn (eax, gen_frame_mem (Pmode, t));
}
else if (eax_live || r10_live)
{
- t = choose_baseaddr (m->fs.sp_offset - allocate);
+ t = plus_constant (stack_pointer_rtx, allocate);
emit_move_insn ((eax_live ? eax : r10), gen_frame_mem (Pmode, t));
}
}
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index d544adc6703..055ee968df4 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -1441,11 +1441,13 @@ Define an argument called @var{key} with a value of @var{value}
for the plugin called @var{name}.
@item -fdump-ada-spec@r{[}-slim@r{]}
-For C and C++ source and include files, generate corresponding Ada
-specs. @xref{Generating Ada Bindings for C and C++ headers,,, gnat_ugn,
+@opindex fdump-ada-spec
+For C and C++ source and include files, generate corresponding Ada specs.
+@xref{Generating Ada Bindings for C and C++ headers,,, gnat_ugn,
GNAT User's Guide}, which provides detailed documentation on this feature.
@item -fdump-go-spec=@var{file}
+@opindex fdump-go-spec
For input files in any language, generate corresponding Go
declarations in @var{file}. This generates Go @code{const},
@code{type}, @code{var}, and @code{func} declarations which may be a
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1f39f7c2080..2f73fb97b5f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,18 @@
+2014-01-03 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.target/powerpc/rs6000-ldouble-3.c: New test.
+
+2013-12-12 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2013-12-12 Ryan Mansfield <rmansfield@qnx.com>
+
+ PR testsuite/59442
+ * gcc.target/i386/sse2-movapd-1.c: Fix alignment attributes.
+ * gcc.target/i386/sse2-movapd-2.c: Likewise.
+ * gcc.target/i386/avx-vmovapd-256-1.c: Likewise.
+ * gcc.target/i386/avx-vmovapd-256-2.c: Likewise.
+
2013-12-04 Marek Polacek <polacek@redhat.com>
PR c/59351
diff --git a/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-1.c b/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-1.c
index d9121228307..cc524c8a641 100644
--- a/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-1.c
+++ b/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-1.c
@@ -15,7 +15,7 @@ void static
avx_test (void)
{
union256d u;
- double e [4] __attribute__ ((aligned (8))) = {41124.234,2344.2354,8653.65635,856.43576};
+ double e [4] __attribute__ ((aligned (32))) = {41124.234,2344.2354,8653.65635,856.43576};
u.x = test (e);
diff --git a/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-2.c b/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-2.c
index 96a664ac11e..9224484cac1 100644
--- a/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-2.c
@@ -15,7 +15,7 @@ void static
avx_test (void)
{
union256d u;
- double e [4] __attribute__ ((aligned (8))) = {0.0};
+ double e [4] __attribute__ ((aligned (32))) = {0.0};
u.x = _mm256_set_pd (39578.467285, 7856.342941, 85632.783567, 47563.234215);
diff --git a/gcc/testsuite/gcc.target/i386/sse2-movapd-1.c b/gcc/testsuite/gcc.target/i386/sse2-movapd-1.c
index b8b9dba0c20..55d9f594f55 100644
--- a/gcc/testsuite/gcc.target/i386/sse2-movapd-1.c
+++ b/gcc/testsuite/gcc.target/i386/sse2-movapd-1.c
@@ -25,7 +25,7 @@ static void
TEST (void)
{
union128d u;
- double e[2] __attribute__ ((aligned (8))) = {2134.3343,1234.635654};
+ double e[2] __attribute__ ((aligned (16))) = {2134.3343,1234.635654};
u.x = test (e);
diff --git a/gcc/testsuite/gcc.target/i386/sse2-movapd-2.c b/gcc/testsuite/gcc.target/i386/sse2-movapd-2.c
index 8298551baf5..87da332779a 100644
--- a/gcc/testsuite/gcc.target/i386/sse2-movapd-2.c
+++ b/gcc/testsuite/gcc.target/i386/sse2-movapd-2.c
@@ -25,7 +25,7 @@ static void
TEST (void)
{
union128d u;
- double e[2] __attribute__ ((aligned (8))) = {0.0};
+ double e[2] __attribute__ ((aligned (16))) = {0.0};
u.x = _mm_set_pd (2134.3343,1234.635654);
diff --git a/gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c b/gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c
new file mode 100644
index 00000000000..1c78052e6d7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c
@@ -0,0 +1,21 @@
+/* Test accuracy of long double division (glibc bug 15396). */
+/* { dg-do run { target powerpc*-*-linux* powerpc*-*-darwin* powerpc*-*-aix* rs6000-*-* } } */
+/* { dg-options "-mlong-double-128" } */
+
+extern void exit (int);
+extern void abort (void);
+
+volatile long double a = 0x1p-1024L;
+volatile long double b = 0x3p-53L;
+volatile long double r;
+volatile long double expected = 0x1.55555555555555555555555555p-973L;
+
+int
+main (void)
+{
+ r = a / b;
+ /* Allow error up to 2ulp. */
+ if (__builtin_fabsl (r - expected) > 0x1p-1073L)
+ abort ();
+ exit (0);
+}
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 53f32383f63..40fe9fe3821 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,8 @@
+2014-01-03 Joseph Myers <joseph@codesourcery.com>
+
+ * config/rs6000/ibm-ldouble.c (__gcc_qdiv): Scale up arguments in
+ case of small numerator and finite nonzero result.
+
2013-11-10 Kai Tietz <ktietz@redhat.com>
Back-merged from trunk
diff --git a/libgcc/config/rs6000/ibm-ldouble.c b/libgcc/config/rs6000/ibm-ldouble.c
index b0b8037cdce..658ca9adea7 100644
--- a/libgcc/config/rs6000/ibm-ldouble.c
+++ b/libgcc/config/rs6000/ibm-ldouble.c
@@ -189,7 +189,16 @@ __gcc_qdiv (double a, double b, double c, double d)
|| nonfinite (t))
return t;
- /* Finite nonzero result requires corrections to the highest order term. */
+ /* Finite nonzero result requires corrections to the highest order
+ term. These corrections require the low part of c * t to be
+ exactly represented in double. */
+ if (fabs (a) <= 0x1p-969)
+ {
+ a *= 0x1p106;
+ b *= 0x1p106;
+ c *= 0x1p106;
+ d *= 0x1p106;
+ }
s = c * t; /* (s,sigma) = c*t exactly. */
w = -(-b + d * t); /* Written to get fnmsub for speed, but not