mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-12 21:45:19 +08:00
alpha.md (exception_receiver): Emit alternative GP load sequence if flag_reorder_blocks_and_partition is set.
* config/alpha/alpha.md (exception_receiver): Emit alternative GP load sequence if flag_reorder_blocks_and_partition is set. (*exception_receiver_2): Also enable when flag_reorder_blocks_and_partition is set. From-SVN: r150984
This commit is contained in:
parent
685dca122f
commit
7450a081db
@ -1,3 +1,10 @@
|
|||||||
|
2009-08-21 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
|
* config/alpha/alpha.md (exception_receiver): Emit alternative
|
||||||
|
GP load sequence if flag_reorder_blocks_and_partition is set.
|
||||||
|
(*exception_receiver_2): Also enable when
|
||||||
|
flag_reorder_blocks_and_partition is set.
|
||||||
|
|
||||||
2009-08-20 Matt Rice <ratmice@gmail.com>
|
2009-08-20 Matt Rice <ratmice@gmail.com>
|
||||||
Diego Novillo <dnovillo@google.com>
|
Diego Novillo <dnovillo@google.com>
|
||||||
|
|
||||||
|
@ -6855,11 +6855,18 @@
|
|||||||
"br $27,$LSJ%=\n$LSJ%=:"
|
"br $27,$LSJ%=\n$LSJ%=:"
|
||||||
[(set_attr "type" "ibr")])
|
[(set_attr "type" "ibr")])
|
||||||
|
|
||||||
|
;; When flag_reorder_blocks_and_partition is in effect, compiler puts
|
||||||
|
;; exception landing pads in a cold section. To prevent inter-section offset
|
||||||
|
;; calculation, a jump to original landing pad is emitted in the place of the
|
||||||
|
;; original landing pad. Since landing pad is moved, RA-relative GP
|
||||||
|
;; calculation in the prologue of landing pad breaks. To solve this problem,
|
||||||
|
;; we use alternative GP load approach, as in the case of TARGET_LD_BUGGY_LDGP.
|
||||||
|
|
||||||
(define_expand "exception_receiver"
|
(define_expand "exception_receiver"
|
||||||
[(unspec_volatile [(match_dup 0)] UNSPECV_EHR)]
|
[(unspec_volatile [(match_dup 0)] UNSPECV_EHR)]
|
||||||
"TARGET_ABI_OSF"
|
"TARGET_ABI_OSF"
|
||||||
{
|
{
|
||||||
if (TARGET_LD_BUGGY_LDGP)
|
if (TARGET_LD_BUGGY_LDGP || flag_reorder_blocks_and_partition)
|
||||||
operands[0] = alpha_gp_save_rtx ();
|
operands[0] = alpha_gp_save_rtx ();
|
||||||
else
|
else
|
||||||
operands[0] = const0_rtx;
|
operands[0] = const0_rtx;
|
||||||
@ -6867,7 +6874,8 @@
|
|||||||
|
|
||||||
(define_insn "*exception_receiver_2"
|
(define_insn "*exception_receiver_2"
|
||||||
[(unspec_volatile [(match_operand:DI 0 "memory_operand" "m")] UNSPECV_EHR)]
|
[(unspec_volatile [(match_operand:DI 0 "memory_operand" "m")] UNSPECV_EHR)]
|
||||||
"TARGET_ABI_OSF && TARGET_LD_BUGGY_LDGP"
|
"TARGET_ABI_OSF
|
||||||
|
&& (TARGET_LD_BUGGY_LDGP || flag_reorder_blocks_and_partition)"
|
||||||
"ldq $29,%0"
|
"ldq $29,%0"
|
||||||
[(set_attr "type" "ild")])
|
[(set_attr "type" "ild")])
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user