Dale Weiler
|
11179a2a71
|
Major header reworking, this respects the namespaces properly. Makes object dependency more obvious, allows for better make caches, and prevents misuse of library features, i.e use con_* instead of printf.
|
2013-06-04 02:47:07 +00:00 |
|
Wolfgang Bumiller
|
b2348e1de0
|
remove the ast tree earlier - saves over 3% peak memory usage
|
2013-06-02 12:35:53 +02:00 |
|
Wolfgang Bumiller
|
d85e86141c
|
fix a leak on a parse-error
|
2013-06-01 23:36:05 +02:00 |
|
Dale Weiler
|
062180e9a8
|
Fix some possible memleaks.
|
2013-06-01 20:18:53 +00:00 |
|
Wolfgang Bumiller
|
9f2b9e1b46
|
Merge branch 'master' into cooking
|
2013-06-01 20:12:27 +02:00 |
|
Wolfgang Bumiller
|
ff63e5bd73
|
fix the INCLUDE_DEF flag getting applied regardless of dotranslate...
|
2013-06-01 20:12:14 +02:00 |
|
Wolfgang Bumiller
|
1dce501b70
|
Merge branch 'master' into cooking
|
2013-06-01 18:16:56 +02:00 |
|
Wolfgang Bumiller
|
ed585f8c04
|
fix: dotranslate now sets AST_FLAG_INCLUDE_DEF to not get removed by -Ostrip-constant-names
|
2013-06-01 18:16:50 +02:00 |
|
Wolfgang Bumiller
|
5aba29006b
|
return assignment factorial test
|
2013-05-29 16:58:18 +02:00 |
|
Wolfgang Bumiller
|
9167de1631
|
fixing that comment...
|
2013-05-29 16:56:39 +02:00 |
|
Wolfgang Bumiller
|
afdc0c9dc8
|
assignable return value now lives in ast_function, as globals can get overwritten randomly; removed parser_find_retval; updated parse_return
|
2013-05-29 16:51:59 +02:00 |
|
Dale Weiler
|
6d6a2efada
|
Experimental support for implicit return assignments. This closes #107. To enable return assignment support use -freturn-assignments. This allows you to do the following in QC code. T name() { return = expr_eval_T; return; /* returns expr_eval_T */ }. It allows for concise code and to rid locals in functions. It also saves a tremendous amount of space since only types of certian globals need to be allocated for returns.
|
2013-05-29 11:13:42 +00:00 |
|
Dale Weiler
|
2923b718e1
|
Merge branch 'union-replacement' into cooking
Conflicts:
ast.c
|
2013-05-29 03:43:49 +00:00 |
|
Dale Weiler
|
d45956f55e
|
Fix that memory leak that I spent hours trying to find months ago and didn't succeed at.
|
2013-05-29 03:35:51 +00:00 |
|
Dale Weiler
|
f892b32335
|
Major export cleanup. Anything that was exported but wasn't used outside where it was implemented has been turned into static, and their exports have been removed. This actually makes the compiler compile slightly faster.
|
2013-05-29 03:29:04 +00:00 |
|
Dale Weiler
|
e02ebfe486
|
Result of shift operation on signed integers is bad.
|
2013-05-29 02:24:12 +00:00 |
|
Wolfgang Bumiller
|
d70b571769
|
killing the union types
|
2013-05-11 22:34:01 +02:00 |
|
Wolfgang Bumiller
|
a0fa90ddd5
|
less confusing
|
2013-05-07 20:35:20 +02:00 |
|
Wolfgang Bumiller
|
802005f571
|
be more strict here
|
2013-05-07 20:13:19 +02:00 |
|
Wolfgang Bumiller
|
c5225b2fa1
|
fixing a few leaks - code_write doesn't delete the code object anymore, code_cleanup has to be called
|
2013-05-07 19:56:41 +02:00 |
|
Wolfgang Bumiller
|
8c8ae71d65
|
changing a few ast_delete to ast_unref in places where the to-be-deleted maybe coming from some other place
|
2013-05-07 19:39:10 +02:00 |
|
Wolfgang Bumiller
|
9f8bee4bf1
|
ast_value now has an initializer list array, still unused but it's there for later
|
2013-04-26 10:47:55 +02:00 |
|
Wolfgang Bumiller
|
b3e9ef3ad9
|
an = before an { is also always required when the declared variable is not a function; adding because of planned array initializers
|
2013-04-26 10:31:38 +02:00 |
|
Wolfgang Bumiller
|
d4f8e4a0dd
|
solve it, not hide it
|
2013-04-25 19:18:50 +02:00 |
|
Wolfgang Bumiller
|
35692c0b57
|
Revert "Just fucking initialize everything"
This reverts commit aed2b1031c .
|
2013-04-25 19:18:11 +02:00 |
|
Dale Weiler
|
aed2b1031c
|
Just fucking initialize everything
|
2013-04-25 17:11:15 +00:00 |
|
Dale Weiler
|
68ca2c4962
|
Pushing the -fexpressions-for-builtins stuff and the modff for catching fractional-part builtin numbers.
|
2013-04-25 17:08:02 +00:00 |
|
Wolfgang Bumiller
|
ce73074d51
|
this allows builtin numbers to be constant expressions, not just constants
|
2013-04-25 18:47:54 +02:00 |
|
Dale Weiler
|
9fee84f250
|
less globals
|
2013-04-25 12:08:13 +00:00 |
|
Dale Weiler
|
785ab7c072
|
No more globals for codegen
|
2013-04-25 09:35:30 +00:00 |
|
Wolfgang Bumiller
|
3a4aba0b31
|
Grrrr
|
2013-04-24 17:47:42 +02:00 |
|
Wolfgang Bumiller
|
66305c676a
|
Allow string concatenation in the parser as well, for now only for immediate strings and __FUNC__, maybe later -fpermissive or somethign could allow it on const-delcared string variables
|
2013-04-24 17:27:04 +02:00 |
|
Wolfgang Bumiller
|
dcd65f18f8
|
recognize the simple case of __FUNC__ in the parser
|
2013-04-24 11:21:10 +02:00 |
|
Dale Weiler
|
8bee9a6819
|
fix the intrinsic fail
|
2013-04-24 09:18:24 +00:00 |
|
Dale Weiler
|
dc8523c650
|
Merge branch 'master' into cooking
|
2013-04-24 01:46:53 +00:00 |
|
Dale Weiler
|
489ad486bc
|
Get it compiling in visual studio again.
|
2013-04-24 01:43:53 +00:00 |
|
Dale Weiler
|
10738da2fb
|
Make it compile as C++ code too
|
2013-04-23 22:50:47 +00:00 |
|
Wolfgang Bumiller
|
f6d554874b
|
initialize the vector member array so that 'cleanup' won't delete uninitialized pointers
|
2013-04-23 16:54:05 +02:00 |
|
Dale Weiler
|
160e7cf7ee
|
Remove trailing whitespace
|
2013-04-21 10:24:55 +00:00 |
|
Wolfgang Bumiller
|
46752af74b
|
parser_const_string now uses hashtables; hashtables may want to dup an empty string without it becoming NULL - also replacing ir_strdup with the new util_ one
|
2013-04-17 18:23:30 +02:00 |
|
Dale Weiler
|
1f0a1b8140
|
Perliminary parser reworking, required for the proposed multithreading.
|
2013-04-17 00:52:52 +00:00 |
|
Wolfgang Bumiller
|
1f667c4b35
|
ast_expression_delete: delete varparam if it is set - fixes another leak
|
2013-04-15 21:05:59 +02:00 |
|
Dale Weiler
|
ef528d6710
|
Added tracing to strdup for allocations, fixed some memleaks, this isn't pretty (trying to track down some weird memory leak issues)
|
2013-04-14 23:51:16 +00:00 |
|
Dale Weiler
|
cbeac3e5f2
|
Implemented smart intrinsic / builtin system. When you use trivial math functions like "pow", if they don't exist as a builtin, the compiler will implement its own versions, likewise, if a compiler builtin depends on a function that exists, it will use it, likewise if it doesn't it will implement it. If you explicitally use __builtin_ (prefixed) versions, the compiler again will select the best option it can, be it a combination of both builtins and compiler builtins, all compiler builtins, OR, all builtins (most performant).
|
2013-03-09 08:53:39 +00:00 |
|
Dale Weiler
|
d8d78f61a7
|
Implemented "reverse" enum attribute, e.g enum : reverse { A, B, C, D } -> A,B,C,D = 3,2,1,0
|
2013-03-09 05:07:14 +00:00 |
|
Dale Weiler
|
662612d66f
|
Better diagnostic when "floor" cannot be found.
|
2013-03-08 09:23:35 +00:00 |
|
Dale Weiler
|
f19adcd1b3
|
Implemented __builtin_mod, and % operator. Added floor builtin to the standalone executor. Mod works so long as the compiler can find a suitable definition of "float floor(float)", otherwise it prints a diagnostic and gives up (original id1 Quake had floor so we can depend on it).
|
2013-03-08 09:17:54 +00:00 |
|
Dale Weiler
|
b971ddec3a
|
Implemented concept of enumeration attributes (can be further extended, but currently only "flag" is implemented as an attribute). An enumeration with a flag attribute will act as a "flagged enumeration", one that automatically handles exponentiation of the constants defined inside it, i.e enum : flag { A, B, C }, A,B,C will equal 2, 4, 8.
|
2013-03-08 08:01:45 +00:00 |
|
Dale Weiler
|
479f3b9343
|
Implemented __builtin_exp
|
2013-03-08 03:46:25 +00:00 |
|
Dale Weiler
|
12340a6bd0
|
Actually generate an ast_call for __builtin_pow for the ** operator, otherwise the operator yeilds a ast_function, making "a ** b" not work, but since it's a function, allows **(a, b). Also added tests for exponentiation operator.
|
2013-03-07 23:05:40 +00:00 |
|