This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/68635] New: IRA: Should update cost when choose an alternative for an insn?
- From: "Abnerkook at foxmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 01 Dec 2015 12:37:23 +0000
- Subject: [Bug c/68635] New: IRA: Should update cost when choose an alternative for an insn?
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68635
Bug ID: 68635
Summary: IRA: Should update cost when choose an alternative for
an insn?
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: Abnerkook at foxmail dot com
Target Milestone: ---
When I write a pattern for addsi3 as follows:
(define_insn "addsi3"
[(set (match_operand:SI 0 "register_operand" "=r,r")
(plus:SI (match_operand:SI 1 "register_operand" "zra,zrb")
(match_operand:SI 2 "register_operand" "zra,zrb")))])
Here, zra and zrb are non-intersect regclass, the selection of alternative is
decided by the register allocation.
But, sometimes when IRA choosing regclass for operand 2 after already allocated
zra to operand 1, because zrb's cost is less than zra, IRA choose zrb for
operand 2. To obey the constraint, additional move insn will be emitted which
we not expect.
So, updating cost when choose an alternative for an insn will be better for
this caseï Or, is there some methods to advoid this case?
Please give me some advice, I shall be very grateful. Sorry for my poor
English.