quakeforge/tools/qfcc/source
Bill Currie 8433905015 [qfcc] Extend reachable to the label node's parents
While using just the label node's reachable set was sufficient for a
simple swap (t = a; a = b; b = t;), it is not sufficient for
read-before-write dependencies such as found in linked-list building:

    { o = array[ind]; o.next = obj; obj = o; }

The assignment to o.next uses obj, but that use is hidden because obj's
reachable nodes does not include o thus assigning o to obj causes the
array dereference to be assigned directly to obj and thus o.next winds
up pointing to o instead of whatever obj was. The parent nodes of obj's
node are its users, so any new assigned to obj must come after those
parents as well as any node reachable by obj's node.

Fixes a runaway loop error when adding a frikbot to the server.
2021-12-27 14:25:55 +09:00
..
.indent.pro indent whitespace cleanup. not perfect, but a bit more consistent now 2001-12-06 19:49:40 +00:00
class.c [qfcc] Fix static function declarations 2021-09-24 19:49:55 +09:00
codespace.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
constfold.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
cpp.c Get QF cross-compiling using MXE/mingw32 2021-03-27 20:09:37 +09:00
dags.c [qfcc] Extend reachable to the label node's parents 2021-12-27 14:25:55 +09:00
debug.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
def.c [qfcc] Unalias types before checking for equality 2021-12-24 06:45:13 +09:00
defspace.c [qfcc] Clean up some excess includes 2020-08-17 14:36:08 +09:00
diagnostic.c [qfcc] Make internal_error const correct 2021-06-28 18:12:15 +09:00
disassemble.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
dot.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
dot_dag.c [qfcc] Keep track of reachable dag nodes 2021-06-29 09:41:03 +09:00
dot_expr.c [qfcc] Give select expressions their own type 2021-12-24 22:45:43 +09:00
dot_flow.c [util] Make va thread-safe 2021-01-31 16:05:48 +09:00
dot_sblock.c [qfcc] Make it a little easier to see extra info 2021-12-27 14:15:51 +09:00
dot_type.c [util] Make va thread-safe 2021-01-31 16:05:48 +09:00
dump_globals.c [qfcc] Remove a union wart from qfo_mspace_t 2021-12-26 20:37:01 +09:00
dump_lines.c Get QF cross-compiling using MXE/mingw32 2021-03-27 20:09:37 +09:00
dump_modules.c [qfprogs] Dump class ivars when dumping modules 2021-06-04 14:59:15 +09:00
dump_strings.c [qfcc] Remove a union wart from qfo_mspace_t 2021-12-26 20:37:01 +09:00
emit.c [qfcc] Use flow analysis for dealloc check 2021-12-25 17:04:26 +09:00
expr.c [qfcc] Warn when super dealloc invocation is missing 2021-12-24 22:45:43 +09:00
expr_assign.c [qfcc] Give select expressions their own type 2021-12-24 22:45:43 +09:00
expr_binary.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
expr_bool.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
expr_compound.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
expr_obj.c [qfcc] Give select expressions their own type 2021-12-24 22:45:43 +09:00
flow.c [qfcc] Use flow analysis for dealloc check 2021-12-25 17:04:26 +09:00
function.c [qfcc] Fix static function declarations 2021-09-24 19:49:55 +09:00
grab.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
idstuff.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
linker.c [qfcc] Remove a union wart from qfo_mspace_t 2021-12-26 20:37:01 +09:00
Makemodule.am Get QF cross-compiling using MXE/mingw32 2021-03-27 20:09:37 +09:00
method.c [qfcc] Give select expressions their own type 2021-12-24 22:45:43 +09:00
obj_file.c [qfcc] Preserve input qfo data in qfo_to_progs 2021-12-27 00:27:15 +09:00
obj_type.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
opcodes.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
options.c [util] Make va thread-safe 2021-01-31 16:05:48 +09:00
pragma.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
qc-lex.l [qfcc] Handle l and ll integer suffixes 2021-06-13 13:25:18 +09:00
qc-parse.y [qfcc] Allow extern builtin function declarations 2021-12-26 15:01:38 +09:00
qfcc.c [util] Make va thread-safe 2021-01-31 16:05:48 +09:00
qfpreqcc Better handling of progs.dat and line numbers. 2012-11-15 15:04:51 +09:00
qfprogs.c Merge master into csqc-improvements 2021-03-25 22:01:31 +09:00
qp-lex.l [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
qp-parse.y [qfcc] Fix static function declarations 2021-09-24 19:49:55 +09:00
reloc.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
shared.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
statements.c [qfcc] Use flow analysis for dealloc check 2021-12-25 17:04:26 +09:00
strpool.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
struct.c [util] Make va thread-safe 2021-01-31 16:05:48 +09:00
stub.c [qfcc] Make internal_error const correct 2021-06-28 18:12:15 +09:00
switch.c [qfcc] Check switch test expression early 2021-12-27 00:47:35 +09:00
symtab.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
type.c [qfcc] Unalias types before checking for equality 2021-12-24 06:45:13 +09:00
value.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00