4.8.2-7
This commit is contained in:
parent
78dc96aa1e
commit
1bc0509b8f
1
.gitignore
vendored
1
.gitignore
vendored
@ -88,3 +88,4 @@
|
||||
/gcc-4.8.2-20131017.tar.bz2
|
||||
/gcc-4.8.2-20131111.tar.bz2
|
||||
/gcc-4.8.2-20131209.tar.bz2
|
||||
/gcc-4.8.2-20131212.tar.bz2
|
||||
|
16
gcc.spec
16
gcc.spec
@ -1,9 +1,9 @@
|
||||
%global DATE 20131209
|
||||
%global SVNREV 205813
|
||||
%global DATE 20131212
|
||||
%global SVNREV 205936
|
||||
%global gcc_version 4.8.2
|
||||
# Note, gcc_release must be integer, if you want to add suffixes to
|
||||
# %{release}, append them after %{gcc_release} on Release: line.
|
||||
%global gcc_release 6
|
||||
%global gcc_release 7
|
||||
%global _unpackaged_files_terminate_build 0
|
||||
%global multilib_64_archs sparc64 ppc64 s390x x86_64
|
||||
%ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha
|
||||
@ -196,7 +196,7 @@ Patch12: gcc48-no-add-needed.patch
|
||||
Patch13: gcc48-pr56564.patch
|
||||
Patch14: gcc48-pr56493.patch
|
||||
Patch15: gcc48-color-auto.patch
|
||||
Patch16: gcc48-pr58956-revert.patch
|
||||
Patch16: gcc48-pr58956.patch
|
||||
|
||||
Patch1000: fastjar-0.97-segfault.patch
|
||||
Patch1001: fastjar-0.97-len1.patch
|
||||
@ -756,7 +756,7 @@ package or when debugging this package.
|
||||
%if 0%{?fedora} >= 20 || 0%{?rhel} >= 7
|
||||
%patch15 -p0 -b .color-auto~
|
||||
%endif
|
||||
%patch16 -p0 -b .pr58956-revert~
|
||||
%patch16 -p0 -b .pr58956~
|
||||
|
||||
%if 0%{?_enable_debug_packages}
|
||||
cat > split-debuginfo.sh <<\EOF
|
||||
@ -3023,6 +3023,12 @@ fi
|
||||
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
|
||||
|
||||
%changelog
|
||||
* Thu Dec 12 2013 Jakub Jelinek <jakub@redhat.com> 4.8.2-7
|
||||
- update from the 4.8 branch
|
||||
- PRs libgomp/59467, rtl-optimization/58295, target/56807,
|
||||
testsuite/59442
|
||||
- fix LRA coalescing for real (PR middle-end/59470)
|
||||
|
||||
* Wed Dec 11 2013 Jakub Jelinek <jakub@redhat.com> 4.8.2-6
|
||||
- temporarily revert PR middle-end/58956 to avoid libstdc++
|
||||
miscompilation on i?86 (PR middle-end/59470)
|
||||
|
@ -1,33 +0,0 @@
|
||||
Temporarily revert:
|
||||
2013-12-05 Richard Biener <rguenther@suse.de>
|
||||
|
||||
Backport from mainline
|
||||
2013-11-19 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR middle-end/58956
|
||||
* tree-ssa-ter.c (find_replaceable_in_bb): Avoid forwarding
|
||||
loads into stmts that may clobber it.
|
||||
|
||||
--- gcc/tree-ssa-ter.c (revision 205709)
|
||||
+++ gcc/tree-ssa-ter.c (revision 205708)
|
||||
@@ -643,7 +643,8 @@ find_replaceable_in_bb (temp_expr_table_
|
||||
/* If the stmt does a memory store and the replacement
|
||||
is a load aliasing it avoid creating overlapping
|
||||
assignments which we cannot expand correctly. */
|
||||
- if (gimple_vdef (stmt))
|
||||
+ if (gimple_vdef (stmt)
|
||||
+ && gimple_assign_single_p (stmt))
|
||||
{
|
||||
gimple def_stmt = SSA_NAME_DEF_STMT (use);
|
||||
while (is_gimple_assign (def_stmt)
|
||||
@@ -652,8 +653,8 @@ find_replaceable_in_bb (temp_expr_table_
|
||||
= SSA_NAME_DEF_STMT (gimple_assign_rhs1 (def_stmt));
|
||||
if (gimple_vuse (def_stmt)
|
||||
&& gimple_assign_single_p (def_stmt)
|
||||
- && stmt_may_clobber_ref_p (stmt,
|
||||
- gimple_assign_rhs1 (def_stmt)))
|
||||
+ && refs_may_alias_p (gimple_assign_lhs (stmt),
|
||||
+ gimple_assign_rhs1 (def_stmt)))
|
||||
same_root_var = true;
|
||||
}
|
||||
|
99
gcc48-pr58956.patch
Normal file
99
gcc48-pr58956.patch
Normal file
@ -0,0 +1,99 @@
|
||||
2013-12-12 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/58956
|
||||
PR middle-end/59470
|
||||
* tree-ssa-ter.c (find_ssa_name): New helper function.
|
||||
(find_replaceable_in_bb): For calls, only set same_root_var
|
||||
if USE is used somewhere in gimple_call_lhs, for GIMPLE_ASM,
|
||||
only set same_root_var if USE is used somewhere in output operand
|
||||
trees.
|
||||
|
||||
* gcc.target/i386/pr59470.c: New test.
|
||||
|
||||
--- gcc/tree-ssa-ter.c.jj 2013-12-10 08:52:13.000000000 +0100
|
||||
+++ gcc/tree-ssa-ter.c 2013-12-12 10:43:26.177866960 +0100
|
||||
@@ -554,6 +554,20 @@ mark_replaceable (temp_expr_table_p tab,
|
||||
}
|
||||
|
||||
|
||||
+/* Helper function for find_replaceable_in_bb. Called via walk_tree to
|
||||
+ find a SSA_NAME DATA somewhere in *TP. */
|
||||
+
|
||||
+static tree
|
||||
+find_ssa_name (tree *tp, int *walk_subtrees, void *data)
|
||||
+{
|
||||
+ tree var = (tree) data;
|
||||
+ if (*tp == var)
|
||||
+ return var;
|
||||
+ else if (IS_TYPE_OR_DECL_P (*tp))
|
||||
+ *walk_subtrees = 0;
|
||||
+ return NULL_TREE;
|
||||
+}
|
||||
+
|
||||
/* This function processes basic block BB, and looks for variables which can
|
||||
be replaced by their expressions. Results are stored in the table TAB. */
|
||||
|
||||
@@ -618,7 +632,42 @@ find_replaceable_in_bb (temp_expr_table_
|
||||
&& gimple_assign_single_p (def_stmt)
|
||||
&& stmt_may_clobber_ref_p (stmt,
|
||||
gimple_assign_rhs1 (def_stmt)))
|
||||
- same_root_var = true;
|
||||
+ {
|
||||
+ if (is_gimple_call (stmt))
|
||||
+ {
|
||||
+ /* For calls, it is not a problem if USE is among
|
||||
+ call's arguments or say OBJ_TYPE_REF argument,
|
||||
+ all those necessarily need to be evaluated before
|
||||
+ the call that may clobber the memory. But if
|
||||
+ LHS of the call refers to USE, expansion might
|
||||
+ evaluate it after the call, prevent TER in that
|
||||
+ case. */
|
||||
+ if (gimple_call_lhs (stmt)
|
||||
+ && TREE_CODE (gimple_call_lhs (stmt)) != SSA_NAME
|
||||
+ && walk_tree (gimple_call_lhs_ptr (stmt),
|
||||
+ find_ssa_name, use, NULL))
|
||||
+ same_root_var = true;
|
||||
+ }
|
||||
+ else if (gimple_code (stmt) == GIMPLE_ASM)
|
||||
+ {
|
||||
+ /* For inline asm, allow TER of loads into input
|
||||
+ arguments, but disallow TER for USEs that occur
|
||||
+ somewhere in outputs. */
|
||||
+ unsigned int i;
|
||||
+ for (i = 0; i < gimple_asm_noutputs (stmt); i++)
|
||||
+ if (TREE_CODE (gimple_asm_output_op (stmt, i))
|
||||
+ != SSA_NAME
|
||||
+ && walk_tree (gimple_asm_output_op_ptr (stmt,
|
||||
+ i),
|
||||
+ find_ssa_name, use, NULL))
|
||||
+ {
|
||||
+ same_root_var = true;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ same_root_var = true;
|
||||
+ }
|
||||
}
|
||||
|
||||
/* Mark expression as replaceable unless stmt is volatile, or the
|
||||
--- gcc/testsuite/gcc.target/i386/pr59470.c.jj 2013-12-12 10:31:54.746517544 +0100
|
||||
+++ gcc/testsuite/gcc.target/i386/pr59470.c 2013-12-12 10:32:42.045273313 +0100
|
||||
@@ -0,0 +1,17 @@
|
||||
+/* PR middle-end/58956 */
|
||||
+/* PR middle-end/59470 */
|
||||
+/* { dg-do run } */
|
||||
+/* { dg-options "-O2" } */
|
||||
+
|
||||
+int a, b, d[1024];
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ int c = a;
|
||||
+ asm ("{movl $6, (%2); movl $1, %0|mov dword ptr [%2], 6; mov %0, 1}"
|
||||
+ : "=r" (d[c]) : "rm" (b), "r" (&a) : "memory");
|
||||
+ if (d[0] != 1 || d[6] != 0)
|
||||
+ __builtin_abort ();
|
||||
+ return 0;
|
||||
+}
|
2
sources
2
sources
@ -1,4 +1,4 @@
|
||||
be78a47bd82523250eb3e91646db5b3d cloog-0.18.0.tar.gz
|
||||
2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz
|
||||
b612421ddf9869af0cd14c1844b078b1 gcc-4.8.2-20131209.tar.bz2
|
||||
06f880ae1aa11c375f44e419a7671573 gcc-4.8.2-20131212.tar.bz2
|
||||
bce1586384d8635a76d2f017fb067cd2 isl-0.11.1.tar.bz2
|
||||
|
Loading…
Reference in New Issue
Block a user