summary refs log tree commit diff
path: root/src/llvm
AgeCommit message (Collapse)AuthorLines
2017-06-28[beta] rebase LLVM on top of 4.0.1Ariel Ben-Yehuda-0/+0
This backports fixes several codegen bugs, including #42893.
2017-06-22Backport fixes to LLVM 4.0 ARM codegen bugsAriel Ben-Yehuda-0/+0
So ARM had quite a few codegen bugs on LLVM 4.0 which are fixed on LLVM trunk. This backports 5 of them: r297871 - ARM: avoid clobbering register in v6 jump-table expansion. - fixes rust-lang/rust#42248 r294949 - [Thumb-1] TBB generation: spot redefinitions of index r295816 - [ARM] Fix constant islands pass. r300870 - [Thumb-1] Fix corner cases for compressed jump tables r302650 - [IfConversion] Add missing check in IfConversion/canFallThroughTo - unblocks rust-lang/rust#39409
2017-05-13LLVM: Add support for EABI-compliant libcalls on MSP430.Vadzim Dambrouski-0/+0
This change will allow rust code to have proper support for division and multiplication using libgcc libcalls.
2017-05-04Update llvm to pull in various backportsTim Neumann-0/+0
2017-04-27Update LLVM to fix incorrect codegen on MSP430.Vadzim Dambrouski-0/+0
The bug was reported by @akovaski here: https://github.com/rust-embedded/rfcs/issues/20#issuecomment-296482148
2017-04-26Cherry pick LLVM hexagon fixesMichael Wu-0/+0
2017-04-23FIN/LLVM: new rust patches required for 4.0Tim Neumann-0/+0
2017-04-23FIN/LLVM: adopt all applicable rust llvm patchesTim Neumann-0/+0
2017-04-23FIN: update to upstream (llvm 4.0.1 + fastcomp 1.37.10) & compiler-rt 4.0Tim Neumann-0/+0
2017-03-24update LLVM with fix for PR32379Ariel Ben-Yehuda-0/+0
Fixes #40593.
2017-03-19update LLVMAriel Ben-Yehuda-0/+0
pick up a fix to LLVM PR29151.
2017-03-10LLVM: Update submodule to include SRet support patch for MSP430.Vadzim Dambrouski-0/+0
2017-03-02LLVM: Update submodule to include x86-interrupt ABI patchesPhilipp Oppermann-0/+0
2016-12-16llvm: backport r280651Jorge Aparicio-0/+0
fixes #38406
2016-12-08LLVM: Update submodule to include patches for MSP430.Vadzim Dambrouski-0/+0
Fixes #37829
2016-12-01Update llvm fork to 3ec14daffb4b8c0604df50b7fb0ab552f456e381Anthony Ramine-0/+0
2016-10-29LLVM: Update submodule to rust-llvm-2016-10-29 branch.Vadzim Dambrouski-0/+0
2016-10-19LLVM: Add triple for FuchsiaRaph Levien-0/+0
Update subproject commit.
2016-10-10LLVM: Backport "[SimplifyCFG] Correctly test for unconditional branches in ↵Michael Woerister-0/+0
GetCaseResults"
2016-10-10Update LLVM to fix bug in SimplifyCFG pass.Michael Woerister-0/+0
2016-10-07llvm: Update LLVM to include fix for pathologic case in its LiveDebugValues ↵Michael Woerister-0/+0
pass.
2016-09-30Update LLVM with fastcomp patchesBrian Anderson-0/+0
2016-09-17Up the LLVMSimonas Kazlauskas-0/+0
Fixes #36474
2016-09-01Fix optimization regressions for operations on [x; n]-initialized arrays.Eduard Burtescu-0/+0
2016-08-29llvm: backport "[SimplifyCFG] Hoisting invalidates metadata".Eduard Burtescu-0/+0
2016-08-17Update LLVM to include 4 backported commits by @majnemer.Eduard Burtescu-0/+0
2016-08-10Improved checking of target's llvm_configCameron Hart-0/+0
Point llvm @bitshifter branch until PR accepted Use today's date for LLVM auto clean trigger Update LLVM submodule to point at rust-lang fork. Handle case when target is set
2016-08-06Merge branch 'master' into issue-30961Cameron Hart-0/+0
2016-08-01Upgrade LLVM once more to get a bugfixJan-Erik Rediger-0/+0
@tmiasko did some digging and discovered that https://reviews.llvm.org/D22858 may be relevant.
2016-07-29Update LLVM againJan-Erik Rediger-0/+0
2016-07-29[LLVM-3.9] Use llvm-3.9 branchJan-Erik Rediger-0/+0
2016-07-29rustc: Update LLVM to the LLVM 3.9 release branchAlex Crichton-0/+0
The 3.9 release of LLVM isn't out yet, but this moves us onto that branch to start tracking it.
2016-07-29Upgrade llvmJan-Erik Rediger-0/+0
2016-07-29Upgrade LLVM to include std::thread patchJan-Erik Rediger-0/+0
2016-07-29Upgrade to rust-llvm-2016-07-09Jan-Erik Rediger-0/+0
2016-07-19Hopefully this is the right llvm commit this time!Cameron Hart-0/+0
2016-07-11Add help for target CPUs, features, relocation and code models.Cameron Hart-0/+0
2016-07-08Update LLVM.Michael Woerister-0/+0
2016-06-05Update LLVMAriel Ben-Yehuda-0/+0
Picks up the fix for PR28005
2016-05-09rustc: Use C++ personalities on MSVCAlex Crichton-0/+0
Currently the compiler has two relatively critical bugs in the implementation of MSVC unwinding: * #33112 - faults like segfaults and illegal instructions will run destructors in Rust, meaning we keep running code after a super-fatal exception has happened. * #33116 - When compiling with LTO plus `-Z no-landing-pads` (or `-C panic=abort` with the previous commit) LLVM won't remove all `invoke` instructions, meaning that some landing pads stick around and cleanups may be run due to the previous bug. These both stem from the flavor of "personality function" that Rust uses for unwinding on MSVC. On 32-bit this is `_except_handler3` and on 64-bit this is `__C_specific_handler`, but they both essentially are the "most generic" personality functions for catching exceptions and running cleanups. That is, thse two personalities will run cleanups for all exceptions unconditionally, so when we use them we run cleanups for **all SEH exceptions** (include things like segfaults). Note that this also explains why LLVM won't optimize away `invoke` instructions. These functions can legitimately still unwind (the `nounwind` attribute only seems to apply to "C++ exception-like unwining"). Also note that the standard library only *catches* Rust exceptions, not others like segfaults and illegal instructions. LLVM has support for another personality, `__CxxFrameHandler3`, which does not run cleanups for general exceptions, only C++ exceptions thrown by `_CxxThrowException`. This essentially ideally matches our use case, so this commit moves us over to using this well-known personality function as well as exception-throwing function. This doesn't *seem* to pull in any extra runtime dependencies just yet, but if it does we can perhaps try to work out how to implement more of it in Rust rather than relying on MSVCRT runtime bits. More details about how this is actually implemented can be found in the changes itself, but this... Closes #33112 Closes #33116
2016-04-26Update llvm to 751345228a0ef03fd147394bb5104359b7a808beFabrice Desré-0/+0
2016-03-18Update LLVM to include a backport to restore AA performanceBjörn Steinbrink-0/+0
cc #31435
2016-03-15rustbuild: Fix LLVM compile on MinGWAlex Crichton-0/+0
The LLVM change [1] in #32239 unfortunately broke the LLVM build on MinGW, so this LLVM submodule update brings in one more fix [2] which should hopefully remedy that. Once this lands we should be able to immediately start gating on this to prevent it from happening again. [1]: https://github.com/rust-lang/llvm/commit/be89e4b5 [2]: https://github.com/rust-lang/llvm/commit/3dcd2c84
2016-03-14rustbuild: Fix cross compiling to FreeBSDAlex Crichton-0/+0
This commit fixes our support for cross compiling a compiler to run on FreeBSD. Over the weekend I managed to get a cross compiler from Linux to FreeBSD [1] which I hope to soon use to start producing FreeBSD nightly compilers. With the `make dist` support added in #32237 we should be able to produce standard rustc/rust-std packages for FreeBSD through a new slave with this cross compiler. Currently, however, we don't "Just Work" when cross compiling FreeBSD and a number of changes were required (part of this PR). They include: * A few build fixes were needed in LLVM. Our own branch has been rebased on the actual 3.8 release and I applied one extra commit [2] which contains two fixes: 1. The LLVM CMake build system passes the `-Wl,-z,defs` flag on many platforms, but *not* when `CMAKE_SYSTEM_NAME` is "FreeBSD". Unfortunately this doesn't take into account when we're cross compiling, and as predicted the build will fail if `-Wl,-z,defs` is passed (see [3] for more info). To fix this we test `TARGET_TRIPLE` instead of the `CMAKE_SYSTEM_NAME` which is what we're compiling for which fixes the problem. 2. The `PATH_MAX` constant is apparently defined in a different location than many other Unix systems, so a file which required this just needed some help to keep compiling. * Support for compiling compiler-rt with CMake has been added to rustbuild. It looks like it just emulates Linux in what it compiles as it didn't seem to naturally produce anything else... At least the architecture is right, so seems good for now at least! [1]: https://github.com/alexcrichton/port-of-rust/blob/master/prebuilt/freebsd/Dockerfile [2]: https://github.com/rust-lang/llvm/commit/be89e4b5 [3]: https://bugs.webkit.org/show_bug.cgi?id=138420
2016-02-20Another rebase on the 3.8 release branch of LLVMAlex Crichton-0/+0
Looks like they picked up a bunch of fixes, one of which is even quite relevant to us! Closes #31505
2016-02-16rustc: Rebase LLVM on the 3.8 release branchAlex Crichton-0/+0
This commit rebases our LLVM submodule on the most recent tip of the `release_38` branch of LLVM. There's been a few fixes and this notably fixes the assertion error in #31702.
2016-01-29trans: Upgrade LLVMAlex Crichton-0/+0
This brings some routine upgrades to the bundled LLVM that we're using, the most notable of which is a bug fix to the way we handle range asserts when loading the discriminant of an enum. This fix ended up being very similar to f9d4149c where we basically can't have a range assert when loading a discriminant due to filling drop, and appropriate flags were added to communicate this to `trans::adt`.
2015-12-02Disable the null check elimination passBjörn Steinbrink-0/+0
This pass causes mis-optimizations in some cases and is probably no longer really important for us, so let's disable it for now. Fixes #30081
2015-10-18Update LLVM fork to include a backported fix for broken debug locationsBjörn Steinbrink-0/+0
Fixes #28947
2015-09-29Tweak Travis to use GCEAlex Crichton-0/+0
Travis CI has new infrastructure using the Google Compute Engine which has both faster CPUs and more memory, and we've been encouraged to switch as it should help our build times! The only downside currently, however, is that IPv6 is disabled, causing a number of standard library tests to fail. Consequently this commit tweaks our travis config in a few ways: * ccache is disabled as it's not working on GCE just yet * Docker is used to run tests inside which reportedly will get IPv6 working * A system LLVM installation is used instead of building LLVM itself. This is primarily done to reduce build times, but we want automation for this sort of behavior anyway and we can extend this in the future with building from source as well if needed. * gcc-specific logic is removed as the docker image for Ubuntu gives us a recent-enough gcc by default.