Bill Currie
5020966be3
[qfcc] Fix ud-chain alias handling
...
That was a fair bit trickier than I thought, but now .return and .paramN
are handled correctly, too, especially taking call instructions into
account (they can "kill" all 9 defs).
2020-03-08 16:57:12 +09:00
Bill Currie
3d9410c66d
[qfcc] Force overlap to 0 for non-alias def/temops
...
Make the code behave as intended: visiting all aliases when starting
with the real def/tempop regardless of the overlap setting.
2020-03-08 16:53:28 +09:00
Bill Currie
035da472ec
[qfcc] Offset alias tempop offsets
...
Alias tempop offsets are relative to the real tempop. This fixes alias
tempops never overlapping the real tempop.
2020-03-08 16:51:01 +09:00
Bill Currie
695b3ba0d0
[qfcc] Rearrange vecexpr.r for easier debugging
...
Putting the most likely function to have problems at the top reduces
break-point shenanigans.
2020-03-08 16:50:39 +09:00
Bill Currie
d9d321f65b
[qfcc] Check for previous errors in vector exprs
...
Fixes a segfault when one of the expressions used to construct the
vector was the result of an error.
2020-03-08 15:40:07 +09:00
Bill Currie
b81d58c795
Revert "[qfcc] Correct a comment"
...
This reverts commit a2f203c840
.
There is indeed a world of difference between "any" and "only", and it
helps if I read the rest of the docs AND the code :P.
2020-03-08 14:58:57 +09:00
Bill Currie
8696e76a25
[qfcc] Handle aliases when setting use and def
...
As expected, this does not fix the mangled pointer problem in
struct-init-param.r, but it does improve the ud-chains. There's still a
problem with .return, but it's handling in flow_analyze_statement is a
bit "special" :P.
2020-03-08 12:17:56 +09:00
Bill Currie
a2f203c840
[qfcc] Correct a comment
...
There's a world of difference between "any" and "only".
2020-03-08 12:10:12 +09:00
Bill Currie
b2faca16a7
[qfcc] Rename the kill alias functions
...
Having "visit" in the name felt redundant in the end.
2020-03-08 12:08:56 +09:00
Bill Currie
c2ed6d41bd
[qfcc] Finish struct-init-param test
...
When the bug is fixed, it will pass now (does without optimization).
2020-03-08 03:55:08 +09:00
Bill Currie
e4c87091a3
[qfcc] Lots of flow analysis docs
...
And some function shuffling for grouping. I'm not satisfied with the
docs, but they're a lot more helpful than they were.
2020-03-08 03:53:53 +09:00
Bill Currie
809c103fd1
[qfcc] Shuffle some code around to be clearer
...
Doing the same thing at the end of two branches of an if/else seems off.
And doing an associative(?) set operation every time through a loop is
wasteful.
2020-03-08 03:46:52 +09:00
Bill Currie
7338689146
[qfcc] Treat offset real tempops as an error
...
tempops always have an offset field, but only those that are aliases
should ever have a non-zero offset.
2020-03-08 03:42:18 +09:00
Bill Currie
d44d956038
[qfcc] Remove a long dead function
2020-03-08 03:39:24 +09:00
Bill Currie
f56de00c21
[qfcc] Rename a field
...
depth_first is much clearer than dfo. I had to check what dfo meant too
many times in one night.
2020-03-08 03:38:45 +09:00
Bill Currie
2b15e61b28
[qfcc] Remove obsolete structure fields
...
init_vars hasn't been used for a long time.
2020-03-08 03:33:01 +09:00
Bill Currie
e524db1fc1
[qfcc] Set op type when aliasing a value
...
This fixes the ICE when attempting to compile address-cast without
optimization (just realized why, too: the assignment was optimized out
of existence).
2020-03-08 03:11:46 +09:00
Bill Currie
777ce56cf3
[doc] Enable MathJax
...
Nice. Very nice.
2020-03-07 17:48:19 +09:00
Bill Currie
6ada20f685
[qfcc] Show offset for op_x_def_ofs relocs
2020-03-07 02:06:33 +09:00
Bill Currie
48514ba2f3
[qfcc] Create alias def for defs accessed via pointer
...
This the fixes the incorrect flow analysis caused by the def being seen
to have the wrong size (structure field of structure def seen through a
constant pointer). Fixes the ICE, but the pointer constant is broken
somewhere in dags, presumably.
2020-03-07 01:30:36 +09:00
Bill Currie
faa6eabfbe
[qfcc] Add a failing test for struct init to param
...
This actually took a bit to reproduce.
2020-03-06 22:28:04 +09:00
Bill Currie
f7757cf894
[qfcc] Add filename to dot output
...
It makes things so much easier when viewing the graphs
2020-03-06 21:05:53 +09:00
Bill Currie
f0ecf7b30a
[qwaq] Clean out log file with make clean
2020-03-06 20:43:38 +09:00
Bill Currie
de06efa604
[qfcc] Fix handling of nil for static initializers
...
nil is most definitely constant.
2020-03-06 20:38:40 +09:00
Bill Currie
9dbc81432a
[qfcc] Use full type for differentiating values
...
This fixes the problem of using nil for two different compound types
within the one expression. The problem is all compound types have the
same low-level type (ev_invalid) and this caused the two different nils
to have the same type when taken back up to expression level.
2020-03-06 20:33:47 +09:00
Bill Currie
07e6baf32f
[qfcc] Support { } as nil in nested initializers
...
Did top-level earlier, but forgot to add support for deeper nestings.
2020-03-06 20:32:37 +09:00
Bill Currie
1250fe7446
[qwaq] Use a log file instead of stderr
...
Now I don't have to worry about remembering to redirect the output, but
debugging is still easy.
2020-03-06 18:29:16 +09:00
Bill Currie
b8b74fc074
[qwaq] Implement missing addch
...
I either forgot about it, or just didn't need it at the time, but I'm
sure it will be useful later when more stuff is implemented.
2020-03-06 17:57:33 +09:00
Bill Currie
9a96a9b2c9
[qwaq] Use own version of positional drawing in Window
...
Double offsetting the prints doesn't quite look right ;)
2020-03-06 17:46:36 +09:00
Bill Currie
d0a249590c
[qwaq] Use self where possible for drawing in Window
2020-03-06 17:45:58 +09:00
Bill Currie
bea64838cc
[qwaq] Use new TextContext
...
Not quite right yet, but it worked first try (once I got another
compiler bug sorted).
2020-03-06 17:38:27 +09:00
Bill Currie
9b269c2f8e
[qfcc] Fix mangled method parameters
...
Method parameters (ie, extra parameters without selector names) were
getting reversed during function type construction.
2020-03-06 17:37:58 +09:00
Bill Currie
a2cebe3cac
[qfcc] Add failing test for method parameters
2020-03-06 17:36:23 +09:00
Bill Currie
ba9c43d2d3
[qwaq] Create a TextContext class
...
It is essentially just a wrapper around the window versions of ncurses
functions.
2020-03-06 13:54:46 +09:00
Bill Currie
40ae7a7f19
[qwaq] Implement ofDontDraw
...
The conditional selector performance seems to work nicely, but I've
found a mistake with View.window (partly, realizing why my old lib (and
probably TV in the first place) had separate textContext and buffers
between views and groups).
2020-03-06 11:53:40 +09:00
Bill Currie
6bf2fd546d
[qwaq] Extend Array makeObjectsPerform methods
...
Added conditional message sending and reversed traversal of the array.
2020-03-06 11:27:31 +09:00
Bill Currie
ad4cde15b5
[qwaq] Get Window working
...
It even draws a border around itself.
2020-03-06 00:32:09 +09:00
Bill Currie
f18e3c3ad7
[qwaq] Add wborder command
2020-03-06 00:31:29 +09:00
Bill Currie
971caf553d
[qwaq] Add debug output to the command queue
...
Be sure to redirect stderr or the screen will get messed up
2020-03-06 00:30:11 +09:00
Bill Currie
3b959c3ed0
[gamecode] Add a macros for arbitrary param/return types
...
Of course, the type has to be small enough to fit or bad things may
happen, but it beats having to type the crazy casting every time.
2020-03-06 00:23:44 +09:00
Bill Currie
94e35b5f57
[qfcc] Clean up error messages around superclass
2020-03-05 21:10:15 +09:00
Bill Currie
66b8ab6890
[qfcc] Rework method ivar access
...
While expression symbols worked for what they are, they weren't so good
for ivar access because every ivar of a class (and its super classes)
would be accessed at method scope creation, generating spurious access
errors if any were private. That is, when the access checks worked at
all.
2020-03-05 18:45:47 +09:00
Bill Currie
5200c3f518
[qfcc] Update chewed-alias test for new warnings
2020-03-05 18:26:11 +09:00
Bill Currie
c377b324a1
[qwaq] Add Group and clean up lots of mess
...
Things are finally doing something again, and getting closer to having a
moveable window.
2020-03-05 15:44:53 +09:00
Bill Currie
1bf56b28ac
[qfcc] Warn when messaging a forward-declared class
...
But only once.
2020-03-05 15:39:34 +09:00
Bill Currie
a4582e526d
[cl_menu,scheme] Clean up after tightened pointer checks
2020-03-05 15:02:40 +09:00
Bill Currie
2ddfe2ef07
[libr] Accept void * for performSelector:withObject:
...
It's up to the receiver what the object should be.
2020-03-05 15:00:42 +09:00
Bill Currie
59db90d177
[qfcc] Fix method not found warnings
...
It turns out they should not be optional, but do need to be smarter
about when and which. So another two FIXMEs gone :)
2020-03-05 14:48:53 +09:00
Bill Currie
669c8f43d8
whitespace
2020-03-05 14:48:49 +09:00
Bill Currie
ccaa4ad3d2
[qfcc] Catch assignment of void* to class pointers
...
id and other class pointers imply that the object can receive messages,
but void * has no such implication, so treat it as a mismatch.
2020-03-05 14:14:20 +09:00