Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/gpl3/gcc/dist Import gcc 4.8.3 which has 98 bugs fi...



details:   https://anonhg.NetBSD.org/src/rev/a0005f95c741
branches:  trunk
changeset: 329494:a0005f95c741
user:      skrll <skrll%NetBSD.org@localhost>
date:      Tue May 27 08:39:52 2014 +0000

description:
Import gcc 4.8.3 which has 98 bugs fixed on gcc-4-8-3-pre-r208254

diffstat:

 external/gpl3/gcc/dist/gcc/DATESTAMP                       |    2 +-
 external/gpl3/gcc/dist/gcc/DEV-PHASE                       |    1 -
 external/gpl3/gcc/dist/gcc/alias.c                         |   74 ++++++--
 external/gpl3/gcc/dist/gcc/bb-reorder.c                    |    3 +-
 external/gpl3/gcc/dist/gcc/builtins.def                    |    3 +
 external/gpl3/gcc/dist/gcc/calls.c                         |    9 +-
 external/gpl3/gcc/dist/gcc/cse.c                           |    9 +-
 external/gpl3/gcc/dist/gcc/cselib.c                        |    9 +-
 external/gpl3/gcc/dist/gcc/expr.h                          |    4 +-
 external/gpl3/gcc/dist/gcc/fold-const.c                    |    4 -
 external/gpl3/gcc/dist/gcc/function.c                      |   80 +++++----
 external/gpl3/gcc/dist/gcc/gimple-ssa-strength-reduction.c |   17 +-
 external/gpl3/gcc/dist/gcc/gimple.h                        |    3 +
 external/gpl3/gcc/dist/gcc/gimplify.c                      |    2 +
 external/gpl3/gcc/dist/gcc/graphite-scop-detection.c       |   29 ++-
 external/gpl3/gcc/dist/gcc/ipa-cp.c                        |   22 +-
 external/gpl3/gcc/dist/gcc/ipa.c                           |    2 +
 external/gpl3/gcc/dist/gcc/lra-constraints.c               |   52 ++++++
 external/gpl3/gcc/dist/gcc/optabs.c                        |    9 +-
 external/gpl3/gcc/dist/gcc/opts.c                          |    4 +-
 external/gpl3/gcc/dist/gcc/params.def                      |    6 +
 external/gpl3/gcc/dist/gcc/rtlanal.c                       |   42 +++-
 external/gpl3/gcc/dist/gcc/sdbout.c                        |   10 +-
 external/gpl3/gcc/dist/gcc/stmt.c                          |   33 ++-
 external/gpl3/gcc/dist/gcc/tree-cfgcleanup.c               |    3 -
 external/gpl3/gcc/dist/gcc/tree-eh.c                       |    7 +-
 external/gpl3/gcc/dist/gcc/tree-inline.c                   |    3 +-
 external/gpl3/gcc/dist/gcc/tree-sra.c                      |   12 +
 external/gpl3/gcc/dist/gcc/tree-ssa-loop-im.c              |   15 +-
 external/gpl3/gcc/dist/gcc/tree-ssa-loop-ivopts.c          |   11 +-
 external/gpl3/gcc/dist/gcc/tree-ssa-math-opts.c            |   11 +
 external/gpl3/gcc/dist/gcc/tree-ssa-operands.c             |    6 +-
 external/gpl3/gcc/dist/gcc/tree-ssa-propagate.c            |   12 +-
 external/gpl3/gcc/dist/gcc/tree-ssa-reassoc.c              |    3 +-
 external/gpl3/gcc/dist/gcc/tree-ssa-structalias.c          |  110 ++++++------
 external/gpl3/gcc/dist/gcc/tree-ssa-uninit.c               |   64 +++----
 external/gpl3/gcc/dist/gcc/tree-ssanames.c                 |    2 +-
 external/gpl3/gcc/dist/gcc/tree-vect-data-refs.c           |    2 +-
 external/gpl3/gcc/dist/gcc/tree-vect-generic.c             |    3 +-
 external/gpl3/gcc/dist/gcc/tree-vect-loop.c                |   14 +-
 external/gpl3/gcc/dist/gcc/tree.h                          |   16 +
 external/gpl3/gcc/dist/libcpp/ChangeLog                    |   37 ++++
 external/gpl3/gcc/dist/libcpp/line-map.c                   |    5 +
 external/gpl3/gcc/dist/libgcc/ChangeLog                    |   53 ++++++
 external/gpl3/gcc/dist/libgcc/config/arm/sfp-machine.h     |    8 +-
 external/gpl3/gcc/dist/libgcc/config/libbid/ChangeLog      |    4 +
 external/gpl3/gcc/dist/libgcc/config/rs6000/linux-unwind.h |   51 ++++-
 external/gpl3/gcc/dist/libgcc/config/rs6000/tramp.S        |   66 +++++++
 external/gpl3/gcc/dist/libgomp/config/linux/futex.h        |    8 +-
 external/gpl3/gcc/dist/libiberty/ChangeLog                 |    4 +
 external/gpl3/gcc/dist/libitm/ChangeLog                    |   66 +++++++-
 external/gpl3/gcc/dist/libitm/acinclude.m4                 |   16 +-
 external/gpl3/gcc/dist/libitm/beginend.cc                  |   10 +
 external/gpl3/gcc/dist/libitm/config/generic/asmcfi.h      |    4 +-
 external/gpl3/gcc/dist/libitm/config/linux/futex_bits.h    |    6 +-
 external/gpl3/gcc/dist/libitm/config/powerpc/sjlj.S        |   24 ++-
 external/gpl3/gcc/dist/libitm/config/powerpc/target.h      |   82 +++++++++
 external/gpl3/gcc/dist/libitm/config/x86/target.h          |    7 +
 external/gpl3/gcc/dist/libitm/configure.tgt                |    5 +-
 external/gpl3/gcc/dist/libitm/libitm.info                  |  Bin 
 external/gpl3/gcc/dist/libitm/query.cc                     |   14 +
 external/gpl3/gcc/dist/libmudflap/ChangeLog                |   11 +
 external/gpl3/gcc/dist/libssp/ChangeLog                    |   11 +
 external/gpl3/gcc/dist/lto-plugin/ChangeLog                |   11 +
 64 files changed, 954 insertions(+), 272 deletions(-)

diffs (truncated from 2421 to 300 lines):

diff -r 47618a2a2f78 -r a0005f95c741 external/gpl3/gcc/dist/gcc/DATESTAMP
--- a/external/gpl3/gcc/dist/gcc/DATESTAMP      Tue May 27 08:29:46 2014 +0000
+++ b/external/gpl3/gcc/dist/gcc/DATESTAMP      Tue May 27 08:39:52 2014 +0000
@@ -1,1 +1,1 @@
-20140302
+20140522
diff -r 47618a2a2f78 -r a0005f95c741 external/gpl3/gcc/dist/gcc/DEV-PHASE
--- a/external/gpl3/gcc/dist/gcc/DEV-PHASE      Tue May 27 08:29:46 2014 +0000
+++ b/external/gpl3/gcc/dist/gcc/DEV-PHASE      Tue May 27 08:39:52 2014 +0000
@@ -1,1 +0,0 @@
-prerelease
diff -r 47618a2a2f78 -r a0005f95c741 external/gpl3/gcc/dist/gcc/alias.c
--- a/external/gpl3/gcc/dist/gcc/alias.c        Tue May 27 08:29:46 2014 +0000
+++ b/external/gpl3/gcc/dist/gcc/alias.c        Tue May 27 08:39:52 2014 +0000
@@ -156,7 +156,9 @@
 static alias_set_entry get_alias_set_entry (alias_set_type);
 static bool nonoverlapping_component_refs_p (const_rtx, const_rtx);
 static tree decl_for_component_ref (tree);
-static int write_dependence_p (const_rtx, const_rtx, int);
+static int write_dependence_p (const_rtx,
+                                     const_rtx, enum machine_mode, rtx,
+                                                            bool, bool, bool);
 
 static void memory_modified_1 (rtx, const_rtx, void *);
 
@@ -2558,15 +2560,24 @@
 }
 
 /* Returns nonzero if a write to X might alias a previous read from
-   (or, if WRITEP is nonzero, a write to) MEM.  */
+   (or, if WRITEP is true, a write to) MEM.
+   If X_CANONCALIZED is true, then X_ADDR is the canonicalized address of X,
+   and X_MODE the mode for that access.
+   If MEM_CANONICALIZED is true, MEM is canonicalized.  */
 
 static int
-write_dependence_p (const_rtx mem, const_rtx x, int writep)
+write_dependence_p (const_rtx mem,
+                                  const_rtx x, enum machine_mode x_mode, rtx x_addr,
+                                                bool mem_canonicalized, bool x_canonicalized, bool writep)
 {
-  rtx x_addr, mem_addr;
+  rtx mem_addr;
   rtx base;
   int ret;
 
+  gcc_checking_assert (x_canonicalized
+                             ? (x_addr != NULL_RTX && x_mode != VOIDmode)
+                                      : (x_addr == NULL_RTX && x_mode == VOIDmode));
+
   if (MEM_VOLATILE_P (x) && MEM_VOLATILE_P (mem))
     return 1;
 
@@ -2590,17 +2601,21 @@
   if (MEM_ADDR_SPACE (mem) != MEM_ADDR_SPACE (x))
     return 1;
 
-  x_addr = XEXP (x, 0);
   mem_addr = XEXP (mem, 0);
-  if (!((GET_CODE (x_addr) == VALUE
-        && GET_CODE (mem_addr) != VALUE
-        && reg_mentioned_p (x_addr, mem_addr))
-       || (GET_CODE (x_addr) != VALUE
-           && GET_CODE (mem_addr) == VALUE
-           && reg_mentioned_p (mem_addr, x_addr))))
+  if (!x_addr)
     {
-      x_addr = get_addr (x_addr);
-      mem_addr = get_addr (mem_addr);
+      x_addr = XEXP (x, 0);
+      if (!((GET_CODE (x_addr) == VALUE
+            && GET_CODE (mem_addr) != VALUE
+            && reg_mentioned_p (x_addr, mem_addr))
+           || (GET_CODE (x_addr) != VALUE
+               && GET_CODE (mem_addr) == VALUE
+               && reg_mentioned_p (mem_addr, x_addr))))
+       {
+         x_addr = get_addr (x_addr);
+         if (!mem_canonicalized)
+           mem_addr = get_addr (mem_addr);
+       }
     }
 
   if (! writep)
@@ -2616,11 +2631,16 @@
                          GET_MODE (mem)))
     return 0;
 
-  x_addr = canon_rtx (x_addr);
-  mem_addr = canon_rtx (mem_addr);
+  if (!x_canonicalized)
+    {
+      x_addr = canon_rtx (x_addr);
+      x_mode = GET_MODE (x);
+    }
+  if (!mem_canonicalized)
+    mem_addr = canon_rtx (mem_addr);
 
   if ((ret = memrefs_conflict_p (SIZE_FOR_MODE (mem), mem_addr,
-                                SIZE_FOR_MODE (x), x_addr, 0)) != -1)
+                                GET_MODE_SIZE (x_mode), x_addr, 0)) != -1)
     return ret;
 
   if (nonoverlapping_memrefs_p (x, mem, false))
@@ -2634,7 +2654,23 @@
 int
 anti_dependence (const_rtx mem, const_rtx x)
 {
-  return write_dependence_p (mem, x, /*writep=*/0);
+  return write_dependence_p (mem, x, VOIDmode, NULL_RTX,
+                                 /*mem_canonicalized=*/false,
+                                                    /*x_canonicalized*/false, /*writep=*/false);
+}
+
+/* Likewise, but we already have a canonicalized MEM, and X_ADDR for X.
+   Also, consider X in X_MODE (which might be from an enclosing
+   STRICT_LOW_PART / ZERO_EXTRACT).
+   If MEM_CANONICALIZED is true, MEM is canonicalized.  */
+
+int
+canon_anti_dependence (const_rtx mem, bool mem_canonicalized,
+                                        const_rtx x, enum machine_mode x_mode, rtx x_addr)
+{
+  return write_dependence_p (mem, x, x_mode, x_addr,
+                                 mem_canonicalized, /*x_canonicalized=*/true,
+                                                            /*writep=*/false);
 }
 
 /* Output dependence: X is written after store in MEM takes place.  */
@@ -2642,7 +2678,9 @@
 int
 output_dependence (const_rtx mem, const_rtx x)
 {
-  return write_dependence_p (mem, x, /*writep=*/1);
+  return write_dependence_p (mem, x, VOIDmode, NULL_RTX,
+                                 /*mem_canonicalized=*/false,
+                                                    /*x_canonicalized*/false, /*writep=*/true);
 }
 
 
diff -r 47618a2a2f78 -r a0005f95c741 external/gpl3/gcc/dist/gcc/bb-reorder.c
--- a/external/gpl3/gcc/dist/gcc/bb-reorder.c   Tue May 27 08:29:46 2014 +0000
+++ b/external/gpl3/gcc/dist/gcc/bb-reorder.c   Tue May 27 08:39:52 2014 +0000
@@ -1685,9 +1685,8 @@
          edge e;
          edge_iterator ei;
 
-         /* Find EDGE_CAN_FALLTHRU edge.  */
          FOR_EACH_EDGE (e, ei, cur_bb->succs)
-           if (e->flags & EDGE_CAN_FALLTHRU)
+           if (e->flags & EDGE_FALLTHRU)
              {
                fall_thru = e;
                break;
diff -r 47618a2a2f78 -r a0005f95c741 external/gpl3/gcc/dist/gcc/builtins.def
--- a/external/gpl3/gcc/dist/gcc/builtins.def   Tue May 27 08:29:46 2014 +0000
+++ b/external/gpl3/gcc/dist/gcc/builtins.def   Tue May 27 08:39:52 2014 +0000
@@ -252,6 +252,9 @@
 DEF_LIB_BUILTIN        (BUILT_IN_FABS, "fabs", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
 DEF_C99_C90RES_BUILTIN (BUILT_IN_FABSF, "fabsf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
 DEF_C99_C90RES_BUILTIN (BUILT_IN_FABSL, "fabsl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FABSD32, "fabsd32", BT_FN_DFLOAT32_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FABSD64, "fabsd64", BT_FN_DFLOAT64_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FABSD128, "fabsd128", BT_FN_DFLOAT128_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
 DEF_C99_BUILTIN        (BUILT_IN_FDIM, "fdim", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
 DEF_C99_BUILTIN        (BUILT_IN_FDIMF, "fdimf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
 DEF_C99_BUILTIN        (BUILT_IN_FDIML, "fdiml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
diff -r 47618a2a2f78 -r a0005f95c741 external/gpl3/gcc/dist/gcc/calls.c
--- a/external/gpl3/gcc/dist/gcc/calls.c        Tue May 27 08:29:46 2014 +0000
+++ b/external/gpl3/gcc/dist/gcc/calls.c        Tue May 27 08:39:52 2014 +0000
@@ -983,6 +983,7 @@
 
   for (i = 0; i < num_actuals; i++)
     if (args[i].reg != 0 && ! args[i].pass_on_stack
+       && GET_CODE (args[i].reg) != PARALLEL
        && args[i].mode == BLKmode
        && MEM_P (args[i].value)
        && (MEM_ALIGN (args[i].value)
@@ -1327,6 +1328,7 @@
 #else
                             args[i].reg != 0,
 #endif
+                            reg_parm_stack_space,
                             args[i].pass_on_stack ? 0 : args[i].partial,
                             fndecl, args_size, &args[i].locate);
 #ifdef BLOCK_REG_PADDING
@@ -3171,7 +3173,9 @@
         group load/store machinery below.  */
       if (!structure_value_addr
          && !pcc_struct_value
+         && TYPE_MODE (rettype) != VOIDmode
          && TYPE_MODE (rettype) != BLKmode
+         && REG_P (valreg)
          && targetm.calls.return_in_msb (rettype))
        {
          if (shift_return_value (TYPE_MODE (rettype), false, valreg))
@@ -3734,7 +3738,8 @@
 #else
                           argvec[count].reg != 0,
 #endif
-                          0, NULL_TREE, &args_size, &argvec[count].locate);
+                          reg_parm_stack_space, 0,
+                          NULL_TREE, &args_size, &argvec[count].locate);
 
       if (argvec[count].reg == 0 || argvec[count].partial != 0
          || reg_parm_stack_space > 0)
@@ -3821,7 +3826,7 @@
 #else
                               argvec[count].reg != 0,
 #endif
-                              argvec[count].partial,
+                              reg_parm_stack_space, argvec[count].partial,
                               NULL_TREE, &args_size, &argvec[count].locate);
          args_size.constant += argvec[count].locate.size.constant;
          gcc_assert (!argvec[count].locate.size.var);
diff -r 47618a2a2f78 -r a0005f95c741 external/gpl3/gcc/dist/gcc/cse.c
--- a/external/gpl3/gcc/dist/gcc/cse.c  Tue May 27 08:29:46 2014 +0000
+++ b/external/gpl3/gcc/dist/gcc/cse.c  Tue May 27 08:39:52 2014 +0000
@@ -1824,7 +1824,7 @@
       }
 }
 
-/* Function called for each rtx to check whether true dependence exist.  */
+/* Function called for each rtx to check whether an anti dependence exist.  */
 struct check_dependence_data
 {
   enum machine_mode mode;
@@ -1837,7 +1837,7 @@
 {
   struct check_dependence_data *d = (struct check_dependence_data *) data;
   if (*x && MEM_P (*x))
-    return canon_true_dependence (d->exp, d->mode, d->addr, *x, NULL_RTX);
+    return canon_anti_dependence (*x, true, d->exp, d->mode, d->addr);
   else
     return 0;
 }
@@ -5659,9 +5659,10 @@
          invalidate (XEXP (dest, 0), GET_MODE (dest));
       }
 
-  /* A volatile ASM or an UNSPEC_VOLATILE invalidates everything.  */
+  /* A volatile ASM invalidates everything.  */
   if (NONJUMP_INSN_P (insn)
-      && volatile_insn_p (PATTERN (insn)))
+      && GET_CODE (PATTERN (insn)) == ASM_OPERANDS
+      && MEM_VOLATILE_P (PATTERN (insn)))
     flush_hash_table ();
 
   /* Don't cse over a call to setjmp; on some machines (eg VAX)
diff -r 47618a2a2f78 -r a0005f95c741 external/gpl3/gcc/dist/gcc/cselib.c
--- a/external/gpl3/gcc/dist/gcc/cselib.c       Tue May 27 08:29:46 2014 +0000
+++ b/external/gpl3/gcc/dist/gcc/cselib.c       Tue May 27 08:39:52 2014 +0000
@@ -2260,8 +2260,8 @@
              continue;
            }
          if (num_mems < PARAM_VALUE (PARAM_MAX_CSELIB_MEMORY_LOCATIONS)
-             && ! canon_true_dependence (mem_rtx, GET_MODE (mem_rtx),
-                                         mem_addr, x, NULL_RTX))
+             && ! canon_anti_dependence (x, false, mem_rtx,
+                                         GET_MODE (mem_rtx), mem_addr))
            {
              has_mem = true;
              num_mems++;
@@ -2623,12 +2623,13 @@
 
   cselib_current_insn = insn;
 
-  /* Forget everything at a CODE_LABEL, a volatile insn, or a setjmp.  */
+  /* Forget everything at a CODE_LABEL, a volatile asm, or a setjmp.  */
   if ((LABEL_P (insn)
        || (CALL_P (insn)
           && find_reg_note (insn, REG_SETJMP, NULL))
        || (NONJUMP_INSN_P (insn)
-          && volatile_insn_p (PATTERN (insn))))
+          && GET_CODE (PATTERN (insn)) == ASM_OPERANDS
+          && MEM_VOLATILE_P (PATTERN (insn))))
       && !cselib_preserve_constants)
     {
       cselib_reset_table (next_uid);
diff -r 47618a2a2f78 -r a0005f95c741 external/gpl3/gcc/dist/gcc/expr.h
--- a/external/gpl3/gcc/dist/gcc/expr.h Tue May 27 08:29:46 2014 +0000
+++ b/external/gpl3/gcc/dist/gcc/expr.h Tue May 27 08:39:52 2014 +0000
@@ -521,8 +521,8 @@
                          rtx, int);
 #endif
 
-extern void locate_and_pad_parm (enum machine_mode, tree, int, int, tree,
-                                struct args_size *,
+extern void locate_and_pad_parm (enum machine_mode, tree, int, int, int,
+                                tree, struct args_size *,
                                 struct locate_and_pad_arg_data *);
 
 /* Return the CODE_LABEL rtx for a LABEL_DECL, creating it if necessary.  */
diff -r 47618a2a2f78 -r a0005f95c741 external/gpl3/gcc/dist/gcc/fold-const.c
--- a/external/gpl3/gcc/dist/gcc/fold-const.c   Tue May 27 08:29:46 2014 +0000
+++ b/external/gpl3/gcc/dist/gcc/fold-const.c   Tue May 27 08:39:52 2014 +0000
@@ -461,8 +461,6 @@
 
     case TRUNC_DIV_EXPR:
     case ROUND_DIV_EXPR:



Home | Main Index | Thread Index | Old Index