Commit Graph

85475 Commits

Author SHA1 Message Date
bors
0db7abe5b6 Auto merge of #54004 - tromey:enum-debuginfo, r=tromey
Fix DWARF generation for enums

The DWARF generated for Rust enums was always somewhat unusual.
Rather than using DWARF constructs directly, it would emit magic field
names like "RUST$ENCODED$ENUM$0$Name" and "RUST$ENUM$DISR".  Since
PR #45225, though, even this has not worked -- the ad hoc scheme was
not updated to handle the wider variety of niche-filling layout
optimizations now available.

This patch changes the generated DWARF to use the standard tags meant
for this purpose; namely, DW_TAG_variant and DW_TAG_variant_part.

The patch to implement this went in to LLVM 7.  In order to work with
older versions of LLVM, and because LLVM doesn't do anything here for
PDB, the existing code is kept as a fallback mode.

Support for this DWARF is in the Rust lldb and in gdb 8.2.

Closes #32920
Closes #32924
Closes #52762
Closes #53153
2018-10-30 23:36:10 +00:00
Matthias Krüger
f6b8876d45 use String::from() instead of format!() macro to construct Strings. 2018-10-31 00:10:10 +01:00
James Duley
d3e71e4986 thread::unpark: Avoid notifying with mutex locked.
This means when the other thread wakes it can continue right away
instead of having to wait for the mutex.

Also add some comments explaining why the mutex needs to be locked in
the first place.
2018-10-30 22:54:35 +00:00
Nick Cameron
4895deaeea save-analysis: make sure we save the def for the last segment of a path 2018-10-31 11:53:38 +13:00
bors
1cf82fd9c0 Auto merge of #55303 - alexcrichton:update-libm, r=kennytm
Update compiler-builtins submodule

This commit updates our `compiler-builtins` submodule which brings in at
least a few improvements for intrinsics on wasm32
2018-10-30 20:43:36 +00:00
Tom Tromey
98b26888e5 Update lldb
Update src/tools/lldb to pick up a needed bug fix in the
DW_TAG_variant_part handling.
2018-10-30 12:09:11 -06:00
Tom Tromey
d36e37e43e Add legacy debuginfo tests
The enum debuginfo patch includes a legacy mode that is used when
building against LLVM 5 and LLVM 6.  The main enum debuginfo tests
have been updated to rely on the new approach and a new-enough gdb.
This patch makes a copy of these tests so that the fallback mode will
continue to be tested.

Note that nil-enum.rs is not copied; it seemed not to provide enough
value to bother.

A new header directive is added, "ignore-llvm-version".  I will send a
patch to update the rustc documentation once this lands.
2018-10-30 12:09:11 -06:00
Tom Tromey
8bbb62f849 Update enum debuginfo tests
Bug #52452 notes some debuginfo test regressions when moving to gdb
8.1.  This series will also cause versions of gdb before 8.2 to fail
when a recent LLVM is used -- DW_TAG_variant_part support was not
added until 8.2.

This patch updates one of the builders to a later version of Ubuntu,
which comes with gdb 8.2.  It updates the relevant tests to require
both a new-enough LLVM and a new-enough gdb; the subsequent patch
arranges to continue testing the fallback mode.

The "gdbg" results are removed from these tests because the tests now
require a rust-enabled gdb.

If you read closely, you'll see that some of the lldb results in this
patch still look a bit strange.  This will be addressed in a
subsequent patch; I believe the fix is to disable the Python
pretty-printers when lldb is rust-enabled.
2018-10-30 12:09:04 -06:00
Tom Tromey
da7b6b4b4d Avoid possible integer overflow in niche value computation
@eddyb pointed out in review that the niche value computation had a
possible integer overflow problem, fixed here as he suggested.
2018-10-30 12:06:07 -06:00
Tom Tromey
e7c49a738e Add more enum debug info tests
Rename the previous enum debug info test, and add more tests to cover
c-like enums and tagged (ordinary) enums.
2018-10-30 12:06:07 -06:00
Tom Tromey
d8b0eb7caf Tighten enum-debug test
Update the new enum-debug to ensure that field "D" does not have a
discrimnant.
2018-10-30 12:06:07 -06:00
Tom Tromey
c32f402749 Address review comments
This fixes the issues pointed out in review.
2018-10-30 12:06:07 -06:00
Tom Tromey
71ce4c3007 Fix DWARF generation for enums
The DWARF generated for Rust enums was always somewhat unusual.
Rather than using DWARF constructs directly, it would emit magic field
names like "RUST$ENCODED$ENUM$0$Name" and "RUST$ENUM$DISR".  Since
PR #45225, though, even this has not worked -- the ad hoc scheme was
not updated to handle the wider variety of niche-filling layout
optimizations now available.

This patch changes the generated DWARF to use the standard tags meant
for this purpose; namely, DW_TAG_variant and DW_TAG_variant_part.

The patch to implement this went in to LLVM 7.  In order to work with
older versions of LLVM, and because LLVM doesn't do anything here for
PDB, the existing code is kept as a fallback mode.

Support for this DWARF is in the Rust lldb and in gdb 8.2.

Closes #32920
Closes #32924
Closes #52762
Closes #53153
2018-10-30 12:06:07 -06:00
Alex Crichton
fdcb58821e Update compiler-builtins submodule
This commit updates our `compiler-builtins` submodule which brings in at
least a few improvements for intrinsics on wasm32
2018-10-30 10:51:55 -07:00
ljedrz
d1e74a3356 Use vec![x; n] instead of iter::repeat(x).take(n).collect() 2018-10-30 14:37:26 +01:00
bors
e8aef7cae1 Auto merge of #55502 - kennytm:rollup, r=kennytm
Rollup of 12 pull requests

Successful merges:

 - #54885 (Don't lint 'unused_parens` on `if (break _) { .. }`)
 - #55205 (Improve a few cases of collecting to an FxHash(Map/Set))
 - #55450 (msp430: remove the whole Atomic* API)
 - #55459 (Add UI test for #49296)
 - #55472 (Use opt.take() instead of mem::replace(opt, None))
 - #55473 (Take advantage of impl Iterator in (transitive/elaborate)_bounds)
 - #55474 (Fix validation false positive)
 - #55476 (Change a flat_map with 0/1-element vecs to a filter_map)
 - #55487 (Adjust Ids of path segments in visibility modifiers)
 - #55493 (Doc fixes)
 - #55494 (borrowck=migrate must look at parents of closures)
 - #55496 (Update clippy)

Failed merges:

r? @ghost
2018-10-30 11:38:31 +00:00
kennytm
c16ff6e7e8
Rollup merge of #55496 - Manishearth:clippyup, r=oli-obk
Update clippy

Pulls in https://github.com/rust-lang-nursery/rust-clippy/pull/3382, should unbreak clippy

r? @oli-obk @phansch
2018-10-30 18:55:38 +08:00
kennytm
93f84e5586
Rollup merge of #55494 - pnkfelix:issue-55492-borrowck-migrate-must-look-at-parents-of-closures, r=davidtwco
borrowck=migrate must look at parents of closures

This fixes the NLL migration mode (which is the default with edition=2018) to inspect all parents of a closure in addition to the closure itself when looking to see if AST-borrowck issues an error for the given code.

This should be a candidate for beta backport.

Fix #55492
2018-10-30 18:55:37 +08:00
kennytm
50b8879bcf
Rollup merge of #55493 - GuillaumeGomez:doc-fixes, r=@QuietMisdreavus
Doc fixes

Fixes the bug in source code page where code was below line numbers and fixed this bug too ("Expand description" is shown whereas it shouldn't):

<img width="1440" alt="screenshot 2018-10-29 at 23 11 29" src="https://user-images.githubusercontent.com/3050060/47684136-1105ad80-dbd2-11e8-9e9f-fb7f26b0f5bd.png">

r? @QuietMisdreavus
2018-10-30 18:55:35 +08:00
kennytm
8b523640a1
Rollup merge of #55487 - nrc:path-fix, r=petrochenkov
Adjust Ids of path segments in visibility modifiers

Fixes #55376 (nightly regression)

r? @petrochenkov
2018-10-30 18:55:34 +08:00
kennytm
ed37d80c30
Rollup merge of #55476 - ljedrz:flat_map_to_filter_map, r=cramertj
Change a flat_map with 0/1-element vecs to a filter_map

No need to use vectors in this case - `Option`s are quite sufficient.
2018-10-30 18:55:33 +08:00
kennytm
3176239d34
Rollup merge of #55474 - oli-obk:const_eval_promoted, r=RalfJung
Fix validation false positive

Fixes #55454

r? @RalfJung
2018-10-30 18:55:32 +08:00
kennytm
0cf957db39
Rollup merge of #55473 - ljedrz:transitive/elaborate_bounds_impl_iterator, r=estebank
Take advantage of impl Iterator in (transitive/elaborate)_bounds

Other than for `debug!`ging purposes, `bounds` are only iterated over, so they don't need to be collected into vectors.
2018-10-30 18:55:30 +08:00
kennytm
dc04aaf777
Rollup merge of #55472 - ljedrz:use_option_take, r=cramertj
Use opt.take() instead of mem::replace(opt, None)

It's easier to read.
2018-10-30 18:55:29 +08:00
kennytm
64417a70fc
Rollup merge of #55459 - memoryruins:issue-49296, r=oli-obk
Add UI test for #49296

Closes #49296

r? @oli-obk
2018-10-30 18:55:28 +08:00
kennytm
8c8581703e
Rollup merge of #55450 - japaric:msp430, r=alexcrichton
msp430: remove the whole Atomic* API

PR #51953 enabled the Atomic*.{load,store} API on MSP430. Unfortunately,
the LLVM backend doesn't currently support those atomic operations, so this
commit removes the API and leaves instructions on how and when to enable it
in the future.

the second fixes compiling liballoc for msp430

closes #54511
r? @alexcrichton
cc @chernomor @awygle @cr1901 @pftbest
2018-10-30 18:55:27 +08:00
kennytm
62f4316b01
Rollup merge of #55205 - ljedrz:faster_fxhashmap/set_population, r=estebank
Improve a few cases of collecting to an FxHash(Map/Set)

Either use `collect` or procure specified capacity when possible.
2018-10-30 18:55:26 +08:00
kennytm
df511e94a0
Rollup merge of #54885 - llogiq:fix-54704, r=nikomatsakis
Don't lint 'unused_parens` on `if (break _) { .. }`

This fixes #54704
2018-10-30 18:55:25 +08:00
Guillaume Gomez
f55e986a71 Fix invalid "expand description" display 2018-10-30 10:18:51 +01:00
Manish Goregaokar
49e712f122 Update clippy 2018-10-30 04:30:29 +00:00
bors
b1ca3907e0 Auto merge of #55221 - matthewjasper:fewer-duplicate-migrate-messages, r=pnkfelix
Don't emit cannot move errors twice in migrate mode

Closes #55154
cc #53004

r? @pnkfelix
2018-10-30 03:57:53 +00:00
bors
fb2446ad58 Auto merge of #55190 - dlavati:51574_rename_codemap_filemap, r=petrochenkov
Rename other occs of (Code/File)Map to Source(Map/File) #51574

Additional renamings for #51574.
2018-10-30 01:02:40 +00:00
Felix S. Klock II
465cd66286 Regression test for issue #54477.
I removed the original file that more completely captured the original
crate's tests, as its source crate
(https://crates.io/crates/collection) is licensed under GPL3, and I
suspect that license is not loose enough for me to put into our repo
under our MIT/Apache licensing.

(Would it be an option to attach the GPL3 licesne to just the one
test? Probably. But do I want to bother with it that that point?
Nope!)
2018-10-30 01:05:48 +01:00
Felix S. Klock II
87ce5ec6e9 Update compare-mode=nll stderr files to reflect the fix to #55492. 2018-10-30 00:37:38 +01:00
Felix S. Klock II
d5798c9554 Regression test for issue 55492. 2018-10-30 00:25:09 +01:00
Felix S. Klock II
98c9a3e1e9 borrowck=migrate mode needs to check parent(s) when its given a closure. 2018-10-30 00:16:28 +01:00
Guillaume Gomez
58c88e6236 Fix source code pages in rustdoc 2018-10-29 22:38:26 +01:00
Oliver S̶c̶h̶n̶e̶i̶d̶e̶r Scherer
3e9d7e8aa8
Add a comment explaining the two checks 2018-10-29 21:31:22 +01:00
David Lavati
6c9f6a1afd Rename other occs of (Code/File)Map to Source(Map/File) #51574 2018-10-29 21:26:13 +01:00
Matthew Jasper
42a541e0f1 Don't emit cannot move errors twice in migrate mode 2018-10-29 20:22:01 +00:00
Nick Cameron
f586ac9ef9 Adjust Ids of path segments in visibility modifiers
Fixes #55376
2018-10-30 09:09:49 +13:00
Ralf Jung
d10304eeb5 the memory_deallocated hook can make good use of knowing the size 2018-10-29 20:40:19 +01:00
Ralf Jung
2a5eae3ac7 provide mutable borrows when hooking memory write access 2018-10-29 16:34:58 +01:00
ljedrz
bb3e77d284 Change a flat_map with 0/1-element vecs to a filter_map 2018-10-29 16:28:33 +01:00
Oliver Scherer
3ad154f484 Fix wrong validation clasisfication of Option<&T>::Some values 2018-10-29 15:22:47 +01:00
ljedrz
40079ac42d Take advantage of impl Iterator in (transitive/elaborate)_bounds 2018-10-29 14:56:24 +01:00
Oliver Scherer
e0106d99d6 Assert that promoteds don't fail to be evaluated for being too generic 2018-10-29 14:50:30 +01:00
ljedrz
2203ec38cb Use opt.take() instead of mem::replace(opt, None) 2018-10-29 13:48:26 +01:00
Andre Bogus
1a37575ade don't lint unused_parens on if (break _) 2018-10-29 12:41:56 +01:00
bors
d586d5d2f5 Auto merge of #55462 - pietroalbini:rollup, r=pietroalbini
Rollup of 9 pull requests

Successful merges:

 - #54965 (update tcp stream documentation)
 - #55269 (fix typos in various places)
 - #55384 (Avoid unnecessary allocations in `float_lit` and `integer_lit`.)
 - #55423 (back out bogus `Ok`-wrapping suggestion on `?` arm type mismatch)
 - #55426 (Make a bunch of trivial methods of NonNull be `#[inline]`)
 - #55438 (Avoid directly catching BaseException in bootstrap configure script)
 - #55439 (Remove unused sys import from generate-deriving-span-tests)
 - #55440 (Remove unreachable code in hasClass function in Rustdoc)
 - #55447 (Fix invalid path in generate-deriving-span-tests.py.)

Failed merges:

r? @ghost
2018-10-29 10:19:17 +00:00