diff mc-codegen.c @ 458:0bc9f3273aa7

*** empty log message ***
author kono
date Wed, 01 Dec 2004 23:14:50 +0900
parents b8f95294eb77
children 2a49dfe59540
line wrap: on
line diff
--- a/mc-codegen.c	Wed Dec 01 22:04:36 2004 +0900
+++ b/mc-codegen.c	Wed Dec 01 23:14:50 2004 +0900
@@ -2317,8 +2317,20 @@
 extern void 
 cmpdimm(int e, int csreg,int label,int cond)
 {
-    if (!chk)
-	code_cmpdimm(e, csreg,label,cond);
+    if (!chk) {
+	if (car(csreg)==CONST) {
+	    switch(cond) {
+	    case 1: case 0: 
+	    if (cond ^ (cadr(csreg)==e)) gen_jmp(label);
+		break;
+	    case LT:
+	    if ((cadr(csreg)>e)) gen_jmp(label);
+		break;
+	    }
+	} else if (car(csreg)==REGISTER) {
+	    code_cmpdimm(e, cadr(csreg),label,cond);
+	} else error(-1);
+    }
 }
 
 extern int