Andrew Kelley
e0050af293
add some timing diagnostics
...
pass --enable-timing-info to print a nice table like this:
```
Name Start End Duration Percent
Initialize 0.0000 0.0000 0.0000 0.0001
Semantic Analysis 0.0000 0.0421 0.0420 0.2109
Code Generation 0.0421 0.0620 0.0200 0.1003
LLVM Emit Object 0.0620 0.1852 0.1231 0.6180
Build Dependencies 0.1852 0.1974 0.0122 0.0615
LLVM Link 0.1974 0.1993 0.0018 0.0093
Generate .h 0.1993 0.1993 0.0000 0.0000
Total 0.0000 0.1993 0.1993 1.0000
```
2017-04-25 12:29:25 -04:00
Andrew Kelley
245eed8afe
better stack traces for ELF x86_64
2017-04-24 12:14:45 -04:00
Josh Wolfe
08a871f625
defer requires expr to be void. closes #341
2017-04-23 22:33:06 -07:00
Josh Wolfe
ac7971122d
fix check-statement-is-void. add tests
...
see #291
2017-04-23 21:50:34 -07:00
Josh Wolfe
c6605cba83
blocks check that their statements are void
...
closes #291
This changes the error message "return value ignored" to "expression value is ignored".
This is because this error also applies to {1;}, which has no function calls.
Also fix ignored expression values in std and test.
This caught a bug in debug.readAllocBytes where an early Eof error would have been missed.
See #219 .
2017-04-23 21:15:15 -07:00
Andrew Kelley
6de33ded81
make undefined as a constant value lazy
...
closes #268
2017-04-23 14:34:40 -04:00
Josh Wolfe
2ed47070ef
refactor ir_gen_block to make different return paths more clear
2017-04-23 09:04:15 -07:00
Josh Wolfe
14dfbd6ad3
remove redundant unreachable code error
2017-04-23 08:36:21 -07:00
Andrew Kelley
0f633167c5
fix crash when unwrapping error with no error decls
...
closes #339
2017-04-23 03:14:22 -04:00
Andrew Kelley
ad9040443c
new compile errors for setGlobalAlign and setGlobalSection builtins
...
if you try to use them on an external variable or function
then you get a compile error, since the alignment/section
is set externally in this case.
closes #244
2017-04-22 12:54:00 -04:00
Andrew Kelley
aafb0b9082
slicing now returns correct const-ness
...
also remove the ability to override constness when slicing
closes #334
2017-04-22 12:19:20 -04:00
Andrew Kelley
1a0081b763
add peer type resolution for T and ?T
...
See #334
2017-04-22 11:45:04 -04:00
Andrew Kelley
0cce115476
update syntax for try and nullable unwrapping
...
closes #285
2017-04-21 16:46:33 -04:00
Andrew Kelley
d5346d7a80
remove ?return and ?defer
...
closes #309
2017-04-21 15:08:03 -04:00
Andrew Kelley
e3c524c1d4
rename @ptrcast to @ptrCast to follow convention
2017-04-21 10:39:13 -04:00
Andrew Kelley
fb492d19eb
zig build system supports building a library
...
See #329
Supporting work:
* move std.cstr.Buffer0 to std.buffer.Buffer
* add build.zig to example/shared_library/ and add an automated test
for it
* add std.list.List.resizeDown
* improve std.os.makePath
- no longer recursive
- takes into account . and ..
* add std.os.path.isAbsolute
* add std.os.path.resolve
* reimplement std.os.path.dirname
- no longer requires an allocator
- handles edge cases correctly
2017-04-21 01:56:12 -04:00
Raul Leal
5234016561
Add @offsetOf builtin function
2017-04-20 11:53:00 +00:00
Andrew Kelley
d12f1f5b49
test framework supports name prefix and filter argument
...
rename self hosted tests to behavior tests
2017-04-19 15:38:12 -04:00
Andrew Kelley
d1e01e43d3
convert assemble and link tests to zig build system
2017-04-19 14:00:12 -04:00
Andrew Kelley
666435195f
update zig build help text when no build.zig found
2017-04-19 04:36:48 -04:00
Andrew Kelley
37b9a2e6a4
convert compare-output tests to use zig build system
2017-04-19 01:15:20 -04:00
Andrew Kelley
237dfdbdc6
error when building exe with no entry point
...
closes #30
2017-04-18 14:04:48 -04:00
Andrew Kelley
6f0f8a92ec
bail out of analysis on first error during comptime eval
...
prevents an error during comptime eval from printing a
large number of compile errors
2017-04-18 04:02:36 -04:00
Andrew Kelley
a791417552
add @fieldParentPtr builtin function
...
closes #320
2017-04-18 02:28:05 -04:00
Andrew Kelley
407916cd2f
rename @intType to @IntType to follow convention
...
closes #327
2017-04-18 00:05:09 -04:00
Andrew Kelley
c7852bd596
minor clean ups from previous commit
2017-04-17 20:15:19 -04:00
Raul Leal
3266585606
Implicit cast from T to %?T
...
closes #171
2017-04-17 19:55:56 -04:00
Andrew Kelley
2e0b114fdc
add compile error for intToPtr with a 0-bit ptr
...
See #323
2017-04-17 19:28:33 -04:00
Andrew Kelley
47336abae3
improvements to zig build system and unwrap error safety
...
* zig build system: create standard dynamic library sym links
* unwrapping an error results in a panic message that contains
the error name
* rename error.SysResources to error.SystemResources
* add std.os.symLink
* add std.os.deleteFile
2017-04-17 06:47:20 -04:00
Josh Wolfe
3e93796e24
comptime ({}) should not get an implicit semicolon
...
closes #292 .
2017-04-14 16:09:01 -07:00
Andrew Kelley
5fdefe58e4
zig build system understands the concept of dependencies
...
See #204
2017-04-13 17:21:00 -04:00
Andrew Kelley
dcfa0e50dc
all internal functions get unnamed_addr attribute
2017-04-13 03:34:57 -04:00
Andrew Kelley
f2140efc52
Merge remote-tracking branch 'origin/parser'
2017-04-13 03:09:09 -04:00
Andrew Kelley
bf57d8a7e3
typedefpocalypse
...
closes #314
2017-04-13 03:07:58 -04:00
Josh Wolfe
356424916c
block statement lists never get fake expressions
...
instead blocks have a field that encodes whether the last statement ended with
a semicolon.
2017-04-12 23:22:32 -07:00
Josh Wolfe
919910312d
make it an error to ignore a statement's value
...
this makes {1;} an error.
2017-04-12 22:21:35 -07:00
Andrew Kelley
bf67427c67
fix crash when using zig to link
...
without explicit dynamic linker
2017-04-13 01:15:25 -04:00
Andrew Kelley
41144a8566
ability to inline at function callsite
...
closes #306
2017-04-13 00:13:54 -04:00
Andrew Kelley
2864359950
zig build system writes template build.zig file when none exists
...
see #204
2017-04-11 06:14:46 -04:00
Andrew Kelley
7f47b0c271
run alwaysinline pass in debug mode
...
before this commit, the optimized IR code that is displayed in
--verbose mode is not actually what gets emitted to an object
file.
that is now corrected, and we make sure to run the alwaysinliner
pass even in debug mode, so you can rely on "inline" keyword
inlining a function, guaranteed.
See #306
2017-04-11 03:37:44 -04:00
Andrew Kelley
11a6550324
fix some -Wconversion errors
2017-04-10 20:02:39 -04:00
Andrew Kelley
34eff50326
fix for loops not working at compile-time
...
closes #315
2017-04-10 03:00:19 -04:00
Andrew Kelley
0e77b0ac89
fix mangling exported global variables
...
closes #316
2017-04-10 02:32:11 -04:00
Andrew Kelley
095591f0b0
add enumTagName builtin function
...
closes #299
2017-04-08 17:45:22 -04:00
Andrew Kelley
7611ed3484
allow implicit cast from [N]T to &const []const T
...
closes #296
2017-04-07 17:56:01 -04:00
Andrew Kelley
f7e9d7aa5d
ability to implicitly cast integer literal to &const Int
...
where Int is an integer type
also introduce `@intToPtr` builtin for converting a usize
to a pointer. users now have to use this instead of `(&T)(int)`.
closes #311
2017-04-07 15:35:38 -04:00
Andrew Kelley
ffb4852012
add compile error for the bug of unable to call var ags at compile time
...
See #313
2017-04-07 00:33:19 -04:00
Andrew Kelley
a3de550d3b
fix var args having wrong index when runtime param before it
...
closes #312
2017-04-06 21:00:49 -04:00
Andrew Kelley
273cebdf4d
peer resolve types [N]T, [M]T as []const T
...
closes #125
2017-04-06 18:07:38 -04:00
Andrew Kelley
47f58d6d02
fix runtime struct initialization of bitfield
...
closes #308
2017-04-06 15:04:18 -04:00