This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/63762] [ARM]GCC generates UNPREDICTABLE STR with Rn = Rt when hard-float abi is used
- From: "ramana at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 13 Nov 2014 16:12:20 +0000
- Subject: [Bug target/63762] [ARM]GCC generates UNPREDICTABLE STR with Rn = Rt when hard-float abi is used
- Auto-submitted: auto-generated
- References: <bug-63762-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63762
--- Comment #4 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> ---
(In reply to Renlin Li from comment #2)
> r278 is derived from r224 which is a VFP_LO_REGS.
>
> find_cost_and_classes assigns r278's class as GENERAL_REGS, and assign it
> hard_reg 2. Another new pseudo register r290 is created from r278, and
> assigned to the same hard_register and register class (GENERAL_REGS).
>
> The pref_class of r290 is derived from its original reg (r224), which is
> VFP_LO_REGS
>
> In lra during the hard register assignment process, conflict is checked for
> r302 which is a GENERAL_REGS. r290 is not considered, because of different
> register classes(reg_pref[290].pref_class == VFP_LO_REGS ). Hard register
> number 2 is chosen in this case.
R2 should not be in VFP_LO_REGS - how does IRA end up choosing that ?