Wolfgang Bumiller
|
40b2a26e89
|
TYPE_NIL, builder->nil, ast_value_codegen for TYPE_NIL
|
2012-12-28 18:05:28 +01:00 |
|
Wolfgang Bumiller
|
a60d0182db
|
finish parsing of labeled loops; ast support added
|
2012-12-28 00:04:09 +01:00 |
|
Wolfgang Bumiller
|
ebb7cb2ae3
|
parsing of loop labels
|
2012-12-27 23:43:20 +01:00 |
|
Wolfgang Bumiller
|
d4483bfda6
|
-Oglobal-temps
|
2012-12-26 23:18:45 +01:00 |
|
Wolfgang Bumiller
|
2b468cb0ee
|
Added the 'static' keyword.
Implements #71
|
2012-12-24 11:30:58 +01:00 |
|
Wolfgang Bumiller
|
7998a98818
|
ir_function now has a flags field - flags are: IR_FLAG_HAS_{ARRAYS,UNINITIALIZED,GOTO}
|
2012-12-23 16:21:38 +01:00 |
|
Dale Weiler
|
c3964cf29d
|
Make compiler and virtual-machine compile as C++ code, also removed gmqcc_voidptr hack.
|
2012-12-23 07:51:19 +00:00 |
|
Wolfgang Bumiller
|
eb952f1199
|
fix -fshort-logic to cast to true boolean values
|
2012-12-22 20:05:15 +01:00 |
|
Wolfgang Bumiller
|
0fe71af4ce
|
-fcorrect-logic now handles only vectors
|
2012-12-22 17:18:37 +01:00 |
|
Dale Weiler
|
fa401b6f56
|
Cleanups and make compile with clang again with no warnings.
|
2012-12-22 08:22:50 +00:00 |
|
Wolfgang Bumiller
|
5375400e85
|
minor: fix ast_function_label
|
2012-12-20 23:27:23 +01:00 |
|
Wolfgang Bumiller
|
8d86d7d1c1
|
Don't check for is_return but for final at the end of a function so that if 'goto' is the last expression we don't try to append a return
|
2012-12-20 21:05:29 +01:00 |
|
Wolfgang Bumiller
|
a985a5cab1
|
while/for/do now all use process_condition, ast_loop got 2 new parameters for more efficient translation
|
2012-12-20 20:22:31 +01:00 |
|
Wolfgang Bumiller
|
d72cb42b08
|
process_condition function used by parse_if - need to still add it to loops
|
2012-12-20 19:51:30 +01:00 |
|
Wolfgang Bumiller
|
eb8dc60981
|
Turn -fallow-unreachable-code into a -Wunreachable-code
|
2012-12-20 16:29:32 +01:00 |
|
Wolfgang Bumiller
|
4ef0e8c66e
|
-g sets opts.g and -debug causes blocks to be labeled
|
2012-12-20 16:04:10 +01:00 |
|
Wolfgang Bumiller
|
bb356bffa5
|
that should have gone into the second to last commit
|
2012-12-20 15:27:15 +01:00 |
|
Wolfgang Bumiller
|
3119a95a89
|
-fallow-unreachable-code
|
2012-12-20 14:41:16 +01:00 |
|
Wolfgang (Blub) Bumiller
|
c8e163b0df
|
ast_call now passes AST_FLAG_NORETURN on to the IR
|
2012-12-19 20:47:01 +01:00 |
|
Wolfgang (Blub) Bumiller
|
ba434c8e22
|
removing ast_expression_common.variadic, adding ast_expression_common.flags, added AST_FLAG_VARIADIC and AST_FLAG_NORETURN
|
2012-12-19 20:45:48 +01:00 |
|
Wolfgang (Blub) Bumiller
|
384446316a
|
VINSTR_NRCALL, translated like any other call for now; to be used to mark a call which never returns, ie the error builtin
|
2012-12-19 20:38:32 +01:00 |
|
Rudolf Polzer
|
acf4da9385
|
Fixes for some minor bugs clang-analyzer and cppcheck found
Signed-off-by: Dale Weiler <killfieldengine@gmail.com>
|
2012-12-18 16:54:51 +00:00 |
|
Wolfgang (Blub) Bumiller
|
2a61a65ce0
|
-fperl-logic now doesn't allow logic ops with operands of different types, but therefore uses the correct output type
|
2012-12-18 16:56:22 +01:00 |
|
Dale Weiler
|
4b3e2571af
|
Cleanups of compiler option configuration. Added ini/cfg parser system as well.
|
2012-12-18 04:57:17 +00:00 |
|
Wolfgang (Blub) Bumiller
|
68e4fb87d8
|
Fixed a bug in the generation of default switch cases: they can now fall through correctly
|
2012-12-17 17:01:07 +01:00 |
|
Wolfgang (Blub) Bumiller
|
ac18d58ffc
|
Copy over the array-count in ast_type_adopt/ast_type_copy
|
2012-12-17 16:00:08 +01:00 |
|
Wolfgang (Blub) Bumiller
|
c2857a22e3
|
Let's still initialize the 'count' member...
|
2012-12-17 16:00:08 +01:00 |
|
Wolfgang (Blub) Bumiller
|
eab1050ba4
|
Fix: check error before calling codegen_output_type
|
2012-12-17 15:43:14 +01:00 |
|
Wolfgang (Blub) Bumiller
|
f9b1d057b5
|
Moving all the global opts_ variables into a struct, now there's one global 'opts' struct
|
2012-12-06 13:23:53 +01:00 |
|
Wolfgang (Blub) Bumiller
|
94560d1873
|
-Ominor -> -Opeephole; added -Olocaltemps flag; using a less space-wasting temp-allocation in general
|
2012-12-06 13:08:46 +01:00 |
|
Wolfgang (Blub) Bumiller
|
2eea7b03c0
|
get rid of some code duplication, and fix some wrong type adoptions in the ast
|
2012-12-05 16:22:32 +01:00 |
|
Wolfgang (Blub) Bumiller
|
8777624fe2
|
ast_block_add_expr now lets the block fully adopt the type of the added expression
|
2012-12-05 12:57:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0c8bacd134
|
ast_ternary_codegen: use codegen_outpu_type
|
2012-12-04 14:11:49 +01:00 |
|
Wolfgang (Blub) Bumiller
|
6b575372cc
|
Don't warn about uninitialized stuff in accessors - remove the liferanges calculated when finalizing accessors, this would add invalid liferanges to function-local arrays and thus suppress warnings randomly
|
2012-12-02 18:09:59 +01:00 |
|
Wolfgang (Blub) Bumiller
|
c926c4cb59
|
Sanity check in ast_generate_accessors
|
2012-12-02 18:02:44 +01:00 |
|
Wolfgang (Blub) Bumiller
|
02ec45363e
|
Get rid of some code duplication
|
2012-12-02 17:57:08 +01:00 |
|
Wolfgang (Blub) Bumiller
|
07f4e6309d
|
Some of the output types were superfluous; others are now put into a function to take care of it
|
2012-12-01 16:39:29 +01:00 |
|
Wolfgang (Blub) Bumiller
|
de837f2380
|
Add some more output and field types so you can now properly call 'get_a_function_which_gives_a_function()()()' without return values getting lost
|
2012-12-01 16:11:04 +01:00 |
|
Wolfgang (Blub) Bumiller
|
dfd8f14116
|
function pointer's output types need to be set for the IR to know
|
2012-12-01 15:23:40 +01:00 |
|
Wolfgang (Blub) Bumiller
|
d148cfdcd5
|
bodyless loops still have to loop
|
2012-11-30 21:34:49 +01:00 |
|
Wolfgang (Blub) Bumiller
|
2a3e7c1cff
|
field constants - revert globals generated after fields
|
2012-11-30 21:11:25 +01:00 |
|
Wolfgang (Blub) Bumiller
|
316298650e
|
remember if an ast_value is a field-declaration, build fields before globals
|
2012-11-30 21:03:57 +01:00 |
|
Wolfgang (Blub) Bumiller
|
1a264e5576
|
additional info in an internal error
|
2012-11-30 20:40:48 +01:00 |
|
Wolfgang (Blub) Bumiller
|
b3a9c4e8d9
|
Use the field parameter type on the raw paramter type list for their sizes.
|
2012-11-30 20:33:40 +01:00 |
|
Wolfgang (Blub) Bumiller
|
6fc00e523d
|
All ir_instrs now get their lex-context, so that we can create an LNO file with -flno
|
2012-11-30 18:20:02 +01:00 |
|
Wolfgang (Blub) Bumiller
|
bda5ff4213
|
update other value/const check for array indexing
|
2012-11-30 16:28:09 +01:00 |
|
Wolfgang (Blub) Bumiller
|
696a8629b3
|
Don't treat initialized non-consts as static array indices
|
2012-11-30 16:25:18 +01:00 |
|
Wolfgang (Blub) Bumiller
|
9f1aa1490a
|
out-of-bounds indexing check on static array indexing
|
2012-11-30 16:23:34 +01:00 |
|
Wolfgang (Blub) Bumiller
|
600ecda860
|
Set the full const/var qualifier; only generate warnings about unimplemented functions if they have no qualifier at all
|
2012-11-30 14:05:25 +01:00 |
|
Wolfgang (Blub) Bumiller
|
5e23e8296d
|
don't just store a 'bool constant' in the ast/ir, store the complete qualifier: 'int cvq', moved CV_ defines into gmqcc.h
|
2012-11-30 13:47:28 +01:00 |
|
Wolfgang (Blub) Bumiller
|
39b8d8431c
|
Actually generate the missing return instruction
|
2012-11-30 12:35:33 +01:00 |
|
Wolfgang (Blub) Bumiller
|
9841bc2f0d
|
ast_loop with no condition and no incrementor are 'for(;;)' and need to loop endlessly instead of once...
|
2012-11-30 12:28:51 +01:00 |
|
Wolfgang (Blub) Bumiller
|
42376513e7
|
Still need to generate the jump...
|
2012-11-30 12:23:27 +01:00 |
|
Wolfgang (Blub) Bumiller
|
a19849099c
|
ast_ifthen will not create dead blocks anymore
|
2012-11-30 12:21:10 +01:00 |
|
Wolfgang (Blub) Bumiller
|
a58061464e
|
actually removing -Wmissing-return-values from parser.c and enabling the ast code for it
|
2012-11-30 12:11:36 +01:00 |
|
Wolfgang (Blub) Bumiller
|
8e1ce2ab5e
|
generic compile_error/compile_warning functions in con.c, issuing end-of-non-void warning from within the ast now
|
2012-11-26 16:12:40 +01:00 |
|
Wolfgang (Blub) Bumiller
|
ec2ff09eff
|
operator &~= must not cause the generated binstore to free the destination twice
|
2012-11-26 00:15:07 +01:00 |
|
Wolfgang (Blub) Bumiller
|
1c9de6763f
|
Same as earlier: remember the outgoing block of a condition in a ternary since it could be different due to shortened logic
|
2012-11-25 23:54:15 +01:00 |
|
Wolfgang (Blub) Bumiller
|
bf244fc960
|
ast_breakcont_codegen: error when a target is missing instead of segfaulting trying to access it anyway
|
2012-11-25 23:51:39 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0564e701c0
|
endlessloops don't have any other block which could be a continue-target-block, so use the body itself to not continue to NULL
|
2012-11-25 23:50:42 +01:00 |
|
Wolfgang (Blub) Bumiller
|
23e0637e85
|
ir_function_create_block now takes a lex_ctx instead of copying from the function; ast_ternary: need to remember the _end_ block of the 2 expressions because that's where the jump is actually supposed to be
|
2012-11-25 23:48:29 +01:00 |
|
Wolfgang (Blub) Bumiller
|
d70fcdec42
|
don't set the request-Lvalue flag for an array index
|
2012-11-25 23:35:49 +01:00 |
|
Wolfgang (Blub) Bumiller
|
7c241da548
|
more verbose errors in the ast when an ir-create fails
|
2012-11-25 23:32:10 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0301ea7818
|
Don't error about creating an unreachable statement if the node we're about to generate is an ast_label
|
2012-11-25 21:59:57 +01:00 |
|
Wolfgang (Blub) Bumiller
|
24f9b63475
|
parsing goto
|
2012-11-25 21:53:14 +01:00 |
|
Wolfgang (Blub) Bumiller
|
f431b7a693
|
Support codegen of ast_label and ast_goto in any order
|
2012-11-25 21:40:26 +01:00 |
|
Wolfgang (Blub) Bumiller
|
474d8bd6f0
|
ast_label, and labels later used for goto
|
2012-11-25 21:27:14 +01:00 |
|
Wolfgang (Blub) Bumiller
|
39f572fe99
|
constant flag, -finitialized-nonconstants to turn initialized globals into mutable variables
|
2012-11-25 19:35:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
6e400ca81f
|
ast: isconst->hasvalue, const keyword will set the const flag
|
2012-11-25 19:30:10 +01:00 |
|
Wolfgang (Blub) Bumiller
|
ca033e5acd
|
Some side-effect propagation for better warnings, so that comma-operators with assignments in them don't cause the -Weffectless-statement warning, and fixing ternary precedence for fte operator list
|
2012-11-25 19:19:36 +01:00 |
|
Wolfgang (Blub) Bumiller
|
613e1e7247
|
Change the parser to use the hashtable functions
|
2012-11-25 13:23:37 +01:00 |
|
Wolfgang (Blub) Bumiller
|
5897f0439c
|
A nice internal error
|
2012-11-23 22:15:17 +01:00 |
|
Dale Weiler
|
46fff99fad
|
ast_binstore_codegen initialize left ir value to null for output left side used for lvalue to prevent clang from warning. Also fixed uninitialized bug in hashtable implementation
|
2012-11-23 06:26:19 +00:00 |
|
Wolfgang (Blub) Bumiller
|
fafc755274
|
Fixing up ast_binstore_codegen to handle array updates
|
2012-11-22 22:42:47 +01:00 |
|
Wolfgang (Blub) Bumiller
|
ed53040907
|
Fix unused parameters in ast.c
|
2012-11-22 21:39:30 +01:00 |
|
Wolfgang (Blub) Bumiller
|
55915b5217
|
initialize some values
|
2012-11-22 21:10:34 +01:00 |
|
Wolfgang (Blub) Bumiller
|
f719a81e2a
|
Fixing short-logic for 'if': it wanted to add the jump to the wrong block
|
2012-11-22 20:29:55 +01:00 |
|
Wolfgang (Blub) Bumiller
|
ba9217e576
|
make ast_function_label also work when -dumpfin is used instead of -dump
|
2012-11-21 21:59:25 +01:00 |
|
Wolfgang (Blub) Bumiller
|
e20184ae59
|
ast_ternary needs to adopt the output type
|
2012-11-21 20:57:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
be52ca3879
|
More verbose error for invalid parameter types
|
2012-11-21 20:53:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
a7fb45f102
|
removed phi_out from ast_ternary since we have a place in ast_expression_common for this kind of value
|
2012-11-21 20:13:31 +01:00 |
|
Wolfgang (Blub) Bumiller
|
268ad7db53
|
Fix wrong merge_id
|
2012-11-21 19:55:12 +01:00 |
|
Wolfgang (Blub) Bumiller
|
de5592dfc5
|
-fperl-logic, off by default, so casting to boolean now
|
2012-11-21 19:40:11 +01:00 |
|
Wolfgang (Blub) Bumiller
|
ebc6954bf5
|
casting explicitly to boolean values in early out logic
|
2012-11-21 19:36:28 +01:00 |
|
Wolfgang (Blub) Bumiller
|
bd1bc0dc59
|
Actually it's likely...
|
2012-11-21 17:42:44 +01:00 |
|
Wolfgang (Blub) Bumiller
|
b1425dfcf1
|
'likely' hint for IFs
|
2012-11-21 17:37:45 +01:00 |
|
Wolfgang (Blub) Bumiller
|
ca2b414c7c
|
experimental -fshort-logic, currently perl-like - might have to use NOT(NOT(x)) to fix this
|
2012-11-21 16:08:08 +01:00 |
|
Wolfgang (Blub) Bumiller
|
5c52e817ea
|
Add the missing jump from after the actual last case
|
2012-11-19 22:17:24 +01:00 |
|
Wolfgang (Blub) Bumiller
|
986d58877f
|
Enter the outgoing block after a switch
|
2012-11-19 22:08:38 +01:00 |
|
Wolfgang (Blub) Bumiller
|
2a55dd7234
|
fix bnot_id
|
2012-11-19 22:06:23 +01:00 |
|
Wolfgang (Blub) Bumiller
|
06ba28f2a0
|
ast_switch
|
2012-11-19 21:17:44 +01:00 |
|
Wolfgang (Blub) Bumiller
|
8ac689c03a
|
Error in the ast already about unreachable statements and don't upset the IR
|
2012-11-19 19:42:25 +01:00 |
|
Wolfgang (Blub) Bumiller
|
ea75003cf4
|
break and continue support
|
2012-11-19 19:39:52 +01:00 |
|
Wolfgang (Blub) Bumiller
|
d1640f177f
|
Free the 3 actual vectors, not the first 3 times
|
2012-11-15 21:40:32 +01:00 |
|
Wolfgang (Blub) Bumiller
|
906f319673
|
Replaced it all...
|
2012-11-15 18:32:09 +01:00 |
|
Dale Weiler
|
2e84cc0b41
|
Use new console system everywhere.
|
2012-11-15 00:28:46 +00:00 |
|
Wolfgang (Blub) Bumiller
|
b61ae53ecd
|
fix wrong const qualifier
|
2012-11-13 00:11:07 +01:00 |
|
Wolfgang (Blub) Bumiller
|
d60a76abd1
|
allowing inexing of array-fields
|
2012-11-12 23:35:47 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0340a6a6e7
|
support for ast_entfield nodes with specific output types, fixing array-field instantiating code to print the correct name on error
|
2012-11-12 22:39:43 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0224de02d5
|
add an asterror message for ast_entfield_new with a wrong type
|
2012-11-12 22:33:34 +01:00 |
|