71 Commits

Author SHA1 Message Date
Andrew Kelley
419e75eb23 remove volatileStore builtin; add volatile pointers
closes #238
2017-02-04 21:49:27 -05:00
Andrew Kelley
e00eec1c29 typedefs work for binary math operations 2017-02-03 12:09:13 -05:00
Andrew Kelley
71d335e5cc implement packed structs
closes #183
2017-02-03 11:39:24 -05:00
Andrew Kelley
c0b37e8514 add try expression
See #83
2017-02-02 17:09:27 -05:00
Andrew Kelley
8b1c6d8b76 fix ability to call method on variable at compile time 2017-02-02 15:03:21 -05:00
Andrew Kelley
2b88441295 fix behavior when initializing struct with undefined 2017-02-02 14:55:01 -05:00
Andrew Kelley
b78c91951a remove ability to mark if and switch as inline
if and switch are implicitly inline if the condition/target
expression is known at compile time.

instead of:

```
inline if (condition) ...
inline switch (target) ...
```

one can use:

```
if (comptime condition) ...
switch (comptime target) ...
```
2017-02-02 13:23:18 -05:00
Andrew Kelley
88a253c64d fix crash when passing void to var args function
closes #235
2017-01-31 15:50:38 -05:00
Andrew Kelley
b258fdb532 add integer literal to pointer explicit cast
closes #227
2017-01-31 13:38:04 -05:00
Andrew Kelley
d2b94afaf2 fix compile time initialization of array with undefined 2017-01-29 23:35:34 -05:00
Andrew Kelley
3caf6bacdc fix sometimes using wrong outer scope for generating defers 2017-01-29 21:57:49 -05:00
Andrew Kelley
c75e58ffe6 fix behavior for comptime and runtime basic block phi 2017-01-29 19:10:56 -05:00
Andrew Kelley
e0a422ae7e fix runtime branching tricking the comptime evaluation
closes #167
2017-01-26 15:34:36 -05:00
Andrew Kelley
4b3f18de3c printf var args proof of concept
See #167

Need to troubleshoot when we send 2 slices to printf. It goes
into an infinite loop.

This commit introduces 4 builtin functions:

 * `@isInteger`
 * `@isFloat`
 * `@canImplictCast`
 * `@typeName`
2017-01-24 02:02:48 -05:00
Andrew Kelley
32d8686da8 various fixes
* comptime expression is a block expression as it should be
 * fix var args when number of args passed is 0
 * implement const value equality for structs
 * fix indent when rendering container decl AST
 * IR: prevent duplicate generation of code when it is partially
   compile-time evaluated
 * implement compile time struct field pointer evaluation
 * fix compile time evaluation of slicing
2017-01-23 23:30:20 -05:00
Andrew Kelley
17cb85dfb8 basic support for functions with variable length arguments
See #77
2017-01-23 16:40:17 -05:00
Andrew Kelley
e5b1758010 remove staticEval builtin in favor of comptime expression 2017-01-22 23:21:00 -05:00
Andrew Kelley
47cf8520ad use comptime instead of inline for var and params
See #221
2017-01-22 19:51:37 -05:00
Andrew Kelley
cf3b9f4f5b add test for compile time bool not operator
closes #205
2017-01-16 17:15:42 -05:00
Andrew Kelley
0caee421e3 ability to equality compare with null
closes #106
2017-01-16 16:39:31 -05:00
Andrew Kelley
98faf4f749 add test for short-circuit AND and OR assignment
closes #31
2017-01-16 14:58:22 -05:00
Andrew Kelley
4cbeb87e83 fix handling of const values for 2d arrays 2017-01-16 12:42:46 -05:00
Andrew Kelley
8106f9846a fix enum codegen and implement comptime switch var on enums 2017-01-15 22:16:39 -05:00
Andrew Kelley
6caf32195a pass unnecessary if statement test 2017-01-08 22:25:38 -05:00
Andrew Kelley
e621ad014e pass cannot assign to constant test 2017-01-05 18:50:36 -05:00
Andrew Kelley
3b5e26b7f7 self hosted tests import std library 2017-01-05 03:57:48 -05:00
Andrew Kelley
6ec6589bd8 IR: pass MT19937_64 test 2017-01-05 00:59:37 -05:00
Andrew Kelley
69132bdeda IR: progress toward compiling standard library
* comptime fn call
 * is_comptime doesn't count as an instruction dependency
 * update more std code to latest zig
2016-12-31 17:10:29 -05:00
Andrew Kelley
5f89393acb IR: implement binary not instruction 2016-12-31 02:23:39 -05:00
Andrew Kelley
6bbee194b9 IR: better basic block dependency detection 2016-12-30 18:34:05 -05:00
Andrew Kelley
94f977a6c1 IR: pass genericFnWithImplicitCast test 2016-12-28 01:35:13 -05:00
Andrew Kelley
f6ac2fa70e IR: pass pointerToVoidReturnType test 2016-12-28 01:31:46 -05:00
Andrew Kelley
25a5fc32fe IR: pass passSliceOfEmptyStructToFn test 2016-12-28 01:15:09 -05:00
Andrew Kelley
15f843e70f IR: pass castSliceToU8Slice test 2016-12-26 17:11:36 -05:00
Andrew Kelley
66a83d8738 IR: pass intToEnum test 2016-12-26 16:34:18 -05:00
Andrew Kelley
c8a7ab7eff IR: pass cStringConcatenation test 2016-12-26 16:04:14 -05:00
Andrew Kelley
7504be923b IR: pass pointerComparison test 2016-12-26 15:49:03 -05:00
Andrew Kelley
735cdbfdac IR: pass intToPtrCast test 2016-12-26 15:45:50 -05:00
Andrew Kelley
aee7ad3de2 IR: port all passing tests over 2016-12-26 03:44:59 -05:00
Andrew Kelley
73a751911e IR: pass staticEvalListInit test 2016-12-26 03:16:19 -05:00
Andrew Kelley
6ed835ca67 IR: port more tests 2016-12-26 03:05:33 -05:00
Andrew Kelley
3ef6663b72 IR: pass genericMallocFree test 2016-12-26 03:02:20 -05:00
Andrew Kelley
110a6f39ca IR: pass explicitCastMaybePointers test 2016-12-26 02:53:42 -05:00
Andrew Kelley
6c9ec3688e IR testing: rename cases3 dir to cases 2016-12-26 02:49:30 -05:00
Andrew Kelley
66777ccd7d IR: port more tests 2016-12-26 02:47:52 -05:00
Andrew Kelley
4664f793dc IR: pass enumToInt test 2016-12-26 02:36:04 -05:00
Andrew Kelley
1b5d1877ae IR: port more tests 2016-12-26 01:37:33 -05:00
Andrew Kelley
2b5c7b1b8e IR: port more tests 2016-12-25 18:36:45 -05:00
Andrew Kelley
8dc45bc505 port more tests 2016-12-22 10:10:04 -05:00
Andrew Kelley
ba8af0f1e2 IR: fix missing implicit casts in init expressions
and implement runtime struct init instruction
2016-12-22 09:35:07 -05:00