1184 Commits

Author SHA1 Message Date
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
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
   e726925e802eddab53cbfd9aacbc5eefe95c356f.

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
2a49c876be76dc98996a3251310728ad32b22363.

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