Commit graph

675 commits

Author SHA1 Message Date
Rich Kadel
55cd2433dc Adds --bless support to test/run-make-fulldeps
The ability to "bless" output for some of these tests is critical to
making it practical to adapt tests to unrelated changes.

This is needed for new coverage tests, as shown in PR #75828 (or its
derivative).
2020-08-27 12:27:18 -07:00
Matthias Krüger
a2a387c733 compiletest: fix a couple clippy lint findings 2020-08-22 11:44:30 +02:00
Oliver Scherer
de7c836607 Validate the MIR of all optimizations in the mir-opt directory 2020-08-18 13:01:00 +02:00
Gurpreet Singh
d2753f91b5 replaced log with tracing 2020-08-15 13:03:11 -07:00
Greg V
2f39477ecf Add sanitizer support on FreeBSD 2020-08-09 17:51:41 +03:00
bors
4d4342347b Auto merge of #74821 - oli-obk:const_eval_read_uninit_fast_path, r=wesleywiser
Check whether locals are too large instead of whether accesses into them are too large

Essentially this stops const prop from attempting to optimize

```rust
let mut x = [0_u8; 5000];
x[42] = 3;
```

I don't expect this to be a perf improvement without #73656 (which is also where the lack of this PR will be a perf regression).

r? @wesleywiser
2020-08-07 15:28:07 +00:00
bors
1e0e618cfb Auto merge of #73842 - euclio:doctest-expn, r=GuillaumeGomez
Use outermost invocation span for doctest names

Fixes #70090.

This PR also allows using aux-build files in rustdoc-ui tests.
2020-08-07 11:38:17 +00:00
Yuki Okushi
9d5bd597ac
Rollup merge of #74888 - infinity0:ignore-endian-big, r=nikomatsakis
compiletest: ignore-endian-big, fixes #74829, fixes #74885

See discussion on #74829

I tested it on a Debian s390x machine, works well.
2020-08-07 09:35:13 +09:00
Manish Goregaokar
0bf2dcf059
Rollup merge of #75064 - petrochenkov:llvmtarg, r=Mark-Simulacrum
compiletest: Support ignoring tests requiring missing LLVM components

This PR implements a more principled solution to the problem described in https://github.com/rust-lang/rust/pull/66084.

Builds of LLVM backends take a lot of time and disk space.
So it usually makes sense to build rustc with
```toml
[llvm]
targets = "X86"
experimental-targets = ""
```
unless you are working on some target-specific tasks.

A few tests, however, require non-x86 backends to be built.
A new test directive `// needs-llvm-components: component1 component2 component3` makes such tests to be automatically ignored if one of the listed components is missing in the provided LLVM (this is determined through `llvm-config --components`).

As a result, the test suite now fully passes with LLVM built only with the x86 backend. The component list in this case is
```
aggressiveinstcombine all all-targets analysis asmparser asmprinter binaryformat bitreader bitstreamreader bitwriter cfguard codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfogsym debuginfomsf debuginfopdb demangle dlltooldriver dwarflinker engine executionengine frontendopenmp fuzzmutate globalisel instcombine instrumentation interpreter ipo irreader jitlink libdriver lineeditor linker lto mc mca mcdisassembler mcjit mcparser mirparser native nativecodegen objcarcopts object objectyaml option orcerror orcjit passes profiledata remarks runtimedyld scalaropts selectiondag support symbolize tablegen target textapi transformutils vectorize windowsmanifest x86 x86asmparser x86codegen x86desc x86disassembler x86info x86utils xray
```

(With the default target list it's much larger.)
```
aarch64 aarch64asmparser aarch64codegen aarch64desc aarch64disassembler aarch64info aarch64utils aggressiveinstcombine all all-targets analysis arm armasmparser armcodegen armdesc armdisassembler arminfo armutils asmparser asmprinter avr avrasmparser avrcodegen avrdesc avrdisassembler avrinfo binaryformat bitreader bitstreamreader bitwriter cfguard codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfogsym debuginfomsf debuginfopdb demangle dlltooldriver dwarflinker engine executionengine frontendopenmp fuzzmutate globalisel hexagon hexagonasmparser hexagoncodegen hexagondesc hexagondisassembler hexagoninfo instcombine instrumentation interpreter ipo irreader jitlink libdriver lineeditor linker lto mc mca mcdisassembler mcjit mcparser mips mipsasmparser mipscodegen mipsdesc mipsdisassembler mipsinfo mirparser msp430 msp430asmparser msp430codegen msp430desc msp430disassembler msp430info native nativecodegen nvptx nvptxcodegen nvptxdesc nvptxinfo objcarcopts object objectyaml option orcerror orcjit passes powerpc powerpcasmparser powerpccodegen powerpcdesc powerpcdisassembler powerpcinfo profiledata remarks riscv riscvasmparser riscvcodegen riscvdesc riscvdisassembler riscvinfo riscvutils runtimedyld scalaropts selectiondag sparc sparcasmparser sparccodegen sparcdesc sparcdisassembler sparcinfo support symbolize systemz systemzasmparser systemzcodegen systemzdesc systemzdisassembler systemzinfo tablegen target textapi transformutils vectorize webassembly webassemblyasmparser webassemblycodegen webassemblydesc webassemblydisassembler webassemblyinfo windowsmanifest x86 x86asmparser x86codegen x86desc x86disassembler x86info x86utils xray
```

https://github.com/rust-lang/rust/pull/66084 is also reverted now.

r? @Mark-Simulacrum
2020-08-02 13:08:48 -07:00
Vadim Petrochenkov
d3277b927a compiletest: Support ignoring tests requiring missing LLVM components 2020-08-02 20:35:24 +03:00
David Wood
1530563bd7
compiletest: print diff for pretty tests
This commit modifies compiletest so that a diff of actual and expected
output is shown for pretty tests. This makes it far easier to work out
what has changed.

Signed-off-by: David Wood <david@davidtw.co>
2020-08-02 15:33:07 +01:00
Oliver Scherer
ec7230fea2 Move from log to tracing 2020-07-31 22:38:20 +02:00
Ximin Luo
7f54cf2651 compiletest: ignore-endian-big, fixes #74829, fixes #74885 2020-07-31 12:58:37 +01:00
Oliver Scherer
1864a973b3 Improve the diagnostics around misspelled mir dump filenames 2020-07-29 22:39:50 +02:00
Xavier Denis
f07607f47a Move mir-opt tests to toplevel 2020-07-29 17:36:03 +02:00
mark
2c31b45ae8 mv std libs to library/ 2020-07-27 19:51:13 -05:00
Oliver Scherer
79c0db4cc8 Clean up some uses of logging in ui tests 2020-07-25 18:36:44 +02:00
Manish Goregaokar
5d1d94e7b8
Rollup merge of #74715 - oli-obk:mir_pass_diff, r=wesleywiser
Add a system for creating diffs across multiple mir optimizations.

r? @wesleywiser
2020-07-24 10:01:41 -07:00
Oliver Scherer
b56ea88414 Add a system for creating diffs across multiple mir optimizations. 2020-07-24 15:54:15 +02:00
Manish Goregaokar
216ed3c4ab
Rollup merge of #74237 - lzutao:compiletest, r=Mark-Simulacrum
compiletest: Rewrite extract_*_version functions

This makes extract_lldb_version has the same version type like
extract_gdb_version.
2020-07-22 09:29:05 -07:00
Lzu Tao
1314d31fb5 Rewrite extract_version_range 2020-07-19 15:08:35 +00:00
Lzu Tao
60fac34c20 Rewrite extract_llvm_version 2020-07-19 13:43:30 +00:00
Lzu Tao
99e3a3cdea Extract extract_version_range 2020-07-19 13:43:30 +00:00
Lzu Tao
2bcefa8d81 Add missing : after *llvm-version 2020-07-19 11:03:04 +00:00
Lzu Tao
5aa33b11fc Use subslice pattern 2020-07-19 09:29:11 +00:00
Lzu Tao
75caee076d Extract closure to function 2020-07-19 09:29:11 +00:00
Lzu Tao
79d5cbbf86 Use Option::as_deref 2020-07-19 09:29:11 +00:00
Lzu Tao
07d56cba8f Fix panic as passing wrong format to extract_gdb_version 2020-07-19 09:29:11 +00:00
Lzu Tao
d778f326c3 compiletest: Rewrite extract_gdb_version function 2020-07-19 09:29:11 +00:00
Lzu Tao
cfa3a33014 compiletest: Rewrite extract_lldb_version function
This makes extract_lldb_version has the same version type like
extract_gdb_version.

This is technically a breaking change for rustc-dev users.
But note that rustc-dev is a nightly component.
2020-07-19 09:29:11 +00:00
bors
47ea6d90b0 Auto merge of #74091 - richkadel:llvm-coverage-map-gen-4, r=tmandry
Generating the coverage map

@tmandry @wesleywiser

rustc now generates the coverage map and can support (limited)
coverage report generation, at the function level.

Example commands to generate a coverage report:
```shell
$ BUILD=$HOME/rust/build/x86_64-unknown-linux-gnu
$ $BUILD/stage1/bin/rustc -Zinstrument-coverage \
$HOME/rust/src/test/run-make-fulldeps/instrument-coverage/main.rs
$ LLVM_PROFILE_FILE="main.profraw" ./main
called
$ $BUILD/llvm/bin/llvm-profdata merge -sparse main.profraw -o main.profdata
$ $BUILD/llvm/bin/llvm-cov show --instr-profile=main.profdata main
```
![rust coverage report only 20200706](https://user-images.githubusercontent.com/3827298/86697299-1cbe8f80-bfc3-11ea-8955-451b48626991.png)

r? @wesleywiser

Rust compiler MCP rust-lang/compiler-team#278
Relevant issue: #34701 - Implement support for LLVMs code coverage instrumentation
2020-07-19 07:25:18 +00:00
Rich Kadel
a6f8b8a211 Generating the coverage map
rustc now generates the coverage map and can support (limited)
coverage report generation, at the function level.

Example:

$ BUILD=$HOME/rust/build/x86_64-unknown-linux-gnu
$ $BUILD/stage1/bin/rustc -Zinstrument-coverage \
$HOME/rust/src/test/run-make-fulldeps/instrument-coverage/main.rs
$ LLVM_PROFILE_FILE="main.profraw" ./main
called
$ $BUILD/llvm/bin/llvm-profdata merge -sparse main.profraw -o main.profdata
$ $BUILD/llvm/bin/llvm-cov show --instr-profile=main.profdata main
    1|      1|pub fn will_be_called() {
    2|      1|    println!("called");
    3|      1|}
    4|       |
    5|      0|pub fn will_not_be_called() {
    6|      0|    println!("should not have been called");
    7|      0|}
    8|       |
    9|      1|fn main() {
   10|      1|    let less = 1;
   11|      1|    let more = 100;
   12|      1|
   13|      1|    if less < more {
   14|      1|        will_be_called();
   15|      1|    } else {
   16|      1|        will_not_be_called();
   17|      1|    }
   18|      1|}
2020-07-17 11:49:35 -07:00
Mateusz Mikuła
2a9b51dcc4 Allow matching test by target and env 2020-07-17 18:07:51 +02:00
Tamir Duberstein
1e567c1168
Avoid "blacklist"
Other terms are more inclusive and precise.

Clippy still has a lint named "blacklisted-name", but renaming it would
be a breaking change, so is left for future work.

The target configuration option "abi-blacklist" has been depreciated and
renamed to "unsupported-abis". The old name continues to work.
2020-07-08 12:08:27 -04:00
Andy Russell
af88ce5eb3
allow aux builds in rustdoc-ui mode 2020-06-28 13:06:15 -04:00
Manish Goregaokar
45ec25e088
Rollup merge of #73525 - cuviper:llvm11, r=nikic
Prepare for LLVM 11

These are just the code changes needed to build with the current LLVM master (version 11).

r? @nikic
2020-06-27 22:29:54 -07:00
Eric Huss
75983e137e Support configurable deny-warnings for all in-tree crates. 2020-06-25 21:17:21 -07:00
Josh Stone
49f6166ef7 Prepare for LLVM 11 2020-06-25 18:52:41 -07:00
yuqio
9267b4f612 Remove unused crate imports in 2018 edition crates 2020-06-23 05:01:20 +02:00
bors
a8cf399117 Auto merge of #72936 - jackh726:chalk-more, r=nikomatsakis
Upgrade Chalk

Things done in this PR:
- Upgrade Chalk to `0.11.0`
- Added compare-mode=chalk
- Bump rustc-hash in `librustc_data_structures` to `1.1.0` to match Chalk
- Removed `RustDefId` since the builtin type support is there
- Add a few more `FIXME(chalk)`s for problem spots I hit when running all tests with chalk
- Added some more implementation code for some newer builtin Chalk types (e.g. `FnDef`, `Array`)
- Lower `RegionOutlives` and `ObjectSafe` predicates
- Lower `Dyn` without the region
- Handle `Int`/`Float` `CanonicalVarKind`s
- Uncomment some Chalk tests that actually work now
- Remove the revisions in `src/test/ui/coherence/coherence-subtyping.rs` since they aren't doing anything different

r? @nikomatsakis
2020-06-21 17:10:09 +00:00
Ralf Jung
c1cad70282
Rollup merge of #73539 - LukasKalbertodt:deprecate-vec-remove-item, r=Mark-Simulacrum
Deprecate `Vec::remove_item`

In #40062 we decided to remove that method. In #71834 it was said that we want to deprecate it for a few cycles before removing it. That's what this PR does.
2020-06-20 16:39:59 +02:00
Lukas Kalbertodt
1e6e082039
Remove uses of Vec::remove_item 2020-06-20 12:12:28 +02:00
Tomasz Miąsko
2851c9ffb5 Support sanitizers on aarch64-unknown-linux-gnu 2020-06-20 09:48:14 +02:00
Jack Huey
006b482794 Add compare-mode=chalk and add a little bit more implementations and fixmes 2020-06-19 14:04:30 -04:00
Ralf Jung
0851036ae3
Rollup merge of #73044 - tmiasko:compiletest-san, r=nikomatsakis
compiletest: Add directives to detect sanitizer support

Add needs-sanitizer-{address,leak,memory,thread} directive indicating
that test requires target with support for specific sanitizer.

This is an addition to the existing needs-sanitizer-support directive
indicating that test requires a sanitizer runtime library.

The existing needs-sanitizer-support directive could be incorporated into the
new ones, but I decided to retain it, since it enables running sanitizer
codegen tests even when building of sanitizer runtime libraries is disabled.
2020-06-19 14:29:22 +02: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
Tomasz Miąsko
d40e624a36 compiletest: Add directives to detect sanitizer support
Add needs-sanitizer-{address,leak,memory,thread} directive indicating
that test requires target with support for specific sanitizer.

This is an addition to the existing needs-sanitizer-support directive
indicating that test requires a sanitizer runtime library.
2020-06-13 14:24:30 +02:00
ortem
47c26e69a9 Implement new gdb/lldb pretty-printers
Replace old GDB and LLDB pretty-printers with new ones
which were originally written for IntelliJ Rust.
New LLDB pretty-printers support synthetic children.
New GDB/LLDB pretty-printers support all Rust types
supported by old pretty-printers, and also support:
Rc, Arc, Cell, Ref, RefCell, RefMut, HashMap, HashSet.
2020-06-09 16:13:11 +03:00
Dylan McKay
b4a041c050 [AVR] Update the compiletest library to recognize AVR as a 16-bit target 2020-06-09 17:40:53 +12:00
Jake Goulding
690bb8af51 [AVR] Add AVR platform support 2020-06-09 17:34:07 +12:00