Commit Graph

671 Commits

Author SHA1 Message Date
Alex Crichton
c056e295e2 Bump to 1.0.22 2019-12-06 06:54:50 -08:00
Tyler Mandry
d511d48b97 Add control flow information to __rust_probestack (#328) 2019-12-06 08:51:42 -06:00
Alex Crichton
ca69fcbf12 Update checkout action reference 2019-12-03 09:11:29 -08:00
Alex Crichton
62c025e9a8 Update publishing instructions 2019-11-11 10:40:09 -08:00
Alex Crichton
4729d8bf39 Bump to 0.1.21 2019-11-11 10:39:08 -08:00
Alex Crichton
eb58e12abf Gate atomic intrinsics on presence of instructions (#324)
Don't emit the intrinsics for platforms which don't actually have the
instructions to do atomic loads/stores.

Closes #322
2019-11-11 12:38:50 -06:00
Alex Crichton
3f473cd3f3 Allow FFI-unsafe warnings for u128/i128 (#323)
* Allow FFI-unsafe warnings for u128/i128

Handle new warnings on nightly, and we shouldn't need to worry about
these with compiler-builtins since this is tied to a particular compiler.

* Clean up crate attributes

* No need for stability marker
* Rustdoc docs not used for this crate
* Remove old build-system related cruft from rustc itself.

* Run `cargo fmt`
2019-11-11 12:19:10 -06:00
Alex Crichton
5067dce074 Bump to 0.1.20 2019-11-07 11:04:36 -08:00
Oliver Scherer
bff186bef3 Emit _fltused on uefi targets as a short-term workaround (#317)
* Emit `_fltused` on `uefi` targets as a short-term workaround

* Remove stray docker container
2019-11-07 13:04:11 -06:00
Alex Crichton
12283c7aca Fix Github Actions for recent system changes 2019-10-28 07:39:04 -07:00
Ian Kronquist
af3d2e0a3c Implement bcmp (#315)
As of LLVM 9.0, certain calls to memcmp may be converted to bcmp, which I guess
could save a single subtraction on some architectures. [1]

bcmp is just like memcmp except instead of returning the difference between the
two differing bytes, it returns non-zero instead. As such, memcmp is a valid
implementation of bcmp.

If we care about size, bcmp should just call memcmp.
If we care about speed, we can change bcmp to look like this instead:
```rust
pub unsafe extern "C" fn bcmp(s1: *const u8, s2: *const u8, n: usize) -> i32 {
    let mut i = 0;
    while i < n {
        let a = *s1.offset(i as isize);
        let b = *s2.offset(i as isize);
        if a != b {
            return 1;
        }
        i += 1;
    }
    0
}
```

In this PR I do not address any changes which may or may not be needed for arm
aebi as I lack proper test hardware.

[1]: https://releases.llvm.org/9.0.0/docs/ReleaseNotes.html#noteworthy-optimizations
2019-09-30 11:02:47 -05:00
Alex Crichton
30bf61039f Remove -nursery from urls 2019-09-25 11:20:14 -07:00
Alex Crichton
d7adb275eb Update the gitmodule url for libm 2019-09-25 11:19:35 -07:00
Alex Crichton
0198311a4b Migrate to github actions from Azure Pipelines
Less need to manage users, more concurrency, and interface is all in
one!
2019-09-10 21:57:13 -05:00
Lokathor
b86b2d59bc update the libm submodule, again 2019-09-09 19:43:37 -06:00
Lokathor
e796054f9e Update build.rs 2019-09-06 18:02:11 -06:00
Lokathor
e079f2d70d Update build.rs 2019-09-06 15:20:05 -06:00
Lokathor
3ab350613b Update the libm submodule 2019-09-06 13:48:15 -06:00
Lokathor
e9a2b2ca11 i was told to change this path to my repo and reset things 2019-09-06 11:37:00 -06:00
Benjamin Saunders
01a0524d8c Tidy up unordered elementwise atomic memory intrinsics 2019-08-23 10:20:09 -07:00
Alex Crichton
85d36cbe37 Merge pull request #311 from Ralith/elementwise-unordered-atomics
Implement LLVM's elementwise unordered atomic memory intrinsics
2019-08-22 16:01:41 -07:00
Benjamin Saunders
1cc3d32874 Implement LLVM's elementwise unordered atomic memory intrinsics
Allows uses of intrinsics of the form
llvm.(memcpy|memmove|memset).element.unordered.atomic.* to be linked.
2019-08-21 18:21:58 -07:00
Alex Crichton
1dec01c8e4 Merge pull request #310 from alexcrichton/modernize
Modernize the `testcrate` slighty
2019-08-19 17:21:50 -05:00
Joel Galenson
a80233948f Update comment to mention where the __FILE__ macro is used. 2019-08-19 15:12:07 -07:00
Alex Crichton
a292bd9cb5 Modernize the testcrate slighty
* Update `rand` dependency
* Drop `cast` in favor of explicit casting or crate-defined
* Move build script to 2018 edition
2019-08-19 14:02:08 -07:00
Joel Galenson
cefd832d89 Support deterministic builds by remapping the __FILE__ prefix if the compiler supports it. 2019-08-19 09:30:45 -07:00
Alex Crichton
8b76d44636 Bump to 0.1.19 2019-07-24 07:05:29 -07:00
Alex Crichton
0f6042793a Merge pull request #306 from da-x/probestack-frame-pointer
probestack: add frame pointers for easier traceback
2019-07-24 09:04:02 -05:00
Dan Aloni
84e8cc74c5 probestack: add frame pointers for easier traceback
This turns the following backtrace,

```
>> bt
 #0  0x0000555555576f73 in __rust_probestack () at /cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.14/src/probestack.rs:55
Backtrace stopped: Cannot access memory at address 0x7fffff7fedf0
```

To this:

```
>>> bt
 #0  0x0000555555574e47 in __rust_probestack ()
 #1  0x00005555555595ba in test::main ()
 #2  0x00005555555594f3 in std::rt::lang_start::{{closure}} ()
 #3  0x0000555555561ae3 in std::panicking::try::do_call ()
 #4  0x000055555556595a in __rust_maybe_catch_panic ()
 #5  0x000055555555af9b in std::rt::lang_start_internal ()
 #6  0x00005555555594d5 in std::rt::lang_start ()
 #7  0x000055555555977b in main ()
```
2019-07-24 10:18:30 +03:00
Alex Crichton
fb35190998 Bump to 0.1.18 2019-07-19 07:44:17 -07:00
Alex Crichton
3c36beb31b Merge pull request #302 from bjorn3/no_128bit_lang_items
Replace {u,i}128_* lang items with __rust_{u,i}128_* unmangled functions
2019-07-19 09:44:00 -05:00
Alex Crichton
e80c858e20 Merge pull request #301 from RalfJung/dyn
avoid bare trait objects
2019-07-15 10:04:18 -05:00
Alex Crichton
7773dafe01 Bump to 0.1.17 2019-07-15 07:26:49 -07:00
bjorn3
4ca09454a8 Fix tests 2019-07-13 12:27:58 +02:00
bjorn3
8bd3e4d5a1 Replace {u,i}128_* lang items with __rust_{u,i}128_* unmangled functions
The -Zlower-128bit-ops feature is completely broken, as libcore needs
those lang items to compile with this feature, but they are only
provided by compiler_builtins, which itself depends on libcore.
According to rust-lang/rust#58969 the feature never got finished.

This commit removes the associated lang items and replaces them with
normal unmangled functions, when there is no existing intrinsic. This
makes it easier for alternative codegen backends to implement 128bit
integer support.
2019-07-13 11:38:35 +02:00
Ralf Jung
8ae096b544 avoid bare trait objects 2019-07-13 11:07:43 +02:00
Ralf Jung
29ea38c623 remove unused imports 2019-07-13 11:00:15 +02:00
Ralf Jung
f4bc012b26 avoid ptr::write which might panic in debug mode 2019-07-13 10:55:54 +02:00
varkor
319ae3ab42 Bump to 0.1.16 2019-06-06 01:09:47 +01:00
Alex Crichton
06dbf6ac2d Merge pull request #298 from varkor/update-libm
Update libm for fmin/fmax/fminf/fmaxf
2019-06-05 18:34:37 -05:00
Alex Crichton
22030968eb More fixes for CI 2019-06-05 16:19:26 -07:00
Alex Crichton
0d83008f7a Attempt to fix CI 2019-06-05 16:09:39 -07:00
varkor
3fe09ab411 Update libm for fmin/fmax/fminf/fmaxf 2019-06-05 23:41:18 +01:00
Sean Leather
3b18638b98 Fix typo: mingw_unwinding 2019-05-21 08:43:50 +02:00
Alex Crichton
9c469738d6 Bump to 0.1.15 2019-05-16 08:12:14 -07:00
Alex Crichton
b84b7143e8 Remove compiler-rt submodule from this repository
This commit removes the `compiler-rt` submodule from this repository.
The goal here is to align the `compiler-rt` used for compiling C
intrinsics with the upstream rust-lang/rust's usage of `llvm-project`.
Currently we have both an `llvm-project` repository as well as
`compiler-rt`, but they can naturally get out of sync and it's just one
more submodule to manage.

The thinking here is that the feature `c` for this crate, when
activated, will require the user to configure where the source code for
`compiler-rt` is present. This places the onus on the builder of
`compiler-builtins` to check-out and arrange for the appropriate
`compiler-rt` source code to be placed somewhere. For rust-lang/rust
this is already done with the `llvm-project` submodule, and we can
arrange for it to happen on this crate's CI anyway.

For users of this crate this is a bit of a bummer, but `c` is disabled
by default anyway and it seems unlikely that `c` is explicitly opted in
to all that much. (given the purpose of this crate)

This should allow us to archive the `compiler-rt` repository and simply
use `llvm-project` in the rust-lang/rust repository.
2019-05-16 07:50:20 -07:00
Alex Crichton
e6503aeea7 Bump to 0.1.14 2019-05-15 14:47:58 -07:00
Alex Crichton
f567dbb36b Remove the need for #[cfg] in #[use_c_shim_if]
This commit tweaks the implementation of the synthetic
`#[use_c_shim_if]` attribute, renaming it to
`#[maybe_use_optimized_c_shim]` in the process. This no longer requires
specifying a `#[cfg]` clause indicating when the optimized intrinsic
should be used, but rather this is inferred and printed from the build
script.

The build script will now print out appropriate `#[cfg]` directives for
rustc to indicate what intrinsics it's compiling. This should remove the
need for us to keep the build script and the source in sync, but rather
the build script can simply take care of everything.
2019-05-15 12:59:31 -07:00
Alex Crichton
02aaab7026 Bump to 0.1.13 2019-05-14 14:41:07 -07:00
Alex Crichton
b2cfc3a4f1 Run rustfmt over everything 2019-05-14 14:40:38 -07:00