3 December 2003 + Hand in project. Works on trivial cases, does not pass any of the benchmarks. Dissapointing. 6 December 2003 + Remove alpha coff backend + Split the source up and re-write large chunks of provided code. 13 December 2003 + Actually have code generating again + Start getting ppc backend to work + Added WriteLong and WriteLine code + Simple while loops work + version 0.0.1 15 December 2003 + readlong implemented + 7 of the samples now work + version 0.0.2 17 December 2003 + Fix segfault when making phi functions that had as an argument another phi function. 26 December 2003 + Fix bug in reg allocation where two different vars could be assigned to same register in different paths of an if/then/else statement. 7 January 2004 + Got BSS working. With loads stores. Arrays now work. 24 January 2004 + Finally got prime.c working! Wasn't restoring vars->current to the old state in an else statement. Blah that was a pain to figure out. 25 January 2004 + Stuck on register allocation problem, only to find I was overflowing the 32bit flag size. So modifying to auto-expand the flag array. 27 January 2004 + Procedures with no arguments working. 28 January 2004 + Procedures with arguments working, though crudely done. 31 January 2004 + Rearranged things in prep for reg-spilling. + Ran through valgrind and caught a bunch of errors. 11 February 2004 + After being stuck a while figured out a bug on propogating out while headers in reg_alloc. + Other minor fixes and cleanups in reg-alloc. 22 May 2004 + Long break during classes + Kernel 2.6 doesn't seem to preseve regs 5-8 across syscall. Fix read_long 5 June 2004 + Fix (in a hackish way) scoping rules. Caused mem.c not to work. + Fix write/read of a global value. + Fix so that you can pass a global variable as a parameter + Fix PPC backed for the proper limits of constant loading (li is signed not unsigned) + Fix bug with passing a constant as a parameter + Fix bug with unary operation on a global + Fix structure handling in ppc_backend + Fix mod power of 2 -> andi conversion in ppc_backend 6 June 2004 + Fix bug in finding the then path of phi-functions from if-joins if there's a nested while. (nested.c now works). + Fix problem accessing an array of structs (a spurious load was injected, causing segfaults when run). bm4.c now runs. + Made error messages give context. 7 June 2004 + Fix bug when subtracting a var from a const. (qsort.c now works) + Fix bug when negating a global (bm7.c now works) 9 June 2004 + Fix a bug when comparing const to var (rather than var to const) now heapsort.c works. + Fix problem where phi functions not properly resolved on if/then case if there's an empty block. + Make the error printing ignore tabs to line up the arrow. 10 June 2004 + Fix bug doing ReadLong() to a global [array or struct] + Can now pass arbitrary number of parameters. 12 June 2004 + Fix offset calculation so that we can have more than 32k of data in BSS. (bm1.c now runs) + Fix problem when comparing two constants (let the backend handle it not the ir_generator). (bm5.c now runs) + Fix problem when loading from a nested struct. (struct.c now works) + Fix so FP relative (stack) variables work. + Fix bss offset code (assembler was doing odd things?) (mem.c now works) + Fix so that register spilling works. + Fix bug when doing a unary - on a global. 13 June 2004 + Made command line parsing similar to that of gcc's + Cleaned up the code a bit + We were putting params on stack in reverse order but reading them back in forward order. Fixed. (bm8.c works now) + Fix bug where unary minus on an instruction result was being dropped. + Fix deep problem with the CSGBracket/CSGField/CSGIndex code. (bm6.c now works). Boy if that wasn't a pain to track down. + Fix a horrible memory-leak caused by above fix. 14 June 2004 + Add most of the C tokens to the scanner, even though we don't support many of them yet. + Re-write parts of scanner.c to remove all known Burtscher code. + Add support for "int". Treated as a long. + Add support for char constants in single quotes. eg 'x'. Support escape chars including octal. + Add support for declaring a function as non-void. + Add provisional support for the "return" keyword. + Add support for functions returning values. 16 June 2004 + Add support for "for" statements by just treating them as complicated while statements. + Fixed so nested for loops work. + Allow assignments in declarations, at least for integers. + Add support for "!" and "~" operators. 17 June 2004 + Add support for "<<" and ">>" operators. + Add bare-bones function prototype support. + Add bare-bones "link against libc" support. 17 July 2004 + Partial support of "sizeof()" builtin + Partial support of ++/-- + Minimal support for char arrays + Added support for autosizing char arrays ( ie, char string[]="Hello"; ) + Fix a bug with for loops containing only function calls.