Commit Graph

1483 Commits

Author SHA1 Message Date
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
98e3c7911c Fixed duplicate decl detection for typedefs/enums 2017-11-13 16:37:46 -06: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
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
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
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