This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
On 10/28/2011 06:49 AM, Peter Bigot wrote:I'm inclined to follow sparc's lead, but is one or another of the choices more likely to help combine/reload/etc do a better job?
I don't know.
In the case of RX, we don't model CC_REG until after reload, so combine really doesn't get a shot at it.
Be careful here. If you explicitly model the carry flag before reload, you need to have an ADD instruction that can avoid any flags modification. Reload needs to generate such instructions in some cases, and needs to be able to insert them between any two arbitrary insns.
I followed rx model but instead RCC before clobber in some cases. To solve this problem
I have the following insn_and_split:
(define_insn_and_split "addqi3_noclobber"
[(set (match_operand:QI 0 "register_operand" "=c")
(plus:QI (match_operand:QI 1 "register_operand")
(match_operand:QI 2 "immediate_operand")))]
"reload_in_progress"
"#"
"reload_completed"
[(parallel [(set (match_dup 0) (match_dup 1))
(clobber (reg:CC RCC))])
(parallel [(set (match_dup 0) (plus:QI (match_dup 0) (match_dup 2)))
(clobber (reg:CC RCC))])])Cheers, -- PMatos
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |