109358 Commits

Author SHA1 Message Date
Yuki Okushi
43c7a503fe
Rollup merge of #70150 - rust-lang:accept-felixes-typo, r=Mark-Simulacrum
triagebot.toml: accept cleanup-crew

r? @Mark-Simulacrum
2020-03-20 17:02:14 +09:00
Yuki Okushi
8965f63f84
Rollup merge of #70146 - GuillaumeGomez:cleanup-e0438, r=Dylan-DPC
Clean up e0438 explanation

r? @Dylan-DPC
2020-03-20 17:02:12 +09:00
Yuki Okushi
d6ebf215b1
Rollup merge of #70145 - lzutao:patch-1, r=Dylan-DPC
doc: Add quote to .init_array

The current formatting is not good without quotes:
![without-quote](https://i.imgur.com/RkIm4cr.png)
2020-03-20 17:02:11 +09:00
Yuki Okushi
8615a365b6
Rollup merge of #70133 - hermitcore:libpanic_unwind, r=nikomatsakis
remove unused imports

patch is required to avoid compiler errors by building src/libpanic_unwind/hermit.rs
2020-03-20 17:02:09 +09:00
Yuki Okushi
2f77d5fe39
Rollup merge of #70131 - Aaron1011:fix/issue-55099-test, r=nikomatsakis
Add regression test for TAIT lifetime inference (issue #55099)

Fixes #55099

The minimized reproducer in issue #55099 now compiles successfully.
This commit adds a regression test for it.
2020-03-20 17:02:08 +09:00
Yuki Okushi
532133b71d
Rollup merge of #70103 - GuillaumeGomez:cleanup-e0437, r=Dylan-DPC
Clean up E0437 explanation

r? @Dylan-DPC
2020-03-20 17:02:06 +09:00
Yuki Okushi
9dc699430f
Rollup merge of #69935 - davidtwco:issue-69925, r=eddyb
codegen/mir: support polymorphic `InstanceDef`s

cc #69925

This PR modifies the use of `subst_and_normalize_erasing_regions` on parts of the MIR bodies returned from `instance_mir`, so that `InstanceDef::CloneShim` and `InstanceDef::DropGlue` (where there is a type) do not perform substitutions. This avoids double substitutions and enables polymorphic `InstanceDef`s.

r? @eddyb
cc @nikomatsakis
2020-03-20 17:02:05 +09:00
Yuki Okushi
3554f2d941
Rollup merge of #69768 - oli-obk:union_field_ice, r=eddyb,RalfJung
Compute the correct layout for variants of uninhabited enums

r? @eddyb
cc @RalfJung

fixes #69191
cc #69763
2020-03-20 17:02:03 +09:00
Yuki Okushi
5d39517680
Rollup merge of #69618 - hniksic:mem-forget-doc-fix, r=RalfJung
Clarify the relationship between `forget()` and `ManuallyDrop`.

As discussed on reddit, this commit addresses two issues with the
documentation of `mem::forget()`:

* The documentation of `mem::forget()` can confuse the reader because of the
  discrepancy between usage examples that show correct usage and the
  accompanying text which speaks of the possibility of double-free.  The
  text that says "if the panic occurs before `mem::forget` was called"
  refers to a variant of the second example that was never shown, modified
  to use `mem::forget` instead of `ManuallyDrop`.  Ideally the documentation
  should show both variants, so it's clear what it's talking about.

  Also, the double free could be fixed just by placing `mem::forget(v)`
  before the construction of `s`.  Since the lifetimes of `s` and `v`
  wouldn't overlap, there would be no point where panic could cause a double
  free.  This could be mentioned, and contrasted against the more robust fix
  of using `ManuallyDrop`.

* This sentence seems unjustified: "For some types, operations such as
  passing ownership (to a funcion like `mem::forget`) requires them to
  actually be fully owned right now [...]".  Unlike C++, Rust has no move
  constructors, its moves are (possibly elided) bitwise copies.  Even if you
  pass an invalid object to `mem::forget`, no harm should come to pass
  because `mem::forget` consumes the object and exists solely to prevent
  drop, so there no one left to observe the invalid state state.
2020-03-20 17:02:01 +09:00
Eduard-Mihai Burtescu
6f6fe38b19 parse/lexer: support StringReader::retokenize called on external files. 2020-03-20 08:00:06 +02:00
Mark Mansi
2d75a339ca Refactorings to begin getting rid of rustc_codegen_utils 2020-03-19 23:14:46 -05:00
Bastian Kauschke
17c94c6746
fix FIXME comment
Co-Authored-By: varkor <github@varkor.com>
2020-03-20 00:28:49 +01:00
Tomasz Miąsko
fd0e15bbcd Make std::sync::Arc compatible with ThreadSanitizer
The memory fences used previously in Arc implementation are not properly
understood by ThreadSanitizer as synchronization primitives. This had
unfortunate effect where running any non-trivial program compiled with
`-Z sanitizer=thread` would result in numerous false positives.

Replace acquire fences with acquire loads when using ThreadSanitizer to
address the issue.
2020-03-20 00:18:44 +01:00
CDirkx
6570e275b9 Removed unused Hasher import. 2020-03-19 21:58:11 +01:00
Matthew Jasper
0f0f254a9c Use erased regions in MIR 2020-03-19 19:59:13 +00:00
CDirkx
bd6deaa08d Derive PartialEq, Eq and Hash for RangeInclusive
The manual implementation of PartialEq, Eq and Hash for RangeInclusive was functionally equivalent to a derived implementation.

This change removes the manual implementation and adds the respective derives.
A side effect of this change is that the derives also add implementations for StructuralPartialEq and StructuralEq, which enables RangeInclusive to be used in const generics.
2020-03-19 20:45:47 +01:00
Bastian Kauschke
6cb584608c sort generic param order in generics_of 2020-03-19 20:20:09 +01:00
Waffle
121bffce81 make "other" in docs of Option::{zip,zip_with} monofont 2020-03-19 22:19:37 +03:00
Nikita Popov
497f879b1e Update CreateMemSet() usage for LLVM 10 2020-03-19 20:09:57 +01:00
Nikita Popov
a94fa896cc Fix timeTraceProfilerInitialize for LLVM 10 2020-03-19 20:09:57 +01:00
Nikita Popov
66008eb9e4 Adjust data layout in test 2020-03-19 20:09:57 +01:00
Nikita Popov
7a14f9ed4f Fix LLVM version handling in compiletest
Convert version string to integer before comparing. Otherwise
we get into trouble with double digit versions ;)
2020-03-19 20:09:57 +01:00
Nikita Popov
841558d3bd Remove trailing newline from llvm-config output 2020-03-19 20:09:57 +01:00
Josh Stone
3a2a4429a2 Avoid llvm-config in more situations, like bootstrap test runs 2020-03-19 10:28:47 -07:00
Eduard-Mihai Burtescu
be9679de5c rustc/query: tweak comments on hir_owner{,_nodes}. 2020-03-19 19:05:41 +02:00
Alex Crichton
d1a4a57777 Update the bundled wasi-libc with libstd
Brings in WebAssembly/wasi-libc#184 which can help standalone programs
with environment variables!
2020-03-19 09:58:31 -07:00
bors
f4c675c476 Auto merge of #69402 - GuillaumeGomez:extend-search, r=kinnison
Extend search

I realized that when looking for "struct:String" in the rustdoc search for example, the "in arguments" and "returned" tabs were always empty. After some investigation, I realized it was because we only provided the name, and not the type, making it impossible to pass the "type filtering" check.

To resolve this, I added the type alongside the name. Note for the future: we could improve this by instead only registering the path id and use the path dictionary directly. The only problem with that solution (which I already tested) is that it becomes complicated for types in other crates. It'd force us to handle both case with an id and a case with `(name, type)`. I found the current PR big enough to not want to provide it directly. However, I think this is definitely worth it to make it work this way in the future.

About the two tests I added: they don't have much interest except checking that we actually have something returned in the search in the cases of a type filtering with and without literal search.

I also had to update a bit the test script to add the new locally global (haha) variable I created (`NO_TYPE_FILTER`). I added this variable to make the code easier to read than just "-1".

r? @kinnison

cc @ollie27
2020-03-19 16:07:59 +00:00
flip1995
2b3168ce5f
Update Clippy 2020-03-19 16:46:51 +01:00
Mazdak Farrokhzad
89ef59af78
triagebot.toml: accept typo due to pnkfelix 2020-03-19 15:38:31 +01:00
Amanieu d'Antras
203bb2b572 Update stdarch submodule 2020-03-19 14:38:09 +00:00
John Kåre Alsaker
027c8d998e Use assert_ignored when encoding metadata 2020-03-19 15:22:55 +01:00
John Kåre Alsaker
801e4420b6 Add some comments 2020-03-19 15:22:55 +01:00
John Kåre Alsaker
a2bca90077 Make metadata prefetching more accurate 2020-03-19 15:22:55 +01:00
John Kåre Alsaker
3d59c0ee38 Make the timer more verbose 2020-03-19 15:12:31 +01:00
John Kåre Alsaker
03af82bb0c Prefetch exported symbols 2020-03-19 15:12:31 +01:00
John Kåre Alsaker
1a34cbc2e2 Encode exported symbols last 2020-03-19 15:12:31 +01:00
John Kåre Alsaker
6cd0dcade7 Prefetch queries used by the metadata encoder 2020-03-19 15:12:31 +01:00
John Kåre Alsaker
d641ad044e Update test 2020-03-19 14:59:14 +01:00
John Kåre Alsaker
82920f36c4 Don't unwind when hitting the macro expansion recursion limit 2020-03-19 14:59:14 +01:00
Hrvoje Nikšić
2bebe8d871 Don't hard-code the vector length in the examples.
Co-Authored-By: lzutao <taolzu@gmail.com>
2020-03-19 14:50:33 +01:00
Hrvoje Nikšić
755434121c Minor re-wordings and typo fixes.
Co-Authored-By: Ralf Jung <post@ralfj.de>
2020-03-19 14:50:33 +01:00
Hrvoje Niksic
2a08b0e300 Restore (and reword) the warning against passing invalid values to mem::forget.
As pointed out by Ralf Jung, dangling references and boxes are
undefined behavior as per
https://doc.rust-lang.org/reference/behavior-considered-undefined.html
and the Miri checker.
2020-03-19 14:49:21 +01:00
Hrvoje Niksic
8e0398c060 Clarify the relationship between forget() and ManuallyDrop.
As discussed on reddit, this commit addresses two issues with the
documentation of `mem::forget()`:

* The documentation of `mem::forget()` can confuse the reader because of the
  discrepancy between usage examples that show correct usage and the
  accompanying text which speaks of the possibility of double-free.  The
  text that says "if the panic occurs before `mem::forget` was called"
  refers to a variant of the second example that was never shown, modified
  to use `mem::forget` instead of `ManuallyDrop`.  Ideally the documentation
  should show both variants, so it's clear what it's talking about.

  Also, the double free could be fixed just by placing `mem::forget(v)`
  before the construction of `s`.  Since the lifetimes of `s` and `v`
  wouldn't overlap, there would be no point where panic could cause a double
  free.  This could be mentioned, and contrasted against the more robust fix
  of using `ManuallyDrop`.

* This sentence seems unjustified: "For some types, operations such as
  passing ownership (to a funcion like `mem::forget`) requires them to
  actually be fully owned right now [...]".  Unlike C++, Rust has no move
  constructors, its moves are (possibly elided) bitwise copies.  Even if you
  pass an invalid object to `mem::forget`, no harm should come to pass
  because `mem::forget` consumes the object and exists solely to prevent
  drop, so there no one left to observe the invalid state state.
2020-03-19 14:48:48 +01:00
Guillaume Gomez
6f16118f28 Clean up e0438 explanation 2020-03-19 14:11:27 +01:00
Guillaume Gomez
4bf6734f6f clean up E0436 explanation 2020-03-19 14:09:54 +01:00
Guillaume Gomez
be06f678e1 Clean up E0437 explanation 2020-03-19 14:08:22 +01:00
bors
2602289632 Auto merge of #70137 - RalfJung:miri, r=RalfJung
update miri

Fixes https://github.com/rust-lang/rust/issues/70055
r? @ghost
Cc @oli-obk @Amanieu
2020-03-19 12:59:10 +00:00
Eduard-Mihai Burtescu
e8f1dfae64 hir: replace "items" terminology with "nodes" where appropriate. 2020-03-19 14:36:04 +02:00
Eduard-Mihai Burtescu
f8178c7a23 rustc: use LocalDefId instead of DefId in TypeckTables. 2020-03-19 14:25:50 +02:00
lzutao
2c38ecf72d
doc: Add quote to .init_array 2020-03-19 17:35:28 +07:00