Commit Graph

122108 Commits

Author SHA1 Message Date
Rich Kadel
98685a4bf2 Add new fn_span to TerminatorKind::Call instance 2020-06-15 17:08:13 -07:00
Rich Kadel
163e585456 updated mir-opt test due to other recent changes to MIR 2020-06-15 16:50:11 -07:00
Rich Kadel
20aba8f634 added test, Operand::const_from_scalar, require_lang_item, & comments
Addresses feedback from @oli-obk (Thanks!)
2020-06-15 16:50:11 -07:00
Rich Kadel
46ebd57c42 moved instrument_coverage pass, optimized scalar, added FIXME 2020-06-15 16:50:10 -07:00
Rich Kadel
7e49a9ec59 moved to post_borrowck_cleanup & used MirPatch 2020-06-15 16:50:10 -07:00
Rich Kadel
e4df7e7046 Update src/libcore/intrinsics.rs
Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com>
2020-06-15 16:50:10 -07:00
Rich Kadel
d2cd59a031 Add case for count_code_region() extern lang_item
As suggested in PR feedback:

https://github.com/rust-lang/rust/pull/73011#discussion_r435728923

This allows count_code_region() to be handled like a normal intrinsic so
the InstanceDef::InjectedCode variant is no longer needed.
2020-06-15 16:50:10 -07:00
Rich Kadel
2c5c2a6bc2 removed experiments for cleaner github PR 2020-06-15 16:50:10 -07:00
Rich Kadel
088037a044 explained lang_item function body (count_code_region) 2020-06-15 16:50:10 -07:00
Rich Kadel
5068ae1ca0 [WIP] injects llvm intrinsic instrprof.increment for coverage reports
This initial version only injects counters at the top of each function.
Rust Coverage will require injecting additional counters at each
conditional code branch.
2020-06-15 16:50:10 -07:00
Rich Kadel
395256a5dd
Merge pull request #3 from rust-lang/master
update from origin 2020-06-15
2020-06-15 16:44:23 -07: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
Erik Desjardins
e0975b9b01 elaborate, add check for exact bounds 2020-06-15 18:19:54 -04:00
Gary Guo
5cedf5dfba Refactor usage of Needs in typeck 2020-06-15 22:09:12 +01:00
Josh Triplett
fd9ed30e4b asm: Update chapter in unstable book for multiple template string arguments
Update all examples to use the new formatting, and update explanations
to document it.
2020-06-15 13:30:13 -07:00
Vadim Petrochenkov
e8cf5721b1 linker: Never pass -no-pie to non-gnu linkers 2020-06-15 23:17:39 +03:00
Josh Triplett
1078b6f942 asm: Allow multiple template strings; interpret them as newline-separated
Allow the `asm!` macro to accept a series of template arguments, and
interpret them as if they were concatenated with a '\n' between them.
This allows writing an `asm!` where each line of assembly appears in a
separate template string argument.

This syntax makes it possible for rustfmt to reliably format and indent
each line of assembly, without risking changes to the inside of a
template string. It also avoids the complexity of having the user
carefully format and indent a multi-line string (including where to put
the surrounding quotes), and avoids the extra indentation and lines of a
call to `concat!`.

For example, rewriting the second example from the [blog post on the new
inline assembly
syntax](https://blog.rust-lang.org/inside-rust/2020/06/08/new-inline-asm.html)
using multiple template strings:

```rust

fn main() {
    let mut bits = [0u8; 64];
    for value in 0..=1024u64 {
        let popcnt;
        unsafe {
            asm!(
                "    popcnt {popcnt}, {v}",
                "2:",
                "    blsi rax, {v}",
                "    jz 1f",
                "    xor {v}, rax",
                "    tzcnt rax, rax",
                "    stosb",
                "    jmp 2b",
                "1:",
                v = inout(reg) value => _,
                popcnt = out(reg) popcnt,
                out("rax") _, // scratch
                inout("rdi") bits.as_mut_ptr() => _,
            );
        }
        println!("bits of {}: {:?}", value, &bits[0..popcnt]);
    }
}
```

Note that all the template strings must appear before all other
arguments; you cannot, for instance, provide a series of template
strings intermixed with the corresponding operands.

In order to get srcloc mappings right for macros that generate
multi-line string literals, create one line_span for each
line in the string literal, each pointing to the macro.

Make `rustc_parse_format::Parser::curarg` `pub`, so that we can
propagate it from one template string argument to the next.
2020-06-15 12:35:27 -07:00
Aaron Hill
8956a7f581
Only display other method receiver candidates if they actually apply
Previously, we would suggest `Box<Self>` as a valid receiver, even if
method resolution only succeeded due to an autoderef (e.g. to `&self`)
2020-06-15 15:15:35 -04: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
Jonas Schievink
4cb26ad7a3 Add test 2020-06-15 20:54:40 +02:00
Esteban Küber
96f5584b80 Expand "recursive opaque type" diagnostic
Fix #70968, partially address #66523.
2020-06-15 11:08:43 -07:00
Vadim Petrochenkov
fc13fd03ba typeck: Use LocalDefIds for the unused trait import set 2020-06-15 21:06:13 +03:00
Vadim Petrochenkov
a4337ccc10 Use LocalDefId for import IDs in trait map 2020-06-15 21:03:34 +03: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
Ralf Jung
10c8d2afb8 add FIXME to EnumTagInfo 2020-06-15 19:12:14 +02:00
NODA, Kai
8e7606f204 bootstrap/install.rs: support a nonexistent prefix in x.py install
PR #49778 introduced fs::canonicalize() which fails for a nonexistent path.
This is a surprise for someone used to GNU Autotools' configure which can create any necessary intermediate directories in prefix.

This change makes it run fs::create_dir_all() before canonicalize().
2020-06-16 00:12:47 +08:00
Niko Matsakis
b5809b0272
Update src/librustc_typeck/check/cast.rs
Co-authored-by: lzutao <taolzu@gmail.com>
2020-06-15 12:12:22 -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
Esteban Küber
e857696cf8 Tweak "non-primitive cast" error
- Suggest borrowing expression if it would allow cast to work.
- Suggest using `<Type>::from(<expr>)` when appropriate.
- Minor tweak to `;` typo suggestion.

Partily address #47136.
2020-06-15 08:57:20 -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
Gary Guo
e390acdfcc Use expr_ty_adjusted in convert_place_op_to_mutable 2020-06-15 15:59:51 +01:00
Alex Crichton
d6156e8fe5 Change how compiler-builtins gets many CGUs
This commit intends to fix an accidental regression from #70846. The
goal of #70846 was to build compiler-builtins with a maximal number of
CGUs to ensure that each module in the source corresponds to an object
file. This high degree of control for compiler-builtins is desirable to
ensure that there's at most one exported symbol per CGU, ideally
enabling compiler-builtins to not conflict with the system libgcc as
often.

In #70846, however, only part of the compiler understands that
compiler-builtins is built with many CGUs. The rest of the compiler
thinks it's building with `sess.codegen_units()`. Notably the
calculation of `sess.lto()` consults `sess.codegen_units()`, which when
there's only one CGU it disables ThinLTO. This means that
compiler-builtins is built without ThinLTO, which is quite harmful to
performance! This is the root of the cause from #73135 where intrinsics
were found to not be inlining trivial functions.

The fix applied in this commit is to remove the special-casing of
compiler-builtins in the compiler. Instead the build system is now
responsible for special-casing compiler-builtins. It doesn't know
exactly how many CGUs will be needed but it passes a large number that
is assumed to be much greater than the number of source-level modules
needed. After reading the various locations in the compiler source, this
seemed like the best solution rather than adding more and more special
casing in the compiler for compiler-builtins.

Closes #73135
2020-06-15 07:38:00 -07: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
Alexis Bourget
9e510085ec Complete the std::time documentation to warn about the inconsistencies between OS 2020-06-15 15:19:02 +02:00