Commit Graph

160 Commits

Author SHA1 Message Date
Andrew Kelley
2419f0c914 IR: support maybe defers 2016-12-19 17:25:09 -05:00
Andrew Kelley
09c34352f8 IR: if and switch guaranteed compile time if target expr is 2016-12-19 00:04:51 -05:00
Andrew Kelley
a71fbe49cb IR: add FnProto instruction 2016-12-18 19:40:26 -05:00
Andrew Kelley
b59841a80f IR: fix err variable in ErrOkOr instruction 2016-12-18 13:20:19 -05:00
Andrew Kelley
d245fabb80 IR: consolidate Ref and PrefixOpAddressOf instructions 2016-12-17 22:00:55 -05:00
Andrew Kelley
12fcbecbf8 IR: add more instructions
* MaybeWrap
 * TestErr
 * UnwrapErrCode
 * UnwrapErrPayload
 * ErrUnionTypeChild
 * ErrWrapCode
 * ErrWrapPayload
2016-12-17 16:16:17 -05:00
Andrew Kelley
647d13168a IR: implement maybe return expression 2016-12-13 19:36:56 -05:00
Andrew Kelley
3f3630d7e3 IR: implement the rest of the builtin functions
* returnAddress
 * frameAddress
 * addWithOverflow
 * subWithOverflow
 * mulWithOverflow
 * shlWithOverflow
 * alignOf
2016-12-13 04:30:41 -05:00
Andrew Kelley
a6d2bdf605 IR: implement breakpoint builtin 2016-12-13 01:48:40 -05:00
Andrew Kelley
76a849b1f2 IR: implement memberCount builtin 2016-12-12 01:59:55 -05:00
Andrew Kelley
ef63bc9cca IR: implement memcpy, memset, and slice expression 2016-12-12 00:31:35 -05:00
Andrew Kelley
fb21570630 IR: implement alloca builtin 2016-12-11 19:43:06 -05:00
Andrew Kelley
9b17c0ff7f IR: implement intType builtin
and int type field access
and fix compile time bool not
2016-12-11 16:30:01 -05:00
Andrew Kelley
3429639e84 IR: implement truncate builtin 2016-12-11 15:31:07 -05:00
Andrew Kelley
433c17aeb1 IR: implement divExact builtin 2016-12-11 14:27:37 -05:00
Andrew Kelley
8fcb1a141b IR: implement fence and cmpxchg builtins 2016-12-11 04:06:07 -05:00
Andrew Kelley
10cea15cc3 IR: implement embedFile builtin 2016-12-11 00:43:23 -05:00
Andrew Kelley
2dd85d52cc IR: fix implementation of parseh
libc hello world works now
2016-12-11 00:13:43 -05:00
Andrew Kelley
d4a93dbac5 IR: omit debug safety checks in for loop codegen 2016-12-08 02:09:26 -05:00
Andrew Kelley
7d0fb281fe IR: a bunch of fixes and some additions
* add errorName builtin function
 * add assertion for generated memcopy being on correct types
 * respect handle_is_ptr for constant values
 * fix return codegen to respect sret semantics
 * remove ArrayLen IR instruction; we already have StructFieldPtr
   with "len" field
 * fix gen_const_val for pointers inside aggregates
2016-12-08 01:52:57 -05:00
Andrew Kelley
a148096e6a IR: add compileError builtin fn 2016-12-07 11:29:44 -05:00
Andrew Kelley
0ad580f001 IR: add minValue, maxValue, and negation 2016-12-07 01:23:38 -05:00
Andrew Kelley
0c531d447d remove the boolean argument from setFnTest 2016-12-05 21:39:15 -05:00
Andrew Kelley
24048b2af6 IR: implement break and continue 2016-12-05 18:43:16 -05:00
Andrew Kelley
9f23475b17 add missing copyright notices 2016-12-04 21:06:13 -05:00
Andrew Kelley
2f259b8176 IR: re-organize where state goes to prepare for generics
* Rip out legacy code for generics
 * put scope in instruction instead of AST nodes
 * separate top level decl stuff from AST nodes
   - remove the assumption that there is a 1:1 correspondence
     between an output instruction and an AST node
   - This way we won't have to clone AST nodes for generics.
2016-12-04 03:40:40 -05:00
Andrew Kelley
eb5693d91f IR: function call porting progress
also implemented container init
generics is still todo
2016-11-28 02:40:01 -05:00
Andrew Kelley
d9329ed389 IR: add ref instruction 2016-11-27 01:22:30 -05:00
Andrew Kelley
84f7805029 IR: support import builtin function 2016-11-26 20:52:22 -05:00
Andrew Kelley
24b65e41ee IR: add error for non static const on switch case range 2016-11-26 04:37:34 -05:00
Andrew Kelley
bbf785bc1d IR: switch expression works with numbers 2016-11-26 00:25:48 -05:00
Andrew Kelley
0c22358cc1 IR: generating a switch statement 2016-11-24 02:44:03 -05:00
Andrew Kelley
a2257e4b81 IR: implement setFnVisible builtin 2016-11-21 15:36:25 -05:00
Andrew Kelley
052cd44588 IR: fix codegen for arrays 2016-11-21 15:01:21 -05:00
Andrew Kelley
67d565136a IR: implement ctz and clz builtins 2016-11-21 13:27:44 -05:00
Andrew Kelley
71d95c6597 IR: support unwrap maybe operation 2016-11-21 03:08:24 -05:00
Andrew Kelley
b47e2fa060 IR: support sizeOf builtin 2016-11-20 02:11:36 -05:00
Andrew Kelley
6c8b919d17 IR: implement ir_print for maybe type 2016-11-19 01:56:48 -05:00
Andrew Kelley
2f8dd46174 IR: error for uncasted null lit variable 2016-11-19 01:53:14 -05:00
Andrew Kelley
8a81f8aa13 IR: implement compileVar builtin and more
* implicit array to slice cast
 * fix if statements at global scope
 * implement array type IR
2016-11-19 01:39:51 -05:00
Andrew Kelley
bf7cde62c5 IR: support setDebugSafety builtin function 2016-11-18 20:57:27 -05:00
Andrew Kelley
62d0d88b56 IR: pointers to constants don't copy data 2016-11-17 04:00:02 -05:00
Andrew Kelley
2edc6c1a3f IR: add assembly instruction 2016-11-13 21:07:30 -05:00
Andrew Kelley
a5c9da0de2 IR: gen string literal 2016-11-10 00:41:17 -05:00
Andrew Kelley
05de70017d IR: support slice types 2016-11-07 18:58:01 -05:00
Andrew Kelley
a2e3293930 WIP moving all analysis to IR 2016-11-04 15:36:30 -04:00
Andrew Kelley
c8333d0cc9 add concept of inline for, inline while, inline var 2016-11-03 14:13:57 -04:00
Andrew Kelley
1a0111d4c3 *WIP* 2016-10-30 02:46:16 -04:00
Andrew Kelley
8e2804efa1 IR: ability to assign to an array at runtime 2016-10-28 02:32:36 -04:00
Andrew Kelley
114049a220 IR analysis unrolls a complicated loop 2016-10-27 03:28:29 -04:00
Andrew Kelley
bfcd6648e7 IR can inline loops 2016-10-27 01:08:06 -04:00
Andrew Kelley
44d6f8ffd8 IR supports variable assignment 2016-10-23 01:33:23 -04:00
Andrew Kelley
d7a2b05a81 IR: introduce concept of lvalues 2016-10-23 00:21:29 -04:00
Andrew Kelley
682511d1b2 add variable declaration IR 2016-10-18 03:00:48 -04:00
Andrew Kelley
ac6d1674e3 IR working for if statements 2016-10-16 02:19:01 -04:00
Andrew Kelley
ce3c52471d IR if statements WIP 2016-10-11 23:45:33 -04:00
Andrew Kelley
77ae3442ef explicit casting works with IR 2016-10-09 02:20:01 -04:00
Andrew Kelley
07fe60ded1 IR in 2 passes 2016-10-06 01:09:01 -04:00
Andrew Kelley
cd1bd78aa9 simple add function works with IR 2016-10-02 23:48:48 -04:00
Andrew Kelley
633781e31d empty function compiles successfully with IR 2016-09-30 20:12:00 -04:00