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
4bf37b274b
Ensure double is not in zero or param structs for v6
2020-02-15 23:49:12 +09:00
Bill Currie
be30a0eb19
Fix missing alignment init on zero and param types
2020-02-15 23:49:12 +09:00
Bill Currie
3e651b43f8
Handle aliased values when emitting statements
...
With this, cast address initializers work. I have to wonder if the alias
value short-circuit was legacy from long before the rewrite, as it was
quite trivial to handle in the back-end.
2020-02-15 23:49:12 +09:00
Bill Currie
e4eb793fb3
Treat aliased values as constant
...
One step closer to cast address initializers working.
2020-02-15 23:49:12 +09:00
Bill Currie
ce9902baed
Don't short-circuit aliased values
...
Not sure why I thought it was a good idea as it turns out this is why
cast pointer initializers were being lost.
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
a4a57b6ffd
Implement aligned allocations
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
7e09a94469
Fix "casts" between signed and unsigned int
2020-02-15 23:49:12 +09:00
Bill Currie
5d8d805b60
Fix test for single overload functions
...
All functions are stored in the overload functions table, even those
that are never explicitly overloaded, but only explicitly overloaded
functions (those with @overload) use the type-qualified naming.
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
8920c59515
Find @override functions even when there's only one
2020-02-15 23:49:12 +09:00
Bill Currie
df7c08a010
Add support for doubles to Ruamoko
...
Only as scalars, I still need to think about what to do for vectors and
quaternions due to param size issues. Also, doubles are not yet
guaranteed to be correctly aligned.
2020-02-15 23:49:12 +09:00
Bill Currie
13b608f40c
Don't truncat float % float
...
This allows full usage, eg, x % pi, but otherwise maintains
compatibility with integer %
2020-02-15 23:49:12 +09:00
Bill Currie
16f8dca72e
Align local and far data spaces
...
I plan on adding doubles, and so it's necessary to ensure that attempts
to align doubles in local or far data spaces remain aligned after final
linking.
2020-02-15 23:49:12 +09:00
Bill Currie
197f856a30
Fix incorrect scalar/quaternion division
...
It's just not possible.
2020-02-15 23:49:12 +09:00
Bill Currie
9248e8cf01
Update for doxygen 1.8.16
2020-02-11 15:22:42 +09:00
Bill Currie
c3fa78ef4d
Include test for 2d vector expressions
2019-07-06 14:49:28 +09:00
Bill Currie
8caf2eb584
Mark some new functions as pure
2019-06-27 21:37:48 +09:00
Bill Currie
a5ee58cebb
Support 2d vector expressions
...
[x, y] expands to [x, y, 0] (for now, might add a 2d vector type).
2019-06-18 11:54:45 +09:00
Bill Currie
83fac13a0c
Fix debug line numbers for vector expressions
2019-06-18 11:53:58 +09:00
Bill Currie
b37c331e76
Catch taking size of null type
...
This should help catch similar errors in the future.
2019-06-18 10:39:17 +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
fc50376297
Fix a minor error check mistake
2019-06-18 08:54:18 +09:00
Bill Currie
fe73547f43
Update alias type sameness check
...
This one seems to be fairly robust. Fixes alias being used to cast
pointers (maybe a better way, but this works for now).
2019-06-18 08:53:05 +09:00
Bill Currie
f7825fe7cf
Print types properly in pointer value expressions
2019-06-18 00:22:24 +09:00
Bill Currie
b996fb7aa4
Make operand->type actual type instead of low-level
...
And clean up the resulting mess. This fixes struct copy, but uncovers
another bug :/
2019-06-17 23:38:34 +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
dd52b7fea1
Merge aliased alias expressions
...
This comes up when accessing struct fields nested in another struct.
Fixes the nested struct fields test.
2019-06-17 22:48:42 +09:00
Bill Currie
e9c24dbf1c
Test case for accessing nested struct fields
...
Currently fails.
2019-06-17 22:47:44 +09:00
Bill Currie
ec128ffeee
Leave a FIXME for daglabel_t.live
2019-06-16 19:24:19 +09:00
Bill Currie
d6d3027411
Mark the correct operand as live
...
This fixes vecexpr (and possibly other cases).
2019-06-16 19:21:02 +09:00
Bill Currie
6e21c3ae2e
Treat func statements similarly to flow statements
...
func statements need their operands marked live like flow statements do
because usage is more indirect.
2019-06-16 19:20:21 +09:00
Bill Currie
db4a7a139e
Use the alias code when making vars live
...
Not sure the live forcing flag is needed anymore (need to test).
2019-06-16 19:17:45 +09:00
Bill Currie
2977c145d0
Clean up dag live alias code a little
...
Mainly, this makes it possible to reuse the alias code.
2019-06-16 19:17:01 +09:00
Bill Currie
82b334e919
Number dot dumps to help identify order
2019-06-16 19:12:18 +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
3c4903245a
Fix some curly space
2019-06-16 16:55:54 +09:00
Bill Currie
bc271d8a02
Add tempop_visit_all
...
Works the same as def_visit_all, but for temp operands.
2019-06-16 16:52:49 +09:00
Bill Currie
fa69aeef0f
Improve handling of temp aliases
...
This makes all tests pass when not optimizing. More work needs to be
done in dags.
2019-06-12 00:37:02 +09:00
Bill Currie
b18a744288
Use offset alias expressions
...
They are not quite working yet as the operand generator does not use the
offset yet.
2019-06-10 23:55:16 +09:00
Bill Currie
cc27949a34
Ensure pointer values always have a type
...
The dags generator was creating a pointer value with no type which
caused print_statement to segfault.
2019-06-10 23:52:39 +09:00
Bill Currie
ee1f5f9478
Add support for binary alias expressions
...
Doesn't quite work yet.
2019-06-10 23:48:58 +09:00