quakeforge/tools/qfcc
Bill Currie aa97979d98 Rewrite flow_uninitialized() to use reaching defs.
Nicely, the use sets from live_variable analysis can be used too, though
there are some problems with the naive implementation. For:

vector foo (float x, float y, float z)
{
	vector v;
	v.x = x;
	v.y = y;
	v.z = z;
	return v;
}

qfcc thinks v is uninitialized, but if "if (x) return nil;" (or any other
basic-block splitter) is put just before the return v; qfcc correctly
detects that v is initialized. The reason is that the inits are in the same
basic block as the return, and thus aren't affecting the reaching
definitions, which are stored per-block.

The naive implementation should be good for a fast-cull before doing a
per-statement check.
2012-12-10 15:58:51 +09:00
..
doc Document alias defs. 2012-12-09 19:43:12 +09:00
include Enable live var flow dumps. 2012-12-10 15:27:07 +09:00
source Rewrite flow_uninitialized() to use reaching defs. 2012-12-10 15:58:51 +09:00
test Remove func-static from XFAIL_TESTS. 2012-12-04 13:27:39 +09:00
AUTHORS more mailing list corrections 2003-07-12 21:50:22 +00:00
bootstrap scary, but the only changes qfcc needed to build as part of quakeforge was 2002-01-22 05:48:03 +00:00
configure.in fix CPP_NAME for independently built qfcc 2002-06-04 20:43:11 +00:00
Makefile.am Add a test harness for qfcc. 2012-11-22 21:59:01 +09:00
TODO Update qfcc's TODO 2012-12-01 15:41:30 +09:00