On Thu, Feb 11, 2021 at 6:09 AM Jon Mason <jdma...@kudzu.us> wrote: > > Sorry, the subject should have "dunfell" in it
No worries, I got it! Steve > On Thu, Feb 11, 2021 at 10:57 AM Jon Mason via lists.openembedded.org > <jdmason=kudzu...@lists.openembedded.org> wrote: > > > > GCCv9 tree vectorization code is faulty and can cause random crashes at > > runtime (when using -O3). Add the backported patch to address this > > issue. > > > > Signed-off-by: Jon Mason <jon.ma...@arm.com> > > --- > > meta/recipes-devtools/gcc/gcc-9.3.inc | 1 + > > ...-PR-tree-optimization-97236-fix-bad-.patch | 116 ++++++++++++++++++ > > 2 files changed, 117 insertions(+) > > create mode 100644 > > meta/recipes-devtools/gcc/gcc-9.3/0001-Backport-fix-for-PR-tree-optimization-97236-fix-bad-.patch > > > > diff --git a/meta/recipes-devtools/gcc/gcc-9.3.inc > > b/meta/recipes-devtools/gcc/gcc-9.3.inc > > index 4c54ba250aba..1c8e3df51d91 100644 > > --- a/meta/recipes-devtools/gcc/gcc-9.3.inc > > +++ b/meta/recipes-devtools/gcc/gcc-9.3.inc > > @@ -72,6 +72,7 @@ SRC_URI = "\ > > > > file://0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch \ > > > > file://0002-aarch64-Introduce-SLS-mitigation-for-RET-and-BR-inst.patch \ > > file://0003-aarch64-Mitigate-SLS-for-BLR-instruction.patch \ > > + > > file://0001-Backport-fix-for-PR-tree-optimization-97236-fix-bad-.patch \ > > " > > S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}" > > SRC_URI[sha256sum] = > > "71e197867611f6054aa1119b13a0c0abac12834765fe2d81f35ac57f84f742d1" > > diff --git > > a/meta/recipes-devtools/gcc/gcc-9.3/0001-Backport-fix-for-PR-tree-optimization-97236-fix-bad-.patch > > > > b/meta/recipes-devtools/gcc/gcc-9.3/0001-Backport-fix-for-PR-tree-optimization-97236-fix-bad-.patch > > new file mode 100644 > > index 000000000000..9020aa6c3a1e > > --- /dev/null > > +++ > > b/meta/recipes-devtools/gcc/gcc-9.3/0001-Backport-fix-for-PR-tree-optimization-97236-fix-bad-.patch > > @@ -0,0 +1,116 @@ > > +From 97b668f9a8c6ec565c278a60e7d1492a6932e409 Mon Sep 17 00:00:00 2001 > > +From: Matthias Klose <d...@ubuntu.com> > > +Date: Tue, 6 Oct 2020 13:41:37 +0200 > > +Subject: [PATCH] Backport fix for PR/tree-optimization/97236 - fix bad use > > of > > + VMAT_CONTIGUOUS > > + > > +This avoids using VMAT_CONTIGUOUS with single-element interleaving > > +when using V1mode vectors. Instead keep VMAT_ELEMENTWISE but > > +continue to avoid load-lanes and gathers. > > + > > +2020-10-01 Richard Biener <rguent...@suse.de> > > + > > + PR tree-optimization/97236 > > + * tree-vect-stmts.c (get_group_load_store_type): Keep > > + VMAT_ELEMENTWISE for single-element vectors. > > + > > + * gcc.dg/vect/pr97236.c: New testcase. > > + > > +(cherry picked from commit 1ab88985631dd2c5a5e3b5c0dce47cf8b6ed2f82) > > +--- > > + gcc/testsuite/gcc.dg/vect/pr97236.c | 43 +++++++++++++++++++++++++++++ > > + gcc/tree-vect-stmts.c | 20 ++++++-------- > > + 2 files changed, 52 insertions(+), 11 deletions(-) > > + create mode 100644 gcc/testsuite/gcc.dg/vect/pr97236.c > > + > > +diff --git a/gcc/testsuite/gcc.dg/vect/pr97236.c > > b/gcc/testsuite/gcc.dg/vect/pr97236.c > > +new file mode 100644 > > +index 000000000000..9d3dc20d953d > > +--- /dev/null > > ++++ b/gcc/testsuite/gcc.dg/vect/pr97236.c > > +@@ -0,0 +1,43 @@ > > ++typedef unsigned char __uint8_t; > > ++typedef __uint8_t uint8_t; > > ++typedef struct plane_t { > > ++ uint8_t *p_pixels; > > ++ int i_lines; > > ++ int i_pitch; > > ++} plane_t; > > ++ > > ++typedef struct { > > ++ plane_t p[5]; > > ++} picture_t; > > ++ > > ++#define N 4 > > ++ > > ++void __attribute__((noipa)) > > ++picture_Clone(picture_t *picture, picture_t *res) > > ++{ > > ++ for (int i = 0; i < N; i++) { > > ++ res->p[i].p_pixels = picture->p[i].p_pixels; > > ++ res->p[i].i_lines = picture->p[i].i_lines; > > ++ res->p[i].i_pitch = picture->p[i].i_pitch; > > ++ } > > ++} > > ++ > > ++int > > ++main() > > ++{ > > ++ picture_t aaa, bbb; > > ++ uint8_t pixels[10] = {1, 1, 1, 1, 1, 1, 1, 1}; > > ++ > > ++ for (unsigned i = 0; i < N; i++) > > ++ aaa.p[i].p_pixels = pixels; > > ++ > > ++ picture_Clone (&aaa, &bbb); > > ++ > > ++ uint8_t c = 0; > > ++ for (unsigned i = 0; i < N; i++) > > ++ c += bbb.p[i].p_pixels[0]; > > ++ > > ++ if (c != N) > > ++ __builtin_abort (); > > ++ return 0; > > ++} > > +diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c > > +index 507f81b0a0e8..ffbba3441de2 100644 > > +--- a/gcc/tree-vect-stmts.c > > ++++ b/gcc/tree-vect-stmts.c > > +@@ -2355,25 +2355,23 @@ get_group_load_store_type (stmt_vec_info > > stmt_info, tree vectype, bool slp, > > + /* First cope with the degenerate case of a single-element > > + vector. */ > > + if (known_eq (TYPE_VECTOR_SUBPARTS (vectype), 1U)) > > +- *memory_access_type = VMAT_CONTIGUOUS; > > ++ ; > > + > > + /* Otherwise try using LOAD/STORE_LANES. */ > > +- if (*memory_access_type == VMAT_ELEMENTWISE > > +- && (vls_type == VLS_LOAD > > +- ? vect_load_lanes_supported (vectype, group_size, > > masked_p) > > +- : vect_store_lanes_supported (vectype, group_size, > > +- masked_p))) > > ++ else if (vls_type == VLS_LOAD > > ++ ? vect_load_lanes_supported (vectype, group_size, > > masked_p) > > ++ : vect_store_lanes_supported (vectype, group_size, > > ++ masked_p)) > > + { > > + *memory_access_type = VMAT_LOAD_STORE_LANES; > > + overrun_p = would_overrun_p; > > + } > > + > > + /* If that fails, try using permuting loads. */ > > +- if (*memory_access_type == VMAT_ELEMENTWISE > > +- && (vls_type == VLS_LOAD > > +- ? vect_grouped_load_supported (vectype, single_element_p, > > +- group_size) > > +- : vect_grouped_store_supported (vectype, group_size))) > > ++ else if (vls_type == VLS_LOAD > > ++ ? vect_grouped_load_supported (vectype, single_element_p, > > ++ group_size) > > ++ : vect_grouped_store_supported (vectype, group_size)) > > + { > > + *memory_access_type = VMAT_CONTIGUOUS_PERMUTE; > > + overrun_p = would_overrun_p; > > +-- > > +2.20.1 > > + > > -- > > 2.20.1 > > > > > > > > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#147962): https://lists.openembedded.org/g/openembedded-core/message/147962 Mute This Topic: https://lists.openembedded.org/mt/80560970/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-