11.1.1-2
This commit is contained in:
parent
f172832272
commit
a31fadcc09
3
gcc.spec
3
gcc.spec
@ -266,6 +266,7 @@ Patch11: gcc11-rh1574936.patch
|
||||
Patch12: gcc11-d-shared-libphobos.patch
|
||||
Patch13: gcc11-pr99341-revert.patch
|
||||
Patch14: gcc11-pr100379.patch
|
||||
Patch15: gcc11-pr100566.patch
|
||||
|
||||
Patch100: gcc11-fortran-fdec-duplicates.patch
|
||||
Patch101: gcc11-fortran-flogical-as-integer.patch
|
||||
@ -790,6 +791,7 @@ to NVidia PTX capable devices if available.
|
||||
%patch12 -p0 -b .d-shared-libphobos~
|
||||
%patch13 -p0 -b .pr99341-revert~
|
||||
%patch14 -p0 -b .pr100379~
|
||||
%patch15 -p0 -b .pr100566~
|
||||
|
||||
%if 0%{?rhel} >= 9
|
||||
%patch100 -p1 -b .fortran-fdec-duplicates~
|
||||
@ -3145,6 +3147,7 @@ end
|
||||
tree-optimization/100253, tree-optimization/100278,
|
||||
tree-optimization/100329, tree-optimization/100414
|
||||
- fix build with removed linux/cyclades.h header (PR sanitizer/100379)
|
||||
- fix up mausezahn miscompilation (#1958887, PR tree-optimization/100566)
|
||||
|
||||
* Wed Apr 28 2021 Jakub Jelinek <jakub@redhat.com> 11.1.1-1
|
||||
- update from releases/gcc-11-branch
|
||||
|
69
gcc11-pr100566.patch
Normal file
69
gcc11-pr100566.patch
Normal file
@ -0,0 +1,69 @@
|
||||
2021-05-12 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/100566
|
||||
* tree-ssa-sccvn.c (dominated_by_p_w_unex): Properly handle
|
||||
allow_back for all edge queries.
|
||||
|
||||
* gcc.dg/torture/pr100566.c: New testcase.
|
||||
|
||||
--- gcc/tree-ssa-sccvn.c
|
||||
+++ gcc/tree-ssa-sccvn.c
|
||||
@@ -4529,7 +4529,8 @@ dominated_by_p_w_unex (basic_block bb1, basic_block bb2, bool allow_back)
|
||||
/* Iterate to the single executable bb2 successor. */
|
||||
edge succe = NULL;
|
||||
FOR_EACH_EDGE (e, ei, bb2->succs)
|
||||
- if (e->flags & EDGE_EXECUTABLE)
|
||||
+ if ((e->flags & EDGE_EXECUTABLE)
|
||||
+ || (!allow_back && (e->flags & EDGE_DFS_BACK)))
|
||||
{
|
||||
if (succe)
|
||||
{
|
||||
@@ -4547,7 +4548,8 @@ dominated_by_p_w_unex (basic_block bb1, basic_block bb2, bool allow_back)
|
||||
{
|
||||
FOR_EACH_EDGE (e, ei, succe->dest->preds)
|
||||
if (e != succe
|
||||
- && (e->flags & EDGE_EXECUTABLE))
|
||||
+ && ((e->flags & EDGE_EXECUTABLE)
|
||||
+ || (!allow_back && (e->flags & EDGE_DFS_BACK))))
|
||||
{
|
||||
succe = NULL;
|
||||
break;
|
||||
--- gcc/testsuite/gcc.dg/torture/pr100566.c
|
||||
+++ gcc/testsuite/gcc.dg/torture/pr100566.c
|
||||
@@ -0,0 +1,36 @@
|
||||
+/* { dg-do run } */
|
||||
+
|
||||
+volatile int s, c;
|
||||
+
|
||||
+__attribute__((noipa)) void
|
||||
+foo (void)
|
||||
+{
|
||||
+ if (c++ > 1)
|
||||
+ __builtin_abort ();
|
||||
+}
|
||||
+
|
||||
+__attribute__((noipa)) int
|
||||
+bar (void)
|
||||
+{
|
||||
+ int i = 0, j = s;
|
||||
+ if (j == 0)
|
||||
+ goto lab;
|
||||
+ for (i = 0; i < j; i++)
|
||||
+ {
|
||||
+ lab:
|
||||
+ foo ();
|
||||
+ if (!j)
|
||||
+ goto lab;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ s = 1;
|
||||
+ bar ();
|
||||
+ if (c != 1)
|
||||
+ __builtin_abort ();
|
||||
+ return 0;
|
||||
+}
|
Loading…
Reference in New Issue
Block a user