[Bug rtl-optimization/79456] New: [7 regression] Extra instruction emitted after LRA patch
krebbel at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Feb 10 16:25:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79456
Bug ID: 79456
Summary: [7 regression] Extra instruction emitted after LRA
patch
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: krebbel at gcc dot gnu.org
Target Milestone: ---
The zvector/vec-cmp-1.c testcase currently fails on s390x.
Starting with that patch we see worse code being generated for:
int __attribute__((noinline,noclone))
all_eq_double (double __attribute__((vector_size(16))) a,
double __attribute__((vector_size(16))) b)
{
return __builtin_s390_vec_all_eq (a, b);
}
gcc -O3 -march=z13
before:
vfcedbs %v0,%v24,%v26
lhi %r2,1
lochine %r2,0
lgfr %r2,%r2
br %r14
after:
vfcedbs %v0,%v24,%v26
lhi %r2,1
lr %r1,%r2
lochine %r1,0
lgfr %r2,%r1
br %r14
Note: ideally it should be more like:
vfcedbs %v0,%v24,%v26
lghi %r2,1
locghine %r2,0
br %r14
... but that's a different topic.
The same problem can be reproduced also with vector types:
long foo (long a, long b)
{
return a > b;
}
old (r244941):
cgr %r2,%r3
lghi %r2,1
locghinh %r2,0
br %r14
after (r244942):
cgr %r2,%r3
lghi %r1,1
locghinh %r1,0
lgr %r2,%r1
br %r14
More information about the Gcc-bugs
mailing list