mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-06-11 04:49:58 +00:00
gcc-4.5: Move SRCREV to latest on gcc-4_5-branch
This brings in bug fixes for details clone gcc tree and checkout gcc-4_5-branch and then git log aab79458fc2025967f9a35aef4e7c0094c63d38e..1b523ca2a20934d1c52cb3a54b634ac4441debdf Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
This commit is contained in:
@@ -14,7 +14,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
|
|||||||
|
|
||||||
|
|
||||||
PV = "4.5"
|
PV = "4.5"
|
||||||
PR = "r46"
|
PR = "r47"
|
||||||
|
|
||||||
# BINV should be incremented after updating to a revision
|
# BINV should be incremented after updating to a revision
|
||||||
# after a minor gcc release (e.g. 4.5.1 or 4.5.2) has been made
|
# after a minor gcc release (e.g. 4.5.1 or 4.5.2) has been made
|
||||||
@@ -23,7 +23,7 @@ PR = "r46"
|
|||||||
# which will be next minor release and so on.
|
# which will be next minor release and so on.
|
||||||
|
|
||||||
BINV = "${PV}.4"
|
BINV = "${PV}.4"
|
||||||
SRCREV = "181733"
|
SRCREV = "184907"
|
||||||
BRANCH = "gcc-4_5-branch"
|
BRANCH = "gcc-4_5-branch"
|
||||||
PR_append = "+svnr${SRCPV}"
|
PR_append = "+svnr${SRCPV}"
|
||||||
|
|
||||||
@@ -80,7 +80,6 @@ SRC_URI = "svn://gcc.gnu.org/svn/gcc/branches;module=${BRANCH};proto=http \
|
|||||||
file://linaro/gcc-4.5-linaro-r99344.patch \
|
file://linaro/gcc-4.5-linaro-r99344.patch \
|
||||||
file://linaro/gcc-4.5-linaro-r99345.patch \
|
file://linaro/gcc-4.5-linaro-r99345.patch \
|
||||||
file://linaro/gcc-4.5-linaro-r99346.patch \
|
file://linaro/gcc-4.5-linaro-r99346.patch \
|
||||||
file://linaro/gcc-4.5-linaro-r99347.patch \
|
|
||||||
file://linaro/gcc-4.5-linaro-r99348.patch \
|
file://linaro/gcc-4.5-linaro-r99348.patch \
|
||||||
file://linaro/gcc-4.5-linaro-r99349.patch \
|
file://linaro/gcc-4.5-linaro-r99349.patch \
|
||||||
file://linaro/gcc-4.5-linaro-r99351.patch \
|
file://linaro/gcc-4.5-linaro-r99351.patch \
|
||||||
|
|||||||
@@ -1,83 +0,0 @@
|
|||||||
Merge from Sourcery G++ 4.4:
|
|
||||||
|
|
||||||
2010-02-15 Julian Brown <julian@codesourcery.com>
|
|
||||||
|
|
||||||
Issue #7486
|
|
||||||
|
|
||||||
gcc/
|
|
||||||
* config/arm/arm.c (arm_libcall_uses_aapcs_base)
|
|
||||||
(arm_init_cumulative_args): Use correct ABI for double-precision
|
|
||||||
helper functions in hard-float mode if only single-precision
|
|
||||||
arithmetic is supported in hardware.
|
|
||||||
|
|
||||||
2010-07-26 Julian Brown <julian@codesourcery.com>
|
|
||||||
|
|
||||||
Backport from FSF mainline:
|
|
||||||
|
|
||||||
Julian Brown <julian@codesourcery.com>
|
|
||||||
|
|
||||||
=== modified file 'gcc/config/arm/arm.c'
|
|
||||||
--- old/gcc/config/arm/arm.c 2010-08-13 10:30:35 +0000
|
|
||||||
+++ new/gcc/config/arm/arm.c 2010-08-13 10:43:42 +0000
|
|
||||||
@@ -3453,6 +3453,28 @@
|
|
||||||
convert_optab_libfunc (sfix_optab, DImode, SFmode));
|
|
||||||
add_libcall (libcall_htab,
|
|
||||||
convert_optab_libfunc (ufix_optab, DImode, SFmode));
|
|
||||||
+
|
|
||||||
+ /* Values from double-precision helper functions are returned in core
|
|
||||||
+ registers if the selected core only supports single-precision
|
|
||||||
+ arithmetic, even if we are using the hard-float ABI. */
|
|
||||||
+ if (TARGET_VFP)
|
|
||||||
+ {
|
|
||||||
+ add_libcall (libcall_htab, optab_libfunc (add_optab, DFmode));
|
|
||||||
+ add_libcall (libcall_htab, optab_libfunc (sdiv_optab, DFmode));
|
|
||||||
+ add_libcall (libcall_htab, optab_libfunc (smul_optab, DFmode));
|
|
||||||
+ add_libcall (libcall_htab, optab_libfunc (neg_optab, DFmode));
|
|
||||||
+ add_libcall (libcall_htab, optab_libfunc (sub_optab, DFmode));
|
|
||||||
+ add_libcall (libcall_htab, optab_libfunc (eq_optab, DFmode));
|
|
||||||
+ add_libcall (libcall_htab, optab_libfunc (lt_optab, DFmode));
|
|
||||||
+ add_libcall (libcall_htab, optab_libfunc (le_optab, DFmode));
|
|
||||||
+ add_libcall (libcall_htab, optab_libfunc (ge_optab, DFmode));
|
|
||||||
+ add_libcall (libcall_htab, optab_libfunc (gt_optab, DFmode));
|
|
||||||
+ add_libcall (libcall_htab, optab_libfunc (unord_optab, DFmode));
|
|
||||||
+ add_libcall (libcall_htab,
|
|
||||||
+ convert_optab_libfunc (sext_optab, DFmode, SFmode));
|
|
||||||
+ add_libcall (libcall_htab,
|
|
||||||
+ convert_optab_libfunc (trunc_optab, SFmode, DFmode));
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
return libcall && htab_find (libcall_htab, libcall) != NULL;
|
|
||||||
@@ -4406,6 +4428,31 @@
|
|
||||||
if (arm_libcall_uses_aapcs_base (libname))
|
|
||||||
pcum->pcs_variant = ARM_PCS_AAPCS;
|
|
||||||
|
|
||||||
+ /* We must pass arguments to double-precision helper functions in core
|
|
||||||
+ registers if we only have hardware support for single-precision
|
|
||||||
+ arithmetic, even if we are using the hard-float ABI. */
|
|
||||||
+ if (TARGET_VFP
|
|
||||||
+ && (rtx_equal_p (libname, optab_libfunc (add_optab, DFmode))
|
|
||||||
+ || rtx_equal_p (libname, optab_libfunc (sdiv_optab, DFmode))
|
|
||||||
+ || rtx_equal_p (libname, optab_libfunc (smul_optab, DFmode))
|
|
||||||
+ || rtx_equal_p (libname, optab_libfunc (neg_optab, DFmode))
|
|
||||||
+ || rtx_equal_p (libname, optab_libfunc (sub_optab, DFmode))
|
|
||||||
+ || rtx_equal_p (libname, optab_libfunc (eq_optab, DFmode))
|
|
||||||
+ || rtx_equal_p (libname, optab_libfunc (lt_optab, DFmode))
|
|
||||||
+ || rtx_equal_p (libname, optab_libfunc (le_optab, DFmode))
|
|
||||||
+ || rtx_equal_p (libname, optab_libfunc (ge_optab, DFmode))
|
|
||||||
+ || rtx_equal_p (libname, optab_libfunc (gt_optab, DFmode))
|
|
||||||
+ || rtx_equal_p (libname, optab_libfunc (unord_optab, DFmode))
|
|
||||||
+ || rtx_equal_p (libname, convert_optab_libfunc (sext_optab,
|
|
||||||
+ DFmode, SFmode))
|
|
||||||
+ || rtx_equal_p (libname, convert_optab_libfunc (trunc_optab,
|
|
||||||
+ SFmode, DFmode))
|
|
||||||
+ || rtx_equal_p (libname, convert_optab_libfunc (sfix_optab,
|
|
||||||
+ SImode, DFmode))
|
|
||||||
+ || rtx_equal_p (libname, convert_optab_libfunc (ufix_optab,
|
|
||||||
+ SImode, DFmode))))
|
|
||||||
+ pcum->pcs_variant = ARM_PCS_AAPCS;
|
|
||||||
+
|
|
||||||
pcum->aapcs_ncrn = pcum->aapcs_next_ncrn = 0;
|
|
||||||
pcum->aapcs_reg = NULL_RTX;
|
|
||||||
pcum->aapcs_partial = 0;
|
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -66,8 +66,10 @@
|
|||||||
* gcc.target/i386/volatile-bitfields-2.c: New.
|
* gcc.target/i386/volatile-bitfields-2.c: New.
|
||||||
|
|
||||||
=== modified file 'gcc/calls.c'
|
=== modified file 'gcc/calls.c'
|
||||||
--- old/gcc/calls.c 2010-10-04 00:50:43 +0000
|
Index: gcc-4_5-branch/gcc/calls.c
|
||||||
+++ new/gcc/calls.c 2010-11-04 12:43:52 +0000
|
===================================================================
|
||||||
|
--- gcc-4_5-branch.orig/gcc/calls.c 2012-03-06 13:05:56.524590011 -0800
|
||||||
|
+++ gcc-4_5-branch/gcc/calls.c 2012-03-06 13:36:10.276677792 -0800
|
||||||
@@ -878,7 +878,7 @@
|
@@ -878,7 +878,7 @@
|
||||||
int bitsize = MIN (bytes * BITS_PER_UNIT, BITS_PER_WORD);
|
int bitsize = MIN (bytes * BITS_PER_UNIT, BITS_PER_WORD);
|
||||||
|
|
||||||
@@ -77,10 +79,10 @@
|
|||||||
word_mode, word_mode);
|
word_mode, word_mode);
|
||||||
|
|
||||||
/* There is no need to restrict this code to loading items
|
/* There is no need to restrict this code to loading items
|
||||||
|
Index: gcc-4_5-branch/gcc/common.opt
|
||||||
=== modified file 'gcc/common.opt'
|
===================================================================
|
||||||
--- old/gcc/common.opt 2010-07-29 14:59:35 +0000
|
--- gcc-4_5-branch.orig/gcc/common.opt 2012-03-06 13:05:48.400589618 -0800
|
||||||
+++ new/gcc/common.opt 2010-11-04 12:43:52 +0000
|
+++ gcc-4_5-branch/gcc/common.opt 2012-03-06 13:36:35.608679018 -0800
|
||||||
@@ -613,6 +613,10 @@
|
@@ -613,6 +613,10 @@
|
||||||
Common Report Var(flag_loop_block) Optimization
|
Common Report Var(flag_loop_block) Optimization
|
||||||
Enable Loop Blocking transformation
|
Enable Loop Blocking transformation
|
||||||
@@ -92,10 +94,10 @@
|
|||||||
fguess-branch-probability
|
fguess-branch-probability
|
||||||
Common Report Var(flag_guess_branch_prob) Optimization
|
Common Report Var(flag_guess_branch_prob) Optimization
|
||||||
Enable guessing of branch probabilities
|
Enable guessing of branch probabilities
|
||||||
|
Index: gcc-4_5-branch/gcc/config/h8300/h8300.c
|
||||||
=== modified file 'gcc/config/h8300/h8300.c'
|
===================================================================
|
||||||
--- old/gcc/config/h8300/h8300.c 2010-04-02 18:54:46 +0000
|
--- gcc-4_5-branch.orig/gcc/config/h8300/h8300.c 2012-03-06 11:53:30.000000000 -0800
|
||||||
+++ new/gcc/config/h8300/h8300.c 2010-11-04 12:43:52 +0000
|
+++ gcc-4_5-branch/gcc/config/h8300/h8300.c 2012-03-06 13:36:35.528679014 -0800
|
||||||
@@ -403,6 +403,10 @@
|
@@ -403,6 +403,10 @@
|
||||||
restore er6 though, so bump up the cost. */
|
restore er6 though, so bump up the cost. */
|
||||||
h8300_move_ratio = 6;
|
h8300_move_ratio = 6;
|
||||||
@@ -107,10 +109,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Implement REG_CLASS_FROM_LETTER.
|
/* Implement REG_CLASS_FROM_LETTER.
|
||||||
|
Index: gcc-4_5-branch/gcc/config/m32c/m32c.c
|
||||||
=== modified file 'gcc/config/m32c/m32c.c'
|
===================================================================
|
||||||
--- old/gcc/config/m32c/m32c.c 2009-10-22 18:46:26 +0000
|
--- gcc-4_5-branch.orig/gcc/config/m32c/m32c.c 2012-03-06 11:53:16.000000000 -0800
|
||||||
+++ new/gcc/config/m32c/m32c.c 2010-11-04 12:43:52 +0000
|
+++ gcc-4_5-branch/gcc/config/m32c/m32c.c 2012-03-06 13:36:35.488679012 -0800
|
||||||
@@ -428,6 +428,10 @@
|
@@ -428,6 +428,10 @@
|
||||||
|
|
||||||
if (TARGET_A24)
|
if (TARGET_A24)
|
||||||
@@ -122,12 +124,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Defining data structures for per-function information */
|
/* Defining data structures for per-function information */
|
||||||
|
Index: gcc-4_5-branch/gcc/config/rx/rx.c
|
||||||
=== modified file 'gcc/config/rx/rx.c'
|
===================================================================
|
||||||
--- old/gcc/config/rx/rx.c 2010-07-27 14:39:53 +0000
|
--- gcc-4_5-branch.orig/gcc/config/rx/rx.c 2012-03-06 11:53:17.000000000 -0800
|
||||||
+++ new/gcc/config/rx/rx.c 2010-11-04 12:43:52 +0000
|
+++ gcc-4_5-branch/gcc/config/rx/rx.c 2012-03-06 13:36:35.508679013 -0800
|
||||||
@@ -2187,6 +2187,14 @@
|
@@ -2417,6 +2417,14 @@
|
||||||
}
|
return ! TYPE_PACKED (record_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
+static void
|
+static void
|
||||||
@@ -139,11 +141,11 @@
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
|
||||||
static bool
|
/* Returns true if X a legitimate constant for an immediate
|
||||||
rx_allocate_stack_slots_for_args (void)
|
operand on the RX. X is already known to satisfy CONSTANT_P. */
|
||||||
@@ -2759,6 +2767,9 @@
|
@@ -2794,6 +2802,9 @@
|
||||||
#undef TARGET_CC_MODES_COMPATIBLE
|
#undef TARGET_PROMOTE_FUNCTION_MODE
|
||||||
#define TARGET_CC_MODES_COMPATIBLE rx_cc_modes_compatible
|
#define TARGET_PROMOTE_FUNCTION_MODE rx_promote_function_mode
|
||||||
|
|
||||||
+#undef TARGET_OPTION_OVERRIDE
|
+#undef TARGET_OPTION_OVERRIDE
|
||||||
+#define TARGET_OPTION_OVERRIDE rx_option_override
|
+#define TARGET_OPTION_OVERRIDE rx_option_override
|
||||||
@@ -151,10 +153,10 @@
|
|||||||
struct gcc_target targetm = TARGET_INITIALIZER;
|
struct gcc_target targetm = TARGET_INITIALIZER;
|
||||||
|
|
||||||
/* #include "gt-rx.h" */
|
/* #include "gt-rx.h" */
|
||||||
|
Index: gcc-4_5-branch/gcc/config/sh/sh.c
|
||||||
=== modified file 'gcc/config/sh/sh.c'
|
===================================================================
|
||||||
--- old/gcc/config/sh/sh.c 2010-05-05 21:12:17 +0000
|
--- gcc-4_5-branch.orig/gcc/config/sh/sh.c 2012-03-06 11:53:20.000000000 -0800
|
||||||
+++ new/gcc/config/sh/sh.c 2010-11-04 12:43:52 +0000
|
+++ gcc-4_5-branch/gcc/config/sh/sh.c 2012-03-06 13:36:35.516679013 -0800
|
||||||
@@ -950,6 +950,10 @@
|
@@ -950,6 +950,10 @@
|
||||||
|
|
||||||
if (sh_fixed_range_str)
|
if (sh_fixed_range_str)
|
||||||
@@ -166,10 +168,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Print the operand address in x to the stream. */
|
/* Print the operand address in x to the stream. */
|
||||||
|
Index: gcc-4_5-branch/gcc/doc/invoke.texi
|
||||||
=== modified file 'gcc/doc/invoke.texi'
|
===================================================================
|
||||||
--- old/gcc/doc/invoke.texi 2010-10-04 00:50:43 +0000
|
--- gcc-4_5-branch.orig/gcc/doc/invoke.texi 2012-03-06 13:05:56.988590034 -0800
|
||||||
+++ new/gcc/doc/invoke.texi 2010-11-04 12:43:52 +0000
|
+++ gcc-4_5-branch/gcc/doc/invoke.texi 2012-03-06 13:36:36.048679039 -0800
|
||||||
@@ -922,7 +922,7 @@
|
@@ -922,7 +922,7 @@
|
||||||
-fargument-noalias-global -fargument-noalias-anything @gol
|
-fargument-noalias-global -fargument-noalias-anything @gol
|
||||||
-fleading-underscore -ftls-model=@var{model} @gol
|
-fleading-underscore -ftls-model=@var{model} @gol
|
||||||
@@ -213,10 +215,10 @@
|
|||||||
@end table
|
@end table
|
||||||
|
|
||||||
@c man end
|
@c man end
|
||||||
|
Index: gcc-4_5-branch/gcc/expmed.c
|
||||||
=== modified file 'gcc/expmed.c'
|
===================================================================
|
||||||
--- old/gcc/expmed.c 2010-10-04 00:50:43 +0000
|
--- gcc-4_5-branch.orig/gcc/expmed.c 2012-03-06 13:05:56.876590028 -0800
|
||||||
+++ new/gcc/expmed.c 2010-11-04 12:43:52 +0000
|
+++ gcc-4_5-branch/gcc/expmed.c 2012-03-06 13:36:35.104678993 -0800
|
||||||
@@ -47,7 +47,7 @@
|
@@ -47,7 +47,7 @@
|
||||||
static rtx extract_fixed_bit_field (enum machine_mode, rtx,
|
static rtx extract_fixed_bit_field (enum machine_mode, rtx,
|
||||||
unsigned HOST_WIDE_INT,
|
unsigned HOST_WIDE_INT,
|
||||||
@@ -458,10 +460,10 @@
|
|||||||
bitsdone += thissize;
|
bitsdone += thissize;
|
||||||
|
|
||||||
/* Shift this part into place for the result. */
|
/* Shift this part into place for the result. */
|
||||||
|
Index: gcc-4_5-branch/gcc/expr.c
|
||||||
=== modified file 'gcc/expr.c'
|
===================================================================
|
||||||
--- old/gcc/expr.c 2010-10-04 00:50:43 +0000
|
--- gcc-4_5-branch.orig/gcc/expr.c 2012-03-06 13:05:57.720590069 -0800
|
||||||
+++ new/gcc/expr.c 2010-11-04 12:43:52 +0000
|
+++ gcc-4_5-branch/gcc/expr.c 2012-03-06 13:40:14.504689612 -0800
|
||||||
@@ -1749,7 +1749,7 @@
|
@@ -1749,7 +1749,7 @@
|
||||||
&& (!REG_P (tmps[i]) || GET_MODE (tmps[i]) != mode))
|
&& (!REG_P (tmps[i]) || GET_MODE (tmps[i]) != mode))
|
||||||
tmps[i] = extract_bit_field (tmps[i], bytelen * BITS_PER_UNIT,
|
tmps[i] = extract_bit_field (tmps[i], bytelen * BITS_PER_UNIT,
|
||||||
@@ -498,7 +500,16 @@
|
|||||||
NULL_RTX, copy_mode, copy_mode));
|
NULL_RTX, copy_mode, copy_mode));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2970,7 +2970,7 @@
|
@@ -2291,7 +2291,7 @@
|
||||||
|
xbitpos for the destination store (right justified). */
|
||||||
|
store_bit_field (dst_word, bitsize, xbitpos % BITS_PER_WORD, word_mode,
|
||||||
|
extract_bit_field (src_word, bitsize,
|
||||||
|
- bitpos % BITS_PER_WORD, 1,
|
||||||
|
+ bitpos % BITS_PER_WORD, 1, false,
|
||||||
|
NULL_RTX, word_mode, word_mode));
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -3075,7 +3075,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
return extract_bit_field (cplx, ibitsize, imag_p ? ibitsize : 0,
|
return extract_bit_field (cplx, ibitsize, imag_p ? ibitsize : 0,
|
||||||
@@ -507,7 +518,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* A subroutine of emit_move_insn_1. Yet another lowpart generator.
|
/* A subroutine of emit_move_insn_1. Yet another lowpart generator.
|
||||||
@@ -4233,6 +4233,13 @@
|
@@ -4338,6 +4338,13 @@
|
||||||
|
|
||||||
to_rtx = expand_normal (tem);
|
to_rtx = expand_normal (tem);
|
||||||
|
|
||||||
@@ -521,7 +532,7 @@
|
|||||||
if (offset != 0)
|
if (offset != 0)
|
||||||
{
|
{
|
||||||
enum machine_mode address_mode;
|
enum machine_mode address_mode;
|
||||||
@@ -5993,6 +6000,12 @@
|
@@ -6106,6 +6113,12 @@
|
||||||
mode = DECL_MODE (field);
|
mode = DECL_MODE (field);
|
||||||
else if (DECL_MODE (field) == BLKmode)
|
else if (DECL_MODE (field) == BLKmode)
|
||||||
blkmode_bitfield = true;
|
blkmode_bitfield = true;
|
||||||
@@ -534,7 +545,7 @@
|
|||||||
|
|
||||||
*punsignedp = DECL_UNSIGNED (field);
|
*punsignedp = DECL_UNSIGNED (field);
|
||||||
}
|
}
|
||||||
@@ -8848,6 +8861,7 @@
|
@@ -8978,6 +8991,7 @@
|
||||||
HOST_WIDE_INT bitsize, bitpos;
|
HOST_WIDE_INT bitsize, bitpos;
|
||||||
tree offset;
|
tree offset;
|
||||||
int volatilep = 0, must_force_mem;
|
int volatilep = 0, must_force_mem;
|
||||||
@@ -542,7 +553,7 @@
|
|||||||
tree tem = get_inner_reference (exp, &bitsize, &bitpos, &offset,
|
tree tem = get_inner_reference (exp, &bitsize, &bitpos, &offset,
|
||||||
&mode1, &unsignedp, &volatilep, true);
|
&mode1, &unsignedp, &volatilep, true);
|
||||||
rtx orig_op0, memloc;
|
rtx orig_op0, memloc;
|
||||||
@@ -8857,6 +8871,11 @@
|
@@ -8987,6 +9001,11 @@
|
||||||
infinitely recurse. */
|
infinitely recurse. */
|
||||||
gcc_assert (tem != exp);
|
gcc_assert (tem != exp);
|
||||||
|
|
||||||
@@ -554,7 +565,7 @@
|
|||||||
/* If TEM's type is a union of variable size, pass TARGET to the inner
|
/* If TEM's type is a union of variable size, pass TARGET to the inner
|
||||||
computation, since it will need a temporary and TARGET is known
|
computation, since it will need a temporary and TARGET is known
|
||||||
to have to do. This occurs in unchecked conversion in Ada. */
|
to have to do. This occurs in unchecked conversion in Ada. */
|
||||||
@@ -8873,6 +8892,14 @@
|
@@ -9003,6 +9022,14 @@
|
||||||
|| modifier == EXPAND_STACK_PARM)
|
|| modifier == EXPAND_STACK_PARM)
|
||||||
? modifier : EXPAND_NORMAL);
|
? modifier : EXPAND_NORMAL);
|
||||||
|
|
||||||
@@ -569,7 +580,7 @@
|
|||||||
mode2
|
mode2
|
||||||
= CONSTANT_P (op0) ? TYPE_MODE (TREE_TYPE (tem)) : GET_MODE (op0);
|
= CONSTANT_P (op0) ? TYPE_MODE (TREE_TYPE (tem)) : GET_MODE (op0);
|
||||||
|
|
||||||
@@ -8998,6 +9025,9 @@
|
@@ -9128,6 +9155,9 @@
|
||||||
&& GET_MODE_CLASS (mode) != MODE_COMPLEX_FLOAT
|
&& GET_MODE_CLASS (mode) != MODE_COMPLEX_FLOAT
|
||||||
&& modifier != EXPAND_CONST_ADDRESS
|
&& modifier != EXPAND_CONST_ADDRESS
|
||||||
&& modifier != EXPAND_INITIALIZER)
|
&& modifier != EXPAND_INITIALIZER)
|
||||||
@@ -579,7 +590,7 @@
|
|||||||
/* If the field isn't aligned enough to fetch as a memref,
|
/* If the field isn't aligned enough to fetch as a memref,
|
||||||
fetch it as a bit field. */
|
fetch it as a bit field. */
|
||||||
|| (mode1 != BLKmode
|
|| (mode1 != BLKmode
|
||||||
@@ -9058,7 +9088,7 @@
|
@@ -9188,7 +9218,7 @@
|
||||||
if (MEM_P (op0) && REG_P (XEXP (op0, 0)))
|
if (MEM_P (op0) && REG_P (XEXP (op0, 0)))
|
||||||
mark_reg_pointer (XEXP (op0, 0), MEM_ALIGN (op0));
|
mark_reg_pointer (XEXP (op0, 0), MEM_ALIGN (op0));
|
||||||
|
|
||||||
@@ -588,11 +599,11 @@
|
|||||||
(modifier == EXPAND_STACK_PARM
|
(modifier == EXPAND_STACK_PARM
|
||||||
? NULL_RTX : target),
|
? NULL_RTX : target),
|
||||||
ext_mode, ext_mode);
|
ext_mode, ext_mode);
|
||||||
|
Index: gcc-4_5-branch/gcc/expr.h
|
||||||
=== modified file 'gcc/expr.h'
|
===================================================================
|
||||||
--- old/gcc/expr.h 2010-02-19 09:53:51 +0000
|
--- gcc-4_5-branch.orig/gcc/expr.h 2012-03-06 11:53:32.000000000 -0800
|
||||||
+++ new/gcc/expr.h 2010-11-04 12:43:52 +0000
|
+++ gcc-4_5-branch/gcc/expr.h 2012-03-06 13:05:59.668590163 -0800
|
||||||
@@ -802,7 +802,7 @@
|
@@ -804,7 +804,7 @@
|
||||||
extern void store_bit_field (rtx, unsigned HOST_WIDE_INT,
|
extern void store_bit_field (rtx, unsigned HOST_WIDE_INT,
|
||||||
unsigned HOST_WIDE_INT, enum machine_mode, rtx);
|
unsigned HOST_WIDE_INT, enum machine_mode, rtx);
|
||||||
extern rtx extract_bit_field (rtx, unsigned HOST_WIDE_INT,
|
extern rtx extract_bit_field (rtx, unsigned HOST_WIDE_INT,
|
||||||
@@ -601,11 +612,11 @@
|
|||||||
enum machine_mode, enum machine_mode);
|
enum machine_mode, enum machine_mode);
|
||||||
extern rtx extract_low_bits (enum machine_mode, enum machine_mode, rtx);
|
extern rtx extract_low_bits (enum machine_mode, enum machine_mode, rtx);
|
||||||
extern rtx expand_mult (enum machine_mode, rtx, rtx, rtx, int);
|
extern rtx expand_mult (enum machine_mode, rtx, rtx, rtx, int);
|
||||||
|
Index: gcc-4_5-branch/gcc/fold-const.c
|
||||||
=== modified file 'gcc/fold-const.c'
|
===================================================================
|
||||||
--- old/gcc/fold-const.c 2010-10-04 00:50:43 +0000
|
--- gcc-4_5-branch.orig/gcc/fold-const.c 2012-03-06 13:05:56.880590028 -0800
|
||||||
+++ new/gcc/fold-const.c 2010-11-04 12:43:52 +0000
|
+++ gcc-4_5-branch/gcc/fold-const.c 2012-03-06 13:36:03.276677454 -0800
|
||||||
@@ -4208,11 +4208,16 @@
|
@@ -4215,11 +4215,16 @@
|
||||||
|
|
||||||
/* See if we can find a mode to refer to this field. We should be able to,
|
/* See if we can find a mode to refer to this field. We should be able to,
|
||||||
but fail if we can't. */
|
but fail if we can't. */
|
||||||
@@ -627,11 +638,11 @@
|
|||||||
if (nmode == VOIDmode)
|
if (nmode == VOIDmode)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
Index: gcc-4_5-branch/gcc/stmt.c
|
||||||
=== modified file 'gcc/stmt.c'
|
===================================================================
|
||||||
--- old/gcc/stmt.c 2010-08-13 11:53:46 +0000
|
--- gcc-4_5-branch.orig/gcc/stmt.c 2012-03-06 13:05:54.568589917 -0800
|
||||||
+++ new/gcc/stmt.c 2010-11-04 12:43:52 +0000
|
+++ gcc-4_5-branch/gcc/stmt.c 2012-03-06 13:36:34.948678986 -0800
|
||||||
@@ -1751,7 +1751,7 @@
|
@@ -1754,7 +1754,7 @@
|
||||||
xbitpos for the destination store (right justified). */
|
xbitpos for the destination store (right justified). */
|
||||||
store_bit_field (dst, bitsize, xbitpos % BITS_PER_WORD, word_mode,
|
store_bit_field (dst, bitsize, xbitpos % BITS_PER_WORD, word_mode,
|
||||||
extract_bit_field (src, bitsize,
|
extract_bit_field (src, bitsize,
|
||||||
@@ -640,10 +651,10 @@
|
|||||||
NULL_RTX, word_mode, word_mode));
|
NULL_RTX, word_mode, word_mode));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Index: gcc-4_5-branch/gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c
|
||||||
=== added file 'gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c'
|
===================================================================
|
||||||
--- old/gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c 1970-01-01 00:00:00 +0000
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
+++ new/gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c 2010-11-04 12:43:52 +0000
|
+++ gcc-4_5-branch/gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c 2012-03-06 13:05:59.672590164 -0800
|
||||||
@@ -0,0 +1,17 @@
|
@@ -0,0 +1,17 @@
|
||||||
+/* { dg-do compile } */
|
+/* { dg-do compile } */
|
||||||
+/* { dg-options "-O2 -fstrict-volatile-bitfields" } */
|
+/* { dg-options "-O2 -fstrict-volatile-bitfields" } */
|
||||||
@@ -662,10 +673,10 @@
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+/* { dg-final { scan-assembler "mov(b|zbl).*bits" } } */
|
+/* { dg-final { scan-assembler "mov(b|zbl).*bits" } } */
|
||||||
|
Index: gcc-4_5-branch/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c
|
||||||
=== added file 'gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c'
|
===================================================================
|
||||||
--- old/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c 1970-01-01 00:00:00 +0000
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
+++ new/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c 2010-11-04 12:43:52 +0000
|
+++ gcc-4_5-branch/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c 2012-03-06 13:05:59.672590164 -0800
|
||||||
@@ -0,0 +1,17 @@
|
@@ -0,0 +1,17 @@
|
||||||
+/* { dg-do compile } */
|
+/* { dg-do compile } */
|
||||||
+/* { dg-options "-O2 -fno-strict-volatile-bitfields" } */
|
+/* { dg-options "-O2 -fno-strict-volatile-bitfields" } */
|
||||||
@@ -684,4 +695,3 @@
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+/* { dg-final { scan-assembler "movl.*bits" } } */
|
+/* { dg-final { scan-assembler "movl.*bits" } } */
|
||||||
|
|
||||||
|
|||||||
@@ -99,7 +99,7 @@
|
|||||||
Index: gcc-4_5-branch/gcc/config/arm/arm-ldmstm.ml
|
Index: gcc-4_5-branch/gcc/config/arm/arm-ldmstm.ml
|
||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
+++ gcc-4_5-branch/gcc/config/arm/arm-ldmstm.ml 2011-06-16 18:46:26.355282255 -0700
|
+++ gcc-4_5-branch/gcc/config/arm/arm-ldmstm.ml 2012-03-06 12:51:19.980547615 -0800
|
||||||
@@ -0,0 +1,333 @@
|
@@ -0,0 +1,333 @@
|
||||||
+(* Auto-generate ARM ldm/stm patterns
|
+(* Auto-generate ARM ldm/stm patterns
|
||||||
+ Copyright (C) 2010 Free Software Foundation, Inc.
|
+ Copyright (C) 2010 Free Software Foundation, Inc.
|
||||||
@@ -436,8 +436,8 @@ Index: gcc-4_5-branch/gcc/config/arm/arm-ldmstm.ml
|
|||||||
+ patterns ();
|
+ patterns ();
|
||||||
Index: gcc-4_5-branch/gcc/config/arm/arm-protos.h
|
Index: gcc-4_5-branch/gcc/config/arm/arm-protos.h
|
||||||
===================================================================
|
===================================================================
|
||||||
--- gcc-4_5-branch.orig/gcc/config/arm/arm-protos.h 2011-06-16 18:46:18.000000000 -0700
|
--- gcc-4_5-branch.orig/gcc/config/arm/arm-protos.h 2012-03-06 12:47:54.000000000 -0800
|
||||||
+++ gcc-4_5-branch/gcc/config/arm/arm-protos.h 2011-06-16 18:46:26.355282255 -0700
|
+++ gcc-4_5-branch/gcc/config/arm/arm-protos.h 2012-03-06 12:51:19.980547615 -0800
|
||||||
@@ -99,14 +99,11 @@
|
@@ -99,14 +99,11 @@
|
||||||
extern int label_mentioned_p (rtx);
|
extern int label_mentioned_p (rtx);
|
||||||
extern RTX_CODE minmax_code (rtx);
|
extern RTX_CODE minmax_code (rtx);
|
||||||
@@ -460,8 +460,8 @@ Index: gcc-4_5-branch/gcc/config/arm/arm-protos.h
|
|||||||
extern enum machine_mode arm_select_dominance_cc_mode (rtx, rtx,
|
extern enum machine_mode arm_select_dominance_cc_mode (rtx, rtx,
|
||||||
Index: gcc-4_5-branch/gcc/config/arm/arm.c
|
Index: gcc-4_5-branch/gcc/config/arm/arm.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- gcc-4_5-branch.orig/gcc/config/arm/arm.c 2011-06-16 18:46:23.000000000 -0700
|
--- gcc-4_5-branch.orig/gcc/config/arm/arm.c 2012-03-06 12:47:56.000000000 -0800
|
||||||
+++ gcc-4_5-branch/gcc/config/arm/arm.c 2011-06-16 18:46:26.365282255 -0700
|
+++ gcc-4_5-branch/gcc/config/arm/arm.c 2012-03-06 12:51:19.988547639 -0800
|
||||||
@@ -753,6 +753,12 @@
|
@@ -753,6 +753,12 @@
|
||||||
"hi", "ls", "ge", "lt", "gt", "le", "al", "nv"
|
"hi", "ls", "ge", "lt", "gt", "le", "al", "nv"
|
||||||
};
|
};
|
||||||
@@ -475,7 +475,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c
|
|||||||
#define ARM_LSL_NAME (TARGET_UNIFIED_ASM ? "lsl" : "asl")
|
#define ARM_LSL_NAME (TARGET_UNIFIED_ASM ? "lsl" : "asl")
|
||||||
#define streq(string1, string2) (strcmp (string1, string2) == 0)
|
#define streq(string1, string2) (strcmp (string1, string2) == 0)
|
||||||
|
|
||||||
@@ -9668,24 +9674,125 @@
|
@@ -9647,24 +9653,125 @@
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -612,7 +612,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c
|
|||||||
|
|
||||||
/* Loop over the operands and check that the memory references are
|
/* Loop over the operands and check that the memory references are
|
||||||
suitable (i.e. immediate offsets from the same base register). At
|
suitable (i.e. immediate offsets from the same base register). At
|
||||||
@@ -9723,32 +9830,30 @@
|
@@ -9702,32 +9809,30 @@
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
{
|
{
|
||||||
base_reg = REGNO (reg);
|
base_reg = REGNO (reg);
|
||||||
@@ -659,7 +659,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
/* Not a suitable memory address. */
|
/* Not a suitable memory address. */
|
||||||
@@ -9757,167 +9862,90 @@
|
@@ -9736,167 +9841,90 @@
|
||||||
|
|
||||||
/* All the useful information has now been extracted from the
|
/* All the useful information has now been extracted from the
|
||||||
operands into unsorted_regs and unsorted_offsets; additionally,
|
operands into unsorted_regs and unsorted_offsets; additionally,
|
||||||
@@ -888,7 +888,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c
|
|||||||
|
|
||||||
/* Loop over the operands and check that the memory references are
|
/* Loop over the operands and check that the memory references are
|
||||||
suitable (i.e. immediate offsets from the same base register). At
|
suitable (i.e. immediate offsets from the same base register). At
|
||||||
@@ -9952,32 +9980,32 @@
|
@@ -9931,32 +9959,32 @@
|
||||||
&& (GET_CODE (offset = XEXP (XEXP (operands[nops + i], 0), 1))
|
&& (GET_CODE (offset = XEXP (XEXP (operands[nops + i], 0), 1))
|
||||||
== CONST_INT)))
|
== CONST_INT)))
|
||||||
{
|
{
|
||||||
@@ -937,7 +937,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
/* Not a suitable memory address. */
|
/* Not a suitable memory address. */
|
||||||
@@ -9986,111 +10014,65 @@
|
@@ -9965,111 +9993,65 @@
|
||||||
|
|
||||||
/* All the useful information has now been extracted from the
|
/* All the useful information has now been extracted from the
|
||||||
operands into unsorted_regs and unsorted_offsets; additionally,
|
operands into unsorted_regs and unsorted_offsets; additionally,
|
||||||
@@ -1087,7 +1087,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c
|
|||||||
|
|
||||||
/* XScale has load-store double instructions, but they have stricter
|
/* XScale has load-store double instructions, but they have stricter
|
||||||
alignment requirements than load-store multiple, so we cannot
|
alignment requirements than load-store multiple, so we cannot
|
||||||
@@ -10127,18 +10109,10 @@
|
@@ -10106,18 +10088,10 @@
|
||||||
start_sequence ();
|
start_sequence ();
|
||||||
|
|
||||||
for (i = 0; i < count; i++)
|
for (i = 0; i < count; i++)
|
||||||
@@ -1109,7 +1109,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c
|
|||||||
|
|
||||||
seq = get_insns ();
|
seq = get_insns ();
|
||||||
end_sequence ();
|
end_sequence ();
|
||||||
@@ -10147,41 +10121,40 @@
|
@@ -10126,41 +10100,40 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
result = gen_rtx_PARALLEL (VOIDmode,
|
result = gen_rtx_PARALLEL (VOIDmode,
|
||||||
@@ -1170,7 +1170,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c
|
|||||||
the pros/cons of ldm/stm usage for XScale. */
|
the pros/cons of ldm/stm usage for XScale. */
|
||||||
if (low_irq_latency || (arm_tune_xscale && count <= 2 && ! optimize_size))
|
if (low_irq_latency || (arm_tune_xscale && count <= 2 && ! optimize_size))
|
||||||
{
|
{
|
||||||
@@ -10190,18 +10163,10 @@
|
@@ -10169,18 +10142,10 @@
|
||||||
start_sequence ();
|
start_sequence ();
|
||||||
|
|
||||||
for (i = 0; i < count; i++)
|
for (i = 0; i < count; i++)
|
||||||
@@ -1192,7 +1192,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c
|
|||||||
|
|
||||||
seq = get_insns ();
|
seq = get_insns ();
|
||||||
end_sequence ();
|
end_sequence ();
|
||||||
@@ -10210,29 +10175,319 @@
|
@@ -10189,29 +10154,319 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
result = gen_rtx_PARALLEL (VOIDmode,
|
result = gen_rtx_PARALLEL (VOIDmode,
|
||||||
@@ -1522,7 +1522,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -10268,20 +10523,21 @@
|
@@ -10247,20 +10502,21 @@
|
||||||
for (i = 0; in_words_to_go >= 2; i+=4)
|
for (i = 0; in_words_to_go >= 2; i+=4)
|
||||||
{
|
{
|
||||||
if (in_words_to_go > 4)
|
if (in_words_to_go > 4)
|
||||||
@@ -1554,8 +1554,8 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c
|
|||||||
dstbase, &dstoffset));
|
dstbase, &dstoffset));
|
||||||
Index: gcc-4_5-branch/gcc/config/arm/arm.h
|
Index: gcc-4_5-branch/gcc/config/arm/arm.h
|
||||||
===================================================================
|
===================================================================
|
||||||
--- gcc-4_5-branch.orig/gcc/config/arm/arm.h 2011-06-16 18:46:20.000000000 -0700
|
--- gcc-4_5-branch.orig/gcc/config/arm/arm.h 2012-03-06 12:47:55.000000000 -0800
|
||||||
+++ gcc-4_5-branch/gcc/config/arm/arm.h 2011-06-16 18:46:26.375282255 -0700
|
+++ gcc-4_5-branch/gcc/config/arm/arm.h 2012-03-06 12:51:19.988547639 -0800
|
||||||
@@ -1143,6 +1143,9 @@
|
@@ -1143,6 +1143,9 @@
|
||||||
((MODE) == TImode || (MODE) == EImode || (MODE) == OImode \
|
((MODE) == TImode || (MODE) == EImode || (MODE) == OImode \
|
||||||
|| (MODE) == CImode || (MODE) == XImode)
|
|| (MODE) == CImode || (MODE) == XImode)
|
||||||
@@ -1577,8 +1577,8 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.h
|
|||||||
#endif /* ! GCC_ARM_H */
|
#endif /* ! GCC_ARM_H */
|
||||||
Index: gcc-4_5-branch/gcc/config/arm/arm.md
|
Index: gcc-4_5-branch/gcc/config/arm/arm.md
|
||||||
===================================================================
|
===================================================================
|
||||||
--- gcc-4_5-branch.orig/gcc/config/arm/arm.md 2011-06-16 18:46:23.000000000 -0700
|
--- gcc-4_5-branch.orig/gcc/config/arm/arm.md 2012-03-06 12:47:56.000000000 -0800
|
||||||
+++ gcc-4_5-branch/gcc/config/arm/arm.md 2011-06-16 18:46:26.375282255 -0700
|
+++ gcc-4_5-branch/gcc/config/arm/arm.md 2012-03-06 12:51:19.992547622 -0800
|
||||||
@@ -6282,7 +6282,7 @@
|
@@ -6282,7 +6282,7 @@
|
||||||
|
|
||||||
;; load- and store-multiple insns
|
;; load- and store-multiple insns
|
||||||
@@ -1969,7 +1969,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.md
|
|||||||
Index: gcc-4_5-branch/gcc/config/arm/ldmstm.md
|
Index: gcc-4_5-branch/gcc/config/arm/ldmstm.md
|
||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
+++ gcc-4_5-branch/gcc/config/arm/ldmstm.md 2011-06-16 18:46:26.375282255 -0700
|
+++ gcc-4_5-branch/gcc/config/arm/ldmstm.md 2012-03-06 12:51:19.992547622 -0800
|
||||||
@@ -0,0 +1,1191 @@
|
@@ -0,0 +1,1191 @@
|
||||||
+/* ARM ldm/stm instruction patterns. This file was automatically generated
|
+/* ARM ldm/stm instruction patterns. This file was automatically generated
|
||||||
+ using arm-ldmstm.ml. Please do not edit manually.
|
+ using arm-ldmstm.ml. Please do not edit manually.
|
||||||
@@ -3164,8 +3164,8 @@ Index: gcc-4_5-branch/gcc/config/arm/ldmstm.md
|
|||||||
+
|
+
|
||||||
Index: gcc-4_5-branch/gcc/config/arm/predicates.md
|
Index: gcc-4_5-branch/gcc/config/arm/predicates.md
|
||||||
===================================================================
|
===================================================================
|
||||||
--- gcc-4_5-branch.orig/gcc/config/arm/predicates.md 2011-06-16 18:46:18.000000000 -0700
|
--- gcc-4_5-branch.orig/gcc/config/arm/predicates.md 2012-03-06 12:47:54.000000000 -0800
|
||||||
+++ gcc-4_5-branch/gcc/config/arm/predicates.md 2011-06-16 18:46:26.375282255 -0700
|
+++ gcc-4_5-branch/gcc/config/arm/predicates.md 2012-03-06 12:51:19.992547622 -0800
|
||||||
@@ -211,6 +211,11 @@
|
@@ -211,6 +211,11 @@
|
||||||
(and (match_code "ior,xor,and")
|
(and (match_code "ior,xor,and")
|
||||||
(match_test "mode == GET_MODE (op)")))
|
(match_test "mode == GET_MODE (op)")))
|
||||||
@@ -3314,8 +3314,8 @@ Index: gcc-4_5-branch/gcc/config/arm/predicates.md
|
|||||||
return true;
|
return true;
|
||||||
Index: gcc-4_5-branch/gcc/config/i386/i386.md
|
Index: gcc-4_5-branch/gcc/config/i386/i386.md
|
||||||
===================================================================
|
===================================================================
|
||||||
--- gcc-4_5-branch.orig/gcc/config/i386/i386.md 2011-06-16 18:46:21.000000000 -0700
|
--- gcc-4_5-branch.orig/gcc/config/i386/i386.md 2012-03-06 12:47:55.000000000 -0800
|
||||||
+++ gcc-4_5-branch/gcc/config/i386/i386.md 2011-06-16 18:46:26.385282255 -0700
|
+++ gcc-4_5-branch/gcc/config/i386/i386.md 2012-03-06 12:51:19.996547605 -0800
|
||||||
@@ -4960,6 +4960,7 @@
|
@@ -4960,6 +4960,7 @@
|
||||||
(set (match_operand:SSEMODEI24 2 "register_operand" "")
|
(set (match_operand:SSEMODEI24 2 "register_operand" "")
|
||||||
(fix:SSEMODEI24 (match_dup 0)))]
|
(fix:SSEMODEI24 (match_dup 0)))]
|
||||||
@@ -3324,7 +3324,7 @@ Index: gcc-4_5-branch/gcc/config/i386/i386.md
|
|||||||
&& peep2_reg_dead_p (2, operands[0])"
|
&& peep2_reg_dead_p (2, operands[0])"
|
||||||
[(set (match_dup 2) (fix:SSEMODEI24 (match_dup 1)))]
|
[(set (match_dup 2) (fix:SSEMODEI24 (match_dup 1)))]
|
||||||
"")
|
"")
|
||||||
@@ -20057,15 +20058,14 @@
|
@@ -20089,15 +20090,14 @@
|
||||||
;; leal (%edx,%eax,4), %eax
|
;; leal (%edx,%eax,4), %eax
|
||||||
|
|
||||||
(define_peephole2
|
(define_peephole2
|
||||||
@@ -3345,7 +3345,7 @@ Index: gcc-4_5-branch/gcc/config/i386/i386.md
|
|||||||
(clobber (reg:CC FLAGS_REG))])]
|
(clobber (reg:CC FLAGS_REG))])]
|
||||||
"INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 3
|
"INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 3
|
||||||
/* Validate MODE for lea. */
|
/* Validate MODE for lea. */
|
||||||
@@ -20074,31 +20074,27 @@
|
@@ -20106,31 +20106,27 @@
|
||||||
|| GET_MODE (operands[0]) == HImode))
|
|| GET_MODE (operands[0]) == HImode))
|
||||||
|| GET_MODE (operands[0]) == SImode
|
|| GET_MODE (operands[0]) == SImode
|
||||||
|| (TARGET_64BIT && GET_MODE (operands[0]) == DImode))
|
|| (TARGET_64BIT && GET_MODE (operands[0]) == DImode))
|
||||||
@@ -3391,8 +3391,8 @@ Index: gcc-4_5-branch/gcc/config/i386/i386.md
|
|||||||
|
|
||||||
Index: gcc-4_5-branch/gcc/genoutput.c
|
Index: gcc-4_5-branch/gcc/genoutput.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- gcc-4_5-branch.orig/gcc/genoutput.c 2011-06-16 17:59:04.000000000 -0700
|
--- gcc-4_5-branch.orig/gcc/genoutput.c 2012-03-06 11:53:32.000000000 -0800
|
||||||
+++ gcc-4_5-branch/gcc/genoutput.c 2011-06-16 18:46:26.385282255 -0700
|
+++ gcc-4_5-branch/gcc/genoutput.c 2012-03-06 12:51:20.000547582 -0800
|
||||||
@@ -266,6 +266,8 @@
|
@@ -266,6 +266,8 @@
|
||||||
|
|
||||||
printf (" %d,\n", d->strict_low);
|
printf (" %d,\n", d->strict_low);
|
||||||
@@ -3404,8 +3404,8 @@ Index: gcc-4_5-branch/gcc/genoutput.c
|
|||||||
printf(" },\n");
|
printf(" },\n");
|
||||||
Index: gcc-4_5-branch/gcc/genrecog.c
|
Index: gcc-4_5-branch/gcc/genrecog.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- gcc-4_5-branch.orig/gcc/genrecog.c 2011-06-16 17:59:04.000000000 -0700
|
--- gcc-4_5-branch.orig/gcc/genrecog.c 2012-03-06 11:53:32.000000000 -0800
|
||||||
+++ gcc-4_5-branch/gcc/genrecog.c 2011-06-16 18:46:26.395282255 -0700
|
+++ gcc-4_5-branch/gcc/genrecog.c 2012-03-06 12:51:20.000547582 -0800
|
||||||
@@ -1782,20 +1782,11 @@
|
@@ -1782,20 +1782,11 @@
|
||||||
int odepth = strlen (oldpos);
|
int odepth = strlen (oldpos);
|
||||||
int ndepth = strlen (newpos);
|
int ndepth = strlen (newpos);
|
||||||
@@ -3429,8 +3429,8 @@ Index: gcc-4_5-branch/gcc/genrecog.c
|
|||||||
{
|
{
|
||||||
Index: gcc-4_5-branch/gcc/recog.c
|
Index: gcc-4_5-branch/gcc/recog.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- gcc-4_5-branch.orig/gcc/recog.c 2011-06-16 18:46:02.000000000 -0700
|
--- gcc-4_5-branch.orig/gcc/recog.c 2012-03-06 12:47:48.000000000 -0800
|
||||||
+++ gcc-4_5-branch/gcc/recog.c 2011-06-16 18:46:26.395282255 -0700
|
+++ gcc-4_5-branch/gcc/recog.c 2012-03-06 13:04:05.780584592 -0800
|
||||||
@@ -2082,6 +2082,7 @@
|
@@ -2082,6 +2082,7 @@
|
||||||
recog_data.operand_loc,
|
recog_data.operand_loc,
|
||||||
recog_data.constraints,
|
recog_data.constraints,
|
||||||
@@ -3508,7 +3508,7 @@ Index: gcc-4_5-branch/gcc/recog.c
|
|||||||
|
|
||||||
gcc_assert (peep2_insn_data[ofs].insn != NULL_RTX);
|
gcc_assert (peep2_insn_data[ofs].insn != NULL_RTX);
|
||||||
|
|
||||||
@@ -2996,12 +3006,8 @@
|
@@ -2997,12 +3007,8 @@
|
||||||
gcc_assert (from < MAX_INSNS_PER_PEEP2 + 1);
|
gcc_assert (from < MAX_INSNS_PER_PEEP2 + 1);
|
||||||
gcc_assert (to < MAX_INSNS_PER_PEEP2 + 1);
|
gcc_assert (to < MAX_INSNS_PER_PEEP2 + 1);
|
||||||
|
|
||||||
@@ -3523,17 +3523,17 @@ Index: gcc-4_5-branch/gcc/recog.c
|
|||||||
|
|
||||||
gcc_assert (peep2_insn_data[from].insn != NULL_RTX);
|
gcc_assert (peep2_insn_data[from].insn != NULL_RTX);
|
||||||
REG_SET_TO_HARD_REG_SET (live, peep2_insn_data[from].live_before);
|
REG_SET_TO_HARD_REG_SET (live, peep2_insn_data[from].live_before);
|
||||||
@@ -3010,8 +3016,7 @@
|
@@ -3016,8 +3022,7 @@
|
||||||
{
|
*def_rec; def_rec++)
|
||||||
HARD_REG_SET this_live;
|
SET_HARD_REG_BIT (live, DF_REF_REGNO (*def_rec));
|
||||||
|
|
||||||
- if (++from >= MAX_INSNS_PER_PEEP2 + 1)
|
- if (++from >= MAX_INSNS_PER_PEEP2 + 1)
|
||||||
- from = 0;
|
- from = 0;
|
||||||
+ from = peep2_buf_position (from + 1);
|
+ from = peep2_buf_position (from + 1);
|
||||||
gcc_assert (peep2_insn_data[from].insn != NULL_RTX);
|
}
|
||||||
REG_SET_TO_HARD_REG_SET (this_live, peep2_insn_data[from].live_before);
|
|
||||||
IOR_HARD_REG_SET (live, this_live);
|
cl = (class_str[0] == 'r' ? GENERAL_REGS
|
||||||
@@ -3104,19 +3109,234 @@
|
@@ -3107,19 +3112,234 @@
|
||||||
COPY_REG_SET (peep2_insn_data[MAX_INSNS_PER_PEEP2].live_before, live);
|
COPY_REG_SET (peep2_insn_data[MAX_INSNS_PER_PEEP2].live_before, live);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3771,7 +3771,7 @@ Index: gcc-4_5-branch/gcc/recog.c
|
|||||||
df_analyze ();
|
df_analyze ();
|
||||||
|
|
||||||
/* Initialize the regsets we're going to use. */
|
/* Initialize the regsets we're going to use. */
|
||||||
@@ -3126,214 +3346,59 @@
|
@@ -3129,214 +3349,59 @@
|
||||||
|
|
||||||
FOR_EACH_BB_REVERSE (bb)
|
FOR_EACH_BB_REVERSE (bb)
|
||||||
{
|
{
|
||||||
@@ -4028,7 +4028,7 @@ Index: gcc-4_5-branch/gcc/recog.c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3341,7 +3406,7 @@
|
@@ -3344,7 +3409,7 @@
|
||||||
for (i = 0; i < MAX_INSNS_PER_PEEP2 + 1; ++i)
|
for (i = 0; i < MAX_INSNS_PER_PEEP2 + 1; ++i)
|
||||||
BITMAP_FREE (peep2_insn_data[i].live_before);
|
BITMAP_FREE (peep2_insn_data[i].live_before);
|
||||||
BITMAP_FREE (live);
|
BITMAP_FREE (live);
|
||||||
@@ -4039,8 +4039,8 @@ Index: gcc-4_5-branch/gcc/recog.c
|
|||||||
#endif /* HAVE_peephole2 */
|
#endif /* HAVE_peephole2 */
|
||||||
Index: gcc-4_5-branch/gcc/recog.h
|
Index: gcc-4_5-branch/gcc/recog.h
|
||||||
===================================================================
|
===================================================================
|
||||||
--- gcc-4_5-branch.orig/gcc/recog.h 2011-06-16 17:59:04.000000000 -0700
|
--- gcc-4_5-branch.orig/gcc/recog.h 2012-03-06 11:53:32.000000000 -0800
|
||||||
+++ gcc-4_5-branch/gcc/recog.h 2011-06-16 18:46:26.405282255 -0700
|
+++ gcc-4_5-branch/gcc/recog.h 2012-03-06 12:51:20.000547582 -0800
|
||||||
@@ -194,6 +194,9 @@
|
@@ -194,6 +194,9 @@
|
||||||
/* Gives the constraint string for operand N. */
|
/* Gives the constraint string for operand N. */
|
||||||
const char *constraints[MAX_RECOG_OPERANDS];
|
const char *constraints[MAX_RECOG_OPERANDS];
|
||||||
@@ -4062,8 +4062,8 @@ Index: gcc-4_5-branch/gcc/recog.h
|
|||||||
|
|
||||||
Index: gcc-4_5-branch/gcc/reload.c
|
Index: gcc-4_5-branch/gcc/reload.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- gcc-4_5-branch.orig/gcc/reload.c 2011-06-16 17:59:04.000000000 -0700
|
--- gcc-4_5-branch.orig/gcc/reload.c 2012-03-06 11:53:32.000000000 -0800
|
||||||
+++ gcc-4_5-branch/gcc/reload.c 2011-06-16 18:46:26.405282255 -0700
|
+++ gcc-4_5-branch/gcc/reload.c 2012-03-06 12:51:20.004547561 -0800
|
||||||
@@ -3631,7 +3631,7 @@
|
@@ -3631,7 +3631,7 @@
|
||||||
|| modified[j] != RELOAD_WRITE)
|
|| modified[j] != RELOAD_WRITE)
|
||||||
&& j != i
|
&& j != i
|
||||||
|
|||||||
Reference in New Issue
Block a user