Commit 2f011375 by Julian Brown Committed by Alexander Monakov

arm.md (movsi): Don't split symbol refs here.

2012-07-10  Julian Brown  <julian@codesourcery.com>

	* config/arm/arm.md (movsi): Don't split symbol refs here.
	(define_split): New.

From-SVN: r189411
parent 175aed00
2012-07-10 Julian Brown <julian@codesourcery.com>
* config/arm/arm.md (movsi): Don't split symbol refs here.
(define_split): New.
2012-07-10 Andreas Schwab <schwab@linux-m68k.org>
PR bootstrap/53913
......
......@@ -5475,14 +5475,6 @@
optimize && can_create_pseudo_p ());
DONE;
}
if (TARGET_USE_MOVT && !target_word_relocations
&& GET_CODE (operands[1]) == SYMBOL_REF
&& !flag_pic && !arm_tls_referenced_p (operands[1]))
{
arm_emit_movpair (operands[0], operands[1]);
DONE;
}
}
else /* TARGET_THUMB1... */
{
......@@ -5591,6 +5583,24 @@
"
)
;; Split symbol_refs at the later stage (after cprop), instead of generating
;; movt/movw pair directly at expand. Otherwise corresponding high_sum
;; and lo_sum would be merged back into memory load at cprop. However,
;; if the default is to prefer movt/movw rather than a load from the constant
;; pool, the performance is better.
(define_split
[(set (match_operand:SI 0 "arm_general_register_operand" "")
(match_operand:SI 1 "general_operand" ""))]
"TARGET_32BIT
&& TARGET_USE_MOVT && GET_CODE (operands[1]) == SYMBOL_REF
&& !flag_pic && !target_word_relocations
&& !arm_tls_referenced_p (operands[1])"
[(clobber (const_int 0))]
{
arm_emit_movpair (operands[0], operands[1]);
DONE;
})
(define_insn "*thumb1_movsi_insn"
[(set (match_operand:SI 0 "nonimmediate_operand" "=l,l,l,l,l,>,l, m,*l*h*k")
(match_operand:SI 1 "general_operand" "l, I,J,K,>,l,mi,l,*l*h*k"))]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment