changeset 1078:9c63438c3207

Fix for asm { jle short Lret; }, used by Tango since dmd accepts the 'short'. We just throw the 'short/long' away right now.
author Kelly Wilson <wilsonk cpsc.ucalgary.ca>
date Mon, 09 Mar 2009 20:11:42 -0600
parents bb57632d27ea
children 44d1c557a07b
files gen/asm-x86-64.h
diffstat 1 files changed, 14 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/gen/asm-x86-64.h	Mon Mar 09 21:38:31 2009 +0100
+++ b/gen/asm-x86-64.h	Mon Mar 09 20:11:42 2009 -0600
@@ -1499,7 +1499,15 @@
                 }
 
                 if ( token->value == TOKcomma )
+                {
                     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;
@@ -2911,6 +2919,12 @@
                     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:
                     invalidExpression();
                     return Handled;