On 01/25/2010 05:19 PM, Richard Henderson wrote:
+    } else if (~val == (uint8_t)~val) {
+        tcg_out_fmt_opi(s, INSN_BIC, ra, ~val, rc);

Bug here.  I've applied the following to my local tree.


r~
commit 2ecce92da6eee4b3496c7655da45259308abb536
Author: Richard Henderson <r...@twiddle.net>
Date:   Fri Jan 29 09:36:28 2010 -0800

    tcg-alpha: Fix cast error with immediate op to BIC.
    
    The cast was in the wrong place.  A change to ~(uint8_t)val would
    technically produce the correct result, but via a string of implicit
    conversions that are more difficult to follow than simply using the
    0xff mask with the original type.
    
    Adjust the AND test to match, lexically, for cleanliness.

diff --git a/tcg/alpha/tcg-target.c b/tcg/alpha/tcg-target.c
index dcf23f2..5b7dd25 100644
--- a/tcg/alpha/tcg-target.c
+++ b/tcg/alpha/tcg-target.c
@@ -344,9 +344,9 @@ static inline void tcg_out_addi(TCGContext *s, int reg, 
long val)
 
 static void tcg_out_andi(TCGContext *s, int ra, long val, int rc)
 {
-    if (val == (uint8_t)val) {
+    if (val == (val & 0xff)) {
         tcg_out_fmt_opi(s, INSN_AND, ra, val, rc);
-    } else if (~val == (uint8_t)~val) {
+    } else if (~val == ~(val & 0xff)) {
         tcg_out_fmt_opi(s, INSN_BIC, ra, ~val, rc);
     } else {
         long mask0, maskff;

Reply via email to