From 21cc9b3a1c36619644d640f94f375f25a6c715ac Mon Sep 17 00:00:00 2001 From: David Schleef Date: Thu, 26 Aug 2010 17:58:42 -0700 Subject: [PATCH] c: Fix loading of float params Float params are loaded from orc_union32 pointers into orc_union32 temporaries, so it's important to not to a float->int conversion in there. --- orc/orcprogram-c.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/orc/orcprogram-c.c b/orc/orcprogram-c.c index c57b682..e2dbed3 100644 --- a/orc/orcprogram-c.c +++ b/orc/orcprogram-c.c @@ -407,7 +407,7 @@ c_get_name_int (char *name, OrcCompiler *p, OrcInstruction *insn, int var) var - ORC_VAR_P1 + p->program->n_src_vars); break; case ORC_PARAM_TYPE_FLOAT: - sprintf(name,"((orc_union32 *)(ex->src_ptrs[%d]))->f", + sprintf(name,"((orc_union32 *)(ex->src_ptrs[%d]))->i", var - ORC_VAR_P1 + p->program->n_src_vars); break; case ORC_PARAM_TYPE_INT64: @@ -415,7 +415,7 @@ c_get_name_int (char *name, OrcCompiler *p, OrcInstruction *insn, int var) var - ORC_VAR_P1 + p->program->n_src_vars); break; case ORC_PARAM_TYPE_DOUBLE: - sprintf(name,"((orc_union64 *)(ex->src_ptrs[%d]))->f", + sprintf(name,"((orc_union64 *)(ex->src_ptrs[%d]))->i", var - ORC_VAR_P1 + p->program->n_src_vars); break; default: @@ -427,7 +427,7 @@ c_get_name_int (char *name, OrcCompiler *p, OrcInstruction *insn, int var) sprintf(name,"ex->params[%d]", var); break; case ORC_PARAM_TYPE_FLOAT: - sprintf(name,"((orc_union32 *)(ex->params+%d))->f", var); + sprintf(name,"((orc_union32 *)(ex->params+%d))->i", var); break; case ORC_PARAM_TYPE_INT64: /* FIXME */ @@ -435,7 +435,7 @@ c_get_name_int (char *name, OrcCompiler *p, OrcInstruction *insn, int var) break; case ORC_PARAM_TYPE_DOUBLE: /* FIXME */ - sprintf(name,"((orc_union32 *)(ex->params+%d))->f", var); + sprintf(name,"((orc_union32 *)(ex->params+%d))->i", var); break; default: ORC_ASSERT(0); -- 2.7.4