Mercurial > hg > CbC > old > device
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];