Commit Graph

328 Commits

Author SHA1 Message Date
Andrius Štikonas 185ef7a7c2 Improve handling of compound assignment operators.
Previously, compound assignment operators were replaced in preprocessor.
This only worked for simple cases where we only had 1-token variable.

This commit switches to proper implementation in the parser.
2021-11-15 00:06:08 +00:00
Andrius Štikonas 511601bcd9 Revert "Add support for pre-increment and pre-decrement operators."
This reverts commit ab49bcafa4.
2021-11-13 20:55:11 +00:00
Andrius Štikonas ab49bcafa4 Add support for pre-increment and pre-decrement operators.
At the moment there is a limitation on only one unary operator,
so things like *++p wouldn't work but ++*p would work.
2021-11-12 19:37:54 +00:00
Andrius Štikonas ba51f3dcc8 Fix a crash. 2021-11-11 23:54:44 +00:00
Andrius Štikonas b2414918cc Add support for assignment operators. 2021-11-11 21:18:14 +00:00
Andrius Štikonas 575f91cac1 Fix typos / add copyright. 2021-11-11 15:21:28 +00:00
Jeremiah Orians a025387b81
Catch walking off the end of a variable dereference 2021-11-11 09:48:26 -05:00
Andrius Štikonas 6ebe45f369 Implement variable dereferencing. 2021-11-10 00:14:30 +00:00
Jeremiah Orians 6d4d6c56ea
Catch the special case of attempting to remove a NULL macro token 2021-11-07 19:49:57 -05:00
Jeremiah Orians a09d9dcfd8
Add basic test for multi-dimensional arrays 2021-11-07 19:21:41 -05:00
Andrius Štikonas 546cb1ac95 Add support for char** arrays. 2021-11-07 21:18:59 +00:00
Jeremiah Orians cdb09b1608
Catch trying to expand nulls 2021-11-07 00:19:20 -04:00
Jeremiah Orians ff65efa99e
Catch lookup_macro being passed NULL 2021-11-06 22:49:34 -04:00
Jeremiah Orians 876ebe7c68
catch half broken #define (statements 2021-11-06 22:36:02 -04:00
Jeremiah Orians 9997d7a275
catch garbage at the end of a #define 2021-11-06 21:55:22 -04:00
Andrius Štikonas 4c310a3f6d Add a missing newline. 2021-11-02 22:04:11 +00:00
Andrius Štikonas 2da7b3f9a0 Implement #undef. 2021-11-02 22:04:11 +00:00
Andrius Štikonas e3651879a5 Define arch specific variables. 2021-11-01 20:50:11 +00:00
Andrius Štikonas de8f47fa9c Add support for evaluating macro variables. 2021-11-01 20:49:11 +00:00
Andrius Štikonas 7de9e684a6 Implement #error statement in preprocessor. 2021-10-31 23:33:00 +00:00
Andrius Štikonas 7a7bfd4529 Implement #ifdef and #ifndef. 2021-10-30 22:51:17 +01:00
Andrius Štikonas 945743e2c6 Add support for empty defines. 2021-10-30 22:16:24 +01:00
Jeremiah Orians 6c59218781
Clean up RISCV tests 2021-10-28 21:45:32 -04:00
Jeremiah Orians 54e5daace4
Update test1000 sha256sum 2021-10-28 21:35:06 -04:00
Andrius Štikonas a900bc6632 Implement C99 negation.
!a is 1 if a == 0 and 0 otherwise.
2021-10-29 00:52:29 +01:00
Jeremiah Orians d8fb878d7a
Correct #define behavior inside of #if/#elif/#else/#endif blocks 2021-10-27 22:22:49 -04:00
Jeremiah Orians 55929d4ddf
Catch segfault for half defined #defines and provide a warning for #unkowns 2021-10-21 21:27:16 -04:00
Jeremiah Orians 67786705a5
Update M2libc for more efficient RISC-V syscalls 2021-10-21 21:10:53 -04:00
Jeremiah Orians ffe4e5f66e
better validate arguments passed 2021-10-04 20:49:44 -04:00
Jeremiah Orians ae9e700592
Release_1.9.0 2021-10-03 09:34:22 -04:00
Andrius Štikonas 56ee526c4c Implement support for large immediates on RISC-V. 2021-10-03 11:37:03 +01:00
Jeremiah Orians 5e74995c13
Catch truncated function calls and truncated array statements 2021-10-02 22:02:39 -04:00
Jeremiah Orians 0577243444
Fix Problem with global arrays #18 2021-10-02 10:38:04 -04:00
Jeremiah Orians 4af9b79c1b
restore removed test checksums 2021-10-02 08:24:07 -04:00
Andrius Štikonas bbf67601e1 Add tests for riscv64. 2021-10-02 13:13:15 +01:00
Jeremiah Orians 8c3fa49936
Breaking update in blood-elf 2021-10-02 07:09:46 -04:00
Andrius Štikonas ae48dbd6cb Add riscv64 port. 2021-10-02 11:59:21 +01:00
Jeremiah Orians 7fb9d682ec
Update M2libc to enable RISC-V Development 2021-09-30 20:10:28 -04:00
Jeremiah Orians 745998ac13
Fix global array initialization to allocate the correct amount of memory 2021-06-26 11:58:13 -04:00
Jeremiah Orians 99df87bc0d
Breakup program to reduce complexity and risk of errors 2021-06-26 11:51:54 -04:00
Jeremiah Orians b37dfc7b12
Report proper error message for negative global array values. Thank you melg8 2021-06-26 10:53:45 -04:00
Jeremiah Orians 3bac25a1ac
Fix issues with HACKING document 2021-06-23 20:12:20 -04:00
Jeremiah Orians 51dfec1791
Fixed Global buffer overflow in collect_weird_string thanks to Melg8 2021-06-23 18:57:56 -04:00
Jeremiah Orians a3c14bcd1b
Fixed Memory leak, thanks melg8 2021-06-23 07:58:11 -04:00
Jeremiah Orians 8bc09f2b2e
Fixed hang on large global arrays. Thanks melg8 2021-06-23 07:32:40 -04:00
Jeremiah Orians a925f90c3b
Preparing for next release cycle 2021-06-08 23:10:22 -04:00
Jeremiah Orians 0c1c22bc2f
Release_1.8.0 2021-06-08 23:05:36 -04:00
Jeremiah Orians da542698e7
Fix all special cases where line number was wrong 2021-05-28 23:27:17 -04:00
Jeremiah Orians cece07145c
Update checksums to reflect new cc_types.c code in test1000 2021-05-02 10:52:29 -04:00
Jan (janneke) Nieuwenhuizen d223581d4e Skip "extern" in type definitions.
This makes supporting gcc >= 10 easier in GNU Mes.

* cc_types.c (type_name): Skip "extern".
2021-05-02 16:14:53 +02:00