https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98221
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Summary|[10/11 regression] Wrong |[10 regression] Wrong |unpack operation emitted in |unpack operation emitted in |tree-ssa-forwprop.c |tree-ssa-forwprop.c Known to work| |11.0 Ever confirmed|0 |1 Last reconfirmed| |2021-01-11 Status|UNCONFIRMED |ASSIGNED --- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- Fixed on trunk sofar. commit 300a3ce5c5695eb1a7c0476e9d1b45420a463248 (HEAD -> trunk, origin/master, o rigin/HEAD) Author: Andreas Krebbel <kreb...@gcc.gnu.org> Date: Mon Jan 11 10:59:43 2021 +0100 tree-optimization/98221 - fix wrong unpack operation used for big-endian The vec-abi-varargs-1.c testcase on IBM Z currently fails. While adding an SI mode vector to a DI mode vector the first is unpacked using: _28 = BIT_INSERT_EXPR <{ 0, 0, 0, 0 }, _2, 0>; _34 = [vec_unpack_lo_expr] _28; However, on big endian targets lo refers to the right hand side of the vector - in this case the zeroes. 2021-01-11 Andreas Krebbel <kreb...@linux.ibm.com> * tree-ssa-forwprop.c (simplify_vector_constructor): For big-endian, use UNPACK[_FLOAT]_HI.