c: Fix loadupib code
authorDavid Schleef <ds@schleef.org>
Fri, 6 Aug 2010 02:52:52 +0000 (19:52 -0700)
committerDavid Schleef <ds@schleef.org>
Fri, 6 Aug 2010 02:52:52 +0000 (19:52 -0700)
orc/orcemulateopcodes.c
orc/orcprogram-c.c

index e26c2eb..f4ec60f 100644 (file)
@@ -413,7 +413,7 @@ emulate_loadupib (OrcOpcodeExecutor *ex, int offset, int n)
 
   for (i = 0; i < n; i++) {
     /* 0: loadupib */
-    var32 = ((offset + i)&1) ? (ptr4[(offset + i)>>1] + ptr4[((offset + i)>>1)+1] + 1)>>1 : ptr4[(offset + i)>>1];
+    var32 = ((offset + i)&1) ? ((orc_uint8)ptr4[(offset + i)>>1] + (orc_uint8)ptr4[((offset + i)>>1)+1] + 1)>>1 : ptr4[(offset + i)>>1];
     /* 1: storeb */
     ptr0[i] = var32;
   }
index 1de40a5..b561ff1 100644 (file)
@@ -691,7 +691,7 @@ c_rule_loadupdb (OrcCompiler *p, void *user, OrcInstruction *insn)
 static void
 c_rule_loadupib (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
-  ORC_ASM_CODE(p,"    var%d = ((offset + i)&1) ? (ptr%d[(offset + i)>>1] + ptr%d[((offset + i)>>1)+1] + 1)>>1 : ptr%d[(offset + i)>>1];\n",
+  ORC_ASM_CODE(p,"    var%d = ((offset + i)&1) ? ((orc_uint8)ptr%d[(offset + i)>>1] + (orc_uint8)ptr%d[((offset + i)>>1)+1] + 1)>>1 : ptr%d[(offset + i)>>1];\n",
       insn->dest_args[0], insn->src_args[0], insn->src_args[0],
       insn->src_args[0]);
 }