Commit graph

278 commits

Author SHA1 Message Date
Bill Currie
f591b27532 set the result of the block used for self.maxs = obj.origin; type expressions 2002-01-04 18:43:55 +00:00
Bill Currie
718a64343b more old-code cleanup. move PR_LexString into make_string 2002-01-04 18:27:01 +00:00
Bill Currie
12d2338d1b handle dos line endings a little better 2002-01-04 17:13:13 +00:00
Forest Hale
184ff4a216 made qfcc compile again, by renaming com_token to qfcc_com_token so it does not conflict with QFutil 2002-01-04 11:12:52 +00:00
Bill Currie
9d2739598a character constants 2002-01-04 08:45:24 +00:00
Bill Currie
f392c395df fix some uninitialized warnings my gcc missed, but misty's got 2001-12-13 16:40:46 +00:00
Bill Currie
112f74a357 make integer constant division warnings optional 2001-12-12 22:00:42 +00:00
Bill Currie
195dd1032e clean up some dead code 2001-12-12 21:52:07 +00:00
Bill Currie
2b458dd13d clean up line/file management 2001-12-12 21:50:11 +00:00
Bill Currie
6d65fe853d spontaneous temp defs need to have their users incremented when an
assignment is part of a sub expression
2001-12-12 21:29:04 +00:00
Bill Currie
7e38a8d9a0 clean up the return def selection for emit_assign_expr 2001-12-12 20:55:55 +00:00
Bill Currie
8ddce20949 pr_*: add storep.p so pointers can be stored into entities
emit.c: convert & (address) to . in unary .
        rewrite emit_assign_expr
expr.c: remove debug code and make unary . less agressive on address calcs
        also convert & (address) to . for lvals
2001-12-12 20:35:58 +00:00
Bill Currie
b56d7f3248 emit.c:
fix a missing else (should convert to switch)
expr.c:
	fix address_expr for binary expressions
	fix unary .
2001-12-12 18:34:41 +00:00
Bill Currie
f9149a0d6c finally get around to renaming type_name to pr_type_name 2001-12-12 17:15:09 +00:00
Bill Currie
cc34e5954f lots of work on better array/pointer/struct handline. doesn't quite work yet 2001-12-12 08:39:47 +00:00
Bill Currie
835468bcfb beginnings of breaking out the type code 2001-12-11 19:58:12 +00:00
Bill Currie
e976211faf header block fixes 2001-12-08 20:40:50 +00:00
Bill Currie
00b2a45ecd change the operator for "address" from "." to "&" so load.p can be implement.
this makes it so pointers in entities work.
2001-12-08 20:17:20 +00:00
Bill Currie
a184199146 get arrays of structures working 2001-12-08 17:36:58 +00:00
Bill Currie
b03a1bee42 ok, structures seem to generate correct code now 2001-12-08 08:19:48 +00:00
Bill Currie
3293c5e85f beginnings of structure code. committed because cvs diff doesn't work on
new files
2001-12-08 00:09:11 +00:00
Bill Currie
1767ad435f use the new immediate indeces to make small array indeces not use a global 2001-12-07 20:10:30 +00:00
Bill Currie
0c2f36f9a3 some dead code cleanup 2001-12-06 20:05:49 +00:00
Bill Currie
3c2c4aa9e6 indent whitespace cleanup. not perfect, but a bit more consistent now 2001-12-06 19:49:40 +00:00
Bill Currie
61786182d2 whitespace 2001-12-06 18:14:44 +00:00
Bill Currie
12a0a10d33 more alpha portability fixes 2001-11-29 19:35:25 +00:00
Bill Currie
3f7c4f146e allocate space for field arrays and report entity size 2001-11-15 05:31:15 +00:00
Bill Currie
e45bb62f23 ok, correct code seems to be getting generated for both array access and
entity field access
2001-11-15 04:32:50 +00:00
Bill Currie
40d47e91cb win32 portability fixes 2001-11-15 03:54:35 +00:00
Bill Currie
7d9266a3f0 beginnings of array support. no array initialization yet and foo[i] = bar is
broken.
2001-11-15 00:46:36 +00:00
Bill Currie
8aa83d04f3 oops, that's not how that works :) 2001-11-15 00:25:15 +00:00
Bill Currie
cf37275def add -g option (shortcut for --code=debug) 2001-11-14 23:17:20 +00:00
Bill Currie
ed331517b3 more grammar re-work preparing for arrays and structs 2001-11-14 22:31:57 +00:00
Bill Currie
a2bfff5dc4 simplify the type rule 2001-11-14 07:16:58 +00:00
Bill Currie
3fe67eecd2 expr.c:
it helps if one understands /why/ something is done. I think this
	might be it for the reference count tweeks
switch.c:
	o	better control over whether case ranges are built
	o	/always/ append the temp = test expression and use temp instead of
		test for the != check
	o	only ever build case ranges if the switch expression is integer
2001-11-14 06:45:31 +00:00
Bill Currie
dc80f51d89 fix a missed immediate type missmatch case 2001-11-14 05:08:37 +00:00
Bill Currie
da36feff7f oops, failed to notice that relocs on temp defs weren't being done correctly
memset wasn't such a good idea :P
2001-11-13 23:21:23 +00:00
Bill Currie
cfa47717c6 expr.c:
once again, temp def ref counts seem to be correct
pr_def.c:
	reset recycled temp defs
2001-11-13 23:17:32 +00:00
Bill Currie
3874d78697 slightly better code, but the temp isn't getting ref-counted correctly 2001-11-13 22:11:45 +00:00
Bill Currie
68fb0a1147 clean out a bunch of unneeded code. this should take care of static linking 2001-11-13 20:34:21 +00:00
Bill Currie
645c400802 rearrange default jump for slightly better code generation 2001-11-13 20:27:05 +00:00
Bill Currie
4291f9c711 create new_bind_expr and more tweeks to temp def ref counting 2001-11-13 18:49:27 +00:00
Bill Currie
f2f8e096f3 qfcc.h:
o	add a "freed" marker to def_t to prevent double freeing of
		temp def offsets
emit.c:
	o	break out the bind code into emit_bind_expr (doesn't /really/
		emit code, but still:)
	o	make bind work with disparate types (forces def_t->freed 1)
pr_def.c:
	o	mark array pointers as initialized and constant.
	o	don't free the offset for already freed temp defs
pr_imm.c
	o	fix a bug in uinteger support
	o	support disparate types for immediates
switch:
	o	fix a bug where gt.i was being used instead of gt.ui
	o	remove some debug code
2001-11-13 18:11:19 +00:00
Bill Currie
3d5447c71f seems gcc3 drops the missed enum in switch warning :/ 2001-11-13 16:08:50 +00:00
Bill Currie
07b59d2f07 pr_comp.h:
o	add OP_JUMPB
	o	OP_JUMPB renumberd some opcodes, so up PROG_VERSION
pr_edict.c:
	o	make the version error reporting more informative
pr_exec.c:
	o	implement OP_JUMPB (goto *(ptr + index))
pr_opcode.c: (libs/gamecode/engine)
	o	add OP_JUMPB to the table
expr.h:
	o	ex_uinteger support
	o	some const correctness
	o	prototype new_label_expr
qfcc.h:
	o	uinteger ussport
	o	add pointers for op_jump and op_jumpb
	o	prototype PR_GetArray
emit.c:
	o	general uinteger support
	o	new reference/reloc type 3: absolute statement address
	o	jumpb support (binary goto)
expr.c:
	o	uinteger support
	o	break the label name creation out of new_label_expr into
		new_label_name
	o	some const correctness
pr_def.c:
	o	add PR_GetArray to allocate an array in global space
	o	factor out some code common to PR_GetDef and PR_GetArray that would
		otherwise be duplicated
pr_imm.c:
	o	some const correctness
	o	uinteger support
pr_lex.c:
	o	uinteger support
pr_opcode.c: (tools/qfcc/source)
	o	support jump and jumpb
switch.c:
	o	rewrite the binary search code to support ranges.
2001-11-13 08:58:54 +00:00
Bill Currie
d27cd9cc21 s/type_size/pr_type_size/
remove the redundant type_size from qfcc
2001-11-12 23:56:46 +00:00
Bill Currie
dcfea9796e strings now work in switch statements 2001-11-12 21:13:55 +00:00
Bill Currie
928d343295 pr_comp.h:
o	add ev_uniteger to the types enum
	o	add opcodes for ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
progs.h:
	o	add uinteger accessors
pr_exec.c:
	o	implement ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
pr_opcode.c:
	o	add opcodes for ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
expr.h:
	o	prototype inc_users
qfcc.h:
	o	add externs for op_ifbe, op_ifb, op_ifae and op_ifa
emit.c:
	o	don't bother emiting an assignment to a temp def that's only used once
		(ie, it's never read, only written to)
	o	support the new if* instructions
expr.c:
	o	support the new if* insructions
	o	dectect expression loops in append_expr
	o	support unsigned integers
	o	re-work temp def usage counting
pr_def.c
	o	debugging for temp def usage counts
pr_opcode.c:
	o	support the new if* instructions
qc-parse.y:
	o	provide defines for IFBE IFB IFAE IFA
switch.c:
	o	do binary searches for strings, floats and ints if there are more than
		8 cases in a switch. Strings need more testing.
2001-11-09 00:58:16 +00:00
Bill Currie
cb4ce6a634 remove the default label from the switch label table while fetching it. 2001-11-06 20:39:42 +00:00
Bill Currie
13a177f217 use 'b' (bind) instead of '=' (assign) for switch's test temp def so simple
expressions (ie, just a def) don't generated wasted assignments and clean up
switch's debug info so you get the switch line rather than the line for the
closing }
2001-11-05 19:12:33 +00:00