I am fine with this fix backported to master and perhaps dunfell too.

On Wed, Jul 22, 2020 at 4:08 AM Nicolas Dechesne
<[email protected]> wrote:
>
> Khem, Richard,
>
> On Fri, Jul 17, 2020 at 12:36 AM Dmitry Baryshkov <[email protected]> 
> wrote:
> >
> > From: Dmitry Baryshkov <[email protected]>
> >
> > Fix for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96130 causing ICE
> > (SegFault) when compiling current Mesa git tree.
>
> This fixes the build issue reported when trying to build mesa master
> branch, see:
> https://github.com/ndechesne/meta-qcom/pull/174
>
> While we aren't using mesa/master in OE core, some BSP layer might be
> doing that. If mesa gets released before gcc, we might hit this issue.
> The gcc is queued for 10.2 already. If we can't get this patch in OE
> core, we will host in our layer..
>
> >
> > Signed-off-by: Dmitry Baryshkov <[email protected]>
> > ---
> >  meta/recipes-devtools/gcc/gcc-10.1.inc        |   1 +
> >  .../gcc/gcc-10.1/pr96130.patch                | 106 ++++++++++++++++++
> >  2 files changed, 107 insertions(+)
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-10.1/pr96130.patch
> >
> > diff --git a/meta/recipes-devtools/gcc/gcc-10.1.inc 
> > b/meta/recipes-devtools/gcc/gcc-10.1.inc
> > index a3de91a2c6a3..a2dd2ae252a5 100644
> > --- a/meta/recipes-devtools/gcc/gcc-10.1.inc
> > +++ b/meta/recipes-devtools/gcc/gcc-10.1.inc
> > @@ -66,6 +66,7 @@ SRC_URI = "\
> >             file://0036-Enable-CET-in-cross-compiler-if-possible.patch \
> >             file://0037-mingw32-Enable-operation_not_supported.patch \
> >             file://0038-libatomic-Do-not-enforce-march-on-aarch64.patch \
> > +           file://pr96130.patch \
> >  "
> >  SRC_URI[sha256sum] = 
> > "b6898a23844b656f1b68691c5c012036c2e694ac4b53a8918d4712ad876e7ea2"
> >
> > diff --git a/meta/recipes-devtools/gcc/gcc-10.1/pr96130.patch 
> > b/meta/recipes-devtools/gcc/gcc-10.1/pr96130.patch
> > new file mode 100644
> > index 000000000000..f0e6f85e22f9
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-10.1/pr96130.patch
> > @@ -0,0 +1,106 @@
> > +From 0d03c0ee5213703ec6d9ffa632fa5298d83adaaa Mon Sep 17 00:00:00 2001
> > +From: Jakub Jelinek <[email protected]>
> > +Date: Mon, 13 Jul 2020 18:25:53 +0200
> > +Subject: [PATCH] ipa-fnsummary: Fix ICE with switch predicates [PR96130]
> > +
> > +The following testcase ICEs since r10-3199.
> > +There is a switch with default label, where the controlling expression has
> > +range just 0..7 and there are case labels for all those 8 values, but
> > +nothing has yet optimized away the default.
> > +Since r10-3199, set_switch_stmt_execution_predicate sets the switch to
> > +default label's edge's predicate to a false predicate and then
> > +compute_bb_predicates propagates the predicates through the cfg, but false
> > +predicates aren't really added.  The caller of compute_bb_predicates
> > +in one place handles NULL bb->aux as false predicate:
> > +      if (fbi.info)
> > +       {
> > +         if (bb->aux)
> > +           bb_predicate = *(predicate *) bb->aux;
> > +         else
> > +           bb_predicate = false;
> > +       }
> > +      else
> > +       bb_predicate = true;
> > +but then in two further spots that the patch below is changing
> > +it assumes bb->aux must be non-NULL.  Those two spots are guarded by a
> > +condition that is only true if fbi.info is non-NULL, so I think the right
> > +fix is to treat NULL aux as false predicate in those spots too.
> > +
> > +2020-07-13  Jakub Jelinek  <[email protected]>
> > +
> > +       PR ipa/96130
> > +       * ipa-fnsummary.c (analyze_function_body): Treat NULL bb->aux
> > +       as false predicate.
> > +
> > +       * gcc.dg/torture/pr96130.c: New test.
> > +
> > +(cherry picked from commit 776e48e0931db69f158f40e5cb8e15463d879a42)
> > +---
> > + gcc/ipa-fnsummary.c                    | 10 ++++++++--
> > + gcc/testsuite/gcc.dg/torture/pr96130.c | 26 ++++++++++++++++++++++++++
> > + 2 files changed, 34 insertions(+), 2 deletions(-)
> > + create mode 100644 gcc/testsuite/gcc.dg/torture/pr96130.c
> > +
> > +diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c
> > +index 045a0ecf766..55a0b272a96 100644
> > +--- a/gcc/ipa-fnsummary.c
> > ++++ b/gcc/ipa-fnsummary.c
> > +@@ -2766,7 +2766,10 @@ analyze_function_body (struct cgraph_node *node, 
> > bool early)
> > +         edge ex;
> > +         unsigned int j;
> > +         class tree_niter_desc niter_desc;
> > +-        bb_predicate = *(predicate *) loop->header->aux;
> > ++        if (loop->header->aux)
> > ++          bb_predicate = *(predicate *) loop->header->aux;
> > ++        else
> > ++          bb_predicate = false;
> > +
> > +         exits = get_loop_exit_edges (loop);
> > +         FOR_EACH_VEC_ELT (exits, j, ex)
> > +@@ -2799,7 +2802,10 @@ analyze_function_body (struct cgraph_node *node, 
> > bool early)
> > +         for (unsigned i = 0; i < loop->num_nodes; i++)
> > +           {
> > +             gimple_stmt_iterator gsi;
> > +-            bb_predicate = *(predicate *) body[i]->aux;
> > ++            if (body[i]->aux)
> > ++              bb_predicate = *(predicate *) body[i]->aux;
> > ++            else
> > ++              bb_predicate = false;
> > +             for (gsi = gsi_start_bb (body[i]); !gsi_end_p (gsi);
> > +                  gsi_next (&gsi))
> > +               {
> > +diff --git a/gcc/testsuite/gcc.dg/torture/pr96130.c 
> > b/gcc/testsuite/gcc.dg/torture/pr96130.c
> > +new file mode 100644
> > +index 00000000000..f722b9ad2a9
> > +--- /dev/null
> > ++++ b/gcc/testsuite/gcc.dg/torture/pr96130.c
> > +@@ -0,0 +1,26 @@
> > ++/* PR ipa/96130 */
> > ++/* { dg-do compile } */
> > ++
> > ++struct S { unsigned j : 3; };
> > ++int k, l, m;
> > ++
> > ++void
> > ++foo (struct S x)
> > ++{
> > ++  while (l != 5)
> > ++    switch (x.j)
> > ++      {
> > ++      case 1:
> > ++      case 3:
> > ++      case 4:
> > ++      case 6:
> > ++      case 2:
> > ++      case 5:
> > ++      l = m;
> > ++      case 7:
> > ++      case 0:
> > ++      k = 0;
> > ++      default:
> > ++      break;
> > ++      }
> > ++}
> > +--
> > +2.18.4
> > +
> > --
> > 2.27.0
> >
> > 
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#140876): 
https://lists.openembedded.org/g/openembedded-core/message/140876
Mute This Topic: https://lists.openembedded.org/mt/75552444/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub  
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to