Commit Graph

122 Commits

Author SHA1 Message Date
Andrew Kelley
a32b5929cc add stack protector safety when linking libc
* introduce zigrt file. it contains only weak symbols so that
   multiple instances can be merged. it contains __zig_panic
   so that multiple .o files can call the same panic function.
 * remove `@setFnVisible` builtin and add @setGlobalLinkage builtin
   which is more powerful
 * add `@panic` builtin function.
 * fix collision of symbols with extern prototypes and internal
   function names
 * add stack protector safety when linking against libc. To add
   the safety mechanism without libc requires implementing
   Thread Local Storage. See #276
2017-03-26 21:07:07 -04:00
Andrew Kelley
e1c47d6fe8 fix test regression regarding shadowing names
closes #271
2017-03-20 15:32:13 -04:00
Andrew Kelley
25761570f1 more robust const struct values 2017-02-26 23:50:04 -05:00
Andrew Kelley
3075d8aee7 fix use decls not always working 2017-02-23 16:52:13 -05:00
Andrew Kelley
d794549985 bitfields support for array of non-store-aligned packed structs 2017-02-22 00:49:10 -05:00
Andrew Kelley
0148f39df9 pointers with bit offset contain length
adds compile error when passing pointer that is byte-aligned
at the beginning but not the end to a function expecting
a fully byte aligned pointer

closes #261
2017-02-16 19:35:42 -05:00
Andrew Kelley
fc5d47b9b9 reading from a bit field partially works
See #261

Still need to do:
 * reading a field that has bit offset 0 but still needs to
   shift and truncate
 * writing a field
2017-02-16 15:45:41 -05:00
Andrew Kelley
4b5cc80f66 move volatile pointers to central type table 2017-02-16 13:58:42 -05:00
Andrew Kelley
1fc2082b4c ability to declare const bitfields
See #261
2017-02-15 18:55:29 -05:00
Andrew Kelley
63d37b7cff add runtime debug safety for dividing integer min value by -1
closes #260
2017-02-14 01:08:30 -05:00
Andrew Kelley
39287d7346 rework compile-time known pointer values
See #257
2017-02-11 13:13:45 -05:00
Andrew Kelley
916a96fb72 variables, memcpy, and memset all get alignment
See #37
2017-02-07 01:50:10 -05:00
Andrew Kelley
419e75eb23 remove volatileStore builtin; add volatile pointers
closes #238
2017-02-04 21:49:27 -05:00
Andrew Kelley
71d335e5cc implement packed structs
closes #183
2017-02-03 11:39:24 -05:00
Andrew Kelley
2b88441295 fix behavior when initializing struct with undefined 2017-02-02 14:55:01 -05:00
Andrew Kelley
d13cec6894 fix var args allocating wrong amount of memory in compiler 2017-01-31 16:04:26 -05:00
Andrew Kelley
d2b94afaf2 fix compile time initialization of array with undefined 2017-01-29 23:35:34 -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
201a3c121a introduce comptime expression
closes #221
2017-01-22 22:59:52 -05:00
Andrew Kelley
0c1800a9c9 fix some stuff when llvm has assertions on 2017-01-13 17:33:19 -05:00
Andrew Kelley
d784705353 IR: implement macro for function aliasing function pointer 2017-01-12 03:15:06 -05:00
Andrew Kelley
430e33b869 partially fix parseh command 2017-01-10 15:39:52 -05:00
Andrew Kelley
349cd79fe4 containers created during eval get names for parameters 2017-01-05 03:22:00 -05:00
Andrew Kelley
a9acc8cb45 IR: error for returning from defer expression
also fix peer type resolution for pure error mixed with error union
2016-12-28 03:47:02 -05:00
Andrew Kelley
25a5fc32fe IR: pass passSliceOfEmptyStructToFn test 2016-12-28 01:15:09 -05:00
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
1f6dacbb2f IR: enum init support 2016-12-20 01:50:32 -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
82101198f1 workaround for Arch being a primitive type 2016-12-18 20:09:34 -05:00
Andrew Kelley
e50ced44a2 IR: all structs anonymous 2016-12-18 16:56:50 -05:00
Andrew Kelley
85b6d14637 IR: support var type args and fix phi peer type resolution 2016-12-18 00:09:43 -05:00
Andrew Kelley
0f047337ac IR: fix this expression
Previously it returned a block instead of a function when
a function had any arguments.
2016-12-17 20:47:35 -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
8fcb1a141b IR: implement fence and cmpxchg builtins 2016-12-11 04:06:07 -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
6ed202ab16 IR: implement defer 2016-12-06 21:26:17 -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
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
84f7805029 IR: support import builtin function 2016-11-26 20:52:22 -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
1a0111d4c3 *WIP* 2016-10-30 02:46:16 -04:00
Andrew Kelley
afc5507b64 ir: ability to modify global vars 2016-10-29 19:14:48 -04:00
Andrew Kelley
77ae3442ef explicit casting works with IR 2016-10-09 02:20: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