Commit Graph

1117 Commits (8a859afd580f438f549ee69a3e3487eb5d119fad)

Author SHA1 Message Date
Andrew Kelley 8a859afd58 std.io supports printing integers as hex values
remove "unnecessary if statement" error
this "depends on compile variable" code is too hard to validate,
and has false negatives. not worth it right now.

std.str removed, instead use std.mem.

std.mem.eql and std.mem.sliceEql merged and do not require explicit
type argument.
2017-02-07 17:23:50 -05:00
Andrew Kelley 92793252ad inline assembly allows clobbers with no input 2017-02-07 01:53: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 573f3f8d48 coldcc works better
* Only use Cold Calling Convention on x86
 * Add the cold attribute to functions marked with coldcc
2017-02-06 13:50:19 -05:00
Andrew Kelley 07a71fc322 improved behavior on debug safety crash
* instead of emitting a breakpoint for a debug safety crash,
   zig calls a panic function which prints an error message
   and a stack trace and then calls abort.
 * on freestanding OS, this panic function has a default
   implementation of a simple infinite loop.
 * users can override the panic implementation by providing
   `pub fn panic(message: []const u8) -> unreachable { }`
 * workaround for LLVM segfaulting when you try to use cold
   calling convention on ARM.

closes #245
2017-02-06 03:10:32 -05:00
Andrew Kelley 28f63b8a4f fix volatile not respected for storing through a struct pointer 2017-02-05 20:49:14 -05:00
Andrew Kelley d26bb3ae2e fix assigning to const ptr through struct or index 2017-02-05 19:55:37 -05:00
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