Bill Currie
f093516962
Move qfo type encoding structs
...
This makes them available to the gamecode VM, and thus the debugger.
2019-06-09 18:07: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
689d1ad3ec
Remove some debug prints
2019-06-09 16:45:01 +09:00
Bill Currie
33c2eb430f
Stop bison complaining about %expect
...
And make sure warnings get fixed.
2019-06-09 16:19:27 +09:00
Bill Currie
1db600548e
Fix for decl test scope issue
2019-06-09 13:55:07 +09:00
Bill Currie
ec89149b29
Build for loop decl inits correctly
...
The multiple expressions are chained together and evaluate in left to
right order.
2019-06-09 13:54:03 +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
5bd3c8c985
Allow variable declarations in for loops
...
Matches C, C++ and C#
2019-06-08 21:52:17 +09:00
Bill Currie
be4c3a82a2
Detect redefinitions of structs and unions
...
While the redefinition was being detected, it was misreported as the tag
being wrong, and on the wrong line, too.
2019-06-08 19:25:25 +09:00
Bill Currie
f2102187b9
Clean up emit_protocol_list
...
Now it uses emit_structure, which will make it easier should things go
wrong.
2019-06-08 19:23:49 +09:00
Bill Currie
6acbdcb3e5
Correct a typo
2019-06-08 19:23:10 +09:00
Bill Currie
df0316bb13
Clean up some comment FIXMEs
2019-06-08 19:22:29 +09:00
Bill Currie
e217bdd55f
Assign vector expressions to a temp for return
...
Rather than direct to .return, allowing return of vector expressions
with function calls without trashing the vector.
2019-06-08 13:36:03 +09:00
Bill Currie
ebab6574b9
Allow taking the address of a temporary variable
2019-06-08 13:35:47 +09:00
Bill Currie
e27da9c7db
Avoid folding constants in assign_expr
...
This prevents fold_constants from complaining about attempts to take
the address of a vector.
2019-06-08 13:31:30 +09:00
Bill Currie
398e1cf83a
Use output file as base for dot files
...
Ensures the output goes not go into the source directory when using a
separate build tree.
2019-06-08 13:30:06 +09:00
Bill Currie
3327127e36
Fix a typo in a comment
2019-06-08 13:28:29 +09:00
Bill Currie
4ef4a7e955
Start work on simple names in symbol tables
...
I don't remember what the goal was (stopped working on it eight months
ago), but some possibilities include:
- better handling of nil (have trouble with assigning into struts)
- automatic forward declarations ala C# and jai (I was watching vids
about jai at the time)
- something for pascal
- simply that the default symbol type should not be var (in which case,
goal accomplished)
2019-06-06 07:01:44 +09:00
Bill Currie
7e31704ebe
Be more informative for pass by value size errors
2019-06-06 06:46:38 +09:00
Bill Currie
a5da8da1dc
Be more informative for symbol type internal errors
2019-06-06 06:45:48 +09:00
Bill Currie
d00a2ef82d
Convert constant vector expressions in binary expressions
...
Fixes not being able to compare with eg [1, 2, 3]
2019-06-06 06:44:19 +09:00
Bill Currie
319ecfbbfa
Create a usable dot for vector expressions
...
It leaves a lot to be desired, but it beats "FIXME".
2019-06-06 06:42:31 +09:00
Bill Currie
607ec3124e
More dead code removal.
...
I have no idea why this hung around. It appears to be old array/struct
initialization.
2018-10-15 22:12:40 +09:00
Bill Currie
ff5c1cd4c2
Clean up redundant type parameter to initialize_def.
2018-10-15 22:11:20 +09:00
Bill Currie
1746ce3af5
Make int type name reflect its keyword.
...
Makes qc error messages make more sense.
2018-10-15 20:54:05 +09:00
Bill Currie
302934a1e4
Remove some dead code.
2018-10-15 20:52:46 +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
aaab18c9a7
Nuke a dead field.
...
It looks like ex_temp_t.expr was never really used, and I have no idea
what I had intended (not surprising after ~17 years).
2018-10-13 12:07:50 +09:00
Bill Currie
2f2edae43b
Make error, warning and notice give compiler file/line too.
...
But only when verbosity > 1 (-vv).
2018-10-13 09:31:00 +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
e03dfa29b4
Clean up the module .ctor construction a little.
2018-10-12 21:09:36 +09:00
Bill Currie
f56d25cda6
Don't double print messages.
2018-10-12 20:46:45 +09:00
Bill Currie
668896aa82
More diagnostic improvements.
2018-10-12 16:01:11 +09:00
Bill Currie
71b3d30aa1
Make the ice a little more informative.
2018-10-12 14:51:39 +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
b7aa5bb8fe
Fix an oops messing up edict size.
2018-10-12 14:33:26 +09:00
Bill Currie
f8606ebab8
Fix a object file segfault when spaces have no data.
...
ie, don't attempt to copy memory from a null pointer (just copy the null
pointer).
2018-10-12 14:00:34 +09:00
Bill Currie
3bd9f96b07
Make internal error messages a little more helpful.
...
They now include the file and line of the compiler as well.
2018-10-12 13:57:59 +09:00
Bill Currie
3656cb966c
Fix some bison deprecation warnings.
2018-10-12 09:32:49 +09:00
Bill Currie
3bc664811e
Fix lost error count tracking.
2018-10-11 22:03:14 +09:00
Bill Currie
a096babb1f
Duplicate memory when creating a qfo from progs.
...
Fixes some double-free bugs when linking after compiling.
2018-10-11 21:37:01 +09:00
Bill Currie
f673ab9c3d
Fix misreporting of failed progs load.
2018-10-11 13:39:48 +09:00
Bill Currie
82809eb856
Simplify the call to PR_LoadProgsFile.
...
I've decided that setting pr.max_edicts and pr.zone_size as part of the
local progs initialization rather than in PR_LoadProgsFile makes more
sense. For one, it is unlikely for the limits to change every time progs is
reloaded. Also, they seem to be a property of the VM rather than the progs.
However, there is nothing stopping the caller from updating max_edicts and
zone_size every call.
2018-10-11 10:06:48 +09:00
Bill Currie
673b45be05
Add diagnostic hooks.
2018-10-09 12:46:13 +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
d1cb15664f
Fix some spelling issues in a comment.
2018-09-09 22:34:24 +09:00
Bill Currie
71569b45c9
Pre-format diagnostic messages.
...
This will make it easier to hook diagnostics enabling unit tests.
2018-09-09 18:09:32 +09:00
Bill Currie
113e0d82ba
Fix a signed comparison error.
...
Not sure how this fix got lost.
2018-09-09 16:48:19 +09:00
Bill Currie
aebd9288cd
Force thread count to 1 when pthreads is unavailable.
...
Don't want the thread count being misreported.
2018-09-09 13:41:22 +09:00
Bill Currie
fa1514798b
Print the number of threads used by qfvis.
2018-09-09 13:41:00 +09:00
Bill Currie
06ab36de3d
Slight cleanup of winding allocation.
...
It seems gcc doesn't care if the & is present when calculating field
offsets, but it not being there bothered me very much and might as well use
our "standard" macro anyway.
2018-09-09 13:38:32 +09:00
Bill Currie
59e85b7d5e
Fix a pile of dead assignments.
...
Some were actual bugs!
2018-09-08 22:23:57 +09:00
Bill Currie
59b04dbcca
Make many qfo int fields unsigned.
...
I don't remember why I thought signed was a good idea, but unsigned does
make more sense for most fields.
2018-09-08 19:45:19 +09:00
Bill Currie
f75ff2d269
Fix some null argument issues.
2018-09-07 22:30:44 +09:00
Bill Currie
8f028b8a0d
Fix some double frees.
2018-09-07 20:03:19 +09:00
Bill Currie
8fd5be0ee0
Fix a pile of sizeof goofs.
...
While scan-build wasn't what I was looking for, it has proven useful
anyway: many of the sizeof errors were just noise, but a few were actual
bugs (allocating too much or too little memory).
2018-09-07 20:00:57 +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
2fcda44ab0
Kill dag leaf nodes on assignment.
...
Fixes the failing swap test caused by a's original value being used (via t)
after being written.
2018-08-23 20:07:22 +09:00
Bill Currie
cb366dd825
Better flow dot dump "scripting".
...
Not sure I want to keep the statements in the live dump, but the system
is more flexible now.
2018-08-23 20:07:11 +09:00
Bill Currie
cdbdf3f0eb
Make print_operand global.
2018-08-23 20:05:16 +09:00
Bill Currie
8b8b42bde2
Fix a typo in a comment.
2018-08-23 20:04:51 +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
0f279cd3f0
Add a comment about fake statement numbers.
...
I had forgotten how they worked (not surprising after 6 years).
2018-08-21 15:57:51 +09:00
Bill Currie
1b84ea747c
Dump statements during flow analysis.
2018-08-21 15:56:39 +09:00
Bill Currie
5ba13d759b
Fix a FIXME.
...
Set of everything got added shortly after that FIXME was added, but I
forgot to fix it.
2018-08-21 15:56:03 +09:00
Bill Currie
fbdf560a7a
Rename print_extra_live to print_flow_vars.
2018-08-21 15:55:11 +09:00
Bill Currie
5dbb7b6d4d
Handle all modelgen commands.
...
Just in case someone ever adds models.qc to progs.src.
2018-08-20 00:11:02 +09:00
Bill Currie
027e76b4c9
Add a doc block to parse_cpp_line.
...
It took me too long to figure it out :P
2018-08-20 00:09:20 +09:00
Bill Currie
4f58429137
Fix an unhealthy pile of gcc 8 warnings.
...
While some of the warnings were merely annoying, some where actual bugs or
unearthed bugs in related code.
2018-08-20 00:05:00 +09:00
Bill Currie
81202d7b29
Add a shutdown builtin to qwaq.
2018-08-19 19:44:45 +09:00
Bill Currie
b795beb520
Add support for \? to qc strings.
...
And fix up the man page a bit.
2018-08-19 19:31:52 +09:00
Bill Currie
0de0eb2fc7
Fix a bunch of bit-rot.
2018-06-08 13:21:30 +09:00
Bill Currie
f522e58d53
Fix some blender warnings.
2018-06-08 12:45:57 +09:00
Bill Currie
2329fb1885
Fix some warnings and bitrot.
2016-10-25 00:10:30 +09:00
Bill Currie
932647bad3
Fix a segfault with switch on an undefined symbol.
...
Forgot to check if the test expression was not an error.
2016-01-10 13:41:49 +09:00
Bill Currie
bf40f0126e
Convert vector expressions when passing parameters.
...
Calling a function with [vector stuff] caused an ICE.
2016-01-08 21:16:37 +09:00
Bill Currie
1061256c4f
Add a missing expression type to dot_expr.
2016-01-08 21:15:47 +09:00
Bill Currie
431074d58f
Update label destination when moving labels.
...
This fixes a segfault when optimizing the empty-body test. The label was
getting moved, but the statement block to which it pointed was not updated
and thus it pointed to dead data.
2016-01-07 21:24:29 +09:00
Bill Currie
d54ee6c8c3
Do not promote debug messages to warnings.
...
I think I copied the notice code for debug and forgot to edit the
promotion. Oops.
2016-01-07 20:08:07 +09:00
Bill Currie
6e65de251c
Put qwaq's epoch back to 0.
...
4Gs causes a few problems at this stage. I really need to look into putting
long and double into qc.
2016-01-04 20:42:57 +09:00
Bill Currie
735fcf68d5
Clean up usage of va_copy.
...
AC_TYPE_VA_LIST is no longer necessary, and the code is easier to read.
2016-01-03 21:16:23 +09:00
Bill Currie
a54f3d9035
Shutdown some subsystems on exit.
...
This fixes the problem with X keyboard repeat not being restored.
2016-01-03 17:39:03 +09:00
Bill Currie
c71eccfb10
Remove MAX_THREADS.
...
This fixes a buffer overflow with more than 4 threads.
2015-08-14 10:57:51 +09:00
Bill Currie
2cd59c962c
Rename qfcc's basename to file_basename.
...
Avoids naming conflicts with JohnnyonFlame's toolchain.
2014-01-31 12:22:11 +09:00
Bill Currie
3efb0c538f
Separate file search from loading.
...
QFS_LoadFile (and its wrappers) now take a file handle rather than a
path. This will make vpath usage a little cleaner to implement.
2014-01-28 16:22:05 +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
6996e7295a
Add a getLine method to Script.
...
It returns the rest of the line (minus // style comments) as the token. I
needed it in another project but this is my central repository for
script.py.
2013-11-24 11:21:40 +09:00
Bill Currie
eeaf2bc43f
Return None instead of False from parse_entity.
...
Don't remember how I found that one, but None makes much more sense.
2013-11-24 11:19:50 +09:00
Bill Currie
c88d1987a1
Add warnings for empty blocks in if/else/do.
...
Saw a discussion of such in #qc and that gcc implemented it. I realized it
would be pretty easy to detect and very useful (I've made such mistakes at
times).
2013-09-30 18:09:04 +09:00
Bill Currie
db460155e9
Fix multiple function calls in expressions.
2013-09-27 23:15:57 +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
4bc40b3917
Rewrite binary_expr().
...
It is now in its own file and uses table lookups to check for valid type
and operator combinations, and also the resulting type of the expression.
This probably breaks multiple function calls in the one expression.
2013-09-27 23:15:57 +09:00