Commit Graph

410 Commits (f47dea2a2ee5e2351736fa416d82c1ed38bfe0f1)

Author SHA1 Message Date
Andrew Kelley f47dea2a2e IR: support compile time global pointer reinterpret
this required moving the place we store types to ConstExprValue
2016-12-25 04:15:23 -05:00
Andrew Kelley 6f91fb4c37 IR: support const ref 2016-12-22 10:39:10 -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
Andrew Kelley ed962d9d21 IR: port another test 2016-12-22 08:48:08 -05:00
Andrew Kelley 3e25ff65c3 IR: fix switch enum variable for void enum field 2016-12-22 08:05:37 -05:00
Andrew Kelley dab3ddab45 IR: port more tests 2016-12-22 01:42:30 -05:00
Andrew Kelley 5a71718757 IR: port more tests 2016-12-22 01:20:08 -05:00
Andrew Kelley 5fc95c2a53 IR: port some tests 2016-12-22 00:55:21 -05:00
Andrew Kelley 46033a2128 pass void parameters test 2016-12-22 00:46:17 -05:00
Andrew Kelley 23bebdbcd5 IR: port some tests 2016-12-22 00:20:14 -05:00
Andrew Kelley 56cc2e2b24 migrate all the temporary tests to new test file 2016-12-22 00:12:27 -05:00
Andrew Kelley 9b61682037 IR: implement runtime enum init and switch on enum with variable 2016-12-21 21:49:05 -05:00
Andrew Kelley 1f6dacbb2f IR: enum init support 2016-12-20 01:50:32 -05:00
Andrew Kelley 2419f0c914 IR: support maybe defers 2016-12-19 17:25:09 -05:00
Andrew Kelley 09d50e35a4 IR: support error defers 2016-12-19 16:45:15 -05:00
Andrew Kelley 14422e0312 organize tests 2016-12-19 00:53:18 -05:00
Andrew Kelley 6b2d06710c IR: start a new passing self hosted test suite 2016-12-19 00:41:37 -05:00
Andrew Kelley e50ced44a2 IR: all structs anonymous 2016-12-18 16:56:50 -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 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 6feae8a4e9 IR: support error union type 2016-12-10 18:38:53 -05:00
Andrew Kelley 443e14afbd IR: fix errorName builtin 2016-12-10 17:11:35 -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 0ad580f001 IR: add minValue, maxValue, and negation 2016-12-07 01:23:38 -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 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 25a89e7a36 IR: compile time function evaluation 2016-12-04 23:52:43 -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 a52ede6494 IR: support goto and labels 2016-11-26 23:16:38 -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 697c768730 IR: support switch with range 2016-11-26 04:03:39 -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 bf7cde62c5 IR: support setDebugSafety builtin function 2016-11-18 20:57:27 -05:00
Andrew Kelley c8333d0cc9 add concept of inline for, inline while, inline var 2016-11-03 14:13:57 -04:00
Andrew Kelley b581da41f8 remove compiler directives
* add `setFnTest`, `setFnVisible`, `setFnStaticEval`,
   `setFnNoInline` builtin functions to replace previous
   directive functionality
 * add `coldcc` and `nakedcc` as keywords which can be used as part
   of a function prototype.
 * `setDebugSafety` builtin can be used to set debug safety features
   at a per block scope level.
 * closes #169
2016-09-28 02:33:32 -04:00
Andrew Kelley e5fd8efcb6 clean up test directory 2016-09-27 00:09:43 -04:00
Andrew Kelley 183976b242 add this keyword refers to thing in immediate scope
See #169
2016-09-26 23:47:30 -04:00
Andrew Kelley 7ce7e2c9d1 emit error for extern function
with byvalue return value or parameter.

currently we don't codegen byvalue parameters or return values
correctly for C compatibilty functions so instead of generating
incorrect code, we emit a compile error.

eventually we'll support this feature and remove the compile error.

See #180
2016-09-26 20:01:42 -04:00
Andrew Kelley 7f4d4bdb3f fix crash when doing binary not on integer literal
closes #201
2016-09-26 19:42:51 -04:00