Commit Graph

120493 Commits

Author SHA1 Message Date
Amanieu d'Antras
3590f4cf57 Work around more LLVM limitations 2020-05-18 14:41:32 +01:00
Amanieu d'Antras
19a0d14b5c Add notes about functions that are not currently used 2020-05-18 14:41:32 +01:00
Amanieu d'Antras
7dfa486d4a Add support for high byte registers on x86 2020-05-18 14:41:32 +01:00
Amanieu d'Antras
93e2946d0c Un-deprecate asm! macro 2020-05-18 14:41:32 +01:00
Amanieu d'Antras
ff97db1e54 Apply review feedback 2020-05-18 14:41:32 +01:00
Amanieu d'Antras
8ab0f2d3c5 Add tests for asm! 2020-05-18 14:41:32 +01:00
Amanieu d'Antras
abed45ff9f Implement asm! codegen 2020-05-18 14:41:32 +01:00
Amanieu d'Antras
342a64caef Check that asm const operands are actually constants 2020-05-18 14:41:31 +01:00
Amanieu d'Antras
1e7b246086 Add asm! to MIR 2020-05-18 14:41:31 +01:00
Amanieu d'Antras
10510b5820 HIR passes for asm! 2020-05-18 14:41:31 +01:00
Amanieu d'Antras
ec1ad61f88 Implement AST lowering for asm! 2020-05-18 14:41:29 +01:00
Amanieu d'Antras
d5b1501d8c Add asm! to HIR 2020-05-18 14:39:54 +01:00
Amanieu d'Antras
a0adf53bc9 Implement asm! in librustc_builtin_macros 2020-05-18 14:39:54 +01:00
Amanieu d'Antras
813a9fc4f1 Add asm! to AST 2020-05-18 14:39:54 +01:00
Amanieu d'Antras
989edf6dd9 Add inline asm register definitions to librustc_target 2020-05-18 14:39:53 +01:00
Amanieu d'Antras
62d5784a8f Add RISC-V target features 2020-05-18 14:39:53 +01:00
Tom Eccles
5b9941ca47 Add remote-test-client help text 2020-05-18 12:33:18 +01:00
bors
9e2a6a29ce Auto merge of #72289 - RalfJung:abort_internal, r=Mark-Simulacrum
abort_internal is safe

`sys::abort_internal` is stably exposed as a safe function. Forward that assumption "inwards" to the `sys` module by making the function itself safe, too.

This corresponds to what https://github.com/rust-lang/rust/pull/72204 did for the intrinsic. We should probably wait until that lands because some of the intrinsic calls in this PR might then need adjustments.
2020-05-18 11:11:19 +00:00
bors
d4bf05693c Auto merge of #72316 - RalfJung:rollup-70g6bln, r=RalfJung
Rollup of 2 pull requests

Successful merges:

 - #72143 (make offset must_use)
 - #72307 (use the new interface to initialize conditional variables)

Failed merges:

r? @ghost
2020-05-18 07:53:03 +00:00
Nicholas Nethercote
959bd48887 Add some more rfold implementations. 2020-05-18 16:51:39 +10:00
Ralf Jung
2cff5d961a
Rollup merge of #72307 - hermitcore:condvar, r=Mark-Simulacrum
use the new interface to initialize conditional variables

HermitCore introduce a new interface to intialize conditional variables.
Consequently, minor changes are required to support this interface.
2020-05-18 08:48:45 +02:00
Ralf Jung
2a90664798
Rollup merge of #72143 - rust-lang:steveklabnik-must-use, r=sfackler
make offset must_use

https://djugei.github.io/bad-at-unsafe/ describes an error a user had when trying to use offset:

> At first I just assumed that the .add() and .offset() methods on pointers would mutate the pointer. They do not. Instead they return a new pointer, which gets dropped silently if you don't use it. Unlike for example Result, which is must_use annotated.

This PR only adds `offset`, because I wanted to float the idea; I'm imagining that there's more than just `add` and `offset` that could use this. I am also very open to re-wording the warning.

r? @rust-lang/libs
2020-05-18 08:48:43 +02:00
Nicholas Nethercote
f4b9dc31f6 Tiny Vecs are dumb.
Currently, if you repeatedly push to an empty vector, the capacity
growth sequence is 0, 1, 2, 4, 8, 16, etc. This commit changes the
relevant code (the "amortized" growth strategy) to skip 1 and 2 in most
cases, instead using 0, 4, 8, 16, etc. (You can still get a capacity of
1 or 2 using the "exact" growth strategy, e.g. via `reserve_exact()`.)

This idea (along with the phrase "tiny Vecs are dumb") comes from the
"doubling" growth strategy that was removed from `RawVec` in #72013.
That strategy was barely ever used -- only when a `VecDeque` was grown,
oddly enough -- which is why it was removed in #72013.

(Fun fact: until just a few days ago, I thought the "doubling" strategy
was used for repeated push case. In other words, this commit makes
`Vec`s behave the way I always thought they behaved.)

This change reduces the number of allocations done by rustc itself by
10% or more. It speeds up rustc, and will also speed up any other Rust
program that uses `Vec`s a lot.
2020-05-18 15:26:59 +10:00
bors
1baf85c7e0 Auto merge of #72300 - flip1995:clippyup, r=Mark-Simulacrum
Sync Clippy

cc rust-lang/rust-clippy#5608

Included changes:

- renames/merges of some lints
- ICE fix
- Downgrade useless_let_if_seq to nursery
- FP fixes
- formatting

r? @oli-obk
2020-05-18 04:10:01 +00:00
bors
35d86693ac Auto merge of #72269 - RalfJung:unsafe-borrow-of-packed, r=Mark-Simulacrum
move borrow-of-packed-field unsafety check out of loop

Looks like during the place refactoring, this code somehow got into this loop even though it does not actually depend on the loop variables.
2020-05-18 00:54:42 +00:00
Stefan Lankes
3f47d9d2e6 minor changes to pass the format check 2020-05-18 00:06:32 +02:00
Stefan Lankes
06d692febd use new interface to initialize Condvar
HermitCore introduce a new interface to intialize conditional variables.
Consequently, minor changes are required to support this interface.
2020-05-17 23:49:18 +02:00
Ralf Jung
2764673dca abort_internal is safe 2020-05-17 23:38:31 +02:00
bors
5f472813df Auto merge of #72248 - petrochenkov:codemodel, r=Amanieu
Cleanup and document `-C code-model`

r? @Amanieu
2020-05-17 21:22:48 +00:00
Nicholas Nethercote
c2abf8f9c3 Tweak partition, unzip, try_find.
Many default iterator methods use `try_fold` or `fold`, and these ones
can too.
2020-05-18 05:41:59 +10:00
Nicholas Nethercote
4b7c3d88c6 Make fold standalone.
`fold` is currently implemented via `try_fold`, but implementing it
directly results in slightly less LLVM IR being generated, speeding up
compilation of some benchmarks.

(And likewise for `rfold`.)

The commit adds `fold` implementations to all the iterators that lack
one but do have a `try_fold` implementation. Most of these just call the
`try_fold` implementation directly.
2020-05-18 05:41:59 +10:00
Nadrieril
c6f0947ddb Improve comments 2020-05-17 18:28:27 +01:00
Dylan MacKenzie
856cd6609f Test that NRVO elides the call to memcpy 2020-05-17 10:24:06 -07:00
Dylan MacKenzie
1deaaa610c Don't unleash NRVO const-eval test 2020-05-17 10:23:44 -07:00
Nadrieril
aff073ec91 Cache len in Fields 2020-05-17 18:17:11 +01:00
Nadrieril
4f7a3784a5 typo 2020-05-17 17:38:24 +01:00
Nadrieril
079400c74b Fix bug just discovered
Suggested by matthewjasper here:
https://github.com/rust-lang/rust/pull/71930#issuecomment-626022502
I have no idea what this does but it seems to work.
2020-05-17 17:38:24 +01:00
Nadrieril
e5a2cd526a We don't use tyerr anymore
This however unearthed a bug, hence the FIXME and the workaround.
2020-05-17 17:38:23 +01:00
Nadrieril
8f08b16c03 Small allocation improvement 2020-05-17 17:38:23 +01:00
Nadrieril
59fa40a5a0 Filter out fields that should not be seen
This was previously done by giving those fields the type tyerr. This was
a hack.
2020-05-17 17:38:23 +01:00
Nadrieril
70b3872a12 Make all field-handling go through Fields 2020-05-17 17:38:23 +01:00
Nadrieril
c3d3727046 Clarify specialize_one_pattern
Using a more error-oriented approache to `Option`.
2020-05-17 17:38:23 +01:00
Nadrieril
3551f1a0f6 Use Fields as output to specialize_one_pattern 2020-05-17 17:38:20 +01:00
Nadrieril
76dea86df4 Factor out a struct that holds subfields of a pattern 2020-05-17 17:38:20 +01:00
Nadrieril
160eebec21 Only need TyErr for uninhabited types 2020-05-17 17:38:19 +01:00
Nadrieril
a5294b6486 We already handle arrays of unknown length correctly 2020-05-17 17:38:19 +01:00
Nadrieril
4a1772ea92 Factor the code that generates TyErrs 2020-05-17 17:38:19 +01:00
Nadrieril
e65d49d338 Fix incorrect ordering
I introduced this mistake in 175976e2a2
and I can't quite remember what the reasoning was back then. I think I
modeled it on `apply_constructor`, not realizing there was an important
difference in the order in which fields were stored.
2020-05-17 17:38:19 +01:00
bors
d79f1bd31a Auto merge of #72295 - RalfJung:rollup-icmhbs7, r=RalfJung
Rollup of 3 pull requests

Successful merges:

 - #72259 (Disallow forbidden usage of non-ascii identifiers.)
 - #72261 (Break out early on empty span when generate_fn_span)
 - #72291 (bootstrap: fix typo)

Failed merges:

r? @ghost
2020-05-17 16:20:19 +00:00
flip1995
4dc83a74fd
Merge commit 'e214ea82ad0a751563acf67e1cd9279cf302db3a' into clippyup 2020-05-17 17:36:26 +02:00