Commit Graph

811 Commits

Author SHA1 Message Date
Alex Crichton 72526f3811 Bump to 0.1.26 2020-02-28 11:01:42 -08:00
Andre Richter 43bcb3b59f
aarch64: Exclude FP intrinsics on +nofp or +nosimd (#344)
`AArch64` GCCs exit with an error condition when they encounter any kind of
floating point code if the `nofp` and/or `nosimd` compiler flags have been set.

Therefore, evaluate if those flags are present and set a boolean that causes any
compiler-rt intrinsics that contain floating point source to be excluded for
this target.

This patch prepares https://github.com/rust-lang/rust/pull/68334
2020-02-28 13:01:22 -06:00
Alex Crichton 3e6327aa59 Bump to 0.1.25 2020-02-11 22:21:38 -08:00
Tyler Mandry cae3e6ea23
Set probestack visibility to hidden on ELF targets (#340) 2020-02-11 22:21:12 -08:00
Alex Crichton 955cea42cc Update CI installation of Rust on macos 2020-01-28 00:39:52 -08:00
Daniel Frampton 0a15c9bdfe Don't modify the intrinsic abi for aarch64 windows (#337) 2020-01-14 15:28:10 -06:00
Adam Schwalm d7191b14c1 Add separate rust_probestack definition for uefi (#335)
This is necessary because the Mach-O definition must have the
triple underscore, but the UEFI one must not.
2020-01-06 10:22:30 -06:00
Alex Crichton 6de4f8f2e0 Bump to 0.1.23 2019-12-10 09:02:40 -08:00
Runji Wang 9193bbee5d Fix compile error on x86_64-unknown-uefi target (#331)
* fix compile error on x86_64-unknown-uefi target

* Fix tests on nightly
2019-12-10 09:02:14 -08:00
Alex Crichton 59b3eb7df1 Bump to 1.0.22 2019-12-06 06:54:50 -08:00
Tyler Mandry 2566aa663b Add control flow information to __rust_probestack (#328) 2019-12-06 08:51:42 -06:00
Alex Crichton f8c28c5c3b Update checkout action reference 2019-12-03 09:11:29 -08:00
Alex Crichton 0df0cf55d6 Update publishing instructions 2019-11-11 10:40:09 -08:00
Alex Crichton 49ad9018a9 Bump to 0.1.21 2019-11-11 10:39:08 -08:00
Alex Crichton d6a13419f6
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 40ef6cb749
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 a533ae9c5a Bump to 0.1.20 2019-11-07 11:04:36 -08:00
Oliver Scherer 7a8161dab7 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 9823b956ce Fix Github Actions for recent system changes 2019-10-28 07:39:04 -07:00
Ian Kronquist 462b73c1fe 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 ea5db23a6a Remove `-nursery` from urls 2019-09-25 11:20:14 -07:00
Alex Crichton 711d17fb3c Update the gitmodule url for `libm` 2019-09-25 11:19:35 -07:00
Alex Crichton 1ac3970855 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
Alex Crichton 03875452c9
Merge pull request #313 from Lokathor/lokathor-tries-git
Lokathor tries to use the .gitmodules
2019-09-10 08:39:45 -05:00
Lokathor 893fe7e5de update the libm submodule, again 2019-09-09 19:43:37 -06:00
Lokathor 0a3e283c7c Update build.rs 2019-09-06 18:02:11 -06:00
Lokathor 095f020122 Update build.rs 2019-09-06 15:20:05 -06:00
Lokathor b3f16e25f2 Update the libm submodule 2019-09-06 13:48:15 -06:00
Lokathor a14ee75a24 i was told to change this path to my repo and reset things 2019-09-06 11:37:00 -06:00
Alex Crichton 44dc22f34d
Merge pull request #312 from Ralith/elementwise-unordered-atomics
Tidy up unordered elementwise atomic memory intrinsics
2019-08-23 11:07:41 -07:00
Benjamin Saunders 9775f08b1d Tidy up unordered elementwise atomic memory intrinsics 2019-08-23 10:20:09 -07:00
Alex Crichton bc57f53b5d
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 997b86d767 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 1060f34342
Merge pull request #310 from alexcrichton/modernize
Modernize the `testcrate` slighty
2019-08-19 17:21:50 -05:00
Alex Crichton f0b43234dd
Merge pull request #309 from jgalenson/file-prefix-map
Support deterministic builds by remapping the __FILE__ prefix if the …
2019-08-19 17:20:33 -05:00
Joel Galenson c8f7928916 Update comment to mention where the __FILE__ macro is used. 2019-08-19 15:12:07 -07:00
Alex Crichton 332220adea 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 ca423fe49a Support deterministic builds by remapping the __FILE__ prefix if the compiler supports it. 2019-08-19 09:30:45 -07:00
Alex Crichton 36da64f20e Bump to 0.1.19 2019-07-24 07:05:29 -07:00
Alex Crichton c8b08eb470
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 985a43095c 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 79a6a1603d Bump to 0.1.18 2019-07-19 07:44:17 -07:00
Alex Crichton e578d47247
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 56f5b5d898
Merge pull request #301 from RalfJung/dyn
avoid bare trait objects
2019-07-15 10:04:18 -05:00
Alex Crichton 18f2d2d4ce Bump to 0.1.17 2019-07-15 07:26:49 -07:00
Alex Crichton 1ace961257
Merge pull request #300 from RalfJung/panic
avoid ptr::write which might panic in debug mode
2019-07-15 09:22:12 -05:00
bjorn3 7b716e6285 Fix tests 2019-07-13 12:27:58 +02:00
bjorn3 783430e6ae 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 65dacd7150 avoid bare trait objects 2019-07-13 11:07:43 +02:00
Ralf Jung 25edd204fa remove unused imports 2019-07-13 11:00:15 +02:00