113 Commits

Author SHA1 Message Date
Andrew Kelley
3a600297ca Merge remote-tracking branch 'origin/master' into llvm6 2017-11-06 22:41:12 -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
94ec2190f8 update to llvm master 2017-11-02 21:54:24 -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 8d60ffe314306e5295fb76338c6391e5fe986dea
2017-10-23 22:37:59 -04:00
Andrew Kelley
562f91e875 clean up some resources 2017-10-15 21:06:04 -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
b8ee3a8143 add -mllvm support
useful for debugging crashes in llvm optimizer
2017-09-17 17:46:16 -04:00
Josh Wolfe
1449e71de8 cleanup whitespace 2017-09-01 10:27:04 -07:00
Andrew Kelley
3f5dd08ca8 codegen: all stores specify align value
See #37
2017-08-30 04:23:52 -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
2bd6c60752 update for llvm 5.0.0rc1 2017-08-26 00:34:40 -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
6a93dda3e1 progress toward windows hello world working 2017-06-14 00:04:34 -04:00
Andrew Kelley
29defd705d back to AT&T syntax for assembly
this reverts 5c04730534ea7933855429c5fc5dc7b22eba7bc2.

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
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
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
5c04730534 use intel dialect for inline assembly
closes #242
2017-03-23 18:59:43 -04:00
Andrew Kelley
d10bbd28e9 use lld instead of system linker 2017-03-13 11:54:56 -04:00
Andrew Kelley
cd31f875a6 update to llvm 4.0 2017-03-10 02:29:01 -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
b9c943b066 tell LLVM the target sub arch type 2017-02-05 18:23:54 -05:00
Andrew Kelley
74d41ce44b infer hard float from target environments that imply it 2017-02-05 00:16:49 -05:00
Andrew Kelley
1fa4d2a5af rename LLVMZig to ZigLLVM 2016-09-10 20:53:57 -04:00
Andrew Kelley
20eb749ad6 generate debug info for global constants
See #41
2016-09-04 22:32:23 -07:00
Andrew Kelley
4e7effd3d3 port to llvm 3.9 2016-09-04 18:30:40 -07:00
Andrew Kelley
404defd99b add div_exact builtin fn
closes #149
2016-05-07 20:53:16 -07:00
Andrew Kelley
100802cdc0 add debug safety for left shifting
See #46
2016-05-06 15:46:38 -07:00
Andrew Kelley
c95e497857 add cmpxchg builtin function 2016-05-04 18:19:49 -07:00
Andrew Kelley
a299de2265 better alignment value for stack variables
fixes debug info sometimes not being available for parameters
2016-04-28 15:10:27 -07:00
Andrew Kelley
4815c03caa better parameter codegen
* ability to take address of a parameter (closes #97)
 * debug symbols work for parameters
2016-04-27 17:34:53 -07:00
Andrew Kelley
7026bed462 fix debug symbols regression after llvm 3.8.0 2016-04-09 14:21:55 -07:00
Andrew Kelley
76e1541803 update to llvm 3.8.0 2016-03-08 18:56:14 -07:00
Andrew Kelley
58c13aa949 rename 'environ' to 'env_type'
environ appears to clash with another symbol in mingw land
2016-02-16 20:03:41 -07:00
Andrew Kelley
9bf9be9937 fix build on GCC 2016-02-12 14:07:12 -07:00
Andrew Kelley
2bf6c28bc3 ability to cross compile
hello_libc.zig can produce a windows build
2016-02-11 01:33:27 -07:00
Andrew Kelley
54a8b6a110 cleanup target data organization 2016-02-10 16:58:15 -07:00
Andrew Kelley
b642604691 targets command shows which ones are native 2016-02-10 16:35:07 -07:00
Andrew Kelley
1ff2edf67e add "targets" command to list architectures, oses, abis 2016-02-10 15:41:50 -07:00
realazthat
54fbe7560e Added code for generating nonnull attributes 2016-02-05 16:29:26 -05:00
Andrew Kelley
b87d0abefe fix debug info for bool type 2016-02-04 14:02:37 -07:00
Andrew Kelley
815d9a7994 fix debug info for arrays being 1 element too short 2016-02-03 02:44:21 -07:00
Andrew Kelley
41b95cc237 parseh: correct debug for forward decls
also C typedefs emit simply `const Foo = Bar;`
since in C you can implicitly cast from a typedef
child to parent but in zig you can't.
2016-01-31 17:48:19 -07:00
Andrew Kelley
32821e7098 add function pointer support
See #14
2016-01-18 16:42:45 -07:00
Andrew Kelley
3a326d5005 pave the road for function pointers
See #14
2016-01-18 08:50:10 -07:00
Andrew Kelley
8d60ffe314 solve the mystery of undefined reference error
big surprise, C++ is to blame
2016-01-15 17:12:26 -07:00
Andrew Kelley
2061cd50c0 resolve enum types and emit debug info 2016-01-11 00:25:17 -07:00
Andrew Kelley
fb1e3a5be9 codegen: emit debug metadata for parameters 2016-01-02 20:42:32 -07:00
Andrew Kelley
e4cb28dbf2 structs have debug information 2015-12-16 17:11:35 -07:00
Andrew Kelley
a10277bd94 prepare codebase for struct and string support
parsing code for structs, strings, and c string literals
partial semantic analyzing code for structs, strings, and c string literals
2015-12-12 00:10:37 -07:00