]>
git.rm.cloudns.org Git - xonotic/gmqcc.git/log
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 14:20:26 +0000 (16:20 +0200)]
for liferange calc: the block we start from must tart with an empty set of living values
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 14:19:35 +0000 (16:19 +0200)]
fixing some debug output
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 14:04:06 +0000 (16:04 +0200)]
more info with -dump
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 13:39:15 +0000 (15:39 +0200)]
qc_vlen, and adding numbers to all builtins for clarity
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 13:35:28 +0000 (15:35 +0200)]
error builtin to bail out, pawn now _always_ nulls the new entity data
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 13:24:24 +0000 (15:24 +0200)]
memvector resize needs to set _count as well
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 13:18:11 +0000 (15:18 +0200)]
Mask out "MEM" debug messages when -memchk wasn't used
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 13:04:37 +0000 (15:04 +0200)]
add ticks around vector strings created by vtos
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 13:03:49 +0000 (15:03 +0200)]
vtos builtin
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 12:20:28 +0000 (14:20 +0200)]
Have the parser generate immediates AFTER generating the globals for correct def layout
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 12:15:49 +0000 (14:15 +0200)]
First generate the globals, then the fields, so the defs have the correct layout for quake
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 12:15:35 +0000 (14:15 +0200)]
-printdefs for qcvm
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 12:00:57 +0000 (14:00 +0200)]
option: -force-crc=number, added -info to executor to just show some file info like the crc, and -printfields to print a list of fields along with their type and position
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 10:59:52 +0000 (12:59 +0200)]
Pop off all the locals after a function
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 10:56:34 +0000 (12:56 +0200)]
some vector tests
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 10:38:16 +0000 (12:38 +0200)]
make track=no adds -DNOTRACK WARNING: do not compile only parts of the code with that... it would cause major breakage
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 10:37:06 +0000 (12:37 +0200)]
-Wimplicit-function-pointer, functions without bodies still have a global function variable and thus are function pointers, though this shouldn't really be used, thus -Wimplicit-function-pointer is on by default
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 10:33:24 +0000 (12:33 +0200)]
Don't try to generate function code for functions without bodies
Wolfgang (Blub) Bumiller [Wed, 22 Aug 2012 09:49:46 +0000 (11:49 +0200)]
Removing -std=c90, which was just used to make sure things stayed portable
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 16:25:41 +0000 (18:25 +0200)]
ast_ifthen_codegen: the merge-jumps for an if's branches need to be added to the endblock of the branch, not the beginning
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 16:12:01 +0000 (18:12 +0200)]
Since we currently append AINSTR_END to the end of all functions for debugging purposes, and darkplaces complains when the very last statement isn't INSTR_DONE or INSTR_RETURN, we append an INSTR_DONE at the very end
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 14:08:23 +0000 (16:08 +0200)]
Do not generate an OFS_RETURN variable, the IR doesn't need to know it as such
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 14:05:10 +0000 (16:05 +0200)]
Fix getline usage in main.c, fix WARN_VOID_VARIABLE -> WARN_VOID_VARIABLES in main.c
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 14:01:28 +0000 (16:01 +0200)]
TYPE_FUNCTION values which are not constant are now allowed to be generated, they are function pointers.
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 13:50:53 +0000 (15:50 +0200)]
right... instead of checking for end_sys_globals twice, maybe ACTUALLY check for end_sys_fields too...
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 13:49:53 +0000 (15:49 +0200)]
-Wvoid-variables, QC uses 2 special void-typed variables: end_sys_globals and .end_sys_fields. However if for some reason someone wants more, we still allow them to be code-generated, but by default warn about them by default
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 10:03:34 +0000 (12:03 +0200)]
let test_ast compile again
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 09:57:23 +0000 (11:57 +0200)]
uninit.qc test
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 09:45:19 +0000 (11:45 +0200)]
nicer output for lost blocks in memory info
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 09:41:01 +0000 (11:41 +0200)]
memblock_t is now a double-linked list so we can show where data was allocated which hasn't been freed
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 09:21:05 +0000 (11:21 +0200)]
at last, the annoying missing ast_delete(typevar)
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 09:18:40 +0000 (11:18 +0200)]
some more error situations where typevar wouldn't get freed
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 08:33:37 +0000 (10:33 +0200)]
Fix some comment styles...
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 08:30:53 +0000 (10:30 +0200)]
Fix output of util_memory_d
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 08:18:55 +0000 (10:18 +0200)]
new warning: -Wlocal-constants
Wolfgang (Blub) Bumiller [Tue, 21 Aug 2012 08:08:17 +0000 (10:08 +0200)]
don't _move_ values out of immediates, it causes NULL strings to be code-generated
Wolfgang (Blub) Bumiller [Mon, 20 Aug 2012 16:27:27 +0000 (18:27 +0200)]
Since function prototypes now don't cause the function to become a constant, we cannot check for a constant in [frame,think] notations anymore
Wolfgang (Blub) Bumiller [Mon, 20 Aug 2012 16:15:31 +0000 (18:15 +0200)]
Better handling of EOF - encountering EOF in parser_next will not return false yet, this is a more elegant way...
Wolfgang (Blub) Bumiller [Mon, 20 Aug 2012 16:14:02 +0000 (18:14 +0200)]
better handlign of a too early error condition
Wolfgang (Blub) Bumiller [Mon, 20 Aug 2012 16:12:04 +0000 (18:12 +0200)]
Lexer now returns TOKEN_EOF only once and afterwards TOKEN_FATAL
Wolfgang (Blub) Bumiller [Mon, 20 Aug 2012 16:10:06 +0000 (18:10 +0200)]
Fix correction of parsiong of multiple variables: parse past the comma
Wolfgang (Blub) Bumiller [Mon, 20 Aug 2012 16:09:41 +0000 (18:09 +0200)]
Creating the ast_function for a function only when encountering its body, so if no body is specified it works like a function pointer - just like QC wants it
Wolfgang (Blub) Bumiller [Mon, 20 Aug 2012 15:59:19 +0000 (17:59 +0200)]
Corrected parsing of declarations of multiple variables
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 19:37:29 +0000 (21:37 +0200)]
ir_values which are members of a vector should know that, so that liferange calc can use the vector rather than the member
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 19:26:14 +0000 (21:26 +0200)]
added -Wused-uninitialized and warning about variables which may be used without being initialized
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 19:00:42 +0000 (21:00 +0200)]
Removing the old LIFE_RANGE_WITHOUT_LAST_READ support
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 18:45:26 +0000 (20:45 +0200)]
strip the newlines out of ir error messages, they're added by the msgprint routine
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 18:43:34 +0000 (20:43 +0200)]
more context copies
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 18:43:04 +0000 (20:43 +0200)]
have the ir take over some more context data from the ast
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 18:41:31 +0000 (20:41 +0200)]
add the backticks for a warning
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 18:37:10 +0000 (20:37 +0200)]
add the type for the invalid-type-for-global message
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 18:35:51 +0000 (20:35 +0200)]
ir_value_set_string needs to use a strdup which doesn't return NULL for an emptystring
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 18:32:07 +0000 (20:32 +0200)]
take 'warnreturn' into account, don't ignore the parsewarnin's Werror status
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 18:28:14 +0000 (20:28 +0200)]
Don't have the ast's codegen error on missing returns
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 18:26:54 +0000 (20:26 +0200)]
set -Wmissing-return-values to on by default, new warning: control reaches end of non-void...
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 18:20:39 +0000 (20:20 +0200)]
parse_block gets a warn-return bool flag
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 17:54:15 +0000 (19:54 +0200)]
functions which have no living values but store_return values may cause the allocator to be run with no allocations being made - in this case we shouldn't try accessing the empty array and simply exit the allocator
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 17:45:53 +0000 (19:45 +0200)]
same as before for loops: don't try creating a jump if the body ends in a return
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 17:43:41 +0000 (19:43 +0200)]
don't try to create jumps in ifs if the block is already done
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 17:39:58 +0000 (19:39 +0200)]
have function declarations of functions with prototypes take over the actual declaration's body's context data
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 17:37:46 +0000 (19:37 +0200)]
provide the context to ir_functions
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 17:35:45 +0000 (19:35 +0200)]
relax parse_close_paren to allow values in parenthesis with no operators... duh
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 17:25:37 +0000 (19:25 +0200)]
fix: use thinkfunc not nextthink, nextthink is set later
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 17:24:43 +0000 (19:24 +0200)]
Automatic prototyping of frame-functions
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 17:01:31 +0000 (19:01 +0200)]
Removing old commented-out code
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 16:03:56 +0000 (18:03 +0200)]
missing initializer
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 16:00:53 +0000 (18:00 +0200)]
IR generation: for functions: first generate all defs, then the code, so access to prototyped functions doesn't result in NULL code
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 15:52:44 +0000 (17:52 +0200)]
setting data/frames.qc right again
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 15:46:10 +0000 (17:46 +0200)]
STOREP instructions' first operand has to be considered a read-operand, not a write operand, otherwise the life ranges will be wrong, and the value itself IS only read, not written to
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 15:42:22 +0000 (17:42 +0200)]
for void returning functions we can use store_return to avoid a useless store after it
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 15:29:36 +0000 (17:29 +0200)]
calls for now use store_value since we don't properly deal with its liferange yet; fixing some local-alloation things; taking call parameters into account in ir_block_life_propagate
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 14:59:59 +0000 (16:59 +0200)]
Fixing a misleading error message in ir.c
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 14:49:24 +0000 (16:49 +0200)]
ir: fix bug that functions without declared locals would put temps at position zero ...
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 14:42:12 +0000 (16:42 +0200)]
Nicer prints in exec's prog_print_statement
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 14:41:45 +0000 (16:41 +0200)]
fix a wrong print in parsing.qc test
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 14:18:39 +0000 (16:18 +0200)]
Oops setting wrong members
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 14:14:19 +0000 (16:14 +0200)]
data/frames.qc to test [frame,think]
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 14:13:29 +0000 (16:13 +0200)]
First draft of handling the [frame,think] notation
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 13:19:43 +0000 (15:19 +0200)]
qcvm: -trace flag
Wolfgang (Blub) Bumiller [Sun, 19 Aug 2012 12:34:23 +0000 (14:34 +0200)]
Factoring out duplicate code into a function: create_vector_members; creating vector members for vector function parameters
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 19:56:42 +0000 (21:56 +0200)]
implement correct behaviour for shadows locals
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 19:54:19 +0000 (21:54 +0200)]
-Wlocal-shadows - note that -std=gmqcc is very different from the rest
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 19:42:52 +0000 (21:42 +0200)]
splitting parser_find_local up into find_local and find_param - find_local also takes a bool-ptr to tell the caller if it was a local or a global
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 19:35:47 +0000 (21:35 +0200)]
quotes around the variable name in some messages
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 19:32:29 +0000 (21:32 +0200)]
remove trailing \n from 2 error messages
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 19:31:53 +0000 (21:31 +0200)]
set olddecl so we don't access a NULL value when a variable already exists
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 19:07:23 +0000 (21:07 +0200)]
oops - parsewarning returns true on -Werror, so we gotta invert here
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 19:04:16 +0000 (21:04 +0200)]
-Wtoo-few-parameters on by deafult - for -std=gmqcc it's always an error
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 18:30:24 +0000 (20:30 +0200)]
ast_type_adopt - ast_entfield now adopts the full type of the field
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 18:19:43 +0000 (20:19 +0200)]
-Wmissing-return-values, off by default, ignored with -std=gmqcc because in that standard it'll error
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 18:16:51 +0000 (20:16 +0200)]
data/vars.qc - when declaring a function, and it had a prototype - use the new parameter names instead of the ones from the prototype, otherwise things get messy
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 18:02:18 +0000 (20:02 +0200)]
ast_unary needs to set its type
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 17:43:34 +0000 (19:43 +0200)]
Disable the member-of namespace check when -std != gmqcc
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 17:42:38 +0000 (19:42 +0200)]
move the member-of check for '.' to after applying the previous dot operators so we don't need parens around 'a.b' of 'a.b.c = x'
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 17:39:48 +0000 (19:39 +0200)]
data/functions.qc for some more tests
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 17:37:51 +0000 (19:37 +0200)]
ast_call: adopt the funciton's return type
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 16:01:52 +0000 (18:01 +0200)]
ast_return_delete: check if self->operand is actually set before ast_unref-ing it
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 16:00:20 +0000 (18:00 +0200)]
Use the current context, not the one from a NULL value... for ast_return
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 15:58:51 +0000 (17:58 +0200)]
parse 'return' without values better
Wolfgang (Blub) Bumiller [Sat, 18 Aug 2012 15:58:38 +0000 (17:58 +0200)]
ast_return should accept NULL as value to create a simple 'return' without a value