Andrew Kelley
137c8f5e8a
ability to set tag values of enums
...
also remove support for enums with 0 values
closes #305
2017-12-02 22:32:39 -05:00
Andrew Kelley
98237f7c0b
casting between integer and enum only works via tag type
...
See #305
2017-12-02 17:12:37 -05:00
Andrew Kelley
cf96b6f87b
update to LLVM 5.0.1rc2
2017-12-01 13:44:28 -05:00
Andrew Kelley
b4120423a5
translate-c: only emit enum tag type if not c_int or c_uint
2017-12-01 00:37:15 -05:00
Andrew Kelley
264c86853b
packed structs can have enums with explicit tag types
...
See #305
2017-12-01 00:34:29 -05:00
Andrew Kelley
b62e2fd870
ability to specify tag type of enums
...
see #305
2017-11-30 22:08:11 -05:00
Andrew Kelley
210d0017c4
fix build broken by previous commit
...
now we report a compile error for unusual failures from translate-c
2017-11-29 23:09:35 -05:00
Andrew Kelley
7729f6cf4e
translate-c: support static incomplete array inside function
2017-11-29 21:50:38 -05:00
Andrew Kelley
716b0b8655
fix capturing value of switch with all unreachable prongs
...
closes #635
2017-11-29 21:34:17 -05:00
Andrew Kelley
d4cd4a35d5
update fast math llvm API to latest
2017-11-29 19:11:34 -05:00
Andrew Kelley
91ef68f9b1
Merge remote-tracking branch 'origin/master' into llvm6
2017-11-29 16:34:50 -05:00
Andrew Kelley
7066283004
translate-c: support const ptr initializer
2017-11-28 23:44:45 -05:00
Andrew Kelley
26096e79d1
translate-c: fix clobbering primitive types
2017-11-28 03:17:28 -05:00
Andrew Kelley
e745544dac
translate-c: detect macros referencing field lookup
...
as fn calls which assert the fn ptr is non-null
2017-11-28 02:58:51 -05:00
Andrew Kelley
f537c51f25
Merge branch 'c-field-expr' of https://github.com/dimenus/zig into dimenus-c-field-expr
2017-11-28 00:44:16 -05:00
Andrew Kelley
1ab84a27d3
translate-c: fix sometimes getting (no file) warnings
...
Thanks to Mason Remaley for testing the fix.
2017-11-28 00:32:32 -05:00
Mason Remaley
3e8fd24547
Implements translation for the prefix not operator ( #628 )
2017-11-27 21:00:05 -05:00
Ryan Saunderson
57049b95b3
Resolving merge w/ upstream master
2017-11-27 11:42:48 -06:00
dimenus
04472f57be
Added support for exporting of C field expressions
2017-11-27 11:23:14 -06:00
Andrew Kelley
671183fa9a
translate-c: support pointer casting
...
also avoid some unnecessary casts
2017-11-26 20:05:55 -05:00
Andrew Kelley
93fac5f257
translate-c: support variable name shadowing
2017-11-26 17:30:43 -05:00
Andrew Kelley
9a8545d590
translate-c: fix translation when no default switch case
2017-11-26 16:03:56 -05:00
Andrew Kelley
aa2ca3f02c
translate-c: better way to translate switch
...
previously `continue` would be handled incorrectly
2017-11-26 15:58:49 -05:00
Andrew Kelley
1b0e90f70b
translate-c supports switch statements
2017-11-26 00:58:11 -05:00
Andrew Kelley
687e359291
translate-c: avoid global state and introduce var decl scopes
...
in preparation to implement switch and solve variable name collisions
2017-11-25 22:17:24 -05:00
Andrew Kelley
df0e875856
translate-c: introduce the concept of scopes
...
in preparation to implement switch and solve variable name collisions
2017-11-25 20:34:05 -05:00
Andrew Kelley
a2afcae9ff
fix crash when constant inside comptime function has compile error
...
closes #625
2017-11-25 18:16:33 -05:00
Andrew Kelley
48ebb65cc7
add an assert to catch corrupted memory
2017-11-25 16:34:08 -05:00
Andrew Kelley
b390929826
translate-c supports break and continue
2017-11-25 11:56:17 -05:00
Andrew Kelley
bf20b260ce
translate-c supports for loops
2017-11-25 00:57:48 -05:00
Andrew Kelley
18eb3c5f90
translate-c supports returning void
2017-11-25 00:25:47 -05:00
Andrew Kelley
cd36baf530
fix assertion failed when invalid type encountered
2017-11-24 22:04:24 -05:00
Andrew Kelley
40480c7cdc
translate-c supports string literals
2017-11-24 19:26:05 -05:00
Andrew Kelley
68312afcdf
translate-c: support pre increment and decrement operators
2017-11-24 16:36:39 -05:00
Andrew Kelley
5a25505668
rename "parsec" to "translate-c"
2017-11-24 14:56:05 -05:00
Andrew Kelley
339d48ac15
parse-c: support address of operator
2017-11-17 12:11:03 -05:00
Andrew Kelley
b50c676f76
add parse-c support for unions
2017-11-16 23:54:33 -05:00
Andrew Kelley
5d2ba056c8
fix codegen for union init with runtime value
...
see #144
2017-11-16 22:06:08 -05:00
Andrew Kelley
e26ccd5166
debug safety for unions
2017-11-16 21:15:15 -05:00
Andrew Kelley
f12d36641f
union secret field is the tag index instead of distinct type index
...
See #144
2017-11-16 10:06:58 -05:00
Andrew Kelley
018cbff438
unions have a secret field for the type
...
See #144
2017-11-15 22:52:47 -05:00
Andrew Kelley
f276fd0f37
basic union support
...
See #144
2017-11-15 13:04:18 -05:00
Ryan Saunderson
371e578151
Merge remote-tracking branch 'upstream/master' into llvm6
2017-11-14 07:00:27 -06:00
Andrew Kelley
5029322aa1
c-to-zig: handle UO_Deref
2017-11-14 02:10:13 -05:00
Josh Wolfe
6ffaf4c2e2
parsec supports do loop
2017-11-13 22:56:20 -07:00
Josh Wolfe
012ce1481e
parsec supports post increment/decrement with used result
2017-11-13 22:19:51 -07:00
Josh Wolfe
4c2cdf6f4d
parsec supports more compound assign operators
2017-11-13 21:37:30 -07:00
Josh Wolfe
c1fde0e8c4
parsec supports bitshift operators
2017-11-13 20:49:53 -07:00
Andrew Kelley
df07361642
Merge branch 'parsec' of https://github.com/dimenus/zig into dimenus-parsec
2017-11-13 22:26:31 -05:00
Josh Wolfe
57cd074959
parsec supports C comma operator
2017-11-13 19:59:32 -07:00
Josh Wolfe
1f28fcdec5
parsec supports C NULL to pointer implicit cast
2017-11-13 19:39:46 -07:00
dimenus
b3b4786c24
Fixed duplicate decl detection for typedefs/enums
2017-11-13 20:10:36 -06:00
dimenus
98e3c7911c
Fixed duplicate decl detection for typedefs/enums
2017-11-13 16:37:46 -06:00
Andrew Kelley
df89291d1c
Merge remote-tracking branch 'origin/master' into llvm6
2017-11-10 16:45:01 -05:00
Andrew Kelley
019f18058b
fix test failures
...
put all the codegen for fn prototypes to the same place
2017-11-10 16:32:37 -05:00
Andrew Kelley
029d37d6a7
fix bug when multiple function definitions exist
...
This might be related to #529
2017-11-10 14:58:50 -05:00
dimenus
e9d7623e1f
Merge remote-tracking branch 'origin/master' into llvm6
2017-11-10 09:49:45 -06:00
Andrew Kelley
7ea669e04c
fix parameter of extern var args not type checked
...
closes #601
2017-11-09 11:30:39 -05:00
Andrew Kelley
4f8c26d2c6
fix enum sizes too large
...
closes #598
2017-11-08 21:44:10 -05:00
Andrew Kelley
4543413491
std.io: introduce buffered I/O and change API
...
I started working on #465 and made some corresponding std.io
API changes.
New structs:
* std.io.FileInStream
* std.io.FileOutStream
* std.io.BufferedOutStream
* std.io.BufferedInStream
Removed:
* std.io.File.in_stream
* std.io.File.out_stream
Now instead of &file.out_stream or &file.in_stream to get access to
the stream API for a file, you get it like this:
var file_in_stream = io.FileInStream.init(&file);
const in_stream = &file_in_stream.stream;
var file_out_stream = io.FileOutStream.init(&file);
const out_stream = &file_out_stream.stream;
This is evidence that we might not need any OOP features -
See #130 .
2017-11-07 03:22:27 -05:00
Andrew Kelley
3a600297ca
Merge remote-tracking branch 'origin/master' into llvm6
2017-11-06 22:41:12 -05:00
Andrew Kelley
634e8713c3
add @memberType and @memberName builtin functions
...
see #383
there is a plan to unify most of the reflection into 2
builtin functions, as outlined in the above issue,
but this gives us needed features for now, and we can
iterate on the design in future commits
2017-11-06 22:07:19 -05:00
Andrew Kelley
4cc9fe90a8
fix build on MacOS
2017-11-04 16:40:55 -04:00
Andrew Kelley
f0d755153d
add compile-time reflection for function arg types
...
See #383
2017-11-04 16:20:02 -04:00
Andrew Kelley
4a6df04f75
slightly more verbose error message when building object file fails
2017-11-03 20:07:32 -04:00
Andrew Kelley
75afe73c66
Merge pull request #581 from Dimenus/line_endings
...
Add support for windows line endings with c macros within a c_import.
2017-11-03 18:40:38 -04:00
dimenus
1890760206
Windows libc & static libc are located in the same dir which is already covered by msvc_lib_dir
2017-11-03 17:09:35 -05:00
dimenus
1ef6cb1b64
Add support for windows line endings with c macros
2017-11-03 16:29:49 -05:00
Marc Tiehuis
795703a39c
Add emit command-line option ( #580 )
...
Add emit command-line option
2017-11-03 09:09:33 -04:00
Andrew Kelley
a31b23c46b
more compile-time type reflection
...
See #383
2017-11-03 00:00:57 -04:00
Andrew Kelley
dc8b011d61
fix incorrect debug info for empty structs
...
closes #579
now all tests pass for llvm master branch
2017-11-02 21:57:55 -04:00
Andrew Kelley
4a82c2d124
fix incorrect debug info for empty structs
...
now all tests pass for llvm master branch
2017-11-02 21:54:24 -04:00
Andrew Kelley
188fd47a51
add missing environment
2017-11-02 21:54:24 -04:00
Andrew Kelley
9a99bd3a71
use llvm named structs for const values when possible
...
normally we want to use llvm types for constants. but
union constants (which are found inside enums) when
they are initialized with the non-most-aligned-member
must be unnamed structs.
these bubble up to all aggregate types. if a constant of
an aggregate type contains, recursively, a union constant
with a non-most-aligned-member initialized, the aggregate
typed constant must be unnamed too.
this fixes all the asserts that were coming in from
llvm master branch.
2017-11-02 21:54:24 -04:00
Andrew Kelley
94ec2190f8
update to llvm master
2017-11-02 21:54:24 -04:00
Andrew Kelley
abff1b6884
windows: use the same libc search within a compilation unit
2017-11-01 23:08:34 -04:00
Dimenus
38f05d4ac5
WIN32: Linking with the CRT at runtime. ( #570 )
...
Disclaimer: Forgive me if my format sucks, I've never submitted a PR before!
Fixes : #517
I added a few things to allow zig to link with the CRT properly both statically and dynamically. In Visual Studio 2017, Microsoft changed how the c-runtime is factored again. With this change, they also added a COM interface to allow you to query the respective Visual Studio instance for two of them. This does that and also falls back on a registry query for 2015 support. If you're using a Visual Studio instance older than 2015, you'll have to use the existing options available with the zig compiler. Changes are listed below along with a general description of the changes.
all_types.cpp:
The separate variables for msvc/kern32 have been removed and all win32 libc directory paths have been combined into a ZigList since we're querying more than two directories and differentiating one from another doesn't matter to lld.
analyze.cpp:
The existing functions were extended to support querying libc libs & libc headers at runtime.
codegen.cpp/hpp:
Microsoft uses the new 'Universal C Runtime' name now. Doesn't matter from a functionality standpoint. I left the compiler switches as is to not introduce any breaking changes.
link.cpp:
We're linking 4 libs and generating another in order to support the UCRT.
Dynamic: msvcrt/d, vcruntime/d, ucrt/d, legacy_stdio_definitions.lib
Static: libcmt/d, libvcruntime/d libucrt/d, legacy_stdio_definitions.lib
main.cpp:
Update function call names.
os.cpp/hpp:
COM/Registry interface for querying Windows UCRT/SDK.
Sources:
[Windows CRT](https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-library-features )
[VS 2015 Breaking Changes](https://msdn.microsoft.com/en-us/library/bb531344.aspx )
2017-11-01 15:33:14 -04:00
Andrew Kelley
540bac0928
Merge branch 'master' into self-hosted
2017-10-27 01:28:08 -04:00
Andrew Kelley
f1072d0d9f
use llvm named structs for const values when possible
...
normally we want to use llvm types for constants. but
union constants (which are found inside enums) when
they are initialized with the non-most-aligned-member
must be unnamed structs.
these bubble up to all aggregate types. if a constant of
an aggregate type contains, recursively, a union constant
with a non-most-aligned-member initialized, the aggregate
typed constant must be unnamed too.
this fixes some of the asserts that were coming in from
llvm master branch.
2017-10-27 00:14:56 -04:00
Marc Tiehuis
6663638195
Improve invalid character error messages ( #566 )
...
See #544
2017-10-26 10:00:23 -04:00
Andrew Kelley
c7053bea20
better output when @cImport generates invalid zig
2017-10-26 00:32:30 -04:00
Andrew Kelley
300c83d893
fix crash on field access of opaque type
2017-10-25 23:18:18 -04:00
Andrew Kelley
5f28a9d238
cleaner verbose flags and zig build prints failed command
2017-10-25 23:10:41 -04:00
Andrew Kelley
1828f8eb8e
fix missing compiler_rt in release modes
...
the optimizer was deleting compiler_rt symbols, so I changed
the linkage type from LinkOnce to Weak
also changed LinkOnce to mean linkonce_odr in llvm and
Weak to mean weak_odr in llvm.
See #563
2017-10-24 21:31:47 -04:00
Andrew Kelley
4f4da3c10c
wip self hosted code
2017-10-24 10:08:20 -04:00
Andrew Kelley
d7e28f991d
remove CXX ABI workaround
...
the actual solution is you must compile zig with the same
compiler that compiled llvm, lld, and clang.
reverts 8d60ffe314
2017-10-23 22:37:59 -04:00
Andrew Kelley
643ab90ace
add maximum value for @setAlignStack
2017-10-23 22:33:00 -04:00
Andrew Kelley
c1642355f0
parse-c: improve performance
...
previously we did linear search to find existing global
declarations; now we index using a hash map.
building tetris went from taking 5.3 sec to 0.76 sec
2017-10-21 16:46:33 -04:00
Andrew Kelley
a1af7cbf00
report compile error instead of crashing for void in var args
...
See #557
2017-10-21 15:46:04 -04:00
Andrew Kelley
175893913d
fix compiler crash regarding type name of undefined
...
See #547
2017-10-21 13:14:10 -04:00
Andrew Kelley
0744c83f51
add uwtable attribute to functions on windows
...
See #516
now we have at least a callstack. we still need updated LLD
to get stack traces.
2017-10-17 01:41:26 -04:00
Andrew Kelley
5866032e76
fix codegen of enum name table having wrong LLVM types
...
See https://bugs.llvm.org/show_bug.cgi?id=34952
2017-10-16 18:10:28 -04:00
Andrew Kelley
cbb6d2239f
look for libc at runtime on windows
...
See #539
before we close the issue we should also detect MSVC 2017
but this gets us started with supporting MSVC 2015
2017-10-16 12:21:46 -04:00
Andrew Kelley
d08c57741a
ability to make a DLL
...
See #302
2017-10-16 01:14:28 -04:00
Andrew Kelley
562f91e875
clean up some resources
2017-10-15 21:06:04 -04:00
Andrew Kelley
e3ad13e054
fix windows argument parsing
2017-10-15 20:19:15 -04:00
Andrew Kelley
c837ae1707
set stdout and stderr to binary mode on windows
2017-10-15 18:25:39 -04:00
Andrew Kelley
1fe1e6eeaf
mingw build: delete unused variable
2017-10-15 14:03:24 -04:00
Andrew Kelley
3c19883493
only SetConsoleTextAttribute to do console colors on windows
2017-10-15 12:15:32 -04:00
Andrew Kelley
9c44dd7db3
disable byval parameters on windows to work around llvm bug
...
See #536
2017-10-15 01:22:17 -04:00
Andrew Kelley
ba405ed59b
try harder to emit console colors
2017-10-14 20:31:47 -04:00
Andrew Kelley
fd7654e4e8
build-exe allows direct export of WinMainCRTStartup
2017-10-14 20:12:15 -04:00
Andrew Kelley
aa78827db2
add module flag to emit CodeView for COFF object files
...
see #516
2017-10-10 18:04:02 -04:00
Andrew Kelley
b4e42042cf
fix compiler crash when invalid value used
...
closes #527
2017-10-06 12:41:14 -04:00
Andrew Kelley
3af35fc1df
fix mingw build
2017-10-03 09:32:38 -04:00
Andrew Kelley
6a0c428997
use __chkstk_ms compiler-rt functions for __chkstk
...
I had to revert the target native features thing because there
is still some incorrect behavior with f128.
Reopens #508
partially reverts b505462509
See #302
2017-10-03 00:57:02 -04:00
Andrew Kelley
b505462509
replace __chkstk function with a stub that does not crash
...
Closes #508
See #302
2017-10-03 00:29:41 -04:00
Andrew Kelley
f1bd02e6f4
add @setAlignStack builtin
2017-10-03 00:29:27 -04:00
Andrew Kelley
ec40542c44
windows: alignstack=16 on every function
...
See #302
2017-10-02 09:55:49 -04:00
Andrew Kelley
0a4283b38b
support terminal colors for cmd.exe and msys pty
...
See #302
2017-10-02 01:37:05 -04:00
Andrew Kelley
5cbae7b671
better compiler-rt linkage logic
...
now the compiler-rt tests are passing on windows. See #302
2017-10-02 00:11:45 -04:00
Andrew Kelley
8156e4f78f
fix parse-c tests
2017-10-01 21:42:33 -04:00
Andrew Kelley
e3ea0b652c
still build compiler-rt when linking msvc CRT
...
because it's missing some things
2017-10-01 21:19:58 -04:00
Andrew Kelley
756d5c545d
remove unused function
2017-10-01 21:07:02 -04:00
Andrew Kelley
4d865e355b
support linking against MSVC libc
2017-10-01 21:05:08 -04:00
Andrew Kelley
271d6f8bb2
fix regression from previous commit
2017-10-01 18:33:57 -04:00
Andrew Kelley
1962c8588f
implement standard library path search
...
closes #463
See #302
2017-10-01 18:30:31 -04:00
Andrew Kelley
0975e37b16
fix implementation of --zig-std-dir
...
see #463
2017-10-01 15:51:55 -04:00
Andrew Kelley
0227becb56
build: escape backslashes in path arguments given to cmake
2017-10-01 14:01:18 -04:00
Andrew Kelley
5e6fc94b7f
fix codegen on windows
2017-10-01 03:05:01 -04:00
Andrew Kelley
c6295fe9ab
remove zigrt
...
adds test case for #394
partially reverts a32b5929cc
2017-09-30 20:21:57 -04:00
Andrew Kelley
6db589fff5
don't try to use cold calling convention on windows
...
it just causes a segfault
2017-09-30 20:20:51 -04:00
Andrew Kelley
08708ea4dc
fix typo in target_can_exec logic
2017-09-30 20:10:09 -04:00
Andrew Kelley
ba3d21ca67
better divTrunc codegen
...
branch and phi instead of select instruction
fixes division test for windows. See #302
2017-09-30 16:59:31 -04:00
Andrew Kelley
588d2862d9
workaround for invalid binary created on windows
...
when target native features are used.
See #508
2017-09-30 15:47:46 -04:00
Andrew Kelley
845f22101b
zig test on 64-bit windows runs 32-bit tests
2017-09-30 14:40:16 -04:00
Andrew Kelley
d43204c950
better output for cross platform zig test on windows
2017-09-30 14:07:26 -04:00
Andrew Kelley
09369b6a43
better implementation of os_spawn_process for windows
...
See #302
2017-09-30 00:43:22 -04:00
Andrew Kelley
fb365e3952
fix build on mingw
2017-09-28 09:43:40 -04:00
Marc Tiehuis
9dfe217be3
Allow 128-bit hex float literals
...
Closes #499 .
2017-09-28 23:33:36 +13:00
Andrew Kelley
6c3a56a7ff
fix i386 windows stdcall
2017-09-24 05:04:44 -04:00
Andrew Kelley
ba41be67f0
windows gui hello world
2017-09-24 03:55:45 -04:00
Andrew Kelley
41b588547c
improvements to windows support
...
See #302
2017-09-23 18:46:03 -04:00
Andrew Kelley
d71d6363ce
macho linking: support full lib paths correctly
2017-09-23 13:03:25 -04:00
Josh Wolfe
ee42caee0e
fix chain assignment semicolon
2017-09-20 23:49:46 -07:00
Josh Wolfe
d7775e3dca
chain assignment
2017-09-20 23:45:53 -07:00
Andrew Kelley
be37b03f4c
parse-c: support sizeof
2017-09-21 02:37:42 -04:00
Andrew Kelley
c01ae69cdb
parse-c: support implicit cast to void *
2017-09-21 02:31:52 -04:00
Andrew Kelley
2655cf1bf7
parse-c: support c style cast
2017-09-21 01:55:15 -04:00
Josh Wolfe
5ac2cf9c28
fix assignment needing an lvalue
2017-09-20 22:41:16 -07:00
Andrew Kelley
1360af847e
parse-c: array access expression
2017-09-21 01:38:29 -04:00
Josh Wolfe
67a5a3f3d7
add sub mul div rem
2017-09-20 22:36:43 -07:00
Andrew Kelley
0d1f64b08c
parse-c: fix undefined array literals
2017-09-21 01:22:50 -04:00
Josh Wolfe
33784871ec
assign
2017-09-20 22:14:39 -07:00
Josh Wolfe
f7cb77a02c
Merge remote-tracking branch 'origin/c-to-zig' into c-to-zig
2017-09-20 22:05:14 -07:00
Josh Wolfe
2ae789d27c
bitwise binary operators
2017-09-20 22:04:51 -07:00
Andrew Kelley
0d91747502
parse-c: null statements
2017-09-21 01:04:43 -04:00
Andrew Kelley
eba45b0013
parse-c: field access expressions
2017-09-21 00:54:08 -04:00
Josh Wolfe
0827a8f36b
==, !=
2017-09-20 21:47:43 -07:00
Josh Wolfe
4c8443d96d
logical and, logical or
2017-09-20 21:37:56 -07:00
Josh Wolfe
bf6d32f8cb
Merge remote-tracking branch 'origin/c-to-zig' into c-to-zig
2017-09-20 21:17:41 -07:00
Josh Wolfe
46fef543f9
if statement
2017-09-20 21:16:49 -07:00
Andrew Kelley
f68d724647
parse-c: support function calls
2017-09-21 00:02:18 -04:00
Andrew Kelley
38059e6f97
parse-c: fix anonymous enums
2017-09-20 23:16:44 -04:00
Josh Wolfe
c3814eee26
Merge remote-tracking branch 'origin/c-to-zig' into c-to-zig
2017-09-20 19:49:55 -07:00
Josh Wolfe
c10b052cee
translate expr++ from c to zig
2017-09-20 19:49:41 -07:00
Andrew Kelley
9cdb5dec7a
parsec: cleaner shifting code for fixed size types
2017-09-20 22:44:24 -04:00
Josh Wolfe
e2f8bec7ac
optimize >>= operator for common case
2017-09-20 18:37:36 -07:00
Andrew Kelley
0228f8c9fd
all parsec tests passing
2017-09-20 21:16:26 -04:00
Andrew Kelley
b1e04865cc
parsec: don't make pointless block in fn body
2017-09-20 13:08:02 -04:00
Andrew Kelley
3c41c2d84b
Merge branch 'master' into c-to-zig
2017-09-20 12:52:54 -04:00
Andrew Kelley
86eb183668
coff linking passes -DEBUG
...
which makes a .pdb file
2017-09-18 22:05:55 -04:00
Andrew Kelley
46ddeb0baf
add --verbose-link option
...
only prints the link line
2017-09-18 21:06:53 -04:00
Andrew Kelley
c7d80cc421
fix crash when enum has invalid field
...
closes #468
2017-09-17 18:44:18 -04:00
Andrew Kelley
b8ee3a8143
add -mllvm support
...
useful for debugging crashes in llvm optimizer
2017-09-17 17:46:16 -04:00
Andrew Kelley
faaaf88327
fix use of uninitialized variable in alignCast
2017-09-17 16:13:55 -04:00
Andrew Kelley
7ee00730ac
add option to run tests in LLDB and turn it on for macos travis
2017-09-17 14:43:51 -04:00
Marc Tiehuis
71342f8249
Add dash arguments for cli
2017-09-17 12:26:13 +12:00
Andrew Kelley
5989b88352
do not depend on __int128
...
closes #477
2017-09-14 02:48:16 -04:00
Andrew Kelley
14cda27b64
depend on embedded SoftFloat-3d instead of __float128
...
See #302
See #467
2017-09-14 01:46:47 -04:00
Jonathan Marler
bb44e4b479
Fixed a couple compilation errors for MSVC 64-bit ( #475 )
2017-09-13 23:59:09 -04:00
Andrew Kelley
d9eabde319
add Child property of slice type
...
also rename child field to Child for pointer and array
2017-09-13 14:30:57 -04:00
Andrew Kelley
57ea6e8c9f
fix up msvc stuff to make it work on linux and macos too
2017-09-13 02:40:02 -04:00
Josh Wolfe
32c51e0156
Merge remote-tracking branch 'origin/c-to-zig' into c-to-zig
2017-09-11 21:37:37 -07:00
Josh Wolfe
4adffea8d0
analysis of result used
2017-09-11 21:37:11 -07:00
Andrew Kelley
bf52a74803
fix error messages
2017-09-12 00:07:37 -04:00
Josh Wolfe
99cb6e955a
oh, actually it was
2017-09-11 20:39:42 -07:00
Josh Wolfe
e52418097d
not my segfault
2017-09-11 20:08:45 -07:00
Josh Wolfe
7e3f45a49f
Merge branch 'master' into c-to-zig
2017-09-11 19:58:41 -07:00
Josh Wolfe
6f50457b61
wip c to zig stuff
2017-09-11 19:58:14 -07:00
Andrew Kelley
4bd23aefe7
local var
2017-09-11 22:58:06 -04:00
Jonathan Marler
7c81cd30de
Add support for MSVC
2017-09-11 09:26:26 -06:00
jean-dao
373785ae8d
c macros: support hex chars ( #459 )
...
* c macros: remove add_char redundancies
* c macros: support hex chars
* c macros: add test for hex chars
2017-09-10 16:35:56 -04:00
Andrew Kelley
4f44d49925
fix uninitialized variable
2017-09-10 15:01:37 -04:00
Andrew Kelley
011df61f8a
fix not verifying GlobalLinkage and AtomicOrder types
...
thanks to aep4Ayai on IRC
2017-09-10 14:04:19 -04:00
Andrew Kelley
b00b7bd290
variables are allowed to be pointers to opaque
2017-09-10 00:34:44 -04:00
Andrew Kelley
b5d9584e6f
support parens in C macros
...
closes #454
2017-09-10 00:20:09 -04:00
Andrew Kelley
bc0a60c7a6
more compile errors for non-const variables of things
...
closes #456
2017-09-09 22:46:08 -04:00
Andrew Kelley
9fb4d1fd6c
std: os.ChildProcess knows when its child died
...
using signal handlers
2017-09-07 23:10:51 -04:00
Andrew Kelley
e7c3aa7f7c
parsec: turn panics into warnings
2017-09-06 01:00:42 -04:00
Andrew Kelley
2c9bdad346
rename parseh to parsec
2017-09-05 22:55:03 -04:00
Andrew Kelley
48c44615a4
Merge branch 'c-to-zig'
2017-09-05 18:51:48 -04:00
Andrew Kelley
3ff465e288
add OpaqueType builtin
...
closes #326
2017-09-05 18:51:07 -04:00
Andrew Kelley
c3362c1cb6
fix void return node and param name nodes, fix dupe macros
...
all tests passing
2017-09-05 03:11:59 -04:00
Andrew Kelley
87970920c4
parseh: fix duplicate definitions
2017-09-05 02:34:06 -04:00
Andrew Kelley
5c386f9911
parseh: remove unneeded hash tables
2017-09-05 01:22:26 -04:00
Andrew Kelley
b64843bf70
parseh: fix generating functions from macros
2017-09-05 00:45:09 -04:00
Andrew Kelley
cc621cdee3
fix parseh bugs
2017-09-05 00:21:02 -04:00
Andrew Kelley
e1d5da20a5
rewrite parseh to use AST instead of direct types
...
some tests still failing
2017-09-02 04:11:23 -04:00
Josh Wolfe
0f38955ee5
translate while loops and implicit bitcasts
2017-09-01 12:51:45 -07:00
Josh Wolfe
fa8912ab78
translate some variable declaration cases
2017-09-01 12:03:21 -07:00
Josh Wolfe
7e1bf6d29b
progress toward variable declaration translation
2017-09-01 11:45:06 -07:00
Josh Wolfe
a260cfa4dd
Merge remote-tracking branch 'origin/c-to-zig' into c-to-zig
2017-09-01 11:42:48 -07:00
Josh Wolfe
0d0fffe4d2
start implementing variable declaration translation
2017-09-01 11:39:48 -07:00
Andrew Kelley
80d75cf3bf
here, have trans_qual_type
2017-09-01 14:39:17 -04:00
Andrew Kelley
60bdbe5405
parseh: emit_warning takes SourceLocation
2017-09-01 13:39:16 -04:00
Josh Wolfe
1449e71de8
cleanup whitespace
2017-09-01 10:27:04 -07:00
Andrew Kelley
46e9d9df51
c-to-zig: less than, negation, ternary
2017-09-01 04:38:57 -04:00
Andrew Kelley
ee9d1d0414
c-to-zig: return statement
2017-09-01 03:16:35 -04:00
Raul Leal
e93ece7514
Opaque ptr patch
2017-08-31 18:01:09 -04:00
Andrew Kelley
c42e809f13
setEvalBranchQuota must be called from top of comptime stack
2017-08-31 16:54:20 -04:00
Andrew Kelley
67b6dd28ec
allow array literals to have size and fix comptime bug
2017-08-31 16:30:46 -04:00
Andrew Kelley
eb0979189b
add windows to test targets
...
cross-compiling hello world with no libc for windows is working
2017-08-31 11:41:58 -04:00
Andrew Kelley
021155db5b
successfully cross-building behavior tests for windows
2017-08-30 17:01:14 -04:00
Andrew Kelley
97013951dd
tests use darwin, not macosx since that's what macbook reports as
2017-08-30 15:15:14 -04:00
Andrew Kelley
0e9bdb44a6
test suite cross-compile builds tests for other targets
2017-08-30 14:55:26 -04:00
Andrew Kelley
052b4ae941
align syntax: align(4) instead of align 4
...
closes #37
2017-08-30 04:54:33 -04:00
Andrew Kelley
3f5dd08ca8
codegen: all stores specify align value
...
See #37
2017-08-30 04:23:52 -04:00
Andrew Kelley
849f65332d
set alignment on all loads and globals
...
See #37
2017-08-30 03:43:51 -04:00
Andrew Kelley
e9280c86a1
compile error for not-aligned-enough pointer to cmpxchg
...
See #37
2017-08-30 02:56:42 -04:00
Andrew Kelley
010b725bde
add alignment field to pointer type
2017-08-30 02:41:27 -04:00
Andrew Kelley
5482f9f9e8
when getting an element pointer, use the best alignment
...
type we can figure out is safe to use
See #37
2017-08-30 02:25:41 -04:00
Andrew Kelley
56cc62a9c7
@ptrCast preserves larger alignment if applicable
...
See #37
2017-08-30 01:12:47 -04:00
Andrew Kelley
fa9006f8d1
generic functions can access comptime args in align value
...
See #37
2017-08-30 00:46:38 -04:00
Andrew Kelley
c2357830b4
add "child" field to pointer type
2017-08-30 00:17:11 -04:00
Andrew Kelley
898d65baa9
more alignment improvements
...
* add alignment capability for fn protos
* add @alignCast
* fix some ast rendering code
* fix some ir rendering code
* add error for pointer cast increasing alignment
* update allocators in std to correctly align
See #37
2017-08-29 23:33:25 -04:00
Andrew Kelley
910a96f046
fix tests
2017-08-29 17:10:11 -04:00
Andrew Kelley
816689a3b1
ptrCast gives compile error for increasing alignment
...
See #37
2017-08-29 16:52:31 -04:00
Andrew Kelley
be94299666
prevent implicitly increasing pointer alignment
...
See #37
2017-08-29 15:19:15 -04:00
Andrew Kelley
8f682efbc5
pass all tests without triggering assertions
...
fixes tests when targeting darwin
2017-08-29 09:30:22 -04:00
Andrew Kelley
1116d82197
fix bitfield pointer syntax
...
See #37
2017-08-29 08:35:51 -04:00
Andrew Kelley
c5c9d98065
introduce align keyword
...
* remove `@setGlobalAlign`
* add align keyword for setting alignment on functions and
variables.
* loads and stores use alignment from pointer
* memcpy, memset use alignment from pointer
* add syntax for pointer alignment
* slices can have volatile
* add u2, i2 primitives
* ignore preferred align and use abi align everywhere
* back to only having alignOf builtin.
preferredAlignOf is too tricky to be useful.
See #432 . Partial revert of
e726925e80
.
See #37
2017-08-29 07:51:34 -04:00
Andrew Kelley
d7a539906d
Merge branch 'embed-lld'
...
Zig now depends on LLVM 5.0.0.
For the latest version that supports LLVM 4.0.1, use
2a49c876be
.
Unfortunately we had to embed LLD into Zig due to some
MACH-O related LLD bugs. One of them is already upstream
and another is awaiting feedback on the llvm-dev mailing
list.
You can use cmake option -DZIG_FORCE_EXTERNAL_LLD=ON to
still use external LLD if you want to live with the MACH-O
bugs or if your system LLD is patched.
Closes #273
2017-08-28 04:09:09 -04:00
Andrew Kelley
6c7e975b75
remove remnants of depending on darwin system linker
2017-08-28 03:31:57 -04:00
Andrew Kelley
ebdc6b594d
all tests passing in MacOS
...
depends on LLD 5.0.0 with 3 patches
See #273
2017-08-27 17:16:42 -04:00
Andrew Kelley
5fd579a51c
macos passing all tests except for building a shared library
...
see #273
2017-08-27 05:44:03 -04:00
Andrew Kelley
ff2c794612
all behavior tests passing for macos
...
See #273
2017-08-27 05:15:24 -04:00
Andrew Kelley
91536813ec
macos updates
...
* try some macos travis stuff
* put c in the link libs for macos since we always link with libSystem
* for non-native targets on macos, allow runtime symbol resolution
- it's causing an infinite loop in LLD.
* for macos, always build compiler_rt and turn on LinkOnce because
compiler_rt on darwin is missing some stuff.
2017-08-27 02:51:25 -04:00
Andrew Kelley
29a418c9d5
progress toward tests passing on MacOS
2017-08-27 00:11:09 -04:00
Andrew Kelley
2a49c876be
audit alignment for functions
...
see #37
2017-08-26 15:20:39 -04:00
Andrew Kelley
a0ae575ff8
codegen for enums chooses best order of tag and union fields
...
closes #396
2017-08-26 14:25:52 -04:00
Andrew Kelley
40feecb3e4
fixups from previous commit
...
See #396
2017-08-26 13:51:51 -04:00
scurest
5bc877017e
use most_aligned_member+padding to represent enum unions
2017-08-26 13:48:16 -04:00
Andrew Kelley
e726925e80
remove @alignOf and add @cAbiAlignOf and @preferredAlignOf
...
See #396
2017-08-26 13:29:24 -04:00
Andrew Kelley
3a4ea41fe8
add some asserts in switch analysis code
2017-08-26 13:06:13 -04:00
Andrew Kelley
2b8f98a52c
fix wrong switch target type with enum from .h file
...
fixes crash when else => unreachable is missing
2017-08-26 12:23:12 -04:00
Andrew Kelley
105a09e1d6
fix invalid llvm IR for const enum
...
closes #394
2017-08-26 00:34:40 -04:00
Andrew Kelley
2bd6c60752
update for llvm 5.0.0rc1
2017-08-26 00:34:40 -04:00
Andrew Kelley
6aa04c422b
float division by zero check only when FloatMode.Optimzed
...
closes #395
2017-08-25 20:44:32 -04:00
Andrew Kelley
db613d38f0
implement comptime bitcasting from array
2017-08-25 20:05:10 -04:00
Andrew Kelley
4d8269f69f
fix some casts on const data causing segfault
2017-08-25 19:54:20 -04:00
Andrew Kelley
754f7809e3
refactor - codegen llvm functions lazily
2017-08-25 13:13:07 -04:00
Andrew Kelley
629aa10c56
unreachable still codegens to unreachable in ReleaseFast test mode
...
closes #430
2017-08-25 10:20:06 -04:00
Andrew Kelley
5dddb45ec7
fix compiler test errors
...
closes #428
Thanks Marc Tiehuis for diagnosing this bug
2017-08-22 11:54:58 -04:00
Andrew Kelley
0a922d3bca
move docs to website
2017-08-20 17:30:02 -04:00
Andrew Kelley
d5271d1e49
more zen
2017-08-20 12:10:21 -04:00
Andrew Kelley
f248ef5f3f
move zen of zig to a sub command
2017-08-20 04:25:42 -04:00
Andrew Kelley
d9dd50d74c
fix not propagating parseh aliases through pub use decls
2017-08-20 04:03:36 -04:00
Andrew Kelley
09bd4a9a86
compile-time f32, f64 operations are now correctly lossy
...
previously we used the bigfloat abstraction to do all
compile-time float math. but runtime code and comptime code
are supposed to get the same result. so now if you add a
f32 to a f32 at compile time it does it with f32 math
instead of the bigfloat. float literals still get the
bigfloat math.
closes #424
2017-08-20 01:04:51 -04:00
Andrew Kelley
caaeab9882
add setEvalBranchQuota builtin function
2017-08-19 17:10:29 -04:00
Andrew Kelley
cd2f65ff6a
add compile error for globally shadowing a primitive type
...
closes #423
2017-08-19 02:02:25 -04:00
Andrew Kelley
987768778a
bit shifting safety
...
* add u3, u4, u5, u6, u7 and i3, i4, i5, i6, i7
* shift operations shift amount parameter type is
integer with log2 bit width of other param
- This enforces not violating undefined behavior on
shift amount >= bit width with the type system
* clean up math.log, math.ln, math.log2, math.log10
closes #403
2017-08-19 01:43:43 -04:00
Andrew Kelley
0aa36e882e
remove dependency on quadmath.h
2017-08-18 13:28:59 -04:00
Andrew Kelley
b73d4f74c2
depend on libquadmath
...
it seems to be shipped with gcc and clang
2017-08-18 13:13:03 -04:00
Andrew Kelley
e1c225694d
cast between __float128 and double to fix build in some places
2017-08-18 12:43:48 -04:00
Andrew Kelley
3a762e5a8d
make casting between __float128 and long double explicit
2017-08-18 12:37:01 -04:00
Andrew Kelley
1b5d61bee9
fix bitCast for big integers
...
and make bigfloat use __float128
2017-08-17 22:52:12 -04:00
Andrew Kelley
2173e1f457
fix big integer shifting by large number
2017-08-17 22:01:19 -04:00
Andrew Kelley
0d117bb0a9
fix wrong value for clz, ctz at compile time
...
closes #418
also make clz, ctz return smaller integer bit widths
and use smaller integer bit widths for enum tag types
2017-08-17 17:14:35 -04:00
Andrew Kelley
6a98bf3dba
compiler_rt implementations for __fixuns* functions
...
* add u128 and i128 integer types
* add f128 floating point type
* implement big integer multiplication (See #405 )
2017-08-16 19:07:35 -04:00
Andrew Kelley
cf46cd5f2b
organize file path of compiler_rt
2017-08-15 07:16:22 -04:00
Andrew Kelley
dea90e20e6
fix tokenization error pointing to wrong character
...
closes #401
2017-08-14 13:28:42 -04:00
Andrew Kelley
35d3444e27
more intuitive left shift and right shift operators
...
Before:
* << is left shift, not allowed to shift 1 bits out
* <<% is left shift, allowed to shift 1 bits out
* >> is right shift, allowed to shift 1 bits out
After:
* << is left shift, allowed to shift 1 bits out
* >> is right shift, allowed to shift 1 bits out
* @shlExact is left shift, not allowed to shift 1 bits out
* @shrExact is right shift, not allowed to shift 1 bits out
Closes #413
2017-08-09 10:09:38 -04:00
Andrew Kelley
54675b060a
add ptrToInt builtin, remove usize(ptr) cast
...
closes #415
2017-08-08 17:38:25 -04:00
Andrew Kelley
2234788fa8
add ability to explicitly cast float to integer
...
closes #414
2017-08-07 15:57:41 -04:00
Marc Tiehuis
0705b711f8
Correct floating-point literal allowed ranges
...
The exponent range for floating-point values is [-1022, 1023].
Fixes #399 .
2017-08-07 18:08:09 +12:00
Andrew Kelley
d8227c79a2
limit generated C preprocessor tokens to alphabet
...
closes #407
The mangling strategy replaces bytes outside the alphabet
with "_xx_" where xx is the hex code of the byte.
2017-08-06 19:31:05 -04:00
Andrew Kelley
d83e4092bf
fix constant debug info when number literal is 0
2017-08-06 18:15:11 -04:00
Andrew Kelley
a0a57beed5
fix invalid target info
2017-08-06 18:14:46 -04:00
Andrew Kelley
f1b2735a2e
fix segfault when var args fn proto shows up in ir printing
2017-08-06 18:14:17 -04:00
Andrew Kelley
ad9f48b74b
fix initializing undefined and crash when casting to invalid type
...
closes #408
2017-08-05 16:54:50 -04:00
Andrew Kelley
f4b214c010
remove unused enum
2017-07-08 18:02:50 -04:00
Andrew Kelley
d1e68c3ca8
better bigint/bigfloat implementation
2017-07-08 17:59:10 -04:00
Andrew Kelley
c9fc8bd802
workaround for llvm bug
...
See #393 for details
2017-06-19 14:36:33 -04:00
scurest
1a63f27247
allow trailing commas
...
closes #392
2017-06-17 10:34:51 -04:00
Andrew Kelley
1566ca21c4
fix peer type resolution for array and error
...
closes #388
2017-06-17 10:29:04 -04:00
Andrew Kelley
c0f9012bed
parseh: fix not recognizing integer suffixes on hex numbers
2017-06-16 14:34:38 -04:00
Andrew Kelley
865b53f286
fix alignOf builtin
...
* fix assertion error when type is not yet complete
* fix alignment value
closes #391
2017-06-15 23:47:05 -04:00
Andrew Kelley
ae61e26680
fix compiler segfault on null ?? x
...
closes #390
2017-06-14 19:32:52 -04:00
Andrew Kelley
7f0620a20f
partial implementation of printing floating point numbers with errol3
...
also add bitCast builtin function. closes #387
2017-06-14 00:24:25 -04:00
Andrew Kelley
6a93dda3e1
progress toward windows hello world working
2017-06-14 00:04:34 -04:00
Andrew Kelley
199bbb6292
progress toward hello world without libc in windows
2017-06-04 10:08:55 -04:00
Andrew Kelley
e5b90651ba
compileError builtin includes "referenced by" notes
...
to help track down the cause
closes #278
2017-06-03 15:09:40 -04:00
Andrew Kelley
1ae2002b41
fix crash when writing to const hardcoded ptr
...
closes #381
2017-05-29 14:25:00 -04:00
Andrew Kelley
8ae4ffa493
fix crash when unwrapping optional field of global variable
...
closes #379
2017-05-29 14:08:39 -04:00
Andrew Kelley
2dfb1ebee2
const global values can reference each other
...
Before, if you did something like:
```
const hi1 = "hi";
const hi2 = hi1;
```
This would create the "hi" data twice in the built object.
But since the value is const we don't have to duplicate the
data, now we take advantage of this fact.
closes #336
2017-05-27 00:54:14 -04:00
Andrew Kelley
d6b01931ef
implicitly cast by value var args parameters to const references
...
See #336
2017-05-26 16:44:13 -04:00
Andrew Kelley
c42c91ee7c
fix segfault with array of generic functions
...
closes #377
2017-05-26 14:39:18 -04:00
Andrew Kelley
fcdd808c5c
fix segfault with array of variadic functions
...
closes #377
2017-05-25 13:48:10 -04:00
Andrew Kelley
d8d45908fa
building with mingw for windows
2017-05-23 00:26:12 -04:00
Andrew Kelley
1c8fee41c2
add compile error for goto leaving defer expression
...
closes #284
2017-05-21 10:59:09 -04:00
Andrew Kelley
9f3cca8615
add error for break/continue exiting defer expression
...
See #284
2017-05-21 10:44:55 -04:00
Andrew Kelley
1c6f415a64
fix compiler crash when indexing types
...
closes #376
2017-05-21 09:50:15 -04:00
Andrew Kelley
565ac3e27a
flip the enum order of FloatMode
2017-05-20 23:26:39 -04:00
Andrew Kelley
29b488245d
add setFloatMode builtin and std.math.floor
...
* skip installing std/rand_test.zig as it's not needed beyond running
the std lib tests
* add std.math.floor function
* add setFloatMode builtin function to choose between
builtin.FloatMode.Optimized (default) and builtin.FloatMode.Strict
(Optimized is equivalent to -ffast-math in gcc)
2017-05-20 23:06:32 -04:00
Andrew Kelley
051ee8e626
change slicing syntax from ... to ..
...
See #359
2017-05-19 10:39:59 -04:00
Andrew Kelley
b483db4868
typeId builtin instead of isInteger, isFloat, etc
...
closes #373
2017-05-17 12:26:35 -04:00
Andrew Kelley
9851a943ed
add compile error for compile-time integer cast truncating bits
...
closes #371
2017-05-16 17:04:35 -04:00
Andrew Kelley
f375063917
fix printf format specifier
2017-05-16 10:19:35 -04:00
Andrew Kelley
a7570186eb
add compile error for comptime division by zero
...
closes #372
2017-05-14 13:07:45 -04:00
Andrew Kelley
63f6676fee
add compile error for casting negative value to...
...
...unsigned integer at compile-time
2017-05-10 00:21:27 -04:00
Andrew Kelley
6237411716
inline function call with builtin function instead...
...
...of special syntax.
partially reverts 41144a8566
closes #306
2017-05-09 22:54:23 -04:00
Andrew Kelley
01f066de37
ability to slice ptr to hard coded integer at comptime
...
closes #369
2017-05-09 22:23:38 -04:00
Andrew Kelley
2f20fe6ecd
delete @generatedCode builtin function
...
good riddance
2017-05-07 23:25:36 -04:00
Andrew Kelley
5774b48ceb
rename c_long_double to c_longdouble
...
to be consistent with other c primitive type names
2017-05-07 19:51:44 -04:00
Andrew Kelley
e485af94d4
fix inability to initialize global pointer to global array element
...
closes #366
2017-05-07 18:09:45 -04:00
Andrew Kelley
7261cd19b7
detect duplicate switch value even when else prong present
...
closes #43
2017-05-07 13:40:35 -04:00
Andrew Kelley
11d8a8cc7b
fix comptime switch on enum with ref payload
...
See #43
2017-05-07 13:21:53 -04:00
Andrew Kelley
818a0a2629
switch expression - add compile errors
...
* for duplicate integer value
* for missing integer values
* for missing else prong
see #43
2017-05-07 12:07:35 -04:00
Andrew Kelley
29beb603b7
allow division and remainder operators sometimes
...
when the values are comptime known and the result would be the same,
allow `/` and `%` for signed integers and floats.
closes #365
2017-05-06 23:59:57 -04:00
Andrew Kelley
157af4332a
builtin functions for division and remainder division
...
* add `@divTrunc` and `@divFloor` functions
* add `@rem` and `@mod` functions
* add compile error for `/` and `%` with signed integers
* add `.bit_count` for float primitive types
closes #217
2017-05-06 23:13:12 -04:00
Andrew Kelley
866c841dd8
add compile error when unable to inline a function
...
See #38
2017-05-04 15:11:24 -04:00
Andrew Kelley
b6a679c0ed
implement else on loops and break can give an expression
...
closes #357
2017-05-04 12:43:11 -04:00
Andrew Kelley
20b1491e6b
implement while for nullables and error unions
...
See #357
2017-05-04 10:28:00 -04:00
Andrew Kelley
698829b772
change while syntax
...
Old:
```
while (condition; expression) {}
```
New:
```
while (condition) : (expression) {}
```
This is in preparation to allow nullable and
error union types as the condition. See #357
2017-05-03 18:12:07 -04:00
Andrew Kelley
644ea2dde9
remove test and try expressions in favor of if expressions
...
See #357
2017-05-03 17:23:11 -04:00
Andrew Kelley
0940d46c01
add compile error for shadowing variable
...
closes #360
2017-05-03 16:13:57 -04:00
Andrew Kelley
6756c27ca4
zig build: cache_root is relative to build_root
2017-05-03 16:13:57 -04:00
Andrew Kelley
f69d28a087
fix debug info for nullable type
2017-05-02 18:21:55 -04:00
Andrew Kelley
24a9a42966
add safe release build mode
...
closes #288
2017-05-02 17:34:21 -04:00
Andrew Kelley
7c236f6dd8
fix compiler crash when referencing a variable...
...
...in an if after an if in the 2nd switch prong
closes #355
2017-05-02 12:59:09 -04:00
Andrew Kelley
9f92042da9
allow undefined to be resolved with other types
...
closes #295
2017-05-01 22:37:34 -04:00
Andrew Kelley
cff5358f60
make debug safety stuff lazy
2017-05-01 19:16:48 -04:00
Andrew Kelley
3cbd0065fa
basic support for specifying packages at the command line
...
See #226
2017-05-01 16:35:10 -04:00
Andrew Kelley
17b935325e
@import("builtin")
instead of @compileVar
...
See #226
Closes #220
2017-05-01 13:12:38 -04:00
Andrew Kelley
363d9038c9
zig build: organize build artifacts
...
closes #328
2017-04-30 18:56:24 -04:00
Andrew Kelley
43e7ac8418
add peer type resolution []T
and [0]T
...
closes #349
also fix slicing const array to be []const T instead of []T
2017-04-30 12:21:24 -04:00
Andrew Kelley
29defd705d
back to AT&T syntax for assembly
...
this reverts 5c04730534
.
sadly the quality of the intel dialect in llvm's assembly
parser has many frustrating bugs, and generally has unfortunate
syntax.
the plan is to use AT&T for now since it at least works,
and eventually zig will have its own assembly parser for
x86 and it will be as close to NASM as possible.
2017-04-30 11:28:11 -04:00
Andrew Kelley
cbfe4b4bae
add implicit cast from [0]T to %[]T
...
closes #347
also add std.os.path.relative
2017-04-29 19:23:33 -04:00
Andrew Kelley
a147f06585
zig puts temporary object files in zig-cache folder
...
See #298
2017-04-28 02:22:12 -04:00
Andrew Kelley
458afb0ef9
phi instruction retains stack ptr hint
2017-04-27 23:40:43 -04:00
Andrew Kelley
2e512a0e6e
add compile error for returning local variable address
...
closes #344
2017-04-27 19:40:35 -04:00
Andrew Kelley
1691074b4b
add no-elim-base-pointer to __zig_fail function
...
fixes missing frame for unwrapping an error
closes #345
2017-04-27 18:40:17 -04:00
Andrew Kelley
7e11ef79d6
zig test no longer requires a separate test_runner.o file
...
See #298
2017-04-27 16:19:20 -04:00
Andrew Kelley
7b0542d08b
build system: consolidate duplicate code and more
...
* add ability to add assembly files when building an exe, obj, or lib
* add implicit cast from `[N]T` to `?[]const T` (closes #343 )
* remove link_exe and link_lib in favor of allowing build_exe and
build_lib support no root zig source file
2017-04-26 19:17:05 -04:00
Andrew Kelley
afa80da857
revert the last 3 compile time improvements
...
they introduced complexity into the compiler and didn't
really help.
This reverts commit efa771af75
.
This reverts commit 8614397110
.
This reverts commit 13c6a58a61
.
2017-04-25 17:14:22 -04:00
Andrew Kelley
13c6a58a61
compile time improvement - move bounds checking to function calls
...
once again this barely had an effect:
Before:
./build size: 1.3 MB
hello.zig size: 301 KB
full test: 1m31.253s
debug test: 19.607s
hello.zig timing:
Name Start End Duration Percent
Initialize 0.0000 0.0000 0.0000 0.0002
Semantic Analysis 0.0000 0.0431 0.0431 0.2262
Code Generation 0.0431 0.0660 0.0229 0.1201
LLVM Emit Object 0.0660 0.1765 0.1105 0.5795
Build Dependencies 0.1765 0.1890 0.0125 0.0655
LLVM Link 0.1890 0.1906 0.0016 0.0086
Generate .h 0.1906 0.1906 0.0000 0.0000
Total 0.0000 0.1906 0.1906 1.0000
After:
./build size: 1.3 MB
hello.zig size: 300 KB
full test: 1m31.882s
debug test: 19.569s
hello.zig timing:
Name Start End Duration Percent
Initialize 0.0000 0.0000 0.0000 0.0002
Semantic Analysis 0.0000 0.0425 0.0424 0.2228
Code Generation 0.0425 0.0661 0.0236 0.1239
LLVM Emit Object 0.0661 0.1762 0.1101 0.5782
Build Dependencies 0.1762 0.1888 0.0126 0.0664
LLVM Link 0.1888 0.1905 0.0016 0.0085
Generate .h 0.1905 0.1905 0.0000 0.0000
Total 0.0000 0.1905 0.1905 1.0000
2017-04-25 16:53:22 -04:00
Andrew Kelley
8614397110
compile time improvement - move overflow math safety to fns
...
move some boilerplate code having to do with overflow math safety
to functions.
Again the timing difference is not much:
Before:
./build size: 1.3 MB
hello.zig size: 308 KB
full test: 1m33.588s
debug test: 20.303s
hello.zig timing:
Name Start End Duration Percent
Initialize 0.0000 0.0000 0.0000 0.0002
Semantic Analysis 0.0000 0.0425 0.0425 0.2202
Code Generation 0.0425 0.0675 0.0250 0.1293
LLVM Emit Object 0.0675 0.1789 0.1114 0.5773
Build Dependencies 0.1789 0.1913 0.0124 0.0640
LLVM Link 0.1913 0.1931 0.0018 0.0091
Generate .h 0.1931 0.1931 0.0000 0.0000
Total 0.0000 0.1931 0.1931 1.0000
After:
./build size: 1.3 MB
hello.zig size: 301 KB
full test: 1m31.253s
debug test: 19.607s
hello.zig timing:
Name Start End Duration Percent
Initialize 0.0000 0.0000 0.0000 0.0002
Semantic Analysis 0.0000 0.0431 0.0431 0.2262
Code Generation 0.0431 0.0660 0.0229 0.1201
LLVM Emit Object 0.0660 0.1765 0.1105 0.5795
Build Dependencies 0.1765 0.1890 0.0125 0.0655
LLVM Link 0.1890 0.1906 0.0016 0.0086
Generate .h 0.1906 0.1906 0.0000 0.0000
Total 0.0000 0.1906 0.1906 1.0000
2017-04-25 15:37:56 -04:00
Andrew Kelley
efa771af75
compile time improvement - add __zig_panic_slice fn
...
move some boilerplate code having to do with panicking
to a function.
Here's the timing difference. It's not much:
Before:
full test: 1m36.511s
debug test: 20.862s
hello.zig
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
After:
full test: 1m33.588s
debug test: 20.303s
hello.zig
Name Start End Duration Percent
Initialize 0.0000 0.0000 0.0000 0.0002
Semantic Analysis 0.0000 0.0425 0.0425 0.2202
Code Generation 0.0425 0.0675 0.0250 0.1293
LLVM Emit Object 0.0675 0.1789 0.1114 0.5773
Build Dependencies 0.1789 0.1913 0.0124 0.0640
LLVM Link 0.1913 0.1931 0.0018 0.0091
Generate .h 0.1931 0.1931 0.0000 0.0000
Total 0.0000 0.1931 0.1931 1.0000
2017-04-25 14:20:15 -04:00
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