Commit Graph

1266 Commits

Author SHA1 Message Date
Andrew Kelley
d8f6388b63 if statements can be const expr evaluated
also introduce error for unnecessary if statement
but if the condition depends on a compile variable, then
the if statement is OK
2016-02-09 18:53:28 -07:00
Andrew Kelley
f45c374664 fix -dynamic-linker arg to ld when not overridden 2016-02-09 16:55:23 -07:00
Andrew Kelley
207862647c std: fix parse_u64 implementation and add test
also codegen implement comparision with pure errors
2016-02-09 09:51:25 -07:00
Andrew Kelley
1d92700d08 fix build with GCC 2016-02-09 08:46:55 -07:00
Andrew Kelley
e18170ee0b support overriding the dynamic linker argument to ld 2016-02-08 22:11:09 -07:00
Andrew Kelley
430d0dfcb2 support static linking against libc 2016-02-08 00:50:51 -07:00
Andrew Kelley
42fe4e3cc8 remove ptr field access of arrays
use &array[0] instead
2016-02-07 15:43:19 -07:00
Andrew Kelley
26ea20d88f implement @const_eval
closes #73
2016-02-07 15:11:20 -07:00
Andrew Kelley
049e9e5819 add debug info for loop variables
closes #112
2016-02-07 12:58:09 -07:00
Andrew Kelley
65a03c5859 implement %defer and ?defer
see #110
2016-02-06 16:36:49 -07:00
Andrew Kelley
34a7e6fdb3 codegen: return respects unconditional defer
See #110
2016-02-06 01:18:39 -07:00
Andrew Kelley
ec33e5a638 simple unconditional defer support
See #110
2016-02-06 01:00:29 -07:00
Andrew Kelley
6a2ede5a6e parsing code for defer and more
* disable goto and label support see #44
 * refactor the way block contexts work
2016-02-05 23:20:34 -07:00
Andrew Kelley
4208435f66 add nonnull to functions with pointer return type 2016-02-05 14:58:18 -07:00
Andrew Kelley
2ee80858b4 codegen: use gen_index for nonnull attribute
also put nonnull on sret params

closes #82
2016-02-05 14:48:23 -07:00
realazthat
54fbe7560e Added code for generating nonnull attributes 2016-02-05 16:29:26 -05:00
Andrew Kelley
663a1d0cd5 switch trap in debug mode when no prong found 2016-02-04 17:43:57 -07:00
Andrew Kelley
093e0d1bb0 support variable in switch expression prongs
See #43
2016-02-04 17:21:08 -07:00
Andrew Kelley
a4cba900e5 no namespace required when switching on enum
See #43
2016-02-04 16:09:06 -07:00
Andrew Kelley
fcbeaddbb2 codegen: fix switch expressions for enums with payloads 2016-02-04 15:26:27 -07:00
Andrew Kelley
b87d0abefe fix debug info for bool type 2016-02-04 14:02:37 -07:00
Andrew Kelley
25e74cb385 ability to explicitly cast bool to int 2016-02-04 12:59:06 -07:00
Andrew Kelley
32642ac9cb for loop supports break and continue
See #51
2016-02-04 02:49:12 -07:00
Andrew Kelley
fdadab40c6 implement constant values for enums with payload 2016-02-04 02:11:50 -07:00
Andrew Kelley
1f9734d1ee allow defining errors with the same name
they get the same value, too.
2016-02-04 00:58:45 -07:00
Andrew Kelley
a6d4335217 fix running tests when linking with libc 2016-02-03 23:07:55 -07:00
Andrew Kelley
2521afef69 add ability to call function pointer field
also introduce the self hosted tests

closes #108
2016-02-03 21:34:09 -07:00
Andrew Kelley
39223c1847 test runner prints test names 2016-02-03 18:38:09 -07:00
Andrew Kelley
11a0644365 basic support for building a test target 2016-02-03 18:02:01 -07:00
Andrew Kelley
afdb47c32d fix debug symbols for byval arguments 2016-02-03 03:32:45 -07:00
Andrew Kelley
f2fe231ddf add @compile_var("is_release") 2016-02-03 02:21:28 -07:00
Andrew Kelley
b28f7d0808 types sized and aligned with LLVM target data layout API 2016-02-03 02:01:42 -07:00
Andrew Kelley
b04e64d300 add @compile_var builtin and "is_big_endian" compile var 2016-02-02 21:46:53 -07:00
Andrew Kelley
8058b5e0a9 fix crash when incomplete struct used as argument
closes #107
2016-02-02 19:09:53 -07:00
Andrew Kelley
7af59c76e4 build: fix libc path finding 2016-02-02 15:04:14 -07:00
Andrew Kelley
5824b15249 codegen: ?? prefix operator causes trap in debug mode 2016-02-02 12:37:19 -07:00
Andrew Kelley
5ad84e4724 unreachable causes a trap in debug mode 2016-02-02 02:43:33 -07:00
Andrew Kelley
d8d0f65654 codegen: avoid table lookup for field access
closes #74
2016-02-01 20:17:33 -07:00
Andrew Kelley
a2035eefba codegen: avoid table lookup in assembly expression 2016-02-01 20:13:36 -07:00
Andrew Kelley
74eaf43768 codegen: avoid a table lookup 2016-02-01 20:05:50 -07:00
Andrew Kelley
06f6acb4b1 inline is a keyword instead of a directive 2016-02-01 17:25:38 -07:00
Andrew Kelley
108af28c1b optimization: avoid codegening unused functions 2016-02-01 02:34:01 -07:00
Andrew Kelley
179443bd61 add ?? prefix operator 2016-02-01 02:11:46 -07:00
Andrew Kelley
b3459f64e7 parseh understands macros which alias global fn ptr vars 2016-02-01 02:00:25 -07:00
Andrew Kelley
675de74412 codegen: fix negation for floats 2016-01-31 21:32:05 -07:00
Andrew Kelley
a4e19f94f1 support casting between floats 2016-01-31 21:22:05 -07:00
Andrew Kelley
e74a7264ad support casting between int and float types 2016-01-31 21:05:17 -07:00
Andrew Kelley
954afe5d9a fix C interaction with maybe function pointers
See #88
2016-01-31 20:15:47 -07:00
Andrew Kelley
0ac714f0d6 add --library-path cli option 2016-01-31 18:32:07 -07:00
Andrew Kelley
1053172854 parseh handles typedef void better
and introduce c_long_double type
2016-01-31 15:44:02 -07:00