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