Commit Graph

1001 Commits (664b41af65d3c9bbc8e09ffcaa91d404fe87d7a0)

Author SHA1 Message Date
Andrew Kelley 443e14afbd IR: fix errorName builtin 2016-12-10 17:11:35 -05:00
Andrew Kelley 0ab953acb2 IR: better array len instruction
reference the "len" field directly instead of looking it up by
name since we already know exactly where the field metadata is
2016-12-08 02:15:48 -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 5e4ee659a6 delete unused builtin function stuff 2016-12-07 00:35:39 -05:00
Andrew Kelley c0b2fe4d6c IR: add error for assigning runtime value to inline var 2016-12-07 00:22:14 -05:00
Andrew Kelley 7d9fa01ed5 IR: implement compile time eval unwrap maybe 2016-12-06 22:04:55 -05:00
Andrew Kelley 6ed202ab16 IR: implement defer 2016-12-06 21:26:17 -05:00
Andrew Kelley 0c531d447d remove the boolean argument from setFnTest 2016-12-05 21:39:15 -05:00
Andrew Kelley bed83bc5a1 IR: implement short circuit bool or, and 2016-12-05 19:12:19 -05:00
Andrew Kelley 24048b2af6 IR: implement break and continue 2016-12-05 18:43:16 -05:00
Andrew Kelley 0541532ed6 IR: implement generic function calls 2016-12-05 05:12:44 -05:00
Andrew Kelley 363606d87b IR: inline function evaluation works on generic functions 2016-12-05 01:08:17 -05:00
Andrew Kelley 25a89e7a36 IR: compile time function evaluation 2016-12-04 23:52:43 -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 f6cbb73c74 rewrite scope implementation
* now there are not extra unused hash tables
 * each variable declaration opens a new scope inside a function
2016-12-01 21:08:12 -05:00
Andrew Kelley c6ace9720c rename BlockContext to Scope 2016-12-01 13:55:56 -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 9e7c475979 IR: silence irrelevant function prototype errors 2016-11-27 01:45:29 -05:00
Andrew Kelley e5325c7ef3 IR: fix not checking for error in unary bool not 2016-11-27 01:31:09 -05:00
Andrew Kelley d9329ed389 IR: add ref instruction 2016-11-27 01:22:30 -05:00
Andrew Kelley bd4d4ee51e IR: detect error for exceeding branch quota 2016-11-27 00:14:19 -05:00
Andrew Kelley 1fba7f3696 IR: add inline goto 2016-11-26 23:33:07 -05:00
Andrew Kelley b3ff28189c IR: fix crash when duplicate label error 2016-11-26 23:24:43 -05:00
Andrew Kelley a52ede6494 IR: support goto and labels 2016-11-26 23:16:38 -05:00
Andrew Kelley a3db60b5d7 IR: fix parsing while loop 2016-11-26 21:16:36 -05:00
Andrew Kelley 84f7805029 IR: support import builtin function 2016-11-26 20:52:22 -05:00
Andrew Kelley 4619b5de06 IR: support inline switch 2016-11-26 15:38:07 -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 697c768730 IR: support switch with range 2016-11-26 04:03:39 -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 e80e8a8099 IR: fix detection of invalid codegen 2016-11-21 13:53:08 -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 19037014e5 IR: more maybe type support 2016-11-18 23:52:42 -05:00
Andrew Kelley 31565efe9d IR: fix decl references pointerness 2016-11-18 22:44:59 -05:00
Andrew Kelley d94cb0566b IR: correctly codegening memset and memcpy 2016-11-18 22:24:41 -05:00
Andrew Kelley bf7cde62c5 IR: support setDebugSafety builtin function 2016-11-18 20:57:27 -05:00
Andrew Kelley ed31ae8867 IR: inline assembly working 2016-11-18 02:07:40 -05:00
Andrew Kelley c3b603fdf9 remove AST cloning code and add AST render for while loops 2016-11-17 21:17:58 -05:00