aboutsummaryrefslogtreecommitdiff
path: root/src/zig_llvm.cpp
AgeCommit message (Collapse)Author
2018-02-25add coroutine LLVM passesAndrew Kelley
2018-02-25codegen for coro_id instructionAndrew Kelley
See #727
2018-02-13zig_llvm.cpp uses new(std::nothrow)Andrew Kelley
This fixes a mismatched malloc/delete because we were allocating with malloc and then llvm was freeing with delete.
2018-01-31*WIP* error setsAndrew Kelley
2018-01-06disable NewGVNAndrew Kelley
closes #673
2017-12-26self-hosted: build against zig_llvm and embedded LLDAndrew Kelley
Now the self-hosted compiler re-uses the same C++ code for interfacing with LLVM as the C++ code. It also links against the same LLD library files.
2017-12-06add higher level arg-parsing API + misc. changesAndrew Kelley
* add @noInlineCall - see #640 This fixes a crash in --release-safe and --release-fast modes where the optimizer inlines everything into _start and clobbers the command line argument data. If we were able to verify that the user's code never reads command line args, we could leave off this "no inline" attribute. * add i29 and u29 primitive types. u29 is the type of alignment, so it makes sense to be a primitive. probably in the future we'll make any `i` or `u` followed by digits into a primitive. * add `aligned` functions to Allocator interface * add `os.argsAlloc` and `os.argsFree` so that you can get a `[]const []u8`, do whatever arg parsing you want, and then free it. For now this uses the other API under the hood, but it could be reimplemented to do a single allocation. * add tests to make sure command line argument parsing works.
2017-12-01update to LLVM 5.0.1rc2Andrew Kelley
2017-11-15basic union supportAndrew Kelley
See #144
2017-11-03Add emit command-line option (#580)Marc Tiehuis
Add emit command-line option
2017-10-23remove CXX ABI workaroundAndrew Kelley
the actual solution is you must compile zig with the same compiler that compiled llvm, lld, and clang. reverts 8d60ffe314306e5295fb76338c6391e5fe986dea
2017-10-15clean up some resourcesAndrew Kelley
2017-10-10add module flag to emit CodeView for COFF object filesAndrew Kelley
see #516
2017-09-17add -mllvm supportAndrew Kelley
useful for debugging crashes in llvm optimizer
2017-09-01cleanup whitespaceJosh Wolfe
2017-08-30codegen: all stores specify align valueAndrew Kelley
See #37
2017-08-29introduce align keywordAndrew Kelley
* 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-26update for llvm 5.0.0rc1Andrew Kelley
2017-08-09more intuitive left shift and right shift operatorsAndrew Kelley
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-06-14progress toward windows hello world workingAndrew Kelley
2017-04-30back to AT&T syntax for assemblyAndrew Kelley
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-13fix crash when using zig to linkAndrew Kelley
without explicit dynamic linker
2017-04-13ability to inline at function callsiteAndrew Kelley
closes #306
2017-04-11run alwaysinline pass in debug modeAndrew Kelley
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-03-23use intel dialect for inline assemblyAndrew Kelley
closes #242
2017-03-13use lld instead of system linkerAndrew Kelley
2017-03-10update to llvm 4.0Andrew Kelley
2017-02-06coldcc works betterAndrew Kelley
* Only use Cold Calling Convention on x86 * Add the cold attribute to functions marked with coldcc
2017-02-05tell LLVM the target sub arch typeAndrew Kelley
2017-02-05infer hard float from target environments that imply itAndrew Kelley
2016-09-10rename LLVMZig to ZigLLVMAndrew Kelley
2016-09-04generate debug info for global constantsAndrew Kelley
See #41
2016-09-04port to llvm 3.9Andrew Kelley
2016-05-07add div_exact builtin fnAndrew Kelley
closes #149
2016-05-06add debug safety for left shiftingAndrew Kelley
See #46
2016-05-04add cmpxchg builtin functionAndrew Kelley
2016-04-28better alignment value for stack variablesAndrew Kelley
fixes debug info sometimes not being available for parameters
2016-04-27better parameter codegenAndrew Kelley
* ability to take address of a parameter (closes #97) * debug symbols work for parameters
2016-04-09fix debug symbols regression after llvm 3.8.0Andrew Kelley
2016-03-08update to llvm 3.8.0Andrew Kelley
2016-02-16rename 'environ' to 'env_type'Andrew Kelley
environ appears to clash with another symbol in mingw land
2016-02-12fix build on GCCAndrew Kelley
2016-02-11ability to cross compileAndrew Kelley
hello_libc.zig can produce a windows build
2016-02-10cleanup target data organizationAndrew Kelley
2016-02-10targets command shows which ones are nativeAndrew Kelley
2016-02-10add "targets" command to list architectures, oses, abisAndrew Kelley
2016-02-05Added code for generating nonnull attributesrealazthat
2016-02-04fix debug info for bool typeAndrew Kelley
2016-02-03fix debug info for arrays being 1 element too shortAndrew Kelley
2016-01-31parseh: correct debug for forward declsAndrew Kelley
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.