57 Commits

Author SHA1 Message Date
bors
0777c757a6 Auto merge of #40123 - TimNN:llvm40, r=alexcrichton
LLVM 4.0 Upgrade

Since nobody has done this yet, I decided to get things started:

**Todo:**

* [x] push the relevant commits to `rust-lang/llvm` and `rust-lang/compiler-rt`
* [x] cleanup `.gitmodules`
* [x] Verify if there are any other commits from `rust-lang/llvm` which need backporting
* [x] Investigate / fix debuginfo ("`<optimized out>`") failures
* [x] Use correct emscripten version in docker image

---

Closes #37609.

---

**Test results:**

Everything is green 🎉
2017-04-24 22:18:16 +00:00
Tim Neumann
5ae4a58c33 FIN: build comiler-rt wihout Thumb on arm 2017-04-23 22:00:02 +02:00
kennytm
71a9e10669
Fixed invalid 128-bit division on 32-bit target. Fixed issue #41228.
Added test cases to cover all special-cased branches of udivmodti4.
2017-04-13 00:15:04 +08:00
Tim Neumann
cc23d17ce9 make shift builtins panic-free with new unchecked_sh* intrinsics
Also update some 128 bit builtins to be panic-free without relying
on the const evaluator.
2017-03-15 06:59:09 +01:00
Ariel Ben-Yehuda
1e536245e8 Rollup merge of #40254 - nagisa:compiler-builtin-no-panic, r=alexcrichton
Fix personality_fn within the compiler_builtins

compiler_builtins may not have any unwinding within it to link correctly. This is notoriously
finicky, and this small piece of change removes yet another case where personality function
happens to get introduced.

Side note: I do remember solving the exact same thing before. I wonder why it has reappered...

@cuviper, could you please try building beta with this patch applied? It should apply cleanly. If it works, I’ll nominate to land this into beta.

Fixes(?) https://github.com/rust-lang/rust/issues/40251
2017-03-08 20:53:53 +02:00
Vadim Petrochenkov
428f063fcd Automate timestamp creation and build skipping for native libraries
Add comments
2017-03-04 21:38:26 +03:00
Vadim Petrochenkov
aeadc81ddc Build compiler-rt and sanitizers only once 2017-03-04 21:38:26 +03:00
Vadim Petrochenkov
f2187093f8 Add/remove rerun-if-changed when necessary 2017-03-04 21:38:26 +03:00
Simonas Kazlauskas
8f581cc917 Fix personality_fn within the compiler_builtins
compiler_builtins may not have any unwinding within it to link correctly. This is notoriously
finicky, and this small piece of change removes yet another case where personality function
happens to get introduced.

Side note: I do remember solving the exact same thing before. I wonder why it has reappered...
2017-03-04 11:28:58 +02:00
Shawn Walker-Salas
2e756e22b3 add solaris sparcv9 support
* Update bootstrap to recognize the cputype 'sparcv9' (used on Solaris)
* Change to never use -fomit-frame-pointer on Solaris or for sparc
* Adds rust target sparcv9-sun-solaris

Fixes #39901
2017-02-16 21:40:14 -08:00
Corey Farwell
13b8e4b416 Rollup merge of #39519 - nagisa:more-snap, r=alexcrichton
More snap cleanup

r? @alexcrichton
2017-02-05 12:45:11 -05:00
Corey Farwell
ddd01e0d55 Rollup merge of #39472 - est31:unadjusted_only_for_win, r=nagisa
Don't use "unadjusted" ABI on non windows platforms

We introduced the unadjusted ABI to work around wrong
(buggy) ABI expectations by LLVM on Windows [1].
Therefore, it should be solely used on Windows and not
on other platforms, like right now is the case.

[1]: see this comment for details https://github.com/rust-lang/rust/pull/38482#issuecomment-269074031
2017-02-05 12:45:04 -05:00
bors
7df5c0f17b Auto merge of #39425 - jakllsch:netbsd-a, r=alexcrichton
Don't build gcc_personality_v0.c on NetBSD either
2017-02-04 07:29:28 +00:00
Simonas Kazlauskas
87ace0d720 More snap cleanup 2017-02-04 04:53:09 +02:00
est31
3c161393b7 Don't use "unadjusted" ABI on non windows platforms
We introduced the unadjusted ABI to work around wrong
(buggy) ABI expectations by LLVM on Windows [1].
Therefore, it should be solely used on Windows and not
on other platforms, like right now is the case.

[1]: see this comment for details https://github.com/rust-lang/rust/pull/38482#issuecomment-269074031
2017-02-04 02:42:38 +01:00
Alex Crichton
626e754473 Bump version, upgrade bootstrap
This commit updates the version number to 1.17.0 as we're not on that version of
the nightly compiler, and at the same time this updates src/stage0.txt to
bootstrap from freshly minted beta compiler and beta Cargo.
2017-02-03 13:25:46 -08:00
Jonathan A. Kollasch
d10a509932 Don't build gcc_personality_v0.c on NetBSD either 2017-01-31 11:33:54 -06:00
Alex Crichton
6b23cc48db travis: Expand the cross linux image
This expands the `cross` travis matrix entry with a few more targets that our
nightlies are building:

* x86_64-rumprun-netbsd
* arm-unknown-linux-musleabi
* arm-unknown-linux-musleabihf
* armv7-unknown-linux-musleabihf
* mips-unknown-linux-musl
* mipsel-unknown-linux-musl

This commit doesn't compile custom toolchains like our current cross-image does,
but instead compiles musl manually and then compiles libunwind manually (like
x86_64) for use for the ARM targets and just uses openwrt toolchains for the
mips targets.
2017-01-16 18:50:01 -08:00
Simonas Kazlauskas
c032bbf95e Fix endian bugs in i128 intrinsic impls 2017-01-16 11:32:38 +02:00
Guillaume Gomez
ef2c921380 Rollup merge of #38877 - jdub:patch-1, r=sanxiyn
libcompiler_builtins: Don't build emutls.c

Rather than improving the check, let's ditch emutls.c entirely.
2017-01-13 10:42:27 +01:00
Seo Sanghyeon
4d3d2c7397 Rollup merge of #38623 - alexcrichton:less-osx-warnings, r=aturon
std: Remove unused objects from compiler-builtins

We don't actually use trampoline_setup.c and all the `*tf3` business
seems related to f80/f128 business. Specifically this'll fix some
warnings showing up during builds on OSX.
2017-01-10 20:27:40 +09:00
Jeff Waugh
9f92d4f9d5 libcompiler_builtins: Don't build emutls.c
Rather than improving the check, let's ditch emutls.c entirely.
2017-01-08 03:34:31 +11:00
bors
38bd207626 Auto merge of #38482 - est31:i128, r=eddyb
i128 and u128 support

Brings i128 and u128 support to nightly rust, behind a feature flag. The goal of this PR is to do the bulk of the work for 128 bit integer support. Smaller but just as tricky features needed for stabilisation like 128 bit enum discriminants are left for future PRs.

Rebased version of  #37900, which in turn was a rebase + improvement of #35954 . Sadly I couldn't reopen #37900 due to github. There goes my premium position in the homu queue...

[plugin-breaking-change]

cc #35118 (tracking issue)
2016-12-31 18:54:31 +00:00
est31
29e01af6a6 Fix iabs and add some more tests 2016-12-31 18:19:06 +01:00
Alex Crichton
a8535ce9d1 std: Don't build docs for misc facade crates
Retain the same behavior as stable.

Closes #38319
2016-12-30 10:00:33 -08:00
est31
6b359635ec Fix warning when compiling on 64 bit Linux
Code is much simpler now as well.
2016-12-30 15:19:51 +01:00
Simonas Kazlauskas
86ce3a2f7c Further and hopefully final Windows fixes 2016-12-30 15:19:50 +01:00
est31
ee6256b1ff More windows fixes 2016-12-30 15:17:30 +01:00
est31
9842d27e9c Fix build 2016-12-30 15:17:30 +01:00
Simonas Kazlauskas
5a853b0422 The windows special-cases only apply to x64 2016-12-30 15:17:30 +01:00
Simonas Kazlauskas
e0e53773e3 Fix a return type 2016-12-30 15:17:30 +01:00
est31
01dcb7fe6c Tidy 2016-12-30 15:17:29 +01:00
est31
c3e3bc0058 Fix another windows ABI mistake
...this time with the float intrinsics.
2016-12-30 15:17:29 +01:00
est31
d71223a6c5 intrinsics: try to return everything via {u,i}128ret to match LLVM
on suggestion by nagisa.
2016-12-30 15:17:29 +01:00
est31
ca73affe8d Tidy 2016-12-30 15:17:29 +01:00
est31
53ff50a94f Port to wrapping_* and unchecked_* operations
Otherwise, we codegen panic calls which create problems with debug assertions turned on.
2016-12-30 15:17:28 +01:00
est31
3be141f1b4 Remove unimplemented() function 2016-12-30 15:17:28 +01:00
est31
92e6c53a25 libcompiler_builtins: don't codegen dead code call to eh_personality
There was a linker error on 32 bit platforms with optimisations turned off,
complaining that there was an undefined reference to "rust_eh_personality",
when compiling the rustc_const_math as stage1 artifact.

Apparently the compiler_builtins crate includes a call to "rust_eh_personality".
If compiled for 64 bits, this call doesn't appear, which explains why the linker
error only happens on 32 bit platforms, and optimisations will get it removed
on 32 bit as well.

There were two origins of the call:
    1. A for loop where apparently the compiler wasn't sure
       whether next() could panic or not, and therefore generated a landing
       pad for the worst case. The minimal reproducible example is "for _ in 0..sr { }".
    2. A default impl of uabs where the compiler apparently wasn't sure either
       whether iabs() could panic or not. Many thanks to nagisa for
       contributing the fix.

This commit also puts extern "C" to the intrinsics, as this is generally a
good thing to do.
2016-12-30 15:17:28 +01:00
est31
3e2046214c Try to fix some things
* shift so that no panics are generated (otherwise results in linker error)
* no_std as insurance to not get into issues with errors like "cannot satisfy dependencies so `rustc_i128` only shows up once" (pure guessing here, but it doesn't hurt...)
2016-12-30 15:17:28 +01:00
est31
317810d4c4 Always use Rust based intrinsics on Windows
The check inside compiler-rt file int_types.h to #define CRT_HAS_128BIT
looks like:

 #if (defined(__LP64__) || defined(__wasm__)) && \
     !(defined(__mips__) && defined(__clang__))
 #define CRT_HAS_128BIT
 #endif

Windows uses LLP64 instead of LP64, so it doesn't ship with the C based
intrinsics.

Also, add libcompiler_builtins to the list of crates that may have platform
specific checks (like the ones we just added).
2016-12-30 15:17:28 +01:00
est31
13d49f5299 Fix warning on 64 bit 2016-12-30 15:17:28 +01:00
est31
2715367f08 intrinsics : uabs and iabs 2016-12-30 15:17:28 +01:00
est31
dc14a108ae Fix intrinsics and expand tests 2016-12-30 15:17:27 +01:00
est31
32d8d24159 Fix rebase fallout 2016-12-30 15:17:27 +01:00
Simonas Kazlauskas
5fd5d524b7 WIP intrinsics 2016-12-30 15:17:27 +01:00
Alex Crichton
51b655e58f std: Remove unused objects from compiler-builtins
We don't actually use trampoline_setup.c and all the `*tf3` business
seems related to f80/f128 business. Specifically this'll fix some
warnings showing up during builds on OSX.
2016-12-26 15:21:02 -08:00
Jeremy Soller
474eb6223b Do not build emutls on Redox 2016-12-22 22:01:15 -07:00
bors
5de15be5ec Auto merge of #38046 - rkruppe:fix-32bit-rustbuild, r=alexcrichton
Fix rustbuild on 32 bit Linux

This is cherry-picked from #37817 which seems to be stalled and currently needs to be rebased anyway.

r? @alexcrichton (who authored this change)
2016-11-28 21:44:44 -06:00
Robin Kruppe
02249e813e Define VISIBILITY_HIDDEN when compiling compiler-rt
This is cherry-picked from #37817 which seems to be stalled and currently needs to be rebased anyway.

r? @alexcrichton (who authored this change)
2016-11-28 12:23:57 +01:00
Ulrik Sverdrup
17cb7bdd83 rustbuild: Add bench = false to std shim crates 2016-11-26 00:26:44 +01:00