aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@redhat.co.uk>2000-09-15 16:16:33 +0000
committerBernd Schmidt <crux@gcc.gnu.org>2000-09-15 16:16:33 +0000
commit642dfa8b65d3f42e35df4ced39d8a58b1a8cc2e6 (patch)
tree672a46405db5845dbc86056fe55f582523be7c77
parentaff2c2d3af3233dfb2d237341f2fd8612dc61391 (diff)
downloadgcc-642dfa8b65d3f42e35df4ced39d8a58b1a8cc2e6.zip
gcc-642dfa8b65d3f42e35df4ced39d8a58b1a8cc2e6.tar.gz
gcc-642dfa8b65d3f42e35df4ced39d8a58b1a8cc2e6.tar.bz2
Make libcall blocks for truncations
From-SVN: r36434
-rw-r--r--gcc/ChangeLog2
-rw-r--r--gcc/expr.c8
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6c1152a..147768e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -2,6 +2,8 @@
* optabs.c (emit_libcall_block): If target is a user variable,
copy to a temporary first.
+ * expr.c (convert_move): When generating a libcall, make a libcall
+ block.
2000-09-15 Richard Henderson <rth@cygnus.com>
diff --git a/gcc/expr.c b/gcc/expr.c
index 66e972f..034c132 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -563,7 +563,7 @@ convert_move (to, from, unsignedp)
if (to_real)
{
- rtx value;
+ rtx value, insns;
if (GET_MODE_BITSIZE (from_mode) < GET_MODE_BITSIZE (to_mode))
{
@@ -803,9 +803,13 @@ convert_move (to, from, unsignedp)
/* This conversion is not implemented yet. */
abort ();
+ start_sequence ();
value = emit_library_call_value (libcall, NULL_RTX, 1, to_mode,
1, from, from_mode);
- emit_move_insn (to, value);
+ insns = get_insns ();
+ end_sequence ();
+ emit_libcall_block (insns, to, value, gen_rtx_FLOAT_TRUNCATE (to_mode,
+ from));
return;
}