Commit Graph

123090 Commits

Author SHA1 Message Date
LeSeulArtichaut
b3652337a9 Deny unsafe ops in unsafe fns, part 5 2020-06-30 17:37:53 +02:00
Eric Huss
c225e5c5cb Provide more information on duplicate lang item error. 2020-06-30 08:35:11 -07:00
LeSeulArtichaut
c68f478131 Deny unsafe ops in unsafe fns, part 4 2020-06-30 17:06:33 +02:00
LeSeulArtichaut
ac7539c6d1 Deny unsafe ops in unsafe fns, part 3 2020-06-30 17:06:16 +02:00
LeSeulArtichaut
8a515e963c Deny unsafe ops in unsafe fns, part 2 2020-06-30 16:42:58 +02:00
LeSeulArtichaut
8ee1dec77b Deny unsafe ops in unsafe fns, part 1 2020-06-30 16:42:57 +02:00
Guillaume Gomez
f74a7d3ff1 Clean up E0712 explanation 2020-06-30 13:36:33 +02:00
bors
e070765f6e Auto merge of #73888 - RalfJung:miri, r=RalfJung
update Miri

Fixes https://github.com/rust-lang/rust/issues/73773
Cc @rust-lang/miri r? @ghost
2020-06-30 11:35:40 +00:00
Dodo
a065096ff4 stabilize const mem::forget 2020-06-30 11:34:27 +02:00
Oliver Scherer
7e682d3f6f Stabilize casts and coercions to &[T] in const fn 2020-06-30 11:15:28 +02:00
Ralf Jung
2d9ed15c07 update Miri 2020-06-30 11:00:51 +02:00
Tshepang Lekhonkhobe
f3645ca6ca remove rustdoc warnings 2020-06-30 10:58:23 +02:00
Bastian Kauschke
69e49908f9 update equal_up_to_regions 2020-06-30 09:20:08 +02:00
Bastian Kauschke
f632bd1a50 remove unused TypeError::ProjectionBoundsLength 2020-06-30 09:13:56 +02:00
Bastian Kauschke
71b45b97d3 change skip_binder to use T by value 2020-06-30 09:13:56 +02:00
Bastian Kauschke
1d7ba5fcb4 stop taking references in Relate 2020-06-30 09:13:56 +02:00
Pietro Albini
844dc31494
ci: fix wasm32 broken due to a NodeJS version bump
Emscripten's SDK recently bumped the version of NodeJS they shipped, but
our Dockerfile for the wasm32 builder hardcoded the version number. This
will cause consistent CI failures once the currently cached image is
rebuilt (either due to a change or due to the cache expiring).

This commit fixes the problem by finding the latest version of NodeJS in
the Emscripten SDK and symlinking it to a "latest" directory, which is
then added to the PATH.
2020-06-30 09:13:15 +02:00
bors
665190b346 Auto merge of #73658 - dylanmckay:avr-update-llvm-submodule-with-picks, r=cuviper
[AVR] Update the rust-lang/llvm-project submodule to include AVR fixes recently merged

This PR updates rustc's LLVM submodule to include new AVR-specific
fixes recently merged on the Rust LLVM 'rustc/10.0-2020-05-05' branch.

All of these cherry-picked commits exist in upstream LLVM and were
cherry-picked into Rust's LLVM fork in commit 6c040dd86ed.

Relates to https://github.com/rust-lang/llvm-project/pull/66

```
  |- 6c040dd86ed Merge pull request #66 from dylanmckay/avr-pick-upstream-llvm-fixes
    |- 12dfdd3aed7 [AVR] Rewrite the function calling convention.
    |- 118ac53f12b [AVR] Don't adjust for instruction size
    |- bc27c282e13 [AVR] Fix miscompilation of zext + add
    |- cfbe205a7e8 [AVR] Remove faulty stack pushing behavior
    |- 143e1469e96 [AVR] Fix stack size in functions with a frame pointer
    |- 6b2445d841e [LLVM][AVR] Support for R_AVR_6 fixup
    |- 93ee4da19cf [AVR]  Fix I/O instructions on XMEGA
    |- 962c2415ffb [AVR] Do not place functions in .progmem.data
    |- 65b8b170aef [AVR] Do not use divmod calls for bigger integers
    |- 93a3b595d1c [AVR] Generalize the previous interrupt bugfix to signal
    |- handlers too
    |- cc4286349b4 [AVR] Respect the 'interrupt' function attribute
    |- 954d0a92205 [AVR] Fix reads of uninitialized variables from constructor of AVRSubtarget
    |- 1c0ddae73c9 [AVR] Fix read of uninitialized variable AVRSubtarget:::ELFArch
    |- 0ed0823fe60 [AVR] Fix incorrect register state for LDRdPtr
    |- 96075fc433d [AVR] Don't adjust addresses by 2 for absolute values
    |- 6dfc55ba53b [AVR] Use correct register class for mul instructions
```

These changes include both correctness fixes and LLVM assertion error
fixes. Once all of these commits have been cherry-picked, all of the
LLVM plumbing for rust-lang/master to compile the AVR blink program will
be in place. Once this commit is merged, only PR rust-lang/rust#73270 will
be blocking successful compilation and emission of the AVR LED blink program.
2020-06-30 06:12:21 +00:00
Eric Huss
9154863647 Compile rustdoc less often. 2020-06-29 22:35:02 -07:00
Nicholas Nethercote
3f79d2f33e Avoid unwrap_or_else in RawVec::allocate_in.
This reduces the amount of LLVM IR generated by up to 1 or 2%.
2020-06-30 14:38:57 +10:00
Aaron Hill
a7c408d6ac
Normalize symbol ids to 0 in test stdout
The number of symbols we allocate (even early on) seems to be platform
dependent. We only care about hygiene for the purposes of this test,
so just set all of the symbol ids to zero
2020-06-29 22:04:10 -04:00
Aaron Hill
334373324d
Serialize all foreign SourceFiles into proc-macro crate metadata
Normally, we encode a `Span` that references a foreign `SourceFile` by
encoding information about the foreign crate. When we decode this
`Span`, we lookup the foreign crate in order to decode the `SourceFile`.

However, this approach does not work for proc-macro crates. When we load
a proc-macro crate, we do not deserialzie any of its dependencies (since
a proc-macro crate can only export proc-macros). This means that we
cannot serialize a reference to an upstream crate, since the associated
metadata will not be available when we try to deserialize it.

This commit modifies foreign span handling so that we treat all foreign
`SourceFile`s as local `SourceFile`s when serializing a proc-macro.
All `SourceFile`s will be stored into the metadata of a proc-macro
crate, allowing us to cotinue to deserialize a proc-macro crate without
needing to load any of its dependencies.

Since the number of foreign `SourceFile`s that we load during a
compilation session may be very large, we only serialize a `SourceFile`
if we have also serialized a `Span` which requires it.
2020-06-29 21:45:42 -04:00
bors
a1528c432e Auto merge of #73374 - alexcrichton:compiler-bulitins-debug-assertions, r=Mark-Simulacrum
rustbuild: Move compiler-builtins build logic to manifest

This commit moves the compiler-builtins-specific build logic from
`src/bootstrap/bin/rustc.rs` into the workspace `Cargo.toml`'s
`[profile]` configuration. Now that rust-lang/cargo#7253 is fixed we can
ensure that Cargo knows about debug assertions settings, and it can also
be configured to specifically disable debug assertions unconditionally
for compiler-builtins. This should improve rebuild logic when
debug-assertions settings change and also improve build-std integration
where Cargo externally now has an avenue to learn how to build
compiler-builtins as well.
2020-06-29 21:42:43 +00:00
Azhng
7d7221c250 typeck: adding type information to projection
This commit modifies the Place as follow:
* remove 'ty' from ProjectionKind
* add type information into to Projection
* replace 'ty' in Place with 'base_ty'
* introduce 'ty()' in `Place` to return the final type of the `Place`
* introduce `ty_before_projection()` in `Place` to return the type of
  a `Place` before i'th projection is applied

Closes https://github.com/rust-lang/project-rfc-2229/issues/5
2020-06-29 16:46:52 -04:00
Dan Aloni
5427d3bf7c Fix try_print_visible_def_path for Rust 2018
The recursive check of `try_print_visible_def_path` did not properly handle
the Rust 2018 case of crate-paths without 'extern crate'. Instead, it returned
a "not found" via (false, self).

This fixes issue #56175.
2020-06-29 23:40:27 +03:00
Dan Aloni
aab37fe52c Add test for issue #56175 2020-06-29 23:32:31 +03:00
Rich Kadel
5239a68e72 add spans to injected coverage counters
added regions with counter expressions and counters.

Added codegen_llvm/coverageinfo mod for upcoming coverage map

Move coverage region collection to CodegenCx finalization

Moved from `query coverageinfo` (renamed from `query coverage_data`),
as discussed in the PR at:

https://github.com/rust-lang/rust/pull/73684#issuecomment-649882503

Address merge conflict in MIR instrument_coverage test

The MIR test output format changed for int types.

moved debug messages out of block.rs

This makes the block.rs calls to add coverage mapping data to the
CodegenCx much more concise and readable.

move coverage intrinsic handling into llvm impl

I realized that having half of the coverage intrinsic handling in
`rustc_codegen_ssa` and half in `rustc_codegen_llvm` meant that any
non-llvm backend would be bound to the same decisions about how the
coverage-related MIR terminators should be handled.

To fix this, I moved the non-codegen portion of coverage intrinsic
handling into its own trait, and implemented it in `rustc_codegen_llvm`
alongside `codegen_intrinsic_call`.

I also added the (required?) stubs for the new intrinsics to
`IntrepretCx::emulate_intrinsic()`, to ensure calls to this function do
not fail if called with these new but known intrinsics.

address PR Feedback on 28 June 2020 2:48pm PDT
2020-06-29 12:31:25 -07:00
LeSeulArtichaut
dd346987e9
Fix Zulip topic format 2020-06-29 18:06:15 +02:00
Pietro Albini
c8f2dd0d3b
Revert "ci: allow gating gha on everything but macOS"
This reverts commit 8bc3122311.
2020-06-29 17:20:01 +02:00
Ivan Tham
49b4804d29 Ignore example compile in rustc-attrs doc 2020-06-29 21:58:00 +08:00
Alex Crichton
3dfbf0bc73 rustbuild: Move compiler-builtins build logic to manifest
This commit moves the compiler-builtins-specific build logic from
`src/bootstrap/bin/rustc.rs` into the workspace `Cargo.toml`'s
`[profile]` configuration. Now that rust-lang/cargo#7253 is fixed we can
ensure that Cargo knows about debug assertions settings, and it can also
be configured to specifically disable debug assertions unconditionally
for compiler-builtins. This should improve rebuild logic when
debug-assertions settings change and also improve build-std integration
where Cargo externally now has an avenue to learn how to build
compiler-builtins as well.
2020-06-29 06:53:56 -07:00
bors
0ca7f74dbd Auto merge of #73391 - pickfire:liballoc-panic-doc, r=Mark-Simulacrum
Add liballoc doc panic detail according to RawVec
2020-06-29 12:00:31 +00:00
bors
c86039b333 Auto merge of #73032 - yoshuawuyts:stabilize-leading_trailing_ones, r=Amanieu
stabilize leading_trailing_ones

This PR stabilizes the `leading_trailing_ones` feature. It's been available on nightly since the start of the year, and hasn't had any issues since. It seems unlikely we'll want to change this, so following up on @djc's suggestion in https://github.com/rust-lang/rust/issues/57969#issuecomment-638405264 I'd like to put forward this PR to stabilize the feature and make it part of `1.46.0`. Thanks!

cc/ @djc @rust-lang/libs
2020-06-29 00:43:19 +00:00
pierwill
49662726af Add newline to rustc MultiSpan docs
Also adds back-ticks when referring to the contents of this collection.
2020-06-28 15:40:10 -07:00
bors
c977b8775d Auto merge of #72437 - ecstatic-morse:stabilize-const-if-match, r=oli-obk
Stabilize `#![feature(const_if_match)]`

Quoting from the [stabilization report](https://github.com/rust-lang/rust/issues/49146#issuecomment-616301045):

> `if` and `match` expressions as well as the short-circuiting logic operators `&&` and `||` will become legal in all [const contexts](https://doc.rust-lang.org/reference/const_eval.html#const-context). A const context is any of the following:
>
> - The initializer of a `const`, `static`, `static mut` or enum discriminant.
> - The body of a `const fn`.
> - The value of a const generic (nightly only).
> - The length of an array type (`[u8; 3]`) or an array repeat expression (`[0u8; 3]`).
>
> Furthermore, the short-circuiting logic operators will no longer be lowered to their bitwise equivalents (`&` and `|` respectively) in `const` and `static` initializers (see #57175). As a result, `let` bindings can be used alongside short-circuiting logic in those initializers.

Resolves #49146.

Ideally, we would resolve 🐳 #66753 before this lands on stable, so it might be worth pushing this back a release. Also, this means we should get the process started for #52000, otherwise people will have no recourse except recursion for iterative `const fn`.

r? @oli-obk
2020-06-28 20:47:52 +00:00
pierwill
40c74a7eb7 Edit cursor.prev() method docs in lexer
Fix missing punctuation
2020-06-28 13:24:17 -07:00
pierwill
49c1018d13 Fix markdown rendering in librustc_lexer docs
Use back-ticks instead of quotation marks in docs for the block comment
variant of TokenKind.
2020-06-28 13:19:59 -07:00
Alexis Bourget
4224313e2b Fix small nits 2020-06-28 20:48:53 +02:00
CAD97
d8a9c61e1a Use impl for Weak::as_ptr that works for unsized T 2020-06-28 14:33:18 -04:00
CAD97
e4bdf47f4c Do not require ptr validity in rc::data_offset 2020-06-28 14:24:09 -04:00
CAD97
db539c6498 Use raw_ref_op in A|Rc::as_ptr 2020-06-28 14:21:03 -04:00
Alexis Bourget
dfd454bd38 Apply suggestions, reformulating some paragraphs and improving some examples 2020-06-28 20:20:32 +02:00
Dylan MacKenzie
8509b6951a Use LocalDefId in HIR const-checker 2020-06-28 10:13:04 -07:00
Dylan MacKenzie
1b28f94fbb Remove ignore-tidy-filelength 2020-06-28 10:08:12 -07:00
Dylan MacKenzie
d84f0c8d32 Update tests 2020-06-28 10:08:12 -07:00
Dylan MacKenzie
7c46e42512 Stop checking for while and loop in a const context 2020-06-28 10:08:11 -07:00
Dylan MacKenzie
5bed94cda4 Remove uses of const_loop in rustc 2020-06-28 10:08:11 -07:00
Dylan MacKenzie
86e1555e9f Mark const_loop feature gate as accepted 2020-06-28 10:08:11 -07:00
Dylan MacKenzie
565be31504 Require allow_internal_unstable in HIR const-checker 2020-06-28 10:08:10 -07:00
Dylan MacKenzie
69a5cb1592 Remove const_if_match from unstable book 2020-06-28 10:08:10 -07:00