changeset 315:84df3dd8cc3d

minor fix
author kono
date Tue, 15 Jun 2004 14:34:06 +0900
parents 2e1012a8852a
children 22d92986c7f7
files Changes mc-code-ia32.c mc-code-mips.c test/tmp8.c
diffstat 4 files changed, 35 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/Changes	Tue Jun 15 00:24:42 2004 +0900
+++ b/Changes	Tue Jun 15 14:34:06 2004 +0900
@@ -4940,6 +4940,22 @@
 
 しかし、そうするにはどこ直せば良いんだろう? max-func-arg?
 
+まぁ、取り合えず、alloca と goto は両立しないってことで
+いいんじゃない? 一段、subroutine はさめば良いだけだしね。
+
 Mon Jun 14 20:48:13 JST 2004
 
 PowerPC の alloca は動いたけど...
+
+Tue Jun 15 10:47:53 JST 2004
+
+やっぱ inline の方が asm macro より先? asm macro も constraints を
+限定すればそんなに難しくないと思うけど。
+
+inline は、本当は CSE とか flow 解析とかやらないといけないんだけどね。
+
+ただ、inline するのが良いかは CbC との相性によるよな。
+
+というわけで、asm が先の方がいいんじゃない?
+
+ia32 のswitch 文がおかしくなってるぞ。
--- a/mc-code-ia32.c	Tue Jun 15 00:24:42 2004 +0900
+++ b/mc-code-ia32.c	Tue Jun 15 14:34:06 2004 +0900
@@ -226,7 +226,12 @@
 #define __STDC__ 1\n\
 #define size_t int\n\
 #define __externsion__\n\
+#define __restrict\n\
+#define __gnuc_va_list int\n\
 #define __flexarr\n\
+#define __const const\n\
+#define __THORW\n\
+#define __attribute__(a)\n\
 #define wchar_t int\n\
 #define __GNUC__ 2\n\
 ";
--- a/mc-code-mips.c	Tue Jun 15 00:24:42 2004 +0900
+++ b/mc-code-mips.c	Tue Jun 15 14:34:06 2004 +0900
@@ -455,6 +455,7 @@
 #define __builtin_next_arg(arg)  ap=((void *)(&arg)),va_arg(ap,typeof(arg))\n\
 #define __mips__ 1\n\
 #define __LITTLE_ENDIAN__ 1\n\
+#define __inline__\n\
 #define __STDC__ 1\n\
 #define __SIZE_TYPE__ int\n\
 #define __externsion__\n\
@@ -1824,13 +1825,13 @@
 static int
 not_simple_p(int e3)
 {
-    return (e3==FUNCTION||e3==CONV||e3==RSTRUCT||e3==STASS||
-	((e3/100==LOP/100)&&(e3==LDIV||e3==LUDIV||e3==LMOD||e3==LUMOD||
-		e3==LLSHIFT||e3==LULSHIFT||e3==LRSHIFT||e3==LURSHIFT))||
-	((e3/100==DOP/100)&&(e3==DDIV||e3==DADD||e3==DSUB||e3==DMUL||e3==DMINUS||
+    return (e3==FUNCTION||e3==CONV||e3==RSTRUCT||e3==STASS||e3==ALLOCA||
+	e3==LDIV||e3==LUDIV||e3==LMOD||e3==LUMOD||
+		e3==LLSHIFT||e3==LULSHIFT||e3==LRSHIFT||e3==LURSHIFT||
+	e3==DDIV||e3==DADD||e3==DSUB||e3==DMUL||e3==DMINUS||
             e3== DPOSTINC || e3==DPREINC || e3==DASSOP ||
             e3== DOP+LT || e3== DOP+LE || e3== DOP+GT ||
-            e3== DOP+GE || e3== DOP+EQ || e3== DOP+NEQ)));
+            e3== DOP+GE || e3== DOP+EQ || e3== DOP+NEQ);
 }
 
 int
--- a/test/tmp8.c	Tue Jun 15 00:24:42 2004 +0900
+++ b/test/tmp8.c	Tue Jun 15 14:34:06 2004 +0900
@@ -12,10 +12,12 @@
 main()
 {
     int a[0] ;
-   f2(1);
-   f2(0);
-   printf("%d %d\n",g(),f(0,1,2,a));
-   printf("%d %d\n",g1(100),f1(0,1,a,2));
+   for(asize=4;asize<64000;asize=asize*2+12) {
+       f2(1);
+       f2(0);
+       printf("%d %d\n",g(),f(0,1,2,a));
+       printf("%d %d\n",g1(100),f1(0,1,a,2));
+    }
    return 0; 
 }
 
@@ -24,7 +26,7 @@
 {
    int k = 0,i;
 
-   char *p = alloca(asize);
+   char *p = alloca(asize<100?100:asize);
    for(i=0;i<100;i++) p[i]=i;
    for(i=0;i<100;i++) k += p[i];
    return k;
@@ -43,7 +45,7 @@
 {
    int i;
 
-   char *p = ((char *)alloca(asize))+k;
+   char *p = ((char *)alloca(asize>100?asize:100))+k;
    p -= k;
    for(i=0;i<100;i++) p[i]=i;
    for(i=0;i<100;i++) k += p[i];