Commit Graph

1110 Commits

Author SHA1 Message Date
Andrew Kelley
7749ffd797 try expression can omit variable assignments 2017-02-05 18:58:58 -05:00
Andrew Kelley
b9c943b066 tell LLVM the target sub arch type 2017-02-05 18:23:54 -05:00
Andrew Kelley
0c88b1ce73 use printf in test runner code 2017-02-05 16:09:33 -05:00
Andrew Kelley
135c021c83 delete unneeded IR code and fix assigning to const ptr 2017-02-05 16:06:06 -05:00
Andrew Kelley
025051885b fix volatile not respected for loads 2017-02-05 16:00:12 -05:00
Andrew Kelley
d151c58788 all functions are nounwind because zig does not support exceptions 2017-02-05 13:14:42 -05:00
Andrew Kelley
52eec6b9a6 %= in inline assembly survives optimization 2017-02-05 13:12:06 -05:00
Andrew Kelley
6f316d8ebd setGlobalSection and setGlobalAlign work for functions 2017-02-05 12:50:19 -05:00
Andrew Kelley
d2f1f57fa4 even external functions which provide definitions get nounwind 2017-02-05 01:57:49 -05:00
Andrew Kelley
74d41ce44b infer hard float from target environments that imply it 2017-02-05 00:16:49 -05:00
Andrew Kelley
e56f903522 memset and memcpy implementations need not return dest 2017-02-04 23:04:07 -05:00
Andrew Kelley
64a0510205 inline assembly supports %= syntax
it outputs a number that is unique to each instance of the asm
statement in the entire compilation.

useful when creating local labels and referring to them multiple
times in a single template that generates multiple
assembler instructions
2017-02-04 22:33:58 -05:00
Andrew Kelley
b840184bb0 memcpy and memset builtins support volatile pointers
See #238
2017-02-04 22:12:06 -05:00
Andrew Kelley
419e75eb23 remove volatileStore builtin; add volatile pointers
closes #238
2017-02-04 21:49:27 -05:00
Andrew Kelley
0d7abc6368 add compile error when setting non power of 2 alignment 2017-02-04 10:38:38 -05:00
Andrew Kelley
0919ea0afd ability to set global variable alignment and ...
..section in the initialization expression
2017-02-04 10:22:07 -05:00
Andrew Kelley
67b02326f8 preserve names of exported variables 2017-02-03 16:27:24 -05:00
Andrew Kelley
d3f1889951 in freestanding environment, assume gnu binutils
for now. soon LLD will free us from depending on
system linkers.
2017-02-03 15:53:23 -05:00
Andrew Kelley
5a86c04996 add volatileStore() builtin function
See #238

We can revisit how volatile will work later - for now
here's a builtin function to do it.
2017-02-03 15:14:18 -05:00
Andrew Kelley
8c9016b6d1 add setGlobalAlign and setGlobalSection builtin functions
closes #241
2017-02-03 13:56:56 -05:00
Andrew Kelley
3be4b6434c add ability to set linker script 2017-02-03 12:34:20 -05:00
Andrew Kelley
e00eec1c29 typedefs work for binary math operations 2017-02-03 12:09:13 -05:00
Andrew Kelley
aae168550f exported global variables get emitted as external in LLVM 2017-02-03 11:59:56 -05:00
Andrew Kelley
71d335e5cc implement packed structs
closes #183
2017-02-03 11:39:24 -05:00
Andrew Kelley
cd7713b178 make --target-os freestanding work 2017-02-02 23:14:08 -05:00
Andrew Kelley
0cf0739b0a update outdated comment 2017-02-02 17:18:36 -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
cd08c1f3be prefix op maybe and error are for types only 2017-02-02 12:21:11 -05:00
Andrew Kelley
4df1a9b251 document setDebugSafety builtin function 2017-02-01 03:28:40 -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
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
eb00aa21f5 readme update 2017-01-31 13:26:53 -05:00
Andrew Kelley
d8da34c64c fix crash when assigning too large value to integer
closes #228
2017-01-31 02:30:10 -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
34a4d7a201 update cat example code 2017-01-24 02:06:56 -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
1826a96160 update charToDigit to take advantage of switch syntax 2017-01-23 01:19:03 -05:00
Andrew Kelley
0b34439c1f mem.free no longer requires explicit type argument 2017-01-23 00:11:21 -05:00
Andrew Kelley
e5b1758010 remove staticEval builtin in favor of comptime expression 2017-01-22 23:21:00 -05:00
Andrew Kelley
201a3c121a introduce comptime expression
closes #221
2017-01-22 22:59:52 -05:00
Andrew Kelley
47cf8520ad use comptime instead of inline for var and params
See #221
2017-01-22 19:51:37 -05:00