https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79131
Andreas Krebbel <krebbel at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |krebbel at gcc dot gnu.org --- Comment #12 from Andreas Krebbel <krebbel at gcc dot gnu.org> --- (In reply to Vladimir Makarov from comment #3) > Author: vmakarov > Date: Thu Jan 26 17:08:12 2017 > New Revision: 244942 > > URL: https://gcc.gnu.org/viewcvs?rev=244942&root=gcc&view=rev > Log: > 2017-01-26 Vladimir Makarov <vmaka...@redhat.com> > > PR target/79131 > * lra-assigns.c (setup_live_pseudos_and_spill_after_risky): Take > endianess for subregs into account. > * lra-constraints.c (lra_constraints): Do risky transformations > always on the first iteration. > * lra-lives.c (check_pseudos_live_through_calls): Add arg > last_call_used_reg_set. > (process_bb_lives): Define and use last_call_used_reg_set. > * lra.c (lra): Always continue after lra_constraints on the first > iteration. > > 2017-01-26 Vladimir Makarov <vmaka...@redhat.com> > > PR target/79131 > * gcc.target/arm/pr79131.c: New. 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: