c: Fix C_NOEXEC destination parameter
authorEdward Hervey <bilboed@bilboed.com>
Mon, 20 Sep 2010 14:18:07 +0000 (14:18 +0000)
committerDavid Schleef <ds@schleef.org>
Mon, 20 Sep 2010 20:21:35 +0000 (13:21 -0700)
in C_NOEXEC, if the argument is a float we need to store it as
a float.

orc/orcprogram-c.c

index d41dc82..7c49ab4 100644 (file)
@@ -756,7 +756,11 @@ c_rule_loadpX (OrcCompiler *p, void *user, OrcInstruction *insn)
   char dest[40];
   int size = ORC_PTR_TO_INT(user);
 
-  c_get_name_int (dest, p, insn, insn->dest_args[0]);
+  if ((p->target_flags & ORC_TARGET_C_NOEXEC) &&
+      (p->vars[insn->src_args[0]].param_type == ORC_PARAM_TYPE_FLOAT))
+    c_get_name_float (dest, p, insn, insn->dest_args[0]);
+  else
+    c_get_name_int (dest, p, insn, insn->dest_args[0]);
 
   if (p->vars[insn->src_args[0]].vartype == ORC_VAR_TYPE_PARAM) {
     if (p->target_flags & ORC_TARGET_C_NOEXEC) {