mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2025-01-30 08:03:59 +00:00
cc/gcc: add gcc-4.7.0
Add the new release gcc-4.7.0. Signed-off-by: Bryan Hundven <bryanhundven@gmail.com> [yann.morin.1998@free.fr: add 4.7.0 patch] Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
This commit is contained in:
parent
4d24ae539f
commit
3629b6d931
@ -36,6 +36,12 @@ choice
|
||||
# Don't remove next line
|
||||
# CT_INSERT_VERSION_BELOW
|
||||
|
||||
config CC_V_4_7_0
|
||||
bool
|
||||
prompt "4.7.0 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
select CC_GCC_4_7
|
||||
|
||||
config CC_V_linaro_4_6_2012_04
|
||||
bool
|
||||
prompt "linaro-4.6-2012.04 (EXPERIMENTAL)"
|
||||
@ -269,6 +275,20 @@ config CC_GCC_4_6_or_later
|
||||
bool
|
||||
select CC_GCC_4_5_or_later
|
||||
|
||||
config CC_GCC_4_7
|
||||
bool
|
||||
select CC_GCC_4_7_or_later
|
||||
select CC_GCC_USE_GMP_MPFR
|
||||
select CC_GCC_USE_MPC
|
||||
select CC_GCC_HAS_GRAPHITE
|
||||
select CC_GCC_HAS_LTO
|
||||
select CC_GCC_HAS_PKGVERSION_BUGURL
|
||||
select CC_GCC_HAS_BUILD_ID
|
||||
|
||||
config CC_GCC_4_7_or_later
|
||||
bool
|
||||
select CC_GCC_4_6_or_later
|
||||
|
||||
config CC_GCC_HAS_GRAPHITE
|
||||
bool
|
||||
|
||||
@ -331,6 +351,7 @@ config CC_VERSION
|
||||
string
|
||||
# Don't remove next line
|
||||
# CT_INSERT_VERSION_STRING_BELOW
|
||||
default "4.7.0" if CC_V_4_7_0
|
||||
default "linaro-4.6-2012.04" if CC_V_linaro_4_6_2012_04
|
||||
default "4.6.3" if CC_V_4_6_3
|
||||
default "4.6.2" if CC_V_4_6_2
|
||||
|
91
patches/gcc/4.7.0/100-PR52734-tree-ssa-tail-merge.patch
Normal file
91
patches/gcc/4.7.0/100-PR52734-tree-ssa-tail-merge.patch
Normal file
@ -0,0 +1,91 @@
|
||||
------------------------------------------------------------------------
|
||||
r186424 | vries | 2012-04-13 18:44:18 +0200 (Fri, 13 Apr 2012) | 12 lines
|
||||
|
||||
2012-04-13 Tom de Vries <tom@codesourcery.com>
|
||||
|
||||
Backport from mainline r186418.
|
||||
|
||||
2012-04-13 Tom de Vries <tom@codesourcery.com>
|
||||
|
||||
* tree-ssa-tail-merge.c (gsi_advance_bw_nondebug_nonlocal): Add
|
||||
parameters vuse and vuse_escaped.
|
||||
(find_duplicate): Init vuse1, vuse2 and vuse_escaped. Pass to
|
||||
gsi_advance_bw_nondebug_nonlocal. Return if vuse_escaped and
|
||||
vuse1 != vuse2.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Index: gcc/tree-ssa-tail-merge.c
|
||||
===================================================================
|
||||
--- gcc-4.7.0/gcc/tree-ssa-tail-merge.c (revision 186423)
|
||||
+++ gcc-4.7.0/gcc/tree-ssa-tail-merge.c (revision 186424)
|
||||
@@ -1123,18 +1123,31 @@
|
||||
}
|
||||
}
|
||||
|
||||
-/* Let GSI skip backwards over local defs. */
|
||||
+/* Let GSI skip backwards over local defs. Return the earliest vuse in VUSE.
|
||||
+ Return true in VUSE_ESCAPED if the vuse influenced a SSA_OP_DEF of one of the
|
||||
+ processed statements. */
|
||||
|
||||
static void
|
||||
-gsi_advance_bw_nondebug_nonlocal (gimple_stmt_iterator *gsi)
|
||||
+gsi_advance_bw_nondebug_nonlocal (gimple_stmt_iterator *gsi, tree *vuse,
|
||||
+ bool *vuse_escaped)
|
||||
{
|
||||
gimple stmt;
|
||||
+ tree lvuse;
|
||||
|
||||
while (true)
|
||||
{
|
||||
if (gsi_end_p (*gsi))
|
||||
return;
|
||||
stmt = gsi_stmt (*gsi);
|
||||
+
|
||||
+ lvuse = gimple_vuse (stmt);
|
||||
+ if (lvuse != NULL_TREE)
|
||||
+ {
|
||||
+ *vuse = lvuse;
|
||||
+ if (!ZERO_SSA_OPERANDS (stmt, SSA_OP_DEF))
|
||||
+ *vuse_escaped = true;
|
||||
+ }
|
||||
+
|
||||
if (!(is_gimple_assign (stmt) && local_def (gimple_get_lhs (stmt))
|
||||
&& !gimple_has_side_effects (stmt)))
|
||||
return;
|
||||
@@ -1150,9 +1163,11 @@
|
||||
{
|
||||
gimple_stmt_iterator gsi1 = gsi_last_nondebug_bb (bb1);
|
||||
gimple_stmt_iterator gsi2 = gsi_last_nondebug_bb (bb2);
|
||||
+ tree vuse1 = NULL_TREE, vuse2 = NULL_TREE;
|
||||
+ bool vuse_escaped = false;
|
||||
|
||||
- gsi_advance_bw_nondebug_nonlocal (&gsi1);
|
||||
- gsi_advance_bw_nondebug_nonlocal (&gsi2);
|
||||
+ gsi_advance_bw_nondebug_nonlocal (&gsi1, &vuse1, &vuse_escaped);
|
||||
+ gsi_advance_bw_nondebug_nonlocal (&gsi2, &vuse2, &vuse_escaped);
|
||||
|
||||
while (!gsi_end_p (gsi1) && !gsi_end_p (gsi2))
|
||||
{
|
||||
@@ -1161,13 +1176,20 @@
|
||||
|
||||
gsi_prev_nondebug (&gsi1);
|
||||
gsi_prev_nondebug (&gsi2);
|
||||
- gsi_advance_bw_nondebug_nonlocal (&gsi1);
|
||||
- gsi_advance_bw_nondebug_nonlocal (&gsi2);
|
||||
+ gsi_advance_bw_nondebug_nonlocal (&gsi1, &vuse1, &vuse_escaped);
|
||||
+ gsi_advance_bw_nondebug_nonlocal (&gsi2, &vuse2, &vuse_escaped);
|
||||
}
|
||||
|
||||
if (!(gsi_end_p (gsi1) && gsi_end_p (gsi2)))
|
||||
return;
|
||||
|
||||
+ /* If the incoming vuses are not the same, and the vuse escaped into an
|
||||
+ SSA_OP_DEF, then merging the 2 blocks will change the value of the def,
|
||||
+ which potentially means the semantics of one of the blocks will be changed.
|
||||
+ TODO: make this check more precise. */
|
||||
+ if (vuse_escaped && vuse1 != vuse2)
|
||||
+ return;
|
||||
+
|
||||
if (dump_file)
|
||||
fprintf (dump_file, "find_duplicates: <bb %d> duplicate of <bb %d>\n",
|
||||
bb1->index, bb2->index);
|
Loading…
x
Reference in New Issue
Block a user