diff options
author | Eric Christopher <echristo@redhat.com> | 2003-10-22 00:18:11 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gcc.gnu.org> | 2003-10-22 00:18:11 +0000 |
commit | 450b1728ab4756dd03afde4bfb917aac093a91dc (patch) | |
tree | 09fa3cba878776305f630dd3ca72be7689fe06d2 /gcc/expr.c | |
parent | f30e21238aa04db344e1d83146ee8a8af817e0de (diff) | |
download | gcc-450b1728ab4756dd03afde4bfb917aac093a91dc.zip gcc-450b1728ab4756dd03afde4bfb917aac093a91dc.tar.gz gcc-450b1728ab4756dd03afde4bfb917aac093a91dc.tar.bz2 |
expr.c (convert_move): Use FLOAT_EXTEND for extensions.
2003-10-21 Eric Christopher <echristo@redhat.com>
* expr.c (convert_move): Use FLOAT_EXTEND for extensions.
From-SVN: r72783
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 18 |
1 files changed, 10 insertions, 8 deletions
@@ -634,8 +634,10 @@ convert_move (rtx to, rtx from, int unsignedp) 1, from, from_mode); insns = get_insns (); end_sequence (); - emit_libcall_block (insns, to, value, gen_rtx_FLOAT_TRUNCATE (to_mode, - from)); + emit_libcall_block (insns, to, value, + tab == trunc_optab ? gen_rtx_FLOAT_TRUNCATE (to_mode, + from) + : gen_rtx_FLOAT_EXTEND (to_mode, from)); return; } @@ -1398,7 +1400,7 @@ block_move_libcall_safe_for_call_parm (void) if (PUSH_ARGS) return true; - /* If registers go on the stack anyway, any argument is sure to clobber + /* If registers go on the stack anyway, any argument is sure to clobber an outgoing argument. */ #if defined (REG_PARM_STACK_SPACE) && defined (OUTGOING_REG_PARM_STACK_SPACE) { @@ -1414,10 +1416,10 @@ block_move_libcall_safe_for_call_parm (void) { CUMULATIVE_ARGS args_so_far; tree fn, arg; - + fn = emit_block_move_libcall_fn (false); INIT_CUMULATIVE_ARGS (args_so_far, TREE_TYPE (fn), NULL_RTX, 0); - + arg = TYPE_ARG_TYPES (TREE_TYPE (fn)); for ( ; arg != void_list_node ; arg = TREE_CHAIN (arg)) { @@ -1830,7 +1832,7 @@ gen_group_rtx (rtx orig) /* Emit code to move a block ORIG_SRC of type TYPE to a block DST, where DST is non-consecutive registers represented by a PARALLEL. SSIZE represents the total size of block ORIG_SRC in bytes, or -1 - if not known. */ + if not known. */ void emit_group_load (rtx dst, rtx orig_src, tree type ATTRIBUTE_UNUSED, int ssize) @@ -7106,7 +7108,7 @@ expand_expr (tree exp, rtx target, enum machine_mode tmode, (TYPE_QUALS (TREE_TYPE (tem)) | TYPE_QUAL_CONST)); rtx memloc = assign_temp (nt, 1, 1, 1); - + emit_move_insn (memloc, op0); op0 = memloc; } @@ -9550,7 +9552,7 @@ do_store_flag (tree exp, rtx target, enum machine_mode mode, int only_cheap) { tree type = (*lang_hooks.types.type_for_mode) (mode, unsignedp); return expand_expr (fold_single_bit_test (code == NE ? NE_EXPR : EQ_EXPR, - arg0, arg1, type), + arg0, arg1, type), target, VOIDmode, EXPAND_NORMAL); } |