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