Mercurial > projects > ldc
changeset 1084:56e56b3b9bb8
Fix 32bit version of "jle short Label;" for 'short' or 'long'.
author | notroot@ubuntu.localdomain |
---|---|
date | Tue, 10 Mar 2009 09:13:13 -0400 |
parents | c1e9f612e2e2 |
children | 56e364ba346c |
files | gen/asm-x86-32.h |
diffstat | 1 files changed, 13 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/gen/asm-x86-32.h Tue Mar 10 06:23:26 2009 -0600 +++ b/gen/asm-x86-32.h Tue Mar 10 09:13:13 2009 -0400 @@ -449,7 +449,7 @@ /* Op_Fis_ST */ { mem, 0, 0, FPInt_Types, Clb_ST }, // " /* Op_Fis_P */ { mem, 0, 0, FPInt_Types, Clb_ST }, // push and pop, fild so also 64 bit /* Op_Fid */ { D|mem, 0, 0, FPInt_Types }, // only 16bit and 32bit, DMD defaults to 16bit - /* Op_Fid_P */ { D|mem, 0, 0, FPInt_Types, Clb_ST }, // push and pop, fild so also 64 bit + /* Op_Fid_P */ { D|mem, 0, 0, FPInt_Types, Clb_ST, Op_FfdRR_P }, // push and pop, fild so also 64 bit /* Op_Ffd */ { D|mfp, 0, 0, FP_Types, 0, Next_Form, Op_FfdR }, // only 16bit and 32bit, DMD defaults to 16bit, reg form doesn't need type /* Op_FfdR */ { D|rfp, 0, 0 }, /* Op_Ffd_P */ { D|mfp, 0, 0, FP_Types, Clb_ST, Next_Form, Op_FfdR_P }, // pop, fld so also 80 bit, " @@ -1377,7 +1377,15 @@ } if ( token->value == TOKcomma ) + { nextToken(); + } + else if ( token->value == TOKint16 || token->value == TOKint32 ) + { + //throw away the 'short' in "jle short label;". Works for 'long' also. + operands[0] = operands[1]; + return; + } else if ( token->value != TOKeof ) { ok = false; @@ -2784,6 +2792,10 @@ ident = Id::__dollar; goto do_dollar; break; + case TOKint16: + case TOKint32: + //This if for the 'short' in "jle short Label;" + return Handled; default: invalidExpression(); return Handled;