From: Julian Seward Date: Tue, 1 Feb 2005 00:37:06 +0000 (+0000) Subject: Typechecker (icc) police. X-Git-Tag: svn/VALGRIND_3_0_1^2~534 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb6057173587ce1bba66c422714075c106a89005;p=thirdparty%2Fvalgrind.git Typechecker (icc) police. git-svn-id: svn://svn.valgrind.org/vex/trunk@800 --- diff --git a/VEX/priv/guest-x86/toIR.c b/VEX/priv/guest-x86/toIR.c index ca2aa00b60..3dac8bd5e7 100644 --- a/VEX/priv/guest-x86/toIR.c +++ b/VEX/priv/guest-x86/toIR.c @@ -277,10 +277,12 @@ IRBB* bbToIR_X86 ( UChar* x86code, guest_next = 0; resteerOK - = n_instrs < vex_control.guest_chase_thresh - /* we can't afford to have a resteer once we're on the last - extent slot. */ - && vge->n_used < 3; + = toBool( + n_instrs < vex_control.guest_chase_thresh + /* we can't afford to have a resteer once we're on the + last extent slot. */ + && vge->n_used < 3 + ); first_stmt_idx = irbb->stmts_used; @@ -405,7 +407,7 @@ static IRTemp newTemp ( IRType ty ) /* Bomb out if we can't handle something. */ __attribute__ ((noreturn)) -static void unimplemented ( Char* str ) +static void unimplemented ( HChar* str ) { vex_printf("x86toIR: unimplemented feature\n"); vpanic(str); @@ -440,7 +442,7 @@ static Int gregOfRM ( UChar mod_reg_rm ) where YYY is the register number. */ static Bool epartIsReg ( UChar mod_reg_rm ) { - return (0xC0 == (mod_reg_rm & 0xC0)); + return toBool(0xC0 == (mod_reg_rm & 0xC0)); } /* ... and extract the register number ... */ @@ -451,9 +453,9 @@ static Int eregOfRM ( UChar mod_reg_rm ) /* Get a 8/16/32-bit unsigned value out of the insn stream. */ -static UInt getUChar ( UInt delta ) +static UChar getUChar ( UInt delta ) { - UInt v = guest_code[delta+0]; + UChar v = guest_code[delta+0]; return v & 0xFF; } @@ -478,7 +480,7 @@ static UInt getUDisp ( Int size, UInt delta ) switch (size) { case 4: return getUDisp32(delta); case 2: return getUDisp16(delta); - case 1: return getUChar(delta); + case 1: return (UInt)getUChar(delta); default: vpanic("getUDisp(x86)"); } return 0; /*notreached*/ @@ -743,13 +745,13 @@ static IRExpr* mkexpr ( IRTemp tmp ) static IRExpr* mkU8 ( UInt i ) { vassert(i < 256); - return IRExpr_Const(IRConst_U8(i)); + return IRExpr_Const(IRConst_U8( (UChar)i )); } static IRExpr* mkU16 ( UInt i ) { vassert(i < 65536); - return IRExpr_Const(IRConst_U16(i)); + return IRExpr_Const(IRConst_U16( (UShort)i )); } static IRExpr* mkU32 ( UInt i ) @@ -895,12 +897,12 @@ static IRExpr* mk_x86g_calculate_eflags_c ( void ) static Bool isAddSub ( IROp op8 ) { - return op8 == Iop_Add8 || op8 == Iop_Sub8; + return toBool(op8 == Iop_Add8 || op8 == Iop_Sub8); } static Bool isLogic ( IROp op8 ) { - return op8 == Iop_And8 || op8 == Iop_Or8 || op8 == Iop_Xor8; + return toBool(op8 == Iop_And8 || op8 == Iop_Or8 || op8 == Iop_Xor8); } /* U-widen 8/16/32 bit int expr to 32. */ @@ -1079,7 +1081,7 @@ void setFlags_MUL ( IRType ty, IRTemp arg1, IRTemp arg2, UInt base_op ) /* Condition codes, using the Intel encoding. */ -static Char* name_X86Condcode ( X86Condcode cond ) +static HChar* name_X86Condcode ( X86Condcode cond ) { switch (cond) { case X86CondO: return "o"; @@ -1285,7 +1287,7 @@ static HChar* nameXMMReg ( Int xmmreg ) return xmm_names[xmmreg]; } -static Char* nameMMXGran ( UChar gran ) +static HChar* nameMMXGran ( Int gran ) { switch (gran) { case 0: return "b"; @@ -1296,7 +1298,7 @@ static Char* nameMMXGran ( UChar gran ) } } -static Char nameISize ( Int size ) +static HChar nameISize ( Int size ) { switch (size) { case 4: return 'l'; @@ -1350,7 +1352,7 @@ void jcc_01( X86Condcode cond, Addr32 d32_false, Addr32 d32_true ) /*------------------------------------------------------------*/ static -UChar* sorbTxt ( UChar sorb ) +HChar* sorbTxt ( UChar sorb ) { switch (sorb) { case 0: return ""; /* no override */ @@ -1448,7 +1450,7 @@ static IRTemp disAMode_copy2tmp ( IRExpr* addr32 ) } static -IRTemp disAMode ( Int* len, UChar sorb, UInt delta, UChar* buf ) +IRTemp disAMode ( Int* len, UChar sorb, UInt delta, HChar* buf ) { UChar mod_reg_rm = getIByte(delta); delta++; @@ -1482,7 +1484,7 @@ IRTemp disAMode ( Int* len, UChar sorb, UInt delta, UChar* buf ) /* ! 0C */ case 0x0D: case 0x0E: case 0x0F: { UChar rm = mod_reg_rm & 7; UInt d = getSDisp8(delta); - DIS(buf, "%s%d(%s)", sorbTxt(sorb), d, nameIReg(4,rm)); + DIS(buf, "%s%d(%s)", sorbTxt(sorb), (Int)d, nameIReg(4,rm)); *len = 2; return disAMode_copy2tmp( handleSegOverride(sorb, @@ -1496,7 +1498,7 @@ IRTemp disAMode ( Int* len, UChar sorb, UInt delta, UChar* buf ) /* ! 14 */ case 0x15: case 0x16: case 0x17: { UChar rm = mod_reg_rm & 7; UInt d = getUDisp32(delta); - DIS(buf, "%s0x%x(%s)", sorbTxt(sorb), d, nameIReg(4,rm)); + DIS(buf, "%s0x%x(%s)", sorbTxt(sorb), (Int)d, nameIReg(4,rm)); *len = 5; return disAMode_copy2tmp( handleSegOverride(sorb, @@ -1607,13 +1609,14 @@ IRTemp disAMode ( Int* len, UChar sorb, UInt delta, UChar* buf ) UInt d = getSDisp8(delta+1); if (index_r == R_ESP) { - DIS(buf, "%s%d(%s,,)", sorbTxt(sorb), d, nameIReg(4,base_r)); + DIS(buf, "%s%d(%s,,)", sorbTxt(sorb), + (Int)d, nameIReg(4,base_r)); *len = 3; return disAMode_copy2tmp( handleSegOverride(sorb, binop(Iop_Add32, getIReg(4,base_r), mkU32(d)) )); } else { - DIS(buf, "%s%d(%s,%s,%d)", sorbTxt(sorb), d, + DIS(buf, "%s%d(%s,%s,%d)", sorbTxt(sorb), (Int)d, nameIReg(4,base_r), nameIReg(4,index_r), 1<regparms = regparms; @@ -2086,7 +2086,7 @@ IRExpr* mkIRExpr_HWord ( HWord hw ) vpanic("mkIRExpr_HWord"); } -IRDirty* unsafeIRDirty_0_N ( Int regparms, Char* name, void* addr, +IRDirty* unsafeIRDirty_0_N ( Int regparms, HChar* name, void* addr, IRExpr** args ) { IRDirty* d = emptyIRDirty(); @@ -2097,7 +2097,7 @@ IRDirty* unsafeIRDirty_0_N ( Int regparms, Char* name, void* addr, } IRDirty* unsafeIRDirty_1_N ( IRTemp dst, - Int regparms, Char* name, void* addr, + Int regparms, HChar* name, void* addr, IRExpr** args ) { IRDirty* d = emptyIRDirty(); @@ -2109,7 +2109,7 @@ IRDirty* unsafeIRDirty_1_N ( IRTemp dst, } IRExpr* mkIRExprCCall ( IRType retty, - Int regparms, Char* name, void* addr, + Int regparms, HChar* name, void* addr, IRExpr** args ) { return IRExpr_CCall ( mkIRCallee ( regparms, name, addr ), diff --git a/VEX/pub/libvex_ir.h b/VEX/pub/libvex_ir.h index 73ab799089..f8c1e08bb3 100644 --- a/VEX/pub/libvex_ir.h +++ b/VEX/pub/libvex_ir.h @@ -129,14 +129,14 @@ extern Bool eqIRConst ( IRConst*, IRConst* ); typedef struct { - Int regparms; - Char* name; - void* addr; - UInt mcx_mask; + Int regparms; + HChar* name; + void* addr; + UInt mcx_mask; } IRCallee; -extern IRCallee* mkIRCallee ( Int regparms, Char* name, void* addr ); +extern IRCallee* mkIRCallee ( Int regparms, HChar* name, void* addr ); extern IRCallee* dopyIRCallee ( IRCallee* ); @@ -683,7 +683,7 @@ extern IRExpr* mkIRExpr_HWord ( HWord ); /* Convenience function for constructing clean helper calls. */ extern IRExpr* mkIRExprCCall ( IRType retty, - Int regparms, Char* name, void* addr, + Int regparms, HChar* name, void* addr, IRExpr** args ); @@ -805,14 +805,14 @@ extern IRDirty* dopyIRDirty ( IRDirty* ); designation) -- you can mess with this later if need be. A suitable IRCallee is constructed from the supplied bits. */ extern -IRDirty* unsafeIRDirty_0_N ( Int regparms, Char* name, void* addr, +IRDirty* unsafeIRDirty_0_N ( Int regparms, HChar* name, void* addr, IRExpr** args ); /* Similarly, make a zero-annotation dirty call which returns a value, and assign that to the given temp. */ extern IRDirty* unsafeIRDirty_1_N ( IRTemp dst, - Int regparms, Char* name, void* addr, + Int regparms, HChar* name, void* addr, IRExpr** args );