This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/79131] [7 Regression] ICE: in extract_constrain_insn, at recog.c:2213, big-endian ARM
- From: "krebbel at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 10 Feb 2017 15:32:29 +0000
- Subject: [Bug target/79131] [7 Regression] ICE: in extract_constrain_insn, at recog.c:2213, big-endian ARM
- Auto-submitted: auto-generated
- References: <bug-79131-4@http.gcc.gnu.org/bugzilla/>
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 <vmakarov@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 <vmakarov@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: