[cc65] testsuite - compiler bugs!

Date view Thread view Subject view

From: Groepaz (groepaz_at_gmx.net)
Date: 2003-03-03 05:29:24


hyho!

as another "cleaning out the closet" project i have worked a little on making 
that testsuite (which was in my earlier clumsy snapshot) somewhat useful in 
practice....

1) it now builds without the need of "external" files, except for what comes 
with cc65, plus pucrunch to pack the files and the "c1541" tool to generate 
the final .d81 image (unfortunatly they wont fit on a d64 image even when 
packed :/)

2) the complete testsuite runs in "one shot". each program tries to load and 
execute the next file on disc. the only manual interaction needed atm is 
loading the first test (a bug in vice makes autorun fail :/) and run it...and 
closing the emulator window when all tests are finished. all tests write 
their output to disc instead of printing it out.

3) i have written some little script that will take care of building the 
testsuite, launching emulator, grabbing the written output from the d81 
image, and generating a somewhat pretty (or not :=P) report in html format. 
(oh this uses petcat, but you have that if you have c1541 :=P)...i'm 
currently generating a brief overview page which basically tells which tests 
passed and which didnt, plus a page with detailed info for each file

tjam...so if you got any ideas/wishes/wild dreams let me know before i upload, 
coz i probably will never touch it again after that :=P

however, what i can already tell are two bugs which the testsuite reports: (oh 
i have upgraded to latest snapshot two or three days ago)...

1) in section "strings"

  if( ".\"."[1] != '"' )
  {
	printf("shouldnt come here\n");
  }

ok its not the type of code everyone writes, but still... :O)

2) in section "bitwise/logical operators"

long list of errors here actually....for example:

  if(((char)12 | (short)10) != 14) {
	printf("shouldnt come here\n");
  }
  if(((char)12 ^ (short)10) !=  6) {
	printf("shouldnt come here\n");
  }
  if(((char)12 | (int)10) != 14) {
	printf("shouldnt come here\n");
  }
  if(((char)12 ^ (int)10) !=  6) {
	printf("shouldnt come here\n");
  }
  if(((short)12 | (char)10) != 14) {
	printf("shouldnt come here\n");
  }
  if(((short)12 ^ (char)10) !=  6) {
	printf("shouldnt come here\n");
  }

...etc, a bunch more of that kind.

this might however be a problem with typecasting and not the 
operators....maybe both :=P

anyway, its nice to see that the compiler passes all other test (of which some 
contain quite screwed code :=P) fine (this wasnt the case last time i checked 
:=))...well except some minor problems caused by some characters missing on 
c64 (i will try to work around this so these tests report "passed" aswell). 
its also cool to see that the compiler _compiles_ all tests, since that kinda 
proofs that it can do what the standard says (except some features which are 
explicitly defined out...basically struct limitations,no bitfields,no 
floats).

so long,

gpz



----------------------------------------------------------------------
To unsubscribe from the list send mail to majordomo_at_musoftware.de with
the string "unsubscribe cc65" in the body(!) of the mail.


Date view Thread view Subject view

This archive was generated by hypermail 2.1.3 : 2003-03-03 05:24:51 CET