Bill Currie
d5604aef73
[qfcc] Add failing test for unary minus
...
Producing a void type... very odd.
2020-04-08 21:12:56 +09:00
Bill Currie
453c646d85
[qfcc] Improve dependency checks for tests
...
They worked well if there was only one source file in the test, but
failed if there were two or more. While only typelinker needed the
enhanced macros, I got them all because I generally copy the nearest
block when adding a new test thus it's best if they're all "correct".
2020-04-03 19:54:25 +09:00
Bill Currie
f8d9b720de
[qfcc] Free data spaces between compiliations
2020-04-03 14:14:34 +09:00
Bill Currie
5d06596814
[qfcc] Fix test harness after .ctor change
2020-04-03 00:20:39 +09:00
Bill Currie
842125faf8
[qfcc] Add a failing test for aliased live vars
...
I'm not sure if it's due more to doubles or unions, but the bug was
found via double. It seems the dags code generator doesn't see that the
assignment to the union's double field kills the two int fields.
The test passes when NOT optimizing.
2020-04-01 13:49:58 +09:00
Bill Currie
dff0fd983c
[qfcc] Fix missed t enum cleanup
2020-03-30 19:02:54 +09:00
Bill Currie
0de9b02726
[qfcc] Catch declarations of arrays of class
...
They're still static instances.
2020-03-30 19:02:41 +09:00
Bill Currie
8ba3ab89d5
[qfcc] Add failing aliased type linking test
2020-03-28 23:30:05 +09:00
Bill Currie
1cd7bd2bf0
[qfcc] Use correct meta for zerolinker test
...
Still fails, of course :)
2020-03-28 21:31:04 +09:00
Bill Currie
262c6a61f5
[qfcc] Add failing test for linker zero/param issue
...
This tests issue #6
2020-03-28 21:11:42 +09:00
Bill Currie
b6ea47dca6
[qfcc] Add failing function overload test
...
This is a bit of a weird one because it's a combination of the aliasing
code and mixing C prototypes with QuakeC function definitions, and the
function type rebuilding in qc-parse.y not being very "consistent" in
its abuse of the type system.
2020-03-28 18:58:08 +09:00
Bill Currie
e31f03fd36
[qfcc] Add type aliasing test again
2020-03-28 09:59:01 +09:00
Bill Currie
9c556c07bb
[qfcc] Add failing nil return through @param bug
...
I suspect it's general for struts, but nil really is a troubling
character sometimes.
2020-03-27 20:32:52 +09:00
Bill Currie
9e529d1508
[qfcc] Fix some incorrect test runs
...
Checking for float return when should be checking for int return.
Fortunately, the tests still passed.
2020-03-27 20:32:52 +09:00
Bill Currie
98eac2afbc
[qfcc] Hide dependency generation commands
2020-03-26 20:16:32 +09:00
Bill Currie
5fd63b95db
[qfcc] Add a new failing test
...
The struct alias is somehow blocking the detection of the call so the
return value gets corrupted.
2020-03-26 19:22:41 +09:00
Bill Currie
9bfd14b687
[qwaq] Bring in qc gcd to use for debugger testing
...
It was even recent enough to compile first try.
2020-03-24 23:02:19 +09:00
Bill Currie
298fcbbf70
[qfcc] Add ExitCode support to quake-pascal
...
gcd now passes :)
2020-03-20 12:59:25 +09:00
Bill Currie
f64038b872
[qfcc] Add gcd.pas to the tests
2020-03-20 12:59:25 +09:00
Bill Currie
43ea34535e
[qfcc] Make ivar-struct-return fail
...
It turns out that assignments to struct fields are not counted as live
when the whole struct is later used via a pointer move.
2020-03-17 23:39:17 +09:00
Bill Currie
c5400c4581
[qfcc] Make anonstruct test robust against pointer math
...
I noticed that pointer math is currently incorrect in qfcc, but it would
be nice for fixing it to not break anonstruct since it is testing
something else.
2020-03-17 12:16:24 +09:00
Bill Currie
a0c28a5ac5
[qfcc] Support pointers to temp operands
...
This is necessary for correctly taking the address of operands.
2020-03-16 14:24:47 +09:00
Bill Currie
a98f0e04eb
[qfcc] Correct some misinformative prints
2020-03-14 01:28:00 +09:00
Bill Currie
de89f2f31f
[qfcc] Fix a test that wasn't failing when it should
2020-03-13 20:47:57 +09:00
Bill Currie
9c5fac2226
[qfcc] Catch another assignment chain failure
2020-03-12 19:53:15 +09:00
Bill Currie
f454842361
[qfcc] Add breaking assignment chain test
...
This bug drove me nuts for several hours until I figured out what was
going on.
The assignment sub-tree is being generated, then lost. It works for
simple assignments because a = b = c -> (= a (= b c)), but for complex
assignments (those that require move or memset), a = b = c -> (b = c) (a
= c) but nothing points to (b = c). The cause is using binary
expressions to store assignments.
2020-03-12 19:47:09 +09:00
Bill Currie
d418be31e6
[qfcc] Tweak ivar test to check old bug
...
It turns out that assigning nil to an ivar struct does not work (should,
of course).
2020-03-11 20:55:21 +09:00
Bill Currie
b6439e8dc1
[qfcc] Support compound init in assignment and params
...
foo({...}) and bar = {...}
2020-03-11 19:48:25 +09:00
Bill Currie
3061f7e30e
[qfcc] Update sendv test for corrected implementation
2020-03-11 11:04:49 +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
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
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
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
5200c3f518
[qfcc] Update chewed-alias test for new warnings
2020-03-05 18:26:11 +09:00
Bill Currie
1b2a806f28
[qfcc] Fix test that failed due to improved warnings
2020-03-05 11:04:22 +09:00
Bill Currie
e298904dc0
[qfcc] Implement anonymous structs and unions
...
For struct/union scope
2020-03-04 16:31:28 +09:00
Bill Currie
57b2751732
[qfcc] Add failing vector element address test
...
It's an evil thing to do, but it should at least work.
2020-03-04 00:37:10 +09:00
Bill Currie
6def1fc01c
[qfcc] Fix a bootstrap warning
2020-03-03 15:26:33 +09:00
Bill Currie
caa297b756
[qfcc] Remove type alias encoding
...
It proved to be too fragile in its current implementation. It broke
pointers to incomplete structs and switch enum checking, and getting it
to work for other things was overly invasive. I still want the encoding,
but need to come up with something more robust.a
2020-03-01 16:13:18 +09:00
Bill Currie
b4aebc120e
[qfcc] Treat { } as nil for initializing compound types
2020-02-27 20:30:39 +09:00
Bill Currie
ca6fe0730b
Fix qfcc test harness tracing
...
Just a consequence of progs execution state being initialized properly.
2020-02-25 19:02:24 +09:00
Bill Currie
a55b9544ac
Improve handling of pr_argc
...
It is now set to 0 when progs are loaded and every time
PR_ExecuteProgram() returns. This takes care of the default case, but
when setting parameters, pr_argc needs to be set correctly in case a
vararg function is called.
2020-02-25 17:36:29 +09:00
Bill Currie
4b7ecdf74a
Make PR_Init take an instance to initialize
...
This allows internal sub-systems to do per-instance initializations
without other engine systems having to know about them.
2020-02-23 18:32:16 +09:00
Bill Currie
52d54f98bf
Fix some issues in the typedef test
...
It wasn't being strict enough in the test (but was good enough to catch
the relocation error, at least) and was printing the alias name
incorrectly.
2020-02-22 23:41:09 +09:00
Bill Currie
c296514b95
Make pr.load_file 'return' the file size
2020-02-21 21:17:28 +09:00
Bill Currie
7e76a96f7d
Fix a missed ty_none
2020-02-21 21:13:18 +09:00
Bill Currie
8b225dbfc1
Ensure .ctor functions do not reset tracing
2020-02-21 17:53:27 +09:00
Bill Currie
a0914e1ec8
Fix the typedef test case to actually work
2020-02-19 21:41:46 +09:00
Bill Currie
2f18364364
Start work on encoding typedef chains
2020-02-19 21:41:46 +09:00
Bill Currie
adb7f5d601
Quieten the test script build rules
2020-02-19 21:41:46 +09:00
Bill Currie
1bc08c59f6
Add tests for %%
...
double fails due to qfcc aligning double param locals, but the engine
not doing so.
2020-02-16 17:02:38 +09:00
Bill Currie
9d2d33fa50
Implement %% (true modulo) support in qfcc
...
However, it's not quite working yet
2020-02-16 11:57:58 +09:00
Bill Currie
4269c8cb07
Rename the mod instruction to rem
...
Because % really implements remainder rather than true modulo, and I
plan on adding %% to implement true modulo.
2020-02-16 11:04:30 +09:00
Bill Currie
db9996023f
Add some tests for double comparison
...
More testing the engine than the compiler, but hey :)
2020-02-15 23:49:12 +09:00
Bill Currie
1985b6d4fd
Avoid creating a struct temp for ivar struct return
...
This fixed the uninitialized temp warning in HUD.r. The problem was
caused by the flow analyzer not being able to detect that the struct
temp was being initialized by the move statement due to the address of
the temp being in a pointer temp. While it would be good to use a
constant pointer for the address of the struct temp or improving the
flow analyzer to track actual data, avoiding the temp in the first place
results in nicer code as it removes a move statement.
2020-02-15 23:49:12 +09:00
Bill Currie
9c996df7b4
Add a test case for the uninit temp in HUD.r
2020-02-15 23:49:12 +09:00
Bill Currie
344d429134
Test array initializer double demotions
...
Turns out array inits are very strict about types (bug?).
2020-02-15 23:49:12 +09:00
Bill Currie
6ce99afa5b
Catch double demotion in global initializers
...
Local initializers are handled by regular assignments
2020-02-15 23:49:12 +09:00
Bill Currie
c5ce18591f
Catch and warn demotion of double in assignments
2020-02-15 23:49:12 +09:00
Bill Currie
08ca59d0df
Add tests for double demotion
2020-02-15 23:49:12 +09:00
Bill Currie
3257e7145b
Add failing global init test too
2020-02-15 23:49:12 +09:00
Bill Currie
4caa875442
Finish up alignment tests and add address cast
...
It turns out that initializing a local int with a pointer cast doesn't
work.
2020-02-15 23:49:12 +09:00
Bill Currie
293f10211a
Start on alignment test
...
Currently fails (deliberately, WIP)
2020-02-15 23:49:12 +09:00
Bill Currie
0542daacdf
Create more double related tests
...
Including catching warnings :) (yay -Werror)
2020-02-15 23:49:12 +09:00
Bill Currie
533fb8acc9
Implement double constants
2020-02-15 23:49:12 +09:00
Bill Currie
2cd62fe01b
Fix several double-related bug
...
float is promoted to double through ... for non-v6 code.
PR_Sprintf has custom param access via P_*, messed up doubles.
2020-02-15 23:49:12 +09:00
Bill Currie
eb7f825158
Test for full-float %
2020-02-15 23:49:12 +09:00
Bill Currie
c3fa78ef4d
Include test for 2d vector expressions
2019-07-06 14:49:28 +09:00
Bill Currie
0f1f477e64
Set up temp aliases correctly
...
Fixes vector expressions as sub-expresses. I really don't know why I did
the temp alias setup that way.
2019-06-18 10:38:19 +09:00
Bill Currie
e0c8285f07
Extend nested struct test to cover struct copy
...
Fails :P
2019-06-17 22:57:40 +09:00
Bill Currie
e9c24dbf1c
Test case for accessing nested struct fields
...
Currently fails.
2019-06-17 22:47:44 +09:00
Bill Currie
c40f4194e9
Use tempop_visit_all for flow and dags
...
Fixes t3 of vecexpr, but t2 is broken (lost first assignment).
2019-06-16 16:56:39 +09:00
Bill Currie
08ab42fc15
Handle vector expressions as sub-expressions
...
Now my little game builds again :)
2019-06-10 15:50:35 +09:00
Bill Currie
49ed4310fd
Fix assigning int to enum or enum to int
...
Or float, for v6 progs.
2019-06-10 08:46:40 +09:00
Bill Currie
f81484a068
Test compiling enums
...
It turns out the enumerator type and enum type wind up with different
instances of the same type (due to the way type chaining works). This
results in infinite recursion in assign_expr and check_types_compatible.
2019-06-10 07:17:41 +09:00
Bill Currie
28a2b96800
Implement automatic array sizing from initializer
2019-06-09 23:11:38 +09:00
Bill Currie
00f12263ca
Fix casting arrays to pointers
2019-06-09 22:55:38 +09:00
Bill Currie
f70801fa52
Add a test for accessing an array in a struct
...
That's accessed via a pointer. Whee. However, at this stage, the problem
is really a promotion issue for short -> integer.
2019-06-09 21:44:58 +09:00
Bill Currie
7fce68649a
Implement comma expressions
...
Doesn't quite work (attempt to suppress warning for return a = 3, 5;
failed).
2019-06-09 16:56:20 +09:00
Bill Currie
1db600548e
Fix for decl test scope issue
2019-06-09 13:55:07 +09:00
Bill Currie
d29ea55826
Add a test for for loop declarations
...
I think the compiler segfaulting indicates a test failure.
2019-06-09 13:02:36 +09:00
Bill Currie
625e767684
Update qf dependency stuff for recent automake
...
Not sure just what version of automake broke things, but I do remember
having a bad time getting the dependencies to work in the first place.
At least now they should be more reliable (until automake changes
things).
2019-06-09 13:00:55 +09:00
Bill Currie
2a2754e581
More ways to break qfcc :/
2018-10-15 19:48:19 +09:00
Bill Currie
6c53be928b
Support returning vector expressions.
...
Currently fails due to a scheduling problem when the vector expression
contains functions.
2018-10-13 23:32:53 +09:00
Bill Currie
4828934e50
Fix a equality check typo.
...
Fixes bad code generation when assigning to vector.x in a function with no
parameters and the vector is the first local var.
2018-10-12 23:39:05 +09:00
Bill Currie
78e0a8dc52
Support assigning non-constant vector expressions.
2018-10-12 22:05:17 +09:00
Bill Currie
f58c2fef5a
Switch QF's quaterions from wxyz to xyzw.
...
After messing with SIMD stuff for a little, I think I now understand why
the industry went with xyzw instead of the mathematical wxyz. Anyway, this
will make for less pain in the future (assuming I got everything).
2018-10-12 14:33:55 +09:00
Bill Currie
d95c01be1a
More defspace tests.
2018-10-09 12:45:26 +09:00
Bill Currie
34bcf7faab
Do a pure/const/noreturn/format attribute pass.
...
I always wanted these, but as gcc now provides warnings for functions that
could do with such attributes, finding all the functions is much easier.
2018-10-09 12:42:21 +09:00
Bill Currie
05fd2d8cdd
Start work on a unit test for defspace.
2018-09-09 22:37:09 +09:00
Bill Currie
3a4667318c
Fix the qfcc test autodependencies.
2018-09-09 22:36:20 +09:00
Bill Currie
b37b0180cb
Actually do a test for triangle.r.
...
If the kahan triangle area method breaks, I did something wrong with qfcc's
handling of parentheses (ie, floating point math is not truly associative).
2018-08-23 20:52:32 +09:00
Bill Currie
1b9149ef31
Fix an argument passing error in test-harness.
...
It failed to pass the last argument to the ruamoko program being run.
2018-08-23 20:22:29 +09:00
Bill Currie
f250065003
Add tests for swapping vars and triangle area.
...
Triangle area was meant just to check Kahan's equation, but it found a
problem with swapping vars. swap.r currently fails.
2018-08-21 16:27:22 +09:00
Bill Currie
6c0f271783
Fix some more automake warnings.
2013-11-24 13:26:12 +09:00
Bill Currie
f5501fbf24
Fix a pile of automake deprecation warnings.
...
s/INCLUDES/AM_CPPFLAGS/g
I <3 sed :)
2013-11-24 13:11:50 +09:00
Bill Currie
70d18ecfa1
Add a test for functions in binary expressions.
...
As expected, the binary_expr() cleanup broke multiple function calls in a
single expression.
2013-09-27 23:15:57 +09:00
Bill Currie
a6cdc8735a
Start implementing vec = [x,y,z].
...
This is a nice feature found in fteqcc (also a bit of a challenge from
Spike). Getting bison to accept the new expression required rewriting the
state expression grammar, so this is mostly for the state expression. A
test to ensure the state expression doesn't break is included.
2013-09-27 23:15:56 +09:00
Bill Currie
88c765e210
Add a test for returning @param into an array.
2012-12-26 11:49:39 +09:00