aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-09-28 19:32:44 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-09-28 19:32:44 -0400
commit0407367d5352e159b08e72697db4409a4c05f094 (patch)
tree83d7544b2cac84fbe72d9953656dae1575b2c0cf
parentf1ed434da0fe589533a3f666a97e87fca3238654 (diff)
downloadgcc-0407367d5352e159b08e72697db4409a4c05f094.zip
gcc-0407367d5352e159b08e72697db4409a4c05f094.tar.gz
gcc-0407367d5352e159b08e72697db4409a4c05f094.tar.bz2
(convert_move): Added handling of PDImode conversions.
From-SVN: r8161
-rw-r--r--gcc/expr.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 2205591..743f809 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -1025,6 +1025,41 @@ convert_move (to, from, unsignedp)
}
}
+ if (to_mode == PDImode)
+ {
+ if (from_mode != DImode)
+ from = convert_to_mode (DImode, from, unsignedp);
+
+#ifdef HAVE_truncdipdi2
+ if (HAVE_truncdipdi2)
+ {
+ emit_unop_insn (CODE_FOR_truncdipdi2, to, from, UNKNOWN);
+ return;
+ }
+#endif /* HAVE_truncdipdi2 */
+ abort ();
+ }
+
+ if (from_mode == PDImode)
+ {
+ if (to_mode != DImode)
+ {
+ from = convert_to_mode (DImode, from, unsignedp);
+ from_mode = DImode;
+ }
+ else
+ {
+#ifdef HAVE_extendpdidi2
+ if (HAVE_extendpdidi2)
+ {
+ emit_unop_insn (CODE_FOR_extendpdidi2, to, from, UNKNOWN);
+ return;
+ }
+#endif /* HAVE_extendpdidi2 */
+ abort ();
+ }
+ }
+
/* Now follow all the conversions between integers
no more than a word long. */