4.9.1-11
This commit is contained in:
parent
8036281669
commit
a593d741ef
1
.gitignore
vendored
1
.gitignore
vendored
@ -23,3 +23,4 @@
|
||||
/gcc-4.9.1-20140815.tar.bz2
|
||||
/gcc-4.9.1-20140912.tar.bz2
|
||||
/gcc-4.9.1-20140922.tar.bz2
|
||||
/gcc-4.9.1-20140930.tar.bz2
|
||||
|
16
gcc.spec
16
gcc.spec
@ -1,9 +1,9 @@
|
||||
%global DATE 20140922
|
||||
%global SVNREV 215456
|
||||
%global DATE 20140930
|
||||
%global SVNREV 215732
|
||||
%global gcc_version 4.9.1
|
||||
# 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 10
|
||||
%global gcc_release 11
|
||||
%global _unpackaged_files_terminate_build 0
|
||||
%global _performance_build 1
|
||||
%global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64
|
||||
@ -201,6 +201,7 @@ Patch16: gcc49-libgo-p224.patch
|
||||
Patch17: gcc49-aarch64-async-unw-tables.patch
|
||||
Patch18: gcc49-aarch64-unwind-opt.patch
|
||||
Patch19: gcc49-pr63285.patch
|
||||
Patch20: gcc49-pr63186.patch
|
||||
|
||||
Patch1100: cloog-%{cloog_version}-ppc64le-config.patch
|
||||
|
||||
@ -730,6 +731,7 @@ rm -f libgo/go/crypto/elliptic/p224{,_test}.go
|
||||
%patch17 -p0 -b .aarch64-async-unw-tables~
|
||||
%patch18 -p0 -b .aarch64-unwind-opt~
|
||||
%patch19 -p0 -b .pr63285~
|
||||
%patch20 -p0 -b .pr63186~
|
||||
|
||||
%if 0%{?_enable_debug_packages}
|
||||
cat > split-debuginfo.sh <<\EOF
|
||||
@ -2802,6 +2804,14 @@ fi
|
||||
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
|
||||
|
||||
%changelog
|
||||
* Tue Sep 30 2014 Jakub Jelinek <jakub@redhat.com> 4.9.1-11
|
||||
- update from the 4.9 branch
|
||||
- PRs c++/61465, c++/62219, c++/63249, inline-asm/63282, middle-end/63247,
|
||||
plugins/63410, sanitizer/61272, target/49423, target/61407,
|
||||
target/62218, target/63335, tree-optimization/63341
|
||||
- avoid fnsplit if there are forced labels accessed in between the partitions
|
||||
(#1106758, PR tree-optimization/63186)
|
||||
|
||||
* Mon Sep 22 2014 Jakub Jelinek <jakub@redhat.com> 4.9.1-10
|
||||
- update from the 4.9 branch
|
||||
- PRs c++/62017, c++/63241, c++/63248, debug/63284, debug/63328, ipa/61654,
|
||||
|
129
gcc49-pr63186.patch
Normal file
129
gcc49-pr63186.patch
Normal file
@ -0,0 +1,129 @@
|
||||
2014-09-10 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
PR tree-optimization/63186
|
||||
* ipa-split.c (test_nonssa_use): Skip nonforced labels.
|
||||
(mark_nonssa_use): Likewise.
|
||||
(verify_non_ssa_vars): Verify all header blocks for label
|
||||
definitions.
|
||||
|
||||
* gcc.dg/pr63186.c: New testcase.
|
||||
|
||||
--- gcc/ipa-split.c (revision 215148)
|
||||
+++ gcc/ipa-split.c (revision 215149)
|
||||
@@ -167,7 +167,11 @@ test_nonssa_use (gimple, tree t, tree, v
|
||||
|| (TREE_CODE (t) == VAR_DECL
|
||||
&& auto_var_in_fn_p (t, current_function_decl))
|
||||
|| TREE_CODE (t) == RESULT_DECL
|
||||
- || TREE_CODE (t) == LABEL_DECL)
|
||||
+ /* Normal labels are part of CFG and will be handled gratefuly.
|
||||
+ Forced labels however can be used directly by statements and
|
||||
+ need to stay in one partition along with their uses. */
|
||||
+ || (TREE_CODE (t) == LABEL_DECL
|
||||
+ && FORCED_LABEL (t)))
|
||||
return bitmap_bit_p ((bitmap)data, DECL_UID (t));
|
||||
|
||||
/* For DECL_BY_REFERENCE, the return value is actually a pointer. We want
|
||||
@@ -213,6 +217,7 @@ verify_non_ssa_vars (struct split_point
|
||||
edge e;
|
||||
edge_iterator ei;
|
||||
bool ok = true;
|
||||
+ basic_block bb;
|
||||
|
||||
FOR_EACH_EDGE (e, ei, current->entry_bb->preds)
|
||||
if (e->src != ENTRY_BLOCK_PTR_FOR_FN (cfun)
|
||||
@@ -225,8 +230,8 @@ verify_non_ssa_vars (struct split_point
|
||||
while (!worklist.is_empty ())
|
||||
{
|
||||
gimple_stmt_iterator bsi;
|
||||
- basic_block bb = worklist.pop ();
|
||||
|
||||
+ bb = worklist.pop ();
|
||||
FOR_EACH_EDGE (e, ei, bb->preds)
|
||||
if (e->src != ENTRY_BLOCK_PTR_FOR_FN (cfun)
|
||||
&& bitmap_set_bit (seen, e->src->index))
|
||||
@@ -250,10 +255,10 @@ verify_non_ssa_vars (struct split_point
|
||||
if (gimple_code (stmt) == GIMPLE_LABEL
|
||||
&& test_nonssa_use (stmt, gimple_label_label (stmt),
|
||||
NULL_TREE, non_ssa_vars))
|
||||
- {
|
||||
- ok = false;
|
||||
- goto done;
|
||||
- }
|
||||
+ {
|
||||
+ ok = false;
|
||||
+ goto done;
|
||||
+ }
|
||||
}
|
||||
for (bsi = gsi_start_phis (bb); !gsi_end_p (bsi); gsi_next (&bsi))
|
||||
{
|
||||
@@ -286,6 +291,27 @@ verify_non_ssa_vars (struct split_point
|
||||
}
|
||||
}
|
||||
}
|
||||
+
|
||||
+ /* Verify that the rest of function does not define any label
|
||||
+ used by the split part. */
|
||||
+ FOR_EACH_BB_FN (bb, cfun)
|
||||
+ if (!bitmap_bit_p (current->split_bbs, bb->index)
|
||||
+ && !bitmap_bit_p (seen, bb->index))
|
||||
+ {
|
||||
+ gimple_stmt_iterator bsi;
|
||||
+ for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); gsi_next (&bsi))
|
||||
+ if (gimple_code (gsi_stmt (bsi)) == GIMPLE_LABEL
|
||||
+ && test_nonssa_use (gsi_stmt (bsi),
|
||||
+ gimple_label_label (gsi_stmt (bsi)),
|
||||
+ NULL_TREE, non_ssa_vars))
|
||||
+ {
|
||||
+ ok = false;
|
||||
+ goto done;
|
||||
+ }
|
||||
+ else if (gimple_code (gsi_stmt (bsi)) != GIMPLE_LABEL)
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
done:
|
||||
BITMAP_FREE (seen);
|
||||
worklist.release ();
|
||||
@@ -735,7 +761,8 @@ mark_nonssa_use (gimple, tree t, tree, v
|
||||
if ((TREE_CODE (t) == VAR_DECL
|
||||
&& auto_var_in_fn_p (t, current_function_decl))
|
||||
|| TREE_CODE (t) == RESULT_DECL
|
||||
- || TREE_CODE (t) == LABEL_DECL)
|
||||
+ || (TREE_CODE (t) == LABEL_DECL
|
||||
+ && FORCED_LABEL (t)))
|
||||
bitmap_set_bit ((bitmap)data, DECL_UID (t));
|
||||
|
||||
/* For DECL_BY_REFERENCE, the return value is actually a pointer. We want
|
||||
--- gcc/testsuite/gcc.dg/pr63186.c (revision 0)
|
||||
+++ gcc/testsuite/gcc.dg/pr63186.c (revision 215149)
|
||||
@@ -0,0 +1,30 @@
|
||||
+/* { dg-do link } */
|
||||
+/* { dg-options "-O2" } */
|
||||
+void *a;
|
||||
+int b, c, d;
|
||||
+
|
||||
+void
|
||||
+bar ()
|
||||
+{
|
||||
+ switch (c)
|
||||
+ {
|
||||
+ case 0:
|
||||
+ lab:
|
||||
+ __asm__ ("");
|
||||
+ return;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ b = 0;
|
||||
+ d = 0;
|
||||
+ a = &&lab;
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+foo ()
|
||||
+{
|
||||
+ bar ();
|
||||
+}
|
||||
+main()
|
||||
+{
|
||||
+}
|
Loading…
Reference in New Issue
Block a user