Mercurial > projects > ldc
diff gen/asm-x86-64.h @ 1304:b995c146366e
Ignore short/long prefix of labels instead of ignoring the whole branch
instruction!
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Wed, 06 May 2009 19:56:33 +0200 |
parents | c250e03d8a5b |
children | 85b80c4fe48a |
line wrap: on
line diff
--- a/gen/asm-x86-64.h Wed May 06 18:54:20 2009 +0200 +++ b/gen/asm-x86-64.h Wed May 06 19:56:33 2009 +0200 @@ -1541,12 +1541,6 @@ { nextToken(); } - else if ( token->value == TOKint16 || token->value == TOKint32 || token->value == TOKint64 ) - { - //throw away the 'short' in "jle short Label;". Works for long also. - operands[0] = operands[1]; - return; - } else if ( token->value != TOKeof ) { ok = false; @@ -2864,6 +2858,10 @@ Expression * e; Identifier * ident = NULL; + // get rid of short/long prefixes for branches + if (opTakesLabel() && (token->value == TOKint16 || token->value == TOKint64)) + nextToken(); + switch ( token->value ) { case TOKint32v: @@ -3010,12 +3008,6 @@ ident = Id::__dollar; goto do_dollar; break; - case TOKint16: - case TOKint32: - case TOKint64: - //This is for the 'short' in "jle short Label;" - return Handled; - break; default: if ( op == Op_FMath0 || op == Op_FdST0ST1 || op == Op_FMath ) return Handled;