diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2002-03-02 13:53:38 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2002-03-02 08:53:38 -0500 |
commit | 35aa3c1ceac0d91b0276d6f6de224b04e29ad16a (patch) | |
tree | b1775d6b204a02ba6f675a078644bd0fb81d0d4a /gcc | |
parent | f6041ed87e746b78a13232fec0b658b662191276 (diff) | |
download | gcc-35aa3c1ceac0d91b0276d6f6de224b04e29ad16a.zip gcc-35aa3c1ceac0d91b0276d6f6de224b04e29ad16a.tar.gz gcc-35aa3c1ceac0d91b0276d6f6de224b04e29ad16a.tar.bz2 |
sparc.c (sparc_initialize_trampoline): Use trunc_int_for_mode.
* config/sparc/sparc.c (sparc_initialize_trampoline): Use
trunc_int_for_mode.
From-SVN: r50226
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.c | 58 |
2 files changed, 33 insertions, 28 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3ca76f6..2b395d3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ Sat Mar 2 06:30:14 2002 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> + * config/sparc/sparc.c (sparc_initialize_trampoline): Use + trunc_int_for_mode. + * emit-rtl.c (offset_address): Call update_temp_slot_address. 2002-03-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 4d8c443..e101fa7 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -6263,37 +6263,39 @@ sparc_initialize_trampoline (tramp, fnaddr, cxt) 0, VOIDmode, 1, tramp, Pmode); #endif - emit_move_insn (gen_rtx_MEM (SImode, plus_constant (tramp, 0)), - expand_binop (SImode, ior_optab, - expand_shift (RSHIFT_EXPR, SImode, fnaddr, - size_int (10), 0, 1), - GEN_INT (0x03000000), - NULL_RTX, 1, OPTAB_DIRECT)); + emit_move_insn + (gen_rtx_MEM (SImode, plus_constant (tramp, 0)), + expand_binop (SImode, ior_optab, + expand_shift (RSHIFT_EXPR, SImode, fnaddr, + size_int (10), 0, 1), + GEN_INT (trunc_int_for_mode (0x03000000, SImode)), + NULL_RTX, 1, OPTAB_DIRECT)); + + emit_move_insn + (gen_rtx_MEM (SImode, plus_constant (tramp, 4)), + expand_binop (SImode, ior_optab, + expand_shift (RSHIFT_EXPR, SImode, cxt, + size_int (10), 0, 1), + GEN_INT (trunc_int_for_mode (0x05000000, SImode)), + NULL_RTX, 1, OPTAB_DIRECT)); + + emit_move_insn + (gen_rtx_MEM (SImode, plus_constant (tramp, 8)), + expand_binop (SImode, ior_optab, + expand_and (SImode, fnaddr, GEN_INT (0x3ff), NULL_RTX), + GEN_INT (trunc_int_for_mode (0x81c06000, SImode)), + NULL_RTX, 1, OPTAB_DIRECT)); + + emit_move_insn + (gen_rtx_MEM (SImode, plus_constant (tramp, 12)), + expand_binop (SImode, ior_optab, + expand_and (SImode, cxt, GEN_INT (0x3ff), NULL_RTX), + GEN_INT (trunc_int_for_mode (0x8410a000, SImode)), + NULL_RTX, 1, OPTAB_DIRECT)); - emit_move_insn (gen_rtx_MEM (SImode, plus_constant (tramp, 4)), - expand_binop (SImode, ior_optab, - expand_shift (RSHIFT_EXPR, SImode, cxt, - size_int (10), 0, 1), - GEN_INT (0x05000000), - NULL_RTX, 1, OPTAB_DIRECT)); - - emit_move_insn (gen_rtx_MEM (SImode, plus_constant (tramp, 8)), - expand_binop (SImode, ior_optab, - expand_and (SImode, fnaddr, GEN_INT (0x3ff), - NULL_RTX), - GEN_INT (0x81c06000), - NULL_RTX, 1, OPTAB_DIRECT)); - - emit_move_insn (gen_rtx_MEM (SImode, plus_constant (tramp, 12)), - expand_binop (SImode, ior_optab, - expand_and (SImode, cxt, GEN_INT (0x3ff), - NULL_RTX), - GEN_INT (0x8410a000), - NULL_RTX, 1, OPTAB_DIRECT)); - - emit_insn (gen_flush (validize_mem (gen_rtx_MEM (SImode, tramp)))); /* On UltraSPARC a flush flushes an entire cache line. The trampoline is aligned on a 16 byte boundary so one flush clears it all. */ + emit_insn (gen_flush (validize_mem (gen_rtx_MEM (SImode, tramp)))); if (sparc_cpu != PROCESSOR_ULTRASPARC) emit_insn (gen_flush (validize_mem (gen_rtx_MEM (SImode, plus_constant (tramp, 8))))); |