Commit Graph

121847 Commits

Author SHA1 Message Date
Manish Goregaokar 40fd2bdcfe
Rollup merge of #72804 - estebank:opaque-missing-lts-in-fn-2, r=nikomatsakis
Further tweak lifetime errors involving `dyn Trait` and `impl Trait` in return position

* Suggest substituting `'static` lifetime in impl/dyn `Trait + 'static` instead of `Trait + 'static + '_`
* When `'static` is explicit, also suggest constraining argument with it
* Reduce verbosity of suggestion message and mention lifetime in label
* Tweak output for overlapping required/captured spans
* Give these errors an error code

Follow up to #72543.

r? @nikomatsakis
2020-06-18 15:20:43 -07:00
Manish Goregaokar 9262fc2a68
Rollup merge of #72628 - MikailBag:array-default-tests, r=shepmaster
Add tests for 'impl Default for [T; N]'

Related: #71690.
This pull request adds two tests:
- Even it T::default() panics, no leaks occur.
- [T; 0] is Default even if T is not.

I believe at some moment `Default` impl for arrays will be rewritten to use const generics instead of macros, and these tests will help to prevent behavior changes.
2020-06-18 15:20:41 -07:00
Manish Goregaokar 49ab0cab61
Rollup merge of #72279 - RalfJung:raw-ref-macros, r=nikomatsakis
add raw_ref macros

In https://github.com/rust-lang/rust/issues/64490, various people were in favor of exposing `&raw` as a macro first before making the actual syntax stable. So this PR (unstably) introduces those macros.

I'll create the tracking issue if we're okay moving forward with this.
2020-06-18 15:20:39 -07:00
Manish Goregaokar 39f8784eb6
Rollup merge of #71976 - mibac138:let-recovery, r=estebank
Improve diagnostics for `let x += 1`

Fixes(?) #66736

The code responsible for the `E0404` errors is [here](https://github.com/rust-lang/rust/blob/master/src/librustc_parse/parser/ty.rs#L399-L424) which I don't think can be easily modified to prevent emitting an error in one specific case. Because of this I couldn't get rid of `E0404` and instead added `E0067` along with a help message which will fix the problem.

r? @estebank
2020-06-18 15:20:36 -07:00
Manish Goregaokar 45d033b21c
Rollup merge of #71338 - estebank:recursive-impl-trait, r=nikomatsakis
Expand "recursive opaque type" diagnostic

Fix #70968, partially address #66523.
2020-06-18 15:20:33 -07:00
Manish Goregaokar 9d388d465d
Rollup merge of #70551 - mark-i-m:ty-err-2, r=varkor
Make all uses of ty::Error delay a span bug

r? @eddyb

A second attempt at https://github.com/rust-lang/rust/pull/70245

resolves https://github.com/rust-lang/rust/issues/70866
2020-06-18 15:20:30 -07:00
bors e55d3f9c52 Auto merge of #73384 - petrochenkov:gnulink, r=cuviper
linker: Never pass `-no-pie` to non-gnu linkers

Fixes https://github.com/rust-lang/rust/issues/73370
2020-06-18 04:29:23 +00:00
bors 7d16c1d5f5 Auto merge of #73065 - Amanieu:tls-fix, r=oli-obk
Fix link error with #[thread_local] introduced by #71192

r? @oli-obk
2020-06-18 00:29:10 +00:00
bors 2935d294ff Auto merge of #69890 - lenary:lenary/riscv-frame-pointers, r=hanna-kruppe,Mark-Simulacrum
[RISC-V] Do not force frame pointers

We have been seeing some very inefficient code that went away when using
`-Cforce-frame-pointers=no`. For instance `core::ptr::drop_in_place` at
`-Oz` was compiled into a function which consisted entirely of saving
registers to the stack, then using the frame pointer to restore the same
registers (without any instructions between the prolog and epilog).

The RISC-V LLVM backend supports frame pointer elimination, so it makes
sense to allow this to happen when using Rust. It's not clear to me that
frame pointers have ever been required in the general case.

In rust-lang/rust#61675 it was pointed out that this made reassembling
stack traces easier, which is true, but there is a code generation
option for forcing frame pointers, and I feel the default should not be
to require frame pointers, given it demonstrably makes code size worse
(around 10% in some embedded applications).

The kinds of targets mentioned in rust-lang/rust#61675 are popular, but
should not dictate that code generation should be worse for all RISC-V
targets, especially as there is a way to use CFI information to
reconstruct the stack when the frame pointer is eliminated. It is also
a misconception that `fp` is always used for the frame pointer. `fp` is
an ABI name for `x8` (aka `s0`), and if no frame pointer is required,
`x8` may be used for other callee-saved values.

---

I am partly posting this to get feedback from @fintelia who introduced the change to require frame pointers, and @hanna-kruppe who had issues with the original PR. I would understand if we wanted to remove this setting on only a subset of RISC-V targets, but my preference would be to remove this setting everywhere.

There are more details on the code size savings seen in Tock here: https://github.com/tock/tock/pull/1660
2020-06-17 11:30:56 +00:00
bors e8ff4bcbd0 Auto merge of #73322 - Amanieu:asm-srcloc-llvm, r=cuviper
Update LLVM submodule

Only includes one commit:
- [D80759](https://reviews.llvm.org/D80759): Fix FastISel dropping srcloc metadata from InlineAsm

Fixes #40555
2020-06-16 20:40:22 +00:00
bors a647c0cd68 Auto merge of #73402 - Dylan-DPC:rollup-8udzpfu, r=Dylan-DPC
Rollup of 8 pull requests

Successful merges:

 - #73237 (Check for overflow in DroplessArena and align returned memory)
 - #73339 (Don't run generator transform when there's a TyErr)
 - #73372 (Re-order correctly the sections in the sidebar)
 - #73373 (Use track caller for bug! macro)
 - #73380 (Add more info to `x.py build --help` on default value for `-j JOBS`.)
 - #73381 (Fix typo in docs of std::mem)
 - #73389 (Use `Ipv4Addr::from<[u8; 4]>` when possible)
 - #73400 (Fix forge-platform-support URL)

Failed merges:

r? @ghost
2020-06-16 14:58:14 +00:00
Who? Me?! cfdbbb5600
format derives
Co-authored-by: lzutao <taolzu@gmail.com>
2020-06-16 09:41:05 -05:00
Dylan DPC b4dd6a0dc4
Rollup merge of #73400 - rnestler:patch-1, r=jonas-schievink
Fix forge-platform-support URL

Apparently it got changed.
2020-06-16 15:08:48 +02:00
Dylan DPC 3c437e5733
Rollup merge of #73389 - lzutao:from, r=kennytm
Use `Ipv4Addr::from<[u8; 4]>` when possible

Resolve this comment: https://github.com/rust-lang/rust/pull/73331#discussion_r440098369
2020-06-16 15:08:47 +02:00
Dylan DPC 759547b210
Rollup merge of #73381 - ratijas:fix-typo-std-mem, r=jonas-schievink
Fix typo in docs of std::mem
2020-06-16 15:08:45 +02:00
Dylan DPC 66a1da38d0
Rollup merge of #73380 - pnkfelix:make-bootstrap-help-print-num-cpus, r=Mark-Simulacrum
Add more info to `x.py build --help` on default value for `-j JOBS`.
2020-06-16 15:08:43 +02:00
Dylan DPC 94105c2da3
Rollup merge of #73373 - lzutao:bug-trackcaller, r=Amanieu
Use track caller for bug! macro
2020-06-16 15:08:42 +02:00
Dylan DPC 6c44519749
Rollup merge of #73372 - GuillaumeGomez:re-order-sidebar-sections, r=kinnison
Re-order correctly the sections in the sidebar

Before that, "trait implementations" and "implementors" titles in the sidebar were before "methods" for example. Which wasn't logical considering that the two sections come after in the "content".

r? @kinnison
2020-06-16 15:08:40 +02:00
Dylan DPC 5bbcdf5f53
Rollup merge of #73339 - jonas-schievink:unbug, r=estebank
Don't run generator transform when there's a TyErr

Not sure if this might cause any problems later on, but we shouldn't be hitting codegen or const eval for the produced MIR anyways, so it should be fine.

cc https://github.com/rust-lang/rust/issues/72685#issuecomment-643749020
2020-06-16 15:08:37 +02:00
Dylan DPC c65f39dac4
Rollup merge of #73237 - tmiasko:arena, r=nnethercote
Check for overflow in DroplessArena and align returned memory

* Check for overflow when calculating the slice start & end position.
* Align the pointer obtained from the allocator, ensuring that it
  satisfies user requested alignment (the allocator is only asked for
  layout compatible with u8 slice).
* Remove an incorrect assertion from DroplessArena::align.
* Avoid forming references to an uninitialized memory in DroplessArena.

Helps with #73007, #72624.
2020-06-16 15:08:35 +02:00
Raphael Nestler 60410ef020
Fix forge-platform-support URL
Apparently it got changed.
2020-06-16 13:42:09 +02:00
bors 435f97cec1 Auto merge of #73285 - Mark-Simulacrum:clippy-fail, r=RalfJung,oli-obk
Avoid prematurely recording toolstates

When we're running with dry_run enabled (i.e. all builds do this initially), we're
guaranteed to save of a toolstate of TestFail for tools that aren't tested. In practice,
we do test tools as well, so for those tools we would initially record them as being
TestPass, and then later on re-record the correct state after actually testing them.
However, this would not work well if the build failed for whatever reason (e.g. panicking
in bootstrap, or as was the case in #73097, clippy failing to test successfully), we would
just go on believing that things passed when they in practice did not.

This commit also adjusts saving toolstate to never record clippy explicitly (otherwise, it
would be recorded when building it); eventually that'll likely move to other tools as well
but not yet. This is deemed simpler than checking everywhere we generically save
toolstate.

We also move clippy out of the "toolstate" no-fail-fast build into a separate x.py
invocation; this should no longer be technically required but provides the nice state of
letting us check toolstate for all tools and only then check clippy (giving full results
on every build).

r? @oli-obk

Supercedes #73275, also fixes #73274
2020-06-16 11:26:45 +00:00
Ralf Jung 0265e4e61b add tracking issue 2020-06-16 09:25:29 +02:00
bors c8a9c340de Auto merge of #72962 - lcnr:ObligationCause-lrc, r=ecstatic-morse
store `ObligationCause` on the heap

Stores `ObligationCause` on the heap using an `Rc`.

This PR trades off some transient memory allocations to reduce the size of–and thus the number of instructions required to memcpy–a few widely used data structures in trait solving.
2020-06-16 06:22:52 +00:00
Lzu Tao 0e6c333ca6 Use `Ipv4Addr::from<[u8; 4]>` when possible 2020-06-16 01:54:17 +00:00
mark e855b90a8e track caller for delay_span_bug 2020-06-15 18:25:58 -05:00
mark 268decbac8 make all uses of ty::Error or ConstKind::Error delay a span bug 2020-06-15 18:25:58 -05:00
Vadim Petrochenkov e8cf5721b1 linker: Never pass `-no-pie` to non-gnu linkers 2020-06-15 23:17:39 +03:00
ivan tkachenko 71c54db3dc
Fix typo in docs of std::mem 2020-06-15 22:14:45 +03:00
Esteban Küber 8f12485335 review comments 2020-06-15 12:11:28 -07:00
Felix S. Klock II b34a417972 Add more info to `x.py build --help` on default value for `-j JOBS`. 2020-06-15 15:02:57 -04:00
Esteban Küber 96f5584b80 Expand "recursive opaque type" diagnostic
Fix #70968, partially address #66523.
2020-06-15 11:08:43 -07:00
Mark Rousskov 399bf383f4 Disable clippy tests 2020-06-15 13:57:55 -04:00
Mark Rousskov 51e11e310c Avoid prematurely recording toolstates
When we're running with dry_run enabled (i.e. all builds do this initially), we're
guaranteed to save of a toolstate of TestFail for tools that aren't tested. In practice,
we do test tools as well, so for those tools we would initially record them as being
TestPass, and then later on re-record the correct state after actually testing them.
However, this would not work well if the build failed for whatever reason (e.g. panicking
in bootstrap, or as was the case in 73097, clippy failing to test successfully), we would
just go on believing that things passed when they in practice did not.

This commit also adjusts saving toolstate to never record clippy explicitly (otherwise, it
would be recorded when building it); eventually that'll likely move to other tools as well
but not yet. This is deemed simpler than checking everywhere we generically save
toolstate.

We also move clippy out of the "toolstate" no-fail-fast build into a separate x.py
invocation; this should no longer be technically required but provides the nice state of
letting us check toolstate for all tools and only then check clippy (giving full results
on every build).
2020-06-15 13:56:11 -04:00
Esteban Küber bfe1434d3b fix rebase 2020-06-15 09:09:20 -07:00
Esteban Küber f7a1f97307 Change E0758 to E0759 to avoid conflict with #72912 2020-06-15 09:06:58 -07:00
Esteban Küber e31367de6b small tweaks 2020-06-15 09:06:58 -07:00
Esteban Küber 34d8692262 Register new eror code 2020-06-15 09:06:58 -07:00
Esteban Küber 10d9bf1767 Use note for requirement source span 2020-06-15 09:06:58 -07:00
Esteban Küber 31ea589a06 review comments: wording 2020-06-15 09:06:58 -07:00
Esteban Küber 539e9783df Tweak wording and add error code 2020-06-15 09:06:57 -07:00
Esteban Küber bc15790609 Tweak output for overlapping required/captured spans 2020-06-15 09:06:57 -07:00
Esteban Küber e75588934c Move overlapping span to a note 2020-06-15 09:06:57 -07:00
Esteban Küber 921f35fe73 Reduce verbosity of suggestion message and mention lifetime in label 2020-06-15 09:06:57 -07:00
Esteban Küber 4e90f177cc When `'static` is explicit, suggest constraining argument with it 2020-06-15 09:06:57 -07:00
Esteban Küber 81c909488e Suggest substituting `'static` lifetime in impl/dyn `Trait + 'static` return types 2020-06-15 09:06:57 -07:00
bors f315c35a77 Auto merge of #72357 - ortem:new-dbg-pretty-printers, r=pnkfelix
Implement new gdb/lldb pretty-printers

Reopened #60826

This PR replaces current gdb and lldb pretty-printers with new ones that were originally written for [IntelliJ Rust](https://github.com/intellij-rust/intellij-rust/tree/master/prettyPrinters).

The current state of lldb pretty-printers is poor, because [they don't use synthetic children](https://github.com/rust-lang/rust/issues/55586#issuecomment-436610063). When I started to reimplement lldb pretty-printers with synthetic children support, I've found current version strange and hard to support. I think `debugger_pretty_printers_common.py` is overkill, so I got rid of it.

The new pretty-printers have to support all types supported by current pretty-printers, and also support `Rc`, `Arc`, `Cell`, `Ref`, `RefCell`, `RefMut`, `HashMap`, `HashSet`.

Fixes #56252
2020-06-15 15:21:45 +00:00
Lzu Tao fe7456ce94 Use track caller for bug! macro 2020-06-15 14:17:58 +00:00
Guillaume Gomez b67bdb5082 Re-order correctly the sections in the sidebar 2020-06-15 15:25:24 +02:00
Lzu Tao 64a6de25ea Join mutiple lines if it is more readable 2020-06-15 13:15:47 +00:00