https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116258
Bug ID: 116258
Summary: PAREN_EXPR lowering for vectors is bad
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: enhancement
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: pinskia at gcc dot gnu.org
Target Milestone: ---
Take:
```
#define vect8 __attribute__((vector_size(8)))
#define vect16 __attribute__((vector_size(16)))
#if 1
#define h(a) __builtin_assoc_barrier((a))
#else
#define h(a) (a)
#endif
vect16 float f( vect16 float x, vect16 float vconstants0)
{
vect16 float t = (x * (vconstants0[0]));
return (x + h(t));
}
```
This produces so many shuffles for no reason. If we remove the
__builtin_assoc_barrier, then it produces better code.
I Noticed this for PR 116257 while looking into a way of partly reverting the
patch to back using GCC vector extensions and maybe produce slightly better
code.
I think we should lowering it only if there is no move for the mode or it is
BLKmode.