Commit Graph

81300 Commits

Author SHA1 Message Date
Irina Popa f224441ed5 rustc_codegen_llvm: remove unused UseRef type. 2018-07-30 19:49:22 +03:00
Irina Popa 3eb50358e4 rustc_codegen_llvm: use safe references for BasicBlock. 2018-07-30 19:49:20 +03:00
Irina Popa f375185314 rustc_codegen_llvm: use safe references for Value. 2018-07-30 19:49:18 +03:00
Irina Popa 8d17684341 rustc_codegen_llvm: remove _opaque suffix. 2018-07-30 19:32:22 +03:00
Irina Popa 1da26707d6 rustc_codegen_llvm: remove #![allow(dead_code)] from llvm. 2018-07-30 19:32:20 +03:00
Irina Popa 50d764298e rustc_codegen_llvm: remove unused ExecutionEngineRef type. 2018-07-30 19:27:16 +03:00
Irina Popa eed48f560f rustc_codegen_llvm: use safe references for Metadata and DI*. 2018-07-30 19:27:13 +03:00
Irina Popa 6d0d82ce10 rustc_codegen_llvm: use safe references for DIBuilder. 2018-07-30 18:36:32 +03:00
Irina Popa 2dbde55395 rustc_codegen_llvm: use safe references for Builder. 2018-07-30 18:36:30 +03:00
Irina Popa d04e66d114 rustc_codegen_llvm: use safe references for Type. 2018-07-30 18:36:29 +03:00
Irina Popa 249d5acaec rustc_codegen_llvm: use safe references for Context and Module. 2018-07-30 18:27:52 +03:00
Irina Popa af04e9426c rustc_codegen_llvm: move from empty enums to extern types. 2018-07-30 18:12:47 +03:00
Irina Popa 077be49bde rustc_llvm: move to rustc_codegen_llvm::llvm. 2018-07-30 18:03:50 +03:00
bors 54628c8ea8 Auto merge of #52697 - ljedrz:misc_data_structures, r=Mark-Simulacrum
Simplify a few functions in rustc_data_structures

- drop `try!()` where it's superfluous
- change `try!()` to `?`
- squash a `push` with `push_str`
- refactor a push loop into an iterator
2018-07-30 12:20:58 +00:00
bors e4378412ec Auto merge of #52830 - matthewjasper:bootstrap-prep, r=matthewjasper
[NLL] Fix some things for bootstrap

Some changes that are required when bootstrapping rustc with NLL enabled.

* Remove a bunch of unused `mut`s that aren't needed, but the existing lint doesn't catch.
* Rewrite a function call to satisfy NLL borrowck. Note that the borrow is two-phase, but gets activated immediately by an unsizing coercion.

cc #51823
2018-07-30 10:19:38 +00:00
bors 5ed2b5120b Auto merge of #52722 - alexcrichton:more-identifier-lints, r=oli-obk
Tweak the raw_identifiers lints in 2018

* Enable the `raw_identifiers` feature automatically in the 2018 preview
* Only emit lint warnings if the `raw_identifiers` feature is activated

cc rust-lang/cargo#5783
2018-07-30 08:25:36 +00:00
bors 7bbcd005b3 Auto merge of #52805 - ljedrz:format_str_literal, r=petrochenkov
Don't format!() string literals

Prefer `to_string()` to `format!()` take 2, this time targetting string literals. In some cases (`&format!("...")` -> `"..."`) also removes allocations. Occurences of `format!("")` are changed to `String::new()`.
2018-07-30 06:29:39 +00:00
bors a3f519df09 Auto merge of #52823 - RalfJung:test, r=eddyb
invalid_const_promotion: check if we get the right signal

r? @eddyb
2018-07-30 04:34:19 +00:00
bors b12235db09 Auto merge of #52828 - Mark-Simulacrum:clear-rustdoc-check, r=alexcrichton
Clear out rustdoc check builds if dependencies change

r? @alexcrichton
2018-07-30 01:08:13 +00:00
bors 866a713258 Auto merge of #52738 - ljedrz:push_to_extend, r=eddyb
Replace push loops with extend() where possible

Or set the vector capacity where I couldn't do it.

According to my [simple benchmark](https://gist.github.com/ljedrz/568e97621b749849684c1da71c27dceb) `extend`ing a vector can be over **10 times** faster than `push`ing to it in a loop:

10 elements (6.1 times faster):
```
test bench_extension ... bench:          75 ns/iter (+/- 23)
test bench_push_loop ... bench:         458 ns/iter (+/- 142)
```

100 elements (11.12 times faster):
```
test bench_extension ... bench:          87 ns/iter (+/- 26)
test bench_push_loop ... bench:         968 ns/iter (+/- 3,528)
```

1000 elements (11.04 times faster):
```
test bench_extension ... bench:         311 ns/iter (+/- 9)
test bench_push_loop ... bench:       3,436 ns/iter (+/- 233)
```

Seems like a good idea to use `extend` as much as possible.
2018-07-29 21:37:47 +00:00
bors 70cac59031 Auto merge of #51361 - oli-obk:sanity_check_consts, r=nikomatsakis
Do a basic sanity check for all constant values

## Motivation and high level overview

There has been some back and forth in this PR between @RalfJung and me in here about the motivation for this change and the stance it takes on unsafe coding guidelines.

The initial implementation ran its checks on every value read (so `*x`, `y = x`, ...). In unsafe code that isn't reasonable, because we might be invalidating invariants for a short time in order to build up a proper value.

The current implementation is a lint that runs its checks statics and constants. There is no need to check array lengths and enum variants, because it's a hard error to end up with anything but a number, and that one even has to have the required bits to be defined.

## What checks are done?

* Some type related checks
    * `char` needs to be a correct unicode character as defined by `char::from_u32`
    * A reference to a ZST must have the correct alignment (and be nonzero)
    * A reference to anything is dereferenced and its value is checked
* Layout checks use the information from `ty::Layout` to check
    * all fields of structs
    * all elements of arrays
    * enum discriminants
    * the fields of an enum variant (the variant is decided by the discriminant)
    * whether any union field succeeds in being checked (if none match the memory pattern, the check fails)
    * if the value is in the range described by the layout (e.g. for `NonZero*` types)

Changing the layout of a type will thus automatically cause the checks to check for the new layout.

fixes #51330
fixes #51471

cc @RalfJung

r? @eddyb
2018-07-29 19:37:28 +00:00
Ralf Jung 86e59ccf34 dont hardcode vtable size in codegen test 2018-07-29 20:24:26 +02:00
Ralf Jung 5ba76335bb update codegen tests 2018-07-29 20:24:26 +02:00
Oliver Schneider 3e8337eb3d Move a test that depends on the arch bitwidth to compile-fail 2018-07-29 20:24:26 +02:00
Oliver Schneider b92f0478c1 Update miri submodule 2018-07-29 20:24:26 +02:00
Oliver Schneider 9377041de9 Sanity-check all constants 2018-07-29 20:22:15 +02:00
Matthew Jasper 18d5f82148 Change order of copy and borrow to avoid conflict
Note that the first argument is `self as &mut dyn Delegate`, so this
isn't allowed with two-phase borrows.
2018-07-29 18:04:09 +01:00
Matthew Jasper 503455bcc7 Remove unused `mut`s 2018-07-29 18:04:09 +01:00
ljedrz 59c8a279da Replace push loops with collect() and extend() where possible 2018-07-29 18:53:22 +02:00
Mark Rousskov d68176e115 Clear out rustdoc check builds if dependencies change 2018-07-29 09:03:37 -06:00
bors 75af9df71b Auto merge of #52620 - mikhail-m1:51351, r=nikomatsakis
fix simple case of issue #51351 and #52133

r? @nikomatsakis
2018-07-29 13:23:01 +00:00
bors 2a9dc245c6 Auto merge of #52755 - kennytm:update-rustfmt, r=nrc
Update rustfmt and RLS
2018-07-29 11:27:48 +00:00
Ralf Jung c7f01aa175 invalid_const_promotion: check if we get the right signal 2018-07-29 13:11:01 +02:00
kennytm cab21f12d5
Update RLS and rustfmt. 2018-07-29 19:05:42 +08:00
kennytm 9c5c8d6491
Test clippy first to workaround the derive-new conflict. 2018-07-29 19:05:41 +08:00
Mikhail Modin bb66d70b89 fix issues #51351 and #52133 2018-07-29 11:42:50 +01:00
bors 023fd7e74a Auto merge of #52767 - ljedrz:avoid_format, r=petrochenkov
Prefer to_string() to format!()

Simple benchmarks suggest in some cases it can be faster by even 37%:
```
test converting_f64_long  ... bench:         339 ns/iter (+/- 199)
test converting_f64_short ... bench:         136 ns/iter (+/- 34)
test converting_i32_long  ... bench:          87 ns/iter (+/- 16)
test converting_i32_short ... bench:          87 ns/iter (+/- 49)
test converting_str       ... bench:          54 ns/iter (+/- 15)
test formatting_f64_long  ... bench:         349 ns/iter (+/- 176)
test formatting_f64_short ... bench:         145 ns/iter (+/- 14)
test formatting_i32_long  ... bench:          98 ns/iter (+/- 14)
test formatting_i32_short ... bench:          93 ns/iter (+/- 15)
test formatting_str       ... bench:          86 ns/iter (+/- 23)
```
2018-07-29 09:33:37 +00:00
kennytm bc2ba799cb
Exempt cloudabi from license check. 2018-07-29 15:12:47 +08:00
kennytm a28e3d28aa
Copy the test_data/ RLS tests into a writable directory.
See rust-lang-nursery/rls#966 for details.
2018-07-29 15:12:47 +08:00
bors a5c2d0fffa Auto merge of #52764 - sinkuu:cleanup, r=nikomatsakis
Misc cleanups
2018-07-29 06:32:24 +00:00
bors fb0653e402 Auto merge of #52751 - QuietMisdreavus:you-shall-not-pass, r=GuillaumeGomez
rustdoc: rework how default passes are chosen

This is a refactor that changes how we select default passes, and changes the set of passes used for `--document-private-items`. It's groundwork for a bigger refactor i want to do.

The major changes:

* There are now two sets of "default passes": one set for "no flags given" and one for "document private items".
* These sets can be selected by a new `DefaultPassOption` enum, which is selected from based on the presence of `--no-defaults` or `--document-private-items` CLI flags, or their associated crate attributes.
* When printing the list of passes, we also print the list of passes for `--document-private-items` in addition to the "default defaults".
* I added `propagate-doc-cfg` and `strip-priv-imports` to the "document private items" set. The former is to ensure items are properly tagged with the full set of cfg flags even when "document private items" is active. The latter is based on feedback and personal experience navigating the `rustc` docs, which use that flag. `strip-priv-imports` only removes non-pub `use` statements, so it should be harmless from a documentation standpoint to remove those items from "private items" documentation.
2018-07-29 03:20:54 +00:00
bors 6a2c97c38d Auto merge of #52720 - alexcrichton:update-cargo-and-rustfix, r=nikomatsakis
Update the Cargo submodule and rustfix

Should hopefully bring in a few more `cargo fix`-related fixes.
2018-07-29 01:14:39 +00:00
bors 6323d9a45b Auto merge of #52355 - pietroalbini:zfeature, r=eddyb
Add the -Zcrate-attr=foo unstable rustc option

This PR adds a new unstable option to `rustc`: `-Zcrate-attr=foo`. The option can be used to inject crate-level attributes from the CLI, and it's meant to be used by tools like Crater that needs to add their own attributes to a crate without changing the source code.

The exact reason I need this is to implement "edition runs" in Crater: we need to add the preview feature flag to every crate, and editing the crates' source code on the fly might produce unexpected results, while a compiler flag is more reliable.

cc https://github.com/rust-lang-nursery/crater/issues/282 @Mark-Simulacrum
2018-07-28 23:10:10 +00:00
bors dab71516f1 Auto merge of #52585 - GuillaumeGomez:generic-impls, r=QuietMisdreavus
[rustdoc] Generic impls

Fixes #33772.

r? @QuietMisdreavus
2018-07-28 20:44:17 +00:00
bors 4234adf0d4 Auto merge of #52546 - nikomatsakis:issue-52050, r=pnkfelix
do not overwrite child def-id in place but rather remove/insert

When inserting a node N into the tree of impls, we sometimes find than an existing node C should be replaced with N. We used to overwrite C in place with the new def-id N -- but since the lists of def-ids are separated by simplified type, that could lead to N being inserted in the wrong place. This meant we might miss conflicts. We are now not trying to be so smart -- we remove C and then add N later.

Fixes #52050

r? @aturon -- do you still remember this code at all? :)
2018-07-28 18:41:40 +00:00
Guillaume Gomez 06364bd460 Move blanket implementations generation into its own function 2018-07-28 20:27:10 +02:00
Guillaume Gomez bdbb5b9469 Remove core exclusion condition 2018-07-28 19:06:25 +02:00
Alex Crichton fa5b3d31fa Update the Cargo submodule and rustfix
Should hopefully bring in a few more `cargo fix`-related fixes.
2018-07-28 09:50:34 -07:00
bors d754582005 Auto merge of #52744 - RalfJung:align_offset, r=Kimundi
make memrchr use align_offset

I hope I did not screw that up...

Cc @oli-obk who authored the original https://github.com/rust-lang/rust/pull/44537

Fixes #50567 (thanks @bjorn3)
2018-07-28 16:44:21 +00:00
ljedrz 421b2ba347 Don't format!() string literals 2018-07-28 17:58:52 +02:00