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