quakeforge/tools/qfcc/source
Bill Currie 93840d9892 [qfcc] Handle Ruamoko's call return destination
Since the call instruction in the Ruamoko ISA specifies the destination
of the return value of the called function, it is much like any
expression type instruction in that the def referenced by its c operand
is both defined and killed by the instruction. However, unlike other
instructions, it really has many pseudo-operands: the arguments placed
on the stack. The problem is that when one of the arguments is also the
destination of the return value, the dags code wants to use the stack
argument as it was the last use of the real argument. Thus, instead of
using the value of the child node for the result, use the value label
attached to the call node (there should be only one such label).

This fixes iterfunc, typedef, zerolinker and vkgen when optimizing. Now
all but the double tests and return postop tests pass (and the retun
postop test is not related to the Ruamoko ISA, so fails either way).
2022-02-01 21:46:28 +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] Add types for ivec3/4 and vec3/4 2022-01-30 10:54:07 +09:00
codespace.c [gamecode] Move progs auxiliary headers into a subdirectory 2022-01-09 00:26:52 +09:00
constfold.c [qfcc] Implement vector scaling for Ruamoko 2022-01-30 14:48:49 +09:00
cpp.c Get QF cross-compiling using MXE/mingw32 2021-03-27 20:09:37 +09:00
dags.c [qfcc] Handle Ruamoko's call return destination 2022-02-01 21:46:28 +09:00
debug.c [gamecode] Rename ev_integer to ev_int 2022-01-18 13:27:19 +09:00
def.c [qfcc] Copy def reg into alias def 2022-01-24 18:31:53 +09:00
defspace.c [qfcc] Allow 0 sized highwater allocations in defspaces 2022-01-21 10:16:54 +09:00
diagnostic.c [gamecode] Clean up string_t and pointer_t 2022-01-18 12:11:14 +09:00
disassemble.c [gamecode] Rename parm to param 2022-01-27 10:55:06 +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] Implement dot and cross product for Ruamoko 2022-01-30 14:14:15 +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 [gamecode] Rename ev_pointer to ev_ptr 2022-01-18 14:36:06 +09:00
dump_globals.c [qfcc] Encode the new vector types 2022-01-30 16:00:49 +09:00
dump_lines.c [gamecode] Use a struct for offset/count pairs 2022-01-26 19:30:25 +09:00
dump_modules.c [gamecode] Use a struct for offset/count pairs 2022-01-26 19:30:25 +09:00
dump_strings.c [gamecode] Use a struct for offset/count pairs 2022-01-26 19:30:25 +09:00
emit.c [qfcc] "Use" the correct operands 2022-01-23 00:59:38 +09:00
expr.c [qfcc] Add support for horizontal vector ops 2022-01-30 10:56:15 +09:00
expr_assign.c [qfcc] Add support for horizontal vector ops 2022-01-30 10:56:15 +09:00
expr_binary.c [qfcc] Implement vector scaling for Ruamoko 2022-01-30 14:48:49 +09:00
expr_bool.c [gamecode] Add ev_ushort and partial support 2022-01-18 22:08:37 +09:00
expr_compound.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
expr_obj.c [qfcc] Rework the functionality of address expressions 2022-01-25 23:39:17 +09:00
flow.c [qfcc] Handle Ruamoko's call return destination 2022-02-01 21:46:28 +09:00
function.c [qfcc] Add types for ivec3/4 and vec3/4 2022-01-30 10:54:07 +09:00
grab.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
idstuff.c [gamecode] Use a struct for offset/count pairs 2022-01-26 19:30:25 +09:00
linker.c [gamecode] Clean up string_t and pointer_t 2022-01-18 12:11:14 +09:00
Makemodule.am Get QF cross-compiling using MXE/mingw32 2021-03-27 20:09:37 +09:00
method.c [gamecode] Rename MAX_PARMS to PR_MAXPARAMS 2022-01-23 14:17:25 +09:00
obj_file.c [qfcc] Remove the def sorting (reverts 9a08a51ebd) 2022-01-27 16:43:43 +09:00
obj_type.c [qfcc] Encode the new vector types 2022-01-30 16:00:49 +09:00
opcodes.c [qfcc] Map uint to int for some intructions 2022-01-30 22:47:57 +09:00
options.c [qfcc] Define __RUAMOKO__ as 2 for Ruamoko ISA 2022-01-30 14:22:05 +09:00
pragma.c [qfcc] Add pragma to control optimization 2022-02-01 14:57:16 +09:00
qc-lex.l [qfcc] Implement dot and cross product for Ruamoko 2022-01-30 14:14:15 +09:00
qc-parse.y [qfcc] Implement vector scaling for Ruamoko 2022-01-30 14:48:49 +09:00
qfcc.c [gamecode] Rename parm to param 2022-01-27 10:55:06 +09:00
qfpreqcc Better handling of progs.dat and line numbers. 2012-11-15 15:04:51 +09:00
qfprogs.c [gamecode] Use a struct for offset/count pairs 2022-01-26 19:30:25 +09:00
qp-lex.l [gamecode] Rename ev_integer to ev_int 2022-01-18 13:27:19 +09:00
qp-parse.y [qfcc] Use a hidden local variable for pascal functions 2022-02-01 16:08:58 +09:00
reloc.c [gamecode] Rename ev_integer to ev_int 2022-01-18 13:27:19 +09:00
shared.c [gamecode] Rename ev_integer to ev_int 2022-01-18 13:27:19 +09:00
statements.c [qfcc] Make lea generate a pointer operand 2022-02-01 20:01:13 +09:00
strpool.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
struct.c [qfcc] Add types for ivec3/4 and vec3/4 2022-01-30 10:54:07 +09:00
stub.c [gamecode] Clean up string_t and pointer_t 2022-01-18 12:11:14 +09:00
switch.c [qfcc] Rework the functionality of address expressions 2022-01-25 23:39:17 +09:00
symtab.c [qfcc] Improve handling of type names as variables 2022-01-19 23:17:49 +09:00
type.c [qfcc] Encode the new vector types 2022-01-30 16:00:49 +09:00
value.c [qfcc] Shorten type_function and type_pointer names 2022-01-18 22:34:52 +09:00