# HG changeset patch # User kono # Date 1136605598 -32400 # Node ID 528fed826f173a0dcc110a90b6a1273433370e38 # Parent c3053086f790181430e938cb41577b087f18c15f const value switch statement prune. diff -r c3053086f790 -r 528fed826f17 Changes --- a/Changes Sat Jan 07 02:00:06 2006 +0900 +++ b/Changes Sat Jan 07 12:46:38 2006 +0900 @@ -7962,4 +7962,25 @@ ないね。flow 解析しないと。 - +えーと、volatile const ってのは、 + 自分では書かないが、 + 誰かが変更する可能性があるので、 + 常に読みにいかないとだめ +ってことだよね。is_readony==1 だけど、is_const はfalse なのか。 +inline local の場合でもそうなの? + + const int i = 3; + switch(i) { + case 1: printf("#0035:1\n"); break; + default: + case 2: printf("#0036:2\n"); break; + case 3: printf("#0037:3\n"); break; + +これで、case 2(=default) が選択されるのか。ってことは、 +default が来たら、残りは全部無視して良いわけ? + + + + + + diff -r c3053086f790 -r 528fed826f17 mc-codegen.c --- a/mc-codegen.c Sat Jan 07 02:00:06 2006 +0900 +++ b/mc-codegen.c Sat Jan 07 12:46:38 2006 +0900 @@ -3431,7 +3431,7 @@ int lastexp0; if (!inmode) { if (cslabel==0) { - if (!control) error(-1); // no execute code in switch + if (!control) error(CSERR); // no execute code in switch checkjmp(0); control=0; jmp(cslabel=fwdlabel()); @@ -3535,12 +3535,14 @@ case GVAR: n = (NMTBL*)caddr(e); if (cadr(e)==0 && (c=attr_value(n,KONST))) { + if (!has_attr(n,VOLATILE)) return c; } return(list3(RGVAR+op,cadr(e),caddr(e))); case LVAR: n = (NMTBL*)caddr(e); - if (n && (c=attr_value(n,KONST))) { + if (cadr(e)==0 && n && (c=attr_value(n,KONST))) { + if (!has_attr(n,VOLATILE)) return c; } return(list3(RLVAR+op,cadr(e),caddr(e))); diff -r c3053086f790 -r 528fed826f17 mc-inline.c --- a/mc-inline.c Sat Jan 07 02:00:06 2006 +0900 +++ b/mc-inline.c Sat Jan 07 12:46:38 2006 +0900 @@ -151,6 +151,7 @@ extern void st_switch(int e1){ int sbreak,scase,sdefault,slfree,svalue,slist; + int cst,e; checkret(); slist = cslist; @@ -163,24 +164,45 @@ // conv->switch_(); slfree=lfree; svalue=csvalue1; /* save parents switch value */ - gexpr(caddr(e1),1); /* switch value */ - csvalue1=csvalue() ; + e =caddr(e1); /* switch value */ + if (car(e)==CONST) { + cst = 1; + csvalue1=glist2(CONST,cadr(e)); + gen_jmp( cslabel=fwdlabel()); + } else { + cst = 0; + gexpr(e,1); /* switch value */ + csvalue1=csvalue() ; + cslabel = control = 0; + } // conv->switch_body_(); - cslabel = control = 0; g_expr_u(cadddr(e1)); // conv->switch_end_(); checkret(); #if CASE_CODE - if (control) gen_jmp(blabel); - genswitch(cslist,cslabel); + if (!cst) { + if (control) gen_jmp(blabel); + genswitch(cslist,cslabel); + } else if (!cslist) { + if(dlabel) def_label(cslabel,dlabel); + else fwddef(cslabel); + } #else - if(dlabel) def_label(cslabel,dlabel); - else fwddef(cslabel); + if (!(cst && cslist)) { + if(dlabel) def_label(cslabel,dlabel); + else fwddef(cslabel); + } #endif + free_glist2(csvalue1); + if (cst && !cslist) { + if(pending_jmp!=cslabel) + fwddef(cslabel); + else pending_jmp = 0; // cslabel is here + } + fwddef(blabel); csvalue1=svalue; cslabel=scase; dlabel=sdefault; - fwddef(blabel); blabel=sbreak; cslist = slist; } @@ -213,12 +235,26 @@ st_case(int e1){ #if CASE_CODE int l,clist=caddr(e1),c; - l = fwdlabel(); - // conv->case_begin_(0,0); - // conv->case_(0,0); + int cst = (car(csvalue1)==CONST); + if (cst) { + c=cadr(csvalue1); + for(;clist;clist=cadr(clist)) { + if (car(clist)==c) break; + } + if (!clist) return; // no match + } else + l = fwdlabel(); if (retpending) { ret(); retpending=0; } + if (cst) { + if (cslist) { // may duplicat csvalue + return; + } + cslist=1; + fwddef(cslabel); + return; + } if (!cslabel) { if (!control) { cmpdimm(car(clist),csvalue1,cslabel=fwdlabel(),1); @@ -235,25 +271,40 @@ fwddef(l); control=1; #else - /* casading branch implementation */ - int c,l; - c = caddr(e1); + int c,clist,l; + int cst = (car(csvalue1)==CONST); + clist = caddr(e1); + if (cst) { + c=cadr(csvalue1); + for(;clist;clist=cadr(clist)) { + if (car(clist)==c) break; // no match + } + if (!clist) return; + } + if (cst) { + if (!cslist) { + if (retpending) { + ret(); retpending=0; + } + fwddef(cslabel); + cslist = 1; + } // else error(CSERR); + return; + } if (retpending) { ret(); retpending=0; } - // conv->case_begin_(0,0); - // conv->case_(0,0); l=fwdlabel(); if (control) { control=0; gen_jmp(l); } if (cslabel) fwddef(cslabel); - while(cadr(c)) { - cmpdimm(car(c),csvalue1,l,0); - c=cadr(c); + while(cadr(clist)) { + cmpdimm(car(clist),csvalue1,l,0); + clist=cadr(clist); } - cmpdimm(car(c),csvalue1,cslabel=fwdlabel(),1); + cmpdimm(car(clist),csvalue1,cslabel=fwdlabel(),1); if (l) fwddef(l); #endif } @@ -261,6 +312,7 @@ extern void st_default(int e1){ + // int cst = (car(csvalue1)==CONST); control=1; checkret(); if (dlabel) error(STERR); // double default: @@ -712,6 +764,7 @@ static int p_default(int e) { + // should be removed if constant case value return list2(ST_DEFAULT,pexpr(cadr(e))); } diff -r c3053086f790 -r 528fed826f17 mc-parse.c --- a/mc-parse.c Sat Jan 07 02:00:06 2006 +0900 +++ b/mc-parse.c Sat Jan 07 12:46:38 2006 +0900 @@ -366,6 +366,7 @@ (n==AGERR) ? "wrong number of arguments" : (n==CODE_ERR) ? "goto is necessary" : (n==ILERR) ? "inline error" : + (n==CSERR) ? "no excutable code in switch" : "Bug of compiler"); errmsg(); if (serious(n)) @@ -1968,7 +1969,7 @@ statement(int use) { int slfree,e; - +loop: if(sym==SM) { conv->sm_(); getsym(0); return; @@ -2015,11 +2016,9 @@ checksym(SM); return; case CASE: - docase(); - statement(use); return; + docase(); goto loop; case DEFAULT: - dodefault(); - statement(use); return; + dodefault(); goto loop; case RETURN: doreturn(); return; @@ -2350,7 +2349,7 @@ doswitch(void) { int sbreak,scase,sdefault,slfree,svalue,slist; - int pparse = parse,v; + int pparse = parse,v,cst=0; checkret(); if (inmode) { @@ -2369,20 +2368,28 @@ checksym(LPAR); slfree=lfree; svalue=csvalue1; /* save parents switch value */ - gexpr(expr(0),1); + v = expr(0); + if (!scalar(type)) error(EXERR); + if (car(v)!=CONST) + gexpr(v,1); } else { conv->switch_(); getsym(0); checksym(LPAR); v = expr(0); + if (!scalar(type)) error(EXERR); } - if (!scalar(type)) error(EXERR); + cst = (car(v)==CONST); if (!inmode) { - csvalue1=csvalue() ; + csvalue1=cst ? glist2(CONST,cadr(v)): csvalue() ; set_lfree(slfree); checksym(RPAR); conv->switch_body_(); - cslabel = control = 0; + if (cst) { + gen_jmp( cslabel = fwdlabel()); + } else { + cslabel = control = 0; + } } else { conv->switch_body_(); checksym(RPAR); @@ -2407,19 +2414,33 @@ parse = list4(ST_SWITCH,pparse,v,reverse0(parse)); } else { #if CASE_CODE - if (control) gen_jmp(blabel); - genswitch(cslist,cslabel); + if (!cst) { + if (control) gen_jmp(blabel); + genswitch(cslist,cslabel); + } else if (!cslist) { + if(dlabel) { + def_label(cslabel,dlabel); + cslist=1; + } else { + // no matched value, but some statement may haave control + if(pending_jmp!=cslabel) + fwddef(cslabel); + else pending_jmp=0; // cslabel is here + } + } #else - if(dlabel) def_label(cslabel,dlabel); - else fwddef(cslabel); + if (!(cst && cslit)) { + if(dlabel) def_label(cslabel,dlabel); + else fwddef(cslabel); + } #endif free_glist2(csvalue1); } if (!inmode) { + fwddef(blabel); csvalue1=svalue; cslabel=scase; dlabel=sdefault; - fwddef(blabel); blabel=sbreak; cslist = slist; } @@ -2439,18 +2460,22 @@ docase(void) { #if CASE_CODE - int l,clist=0,c; - if (!inmode) + int l,clist=0,c,cst = (car(csvalue1)==CONST); + if (!inmode && !cst) l = fwdlabel(); while(sym==CASE) { conv->case_begin_(0,0); getsym(0); // we have to make it global? c = cexpr(expr(1)); - clist=glist3(c,clist,inmode?0:l); + if (!inmode && cst) + clist |= (cadr(csvalue1)==c); + else + clist=glist3(c,clist,inmode?0:l); conv->case_(0,0); checksym(COLON); } + if (cst && !clist) return; if (inmode) { parse = glist3(ST_CASE,parse,clist); control=1; @@ -2459,6 +2484,15 @@ if (retpending) { ret(); retpending=0; } + if (cst) { + if (cslist) { + // error(CSERR); + return; // duplicate value + } + cslist=1; + fwddef(cslabel); + return; + } if (!cslabel) { if (!control) { // immediate after switch(i) (usual case) @@ -2487,8 +2521,9 @@ control=1; #else /* casading branch implementation */ - int c,l,slfree; - if (!inmode) { + int c,clist,l,slfree; + int cst = (car(csvalue1)==CONST); + if (!inmode && !cst) { if (retpending) { ret(); retpending=0; } @@ -2500,27 +2535,48 @@ while(sym==CASE) { conv->case_begin_(c,0); getsym(0); - c=list2(cexpr(expr(1)),c); - conv->case_(c,0); + c=cexpr(expr(1)); + if (!inmode && cst) + clist |= (c==cadr(csvalue1)); + else + clist=list2(c,clist); + conv->case_(clist,0); checksym(COLON); } if (inmode) { parse = list3(ST_CASE,parse,clist); control=1; return; - } else { - l=fwdlabel(); + } + if (cst && ! clist) { + set_lfree(slfree); + return; } + if (cst) { + if (!cslist) { + if (retpending) { + ret(); retpending=0; + } + fwddef(cslabel); + cslist=1; + } + set_lfree(slfree); + return; + } + if (retpending) { + ret(); retpending=0; + } + l=fwdlabel(); if (control) { control=0; gen_jmp(l); } if (cslabel) fwddef(cslabel); - while(cadr(c)) { - cmpdimm(car(c),csvalue1,l,0); - c=cadr(c); + while(cadr(clist)) { + cmpdimm(car(clist),csvalue1,l,0); + clist=cadr(clist); } - cmpdimm(car(c),csvalue1,cslabel=fwdlabel(),1); + cmpdimm(car(clist),csvalue1,cslabel=fwdlabel(),1); if (l) fwddef(l); set_lfree(slfree); /* control==1? */ @@ -2530,6 +2586,7 @@ static void dodefault(void) { + // int cst = (car(csvalue1)==CONST); we cannot ommit this... control=1; checkret(); getsym(0); diff -r c3053086f790 -r 528fed826f17 mc.h --- a/mc.h Sat Jan 07 02:00:06 2006 +0900 +++ b/mc.h Sat Jan 07 12:46:38 2006 +0900 @@ -467,6 +467,7 @@ #define INERR 28 #define AGERR 29 #define ILERR 30 +#define CSERR 31 /* error number end */ diff -r c3053086f790 -r 528fed826f17 test/bitfield1.c --- a/test/bitfield1.c Sat Jan 07 02:00:06 2006 +0900 +++ b/test/bitfield1.c Sat Jan 07 12:46:38 2006 +0900 @@ -81,103 +81,103 @@ main1() { int i; - printf("#0079:%d\n",a.i); + printf("#0083:%d\n",a.i); ll1.b.v = -1; - printf("#0082:01:%llx\n",ll1.b.v); - printf("#0083:02:"); for(i=0;i<32;i++) printf("#0082:%02x",ll1.a[i]); printf("#0082:\n"); + printf("#0086:01:%llx\n",ll1.b.v); + printf("#0087:02:"); for(i=0;i<32;i++) printf("#0082:%02x",ll1.a[i]); printf("#0082:\n"); ll1.b.v = 0; ll1.b.w = -1; - printf("#0086:02:"); for(i=0;i<32;i++) printf("#0085:%02x",ll1.a[i]); printf("#0085:\n"); + printf("#0090:02:"); for(i=0;i<32;i++) printf("#0085:%02x",ll1.a[i]); printf("#0085:\n"); ll1.b.w = 0; ll1.b.x = -1; - printf("#0089:02:"); for(i=0;i<32;i++) printf("#0088:%02x",ll1.a[i]); printf("#0088:\n"); + printf("#0093:02:"); for(i=0;i<32;i++) printf("#0088:%02x",ll1.a[i]); printf("#0088:\n"); ll0.b.v = -1; - printf("#0092:01:%llx\n",ll0.b.v); - printf("#0093:02:"); for(i=0;i<32;i++) printf("#0092:%02x",ll0.a[i]); printf("#0092:\n"); + printf("#0096:01:%llx\n",ll0.b.v); + printf("#0097:02:"); for(i=0;i<32;i++) printf("#0092:%02x",ll0.a[i]); printf("#0092:\n"); ll0.b.v = 0; ll0.b.w = -1; - printf("#0096:02:"); for(i=0;i<32;i++) printf("#0095:%02x",ll0.a[i]); printf("#0095:\n"); + printf("#0100:02:"); for(i=0;i<32;i++) printf("#0095:%02x",ll0.a[i]); printf("#0095:\n"); ll0.b.w = 0; ll0.b.x = -1; - printf("#0099:02:"); for(i=0;i<32;i++) printf("#0098:%02x",ll0.a[i]); printf("#0098:\n"); + printf("#0103:02:"); for(i=0;i<32;i++) printf("#0098:%02x",ll0.a[i]); printf("#0098:\n"); ll.b.v = -1; - printf("#0102:1:%llx\n",ll.b.v); - printf("#0103:02:"); for(i=0;i<32;i++) printf("#0102:%02x",ll.a[i]); printf("#0102:\n"); + printf("#0106:1:%llx\n",ll.b.v); + printf("#0107:02:"); for(i=0;i<32;i++) printf("#0102:%02x",ll.a[i]); printf("#0102:\n"); ll.b.v = 0; ll.b.w = -1; - printf("#0106:02:"); for(i=0;i<32;i++) printf("#0105:%02x",ll.a[i]); printf("#0105:\n"); + printf("#0110:02:"); for(i=0;i<32;i++) printf("#0105:%02x",ll.a[i]); printf("#0105:\n"); ll.b.w = 0; ll.b.x = -1; - printf("#0109:02:"); for(i=0;i<32;i++) printf("#0108:%02x",ll.a[i]); printf("#0108:\n"); + printf("#0113:02:"); for(i=0;i<32;i++) printf("#0108:%02x",ll.a[i]); printf("#0108:\n"); - printf("#0111:char a:1; char b:4; char c:7; char d:4; char e:4; char f:4;\n"); + printf("#0115:char a:1; char b:4; char c:7; char d:4; char e:4; char f:4;\n"); cc.b.a = -1; - printf("#0113:a:%08x\n",cc.a); + printf("#0117:a:%08x\n",cc.a); cc.b.b = -1; - printf("#0115:b:%08x\n",cc.a); + printf("#0119:b:%08x\n",cc.a); cc.b.c = -1; - printf("#0117:c:%08x\n",cc.a); + printf("#0121:c:%08x\n",cc.a); cc.b.d = -1; - printf("#0119:d:%08x\n",cc.a); + printf("#0123:d:%08x\n",cc.a); cc.b.e = -1; - printf("#0121:e:%08x\n",cc.a); + printf("#0125:e:%08x\n",cc.a); cc.b.f = -1; - printf("#0123:f:%08x\n",cc.a); - printf("#0124:3:%d %d\n",cc.b.c,cc.b.d); + printf("#0127:f:%08x\n",cc.a); + printf("#0128:3:%d %d\n",cc.b.c,cc.b.d); cc.a = -1; - printf("#0126:f:%08x\n",cc.a); + printf("#0130:f:%08x\n",cc.a); cc.b.a = 0; - printf("#0128:a:%08x\n",cc.a); + printf("#0132:a:%08x\n",cc.a); cc.b.b = 0; - printf("#0130:b:%08x\n",cc.a); + printf("#0134:b:%08x\n",cc.a); cc.b.c = 0; - printf("#0132:c:%08x\n",cc.a); + printf("#0136:c:%08x\n",cc.a); cc.b.d = 0; - printf("#0134:d:%08x\n",cc.a); + printf("#0138:d:%08x\n",cc.a); cc.b.e = 0; - printf("#0136:e:%08x\n",cc.a); + printf("#0140:e:%08x\n",cc.a); cc.b.f = 0; - printf("#0138:f:%08x\n",cc.a); - printf("#0139:3:%d %d\n",cc.b.c,cc.b.d); + printf("#0142:f:%08x\n",cc.a); + printf("#0143:3:%d %d\n",cc.b.c,cc.b.d); cc.a = 0; - printf("#0141:f:%08x\n",cc.a); + printf("#0145:f:%08x\n",cc.a); cc.b.a = 1; - printf("#0143:a:%08x\n",cc.a); + printf("#0147:a:%08x\n",cc.a); cc.b.b = 1; - printf("#0145:b:%08x\n",cc.a); + printf("#0149:b:%08x\n",cc.a); cc.b.c = 1; - printf("#0147:c:%08x\n",cc.a); + printf("#0151:c:%08x\n",cc.a); cc.b.d = 1; - printf("#0149:d:%08x\n",cc.a); + printf("#0153:d:%08x\n",cc.a); cc.b.e = 1; - printf("#0151:e:%08x\n",cc.a); + printf("#0155:e:%08x\n",cc.a); cc.b.f = 1; - printf("#0153:f:%08x\n",cc.a); - printf("#0154:3:%d %d\n",cc.b.c,cc.b.d); + printf("#0157:f:%08x\n",cc.a); + printf("#0158:3:%d %d\n",cc.b.c,cc.b.d); cc.a = -1; - printf("#0156:f:%08x\n",cc.a); + printf("#0160:f:%08x\n",cc.a); cc.b.a = 1; - printf("#0158:a:%08x\n",cc.a); + printf("#0162:a:%08x\n",cc.a); cc.b.b = 1; - printf("#0160:b:%08x\n",cc.a); + printf("#0164:b:%08x\n",cc.a); cc.b.c = 1; - printf("#0162:c:%08x\n",cc.a); + printf("#0166:c:%08x\n",cc.a); cc.b.d = 1; - printf("#0164:d:%08x\n",cc.a); + printf("#0168:d:%08x\n",cc.a); cc.b.e = 1; - printf("#0166:e:%08x\n",cc.a); + printf("#0170:e:%08x\n",cc.a); cc.b.f = 1; - printf("#0168:f:%08x\n",cc.a); - printf("#0169:3:%d %d\n",cc.b.c,cc.b.d); + printf("#0172:f:%08x\n",cc.a); + printf("#0173:3:%d %d\n",cc.b.c,cc.b.d); ii.b.a = -1; - printf("#0172:6:%08x\n",ii.a); + printf("#0176:6:%08x\n",ii.a); ii.b.d = -1; - printf("#0174:6:%08x\n",ii.a); - printf("#0175:5:%d %d\n",ii.b.a,ii.b.d); + printf("#0178:6:%08x\n",ii.a); + printf("#0179:5:%d %d\n",ii.b.a,ii.b.d); main5(); return 0; @@ -189,13 +189,13 @@ int i,j,bit=1; for(i=0;i<32;i++,bit<<=1) { ii.a = bit; - printf("#0187:%08x:ii.b.a=%d ii.b.b=%d ii.b.c=%d ii.b.d=%d ii.b.e=%d ii.b.f=%d\n",bit, + printf("#0191:%08x:ii.b.a=%d ii.b.b=%d ii.b.c=%d ii.b.d=%d ii.b.e=%d ii.b.f=%d\n",bit, ii.b.a,ii.b.b,ii.b.c,ii.b.d,ii.b.e,ii.b.f); } bit=1; for(i=0;i<32;i++,bit<<=1) { cc.a = bit; - printf("#0193:%08x:cc.b.a=%d cc.b.b=%d cc.b.c=%d cc.b.d=%d cc.b.e=%d cc.b.f=%d\n",bit, + printf("#0197:%08x:cc.b.a=%d cc.b.b=%d cc.b.c=%d cc.b.d=%d cc.b.e=%d cc.b.f=%d\n",bit, cc.b.a,cc.b.b,cc.b.c,cc.b.d,cc.b.e,cc.b.f); } ll.a[0]=ll.a[1]=ll.a[2]=ll.a[3]= ll.a[4]=ll.a[5]=ll.a[6]=ll.a[7]=0; @@ -204,11 +204,11 @@ bit=1; for(j=0;j<32;j++,bit<<=1) { ll.a[i] = bit; - printf("#0202:02:%02x %02x %02x %02x %02x %02x %02x %02x\n", + printf("#0206:02:%02x %02x %02x %02x %02x %02x %02x %02x\n", ll.a[0],ll.a[1],ll.a[2],ll.a[3], ll.a[4],ll.a[5],ll.a[6],ll.a[7] ); - printf("#0206: ll.b.v=%lld ll.b.w=%lld ll.b.x=%lld\n",ll.b.v,ll.b.w,ll.b.x); + printf("#0210: ll.b.v=%lld ll.b.w=%lld ll.b.x=%lld\n",ll.b.v,ll.b.w,ll.b.x); } ll.a[i]=0; } diff -r c3053086f790 -r 528fed826f17 test/inline.c --- a/test/inline.c Sat Jan 07 02:00:06 2006 +0900 +++ b/test/inline.c Sat Jan 07 12:46:38 2006 +0900 @@ -6,12 +6,12 @@ static const char haa[] = "test"; static inline const int f(int k); -volatile const int i = 3; extern int printf(char *,...); inline int main0() { + volatile const int i = 3; volatile const int j = 3; switch(i) { case 1: printf("#0016:1\n"); break; @@ -21,9 +21,30 @@ } switch(j) { case 1: printf("#0022:1\n"); break; - case 2: printf("#0023:2\n"); break; - case 3: printf("#0024:3\n"); break; - case 4: printf("#0025:4\n"); break; + default: + case 2: printf("#0024:2\n"); break; + case 3: printf("#0025:3\n"); break; + case 4: printf("#0026:4\n"); break; + } + return 0; +} + +inline int +main3() +{ + const int i = 3; + const int j = 3; + switch(i) { + case 1: printf("#0037:1\n"); break; + case 2: printf("#0038:2\n"); break; + case 3: printf("#0039:3\n"); break; + case 4: printf("#0040:4\n"); break; + } + switch(j) { + case 1: printf("#0043:1\n"); break; + case 2: printf("#0044:2\n"); break; + case 3: printf("#0045:3\n"); break; + case 4: printf("#0046:4\n"); break; } return 0; } @@ -31,18 +52,41 @@ int main1() { + volatile const int i = 3; volatile const int j = 3; switch(i) { - case 1: printf("#0035:1\n"); break; - case 2: printf("#0036:2\n"); break; - case 3: printf("#0037:3\n"); break; - case 4: printf("#0038:4\n"); break; + case 1: printf("#0057:1\n"); break; + case 2: printf("#0058:2\n"); break; + case 3: printf("#0059:3\n"); break; + case 4: printf("#0060:4\n"); break; } switch(j) { - case 1: printf("#0041:1\n"); break; - case 2: printf("#0042:2\n"); break; - case 3: printf("#0043:3\n"); break; - case 4: printf("#0044:4\n"); break; + case 1: printf("#0063:1\n"); break; + case 2: printf("#0064:2\n"); break; + case 3: printf("#0065:3\n"); break; + case 4: printf("#0066:4\n"); break; + } + return 0; +} + +int +main2() +{ + const int j = 3; + const int i = 3; + switch(a) { + case 1: printf("#0077:1\n"); break; + default: + case 2: printf("#0079:2\n"); break; + case 3: printf("#0080:3\n"); break; + case 5: printf("#0081:4\n"); break; + } + switch(j) { + case 1: printf("#0084:1\n"); break; + default: + case 2: printf("#0085:2\n"); break; + case 3: printf("#0086:3\n"); break; + case 4: printf("#0087:4\n"); break; } return 0; } @@ -64,7 +108,7 @@ static inline int ins(const int i,const int j) { - printf("#0066:%d %d\n",i,j); + printf("#0109:%d %d\n",i,j); if (f(i)>j) return j; else return i; } @@ -72,7 +116,7 @@ static inline int ins1(const int i,const int j, const int k) { - printf("#0074:%d %d %d\n",i,j,k); + printf("#0117:%d %d %d\n",i,j,k); if (f(i)>j) return j; else return i; } @@ -86,14 +130,14 @@ k += 3; order <<= 4; order|=7; } while ( k < j); - printf("#0088: %d do %d %x\n",p,k,order); + printf("#0131: %d do %d %x\n",p,k,order); while (k > j) { order <<= 4; order|=0; k -= 3; order <<= 4; order|=7; } - printf("#0095: %d while %d %x\n",p,k,order); + printf("#0138: %d while %d %x\n",p,k,order); m = 0; for(k=0;k0? &v-&x : &x-&v; - printf("#0158:v-x: %d\n",k1); + printf("#0201:v-x: %d\n",k1); k1 = ins(a,b); j1 = ins(k,j-6)+f(k1); - printf("#0162:%d %d %s\n",k1,j1,haa); + printf("#0205:%d %d %s\n",k1,j1,haa); k1 = ins(as,bs); j1 = ins(k,j-6)+f(k1); - printf("#0166:%d %d %s\n",k1,j1,haa); + printf("#0209:%d %d %s\n",k1,j1,haa); k1 = ins(v,x); j1 = ins(k,j-6)+f(v); - printf("#0170:%d %d %s\n",k1,j1,haa); + printf("#0213:%d %d %s\n",k1,j1,haa); k1 = fnp(v,x,5); j1 = ins1(k,j-6,6)+f(v); - printf("#0174:%d %d %s\n",k1,j1,haa); + printf("#0217:%d %d %s\n",k1,j1,haa); } void @@ -191,13 +235,13 @@ static inline int order(int a0,int a1,int a2, int a3, int a4) { - printf("#0193:order %d %d %d %d %d\n",a0,a1,a2,a3,a4); + printf("#0236:order %d %d %d %d %d\n",a0,a1,a2,a3,a4); } static inline int order1(int a0,int a1,int a2, int a3, int a4) { - printf("#0199:orderp %d %d %d %d %d\n",a0,a1,a2,a3,a4); + printf("#0242:orderp %d %d %d %d %d\n",a0,a1,a2,a3,a4); } int (*order1p)(int a0,int a1,int a2, int a3, int a4) = order1; @@ -220,7 +264,7 @@ main(int ac,char *av[]) { fnp = ins1; - printf("#0222:%d\n",(1,2,3,4,5)); + printf("#0265:%d\n",(1,2,3,4,5)); order(1,2,3,4,5); order1p(1,2,3,4,5); a0(5,6); @@ -230,6 +274,8 @@ main0(ac,av); main1(ac,av); inmain(ac,av); + main2(ac,av); + main3(ac,av); return 0; } diff -r c3053086f790 -r 528fed826f17 test/offset.c --- a/test/offset.c Sat Jan 07 02:00:06 2006 +0900 +++ b/test/offset.c Sat Jan 07 12:46:38 2006 +0900 @@ -16,15 +16,15 @@ int local_large[BIT16]; #if 0 - printf("#0017:int ac =\t%x\n",&ac); - printf("#0018:int midium[0] =\t%x\n",&midium[0]); - printf("#0019:int midium[BIT12] =\t%x\n",&midium[BIT12]); - printf("#0020:int large[0] =\t%x\n",&large[0]); - printf("#0021:int large[BIT16] =\t%x\n",&large[BIT16]); - printf("#0022:int local_midium[0] =\t%x\n",&local_midium[0]); - printf("#0023:int local_midium[BIT12] =\t%x\n",&local_midium[BIT12]); - printf("#0024:int local_large[0] =\t%x\n",&local_large[0]); - printf("#0025:int local_large[BIT16] =\t%x\n",&local_large[BIT16]); + printf("#0018:int ac =\t%x\n",&ac); + printf("#0019:int midium[0] =\t%x\n",&midium[0]); + printf("#0020:int midium[BIT12] =\t%x\n",&midium[BIT12]); + printf("#0021:int large[0] =\t%x\n",&large[0]); + printf("#0022:int large[BIT16] =\t%x\n",&large[BIT16]); + printf("#0023:int local_midium[0] =\t%x\n",&local_midium[0]); + printf("#0024:int local_midium[BIT12] =\t%x\n",&local_midium[BIT12]); + printf("#0025:int local_large[0] =\t%x\n",&local_large[0]); + printf("#0026:int local_large[BIT16] =\t%x\n",&local_large[BIT16]); #endif midium[0]=0x55; @@ -47,25 +47,25 @@ local_midium[BIT12-1]=0xaa; local_large[BIT16-1]=0xaa; - printf("#0048:%x\n", midium[0]); - printf("#0049:%x\n", large[0]); - printf("#0050:%x\n", local_midium[0]); - printf("#0051:%x\n", local_large[0]); + printf("#0049:%x\n", midium[0]); + printf("#0050:%x\n", large[0]); + printf("#0051:%x\n", local_midium[0]); + printf("#0052:%x\n", local_large[0]); - printf("#0053:%x\n", midium[BIT8]); - printf("#0054:%x\n", large[BIT8]); - printf("#0055:%x\n", local_midium[BIT8]); - printf("#0056:%x\n", local_large[BIT8]); + printf("#0054:%x\n", midium[BIT8]); + printf("#0055:%x\n", large[BIT8]); + printf("#0056:%x\n", local_midium[BIT8]); + printf("#0057:%x\n", local_large[BIT8]); - printf("#0058:%x\n", midium[BIT10]); - printf("#0059:%x\n", large[BIT10]); - printf("#0060:%x\n", local_midium[BIT10]); - printf("#0061:%x\n", local_large[BIT10]); + printf("#0059:%x\n", midium[BIT10]); + printf("#0060:%x\n", large[BIT10]); + printf("#0061:%x\n", local_midium[BIT10]); + printf("#0062:%x\n", local_large[BIT10]); - printf("#0063:%x\n", midium[BIT12-1]); - printf("#0064:%x\n", large[BIT16-1]); - printf("#0065:%x\n", local_midium[BIT12-1]); - printf("#0066:%x\n", local_large[BIT16-1]); + printf("#0064:%x\n", midium[BIT12-1]); + printf("#0065:%x\n", large[BIT16-1]); + printf("#0066:%x\n", local_midium[BIT12-1]); + printf("#0067:%x\n", local_large[BIT16-1]); p = local_large+BIT16; @@ -75,11 +75,11 @@ p[-(BIT12-1)] = 0xdd; p[-(BIT16-1)] = 0xee; - printf("#0076:%x\n", p[-1]); - printf("#0077:%x\n", p[-BIT8]); - printf("#0078:%x\n", p[-BIT10]); - printf("#0079:%x\n", p[-(BIT12-1)]); - printf("#0080:%x\n", p[-(BIT16-1)]); + printf("#0077:%x\n", p[-1]); + printf("#0078:%x\n", p[-BIT8]); + printf("#0079:%x\n", p[-BIT10]); + printf("#0080:%x\n", p[-(BIT12-1)]); + printf("#0081:%x\n", p[-(BIT16-1)]); p = large+BIT16; @@ -89,11 +89,11 @@ p[-(BIT12-1)] = 0xdd; p[-(BIT16-1)] = 0xee; - printf("#0090:%x\n", p[-1]); - printf("#0091:%x\n", p[-BIT8]); - printf("#0092:%x\n", p[-BIT10]); - printf("#0093:%x\n", p[-(BIT12-1)]); - printf("#0094:%x\n", p[-(BIT16-1)]); + printf("#0091:%x\n", p[-1]); + printf("#0092:%x\n", p[-BIT8]); + printf("#0093:%x\n", p[-BIT10]); + printf("#0094:%x\n", p[-(BIT12-1)]); + printf("#0095:%x\n", p[-(BIT16-1)]); for(p=local_midium;p<&local_midium[BIT12];p++) *p = p-local_midium; @@ -111,7 +111,7 @@ main0(ac,av); - printf("#0111:%d %d %d %d\n",ac,i,j,k); + printf("#0113:%d %d %d %d\n",ac,i,j,k); return 0; } diff -r c3053086f790 -r 528fed826f17 test/putenemy.c --- a/test/putenemy.c Sat Jan 07 02:00:06 2006 +0900 +++ b/test/putenemy.c Sat Jan 07 12:46:38 2006 +0900 @@ -49,16 +49,16 @@ void Putenemy(int charno,float x,float y,float sx,float sy,int move) { if(x) - printf("#0004:%d %f %f %f %f %d\n",charno,x,y,sx,sy,move); + printf("#0051:%d %f %f %f %f %d\n",charno,x,y,sx,sy,move); else - printf("#0006:check\n"); + printf("#0053:check\n"); } int main() { int ix=32,iy=32; float fx=32,fy=32; sankakuf(); - printf("%d %d\n", Mysin(45),Mycos(-30)); + printf("#0060:%d %d\n", Mysin(45),Mycos(-30)); { float x=10,y=20; Putenemy(3,x,y,(float) Mysin(15)*2/SANKAKU,(float)Mycos(15)*2/SANKAKU,0); diff -r c3053086f790 -r 528fed826f17 test/stralign.c --- a/test/stralign.c Sat Jan 07 02:00:06 2006 +0900 +++ b/test/stralign.c Sat Jan 07 12:46:38 2006 +0900 @@ -87,23 +87,23 @@ main() { - printf("%d\n", jiki. x); - printf("%d\n", jiki. y); - printf("%d\n", jiki. ch); - printf("%d\n", jiki. point); - printf("%d\n", jiki. bf); - printf("%d\n", jiki. muteki); - printf("%d\n", jiki. zanki); - printf("%d\n", jiki. ccount); + printf("#0089:%d\n", jiki. x); + printf("#0090:%d\n", jiki. y); + printf("#0091:%d\n", jiki. ch); + printf("#0092:%d\n", jiki. point); + printf("#0093:%d\n", jiki. bf); + printf("#0094:%d\n", jiki. muteki); + printf("#0095:%d\n", jiki. zanki); + printf("#0096:%d\n", jiki. ccount); - printf("%g\n", laser_lv3[0].x); - printf("%g\n", laser_lv3[0].y); - printf("%g\n", laser_lv3[0].sx); - printf("%g\n", laser_lv3[0].sy); - printf("%d\n", laser_lv3[0].r); - printf("%d\n", laser_lv3[0].enemyno); + printf("#0098:%g\n", laser_lv3[0].x); + printf("#0099:%g\n", laser_lv3[0].y); + printf("#0100:%g\n", laser_lv3[0].sx); + printf("#0101:%g\n", laser_lv3[0].sy); + printf("#0102:%d\n", laser_lv3[0].r); + printf("#0103:%d\n", laser_lv3[0].enemyno); - printf("%d\n", lg.stg); + printf("#0105:%d\n", lg.stg);