Commit Graph

77551 Commits

Author SHA1 Message Date
Michael Woerister
98bf62a109 Add tests for -Z cross-lang-lto. 2018-05-03 02:30:14 -07:00
Michael Woerister
443f99fca0 Add -Z cross-lang-lto flag in order to support linker-based LTO. 2018-05-03 02:30:14 -07:00
Michael Woerister
aed5b9c815 Declare embedded LLVM bitcode section readonly. 2018-05-03 02:30:14 -07:00
bors
427c548749 Auto merge of #50378 - varkor:repr-align-max-29, r=eddyb
Reduce maximum repr(align(N)) to 2^29

The current maximum `repr(align(N))` alignment is larger than the maximum alignment accepted by LLVM, which can cause issues for huge values of `N`, as seen in #49492. Fixes #49492.

r? @rkruppe
2018-05-03 05:38:11 +00:00
bors
9e3cbbb60a Auto merge of #50369 - pftbest:unicode, r=SimonSapin
Fix a warning in libcore on 16bit targets.

This code is assuming that usize >= 32bits, but it is not the case on
16bit targets. It is producing a warning that can fail the compilation
on MSP430 if deny(warnings) is enabled.
It is very unlikely that someone would actually use this code on
a microcontroller, but since unicode was merged into libcore we
have to compile it on 16bit targets.

I've tried to make sure that the code stays the same on x86,
here is an assembly comparison: https://godbolt.org/g/wFw7dZ

r? @SimonSapin
2018-05-03 02:01:04 +00:00
bors
8a37c75a3a Auto merge of #50355 - petrochenkov:50187, r=oli-obk
Fix an unresolved import issue with enabled `use_extern_macros`

This is a kinda ugly special-purpose solution that will break if we suddenly add a fourth namespace, but I hope to come up with something more general if I get to import resolution refactoring this summer.

Fixes https://github.com/rust-lang/rust/issues/50187 thus removing a blocker for stabilization of `use_extern_macros`
2018-05-02 20:33:31 +00:00
bors
3eadd75473 Auto merge of #50354 - varkor:initial-field-alignment-c-int, r=eddyb
Correct initial field alignment for repr(C)/repr(int)

Fixes #50098 following https://github.com/rust-lang/rust/issues/50098#issuecomment-385497333.

(I wasn't sure which kind of test was best suited here — I picked run-pass simply because that was convenient, but if codegen is more appropriate, let me know and I'll change it.)

r? @eddyb
2018-05-02 17:02:25 +00:00
bors
d40a0b3dc1 Auto merge of #49943 - pnkfelix:fix-issue-49918, r=nikomatsakis
Treat generators as if they have an arbitrary destructor

Conservatively assume dropping a generator touches its upvars, via locals' destructors.

Fix #49918
2018-05-02 12:20:31 +00:00
bors
6a87289fa4 Auto merge of #50339 - nnethercote:lazy-Printer-buf, r=michaelwoerister
Extend Printer::buf on demand.

So that 55 entries (at 48 bytes each) don't need to be eagerly
initialized on creation.

This speeds up numerous rust-perf benchmark runs, by up to 3%.
```
crates.io-check
        avg: -2.4%      min: -3.7%      max: -1.1%
encoding-check
        avg: -2.1%      min: -2.9%      max: -1.2%
crates.io-opt
        avg: -1.3%      min: -2.7%      max: -0.1%
crates.io
        avg: -1.4%      min: -2.7%      max: -0.3%
encoding-opt
        avg: -1.1%      min: -2.5%      max: 0.1%
encoding
        avg: -1.3%      min: -2.4%      max: -0.3%
hyper-check
        avg: -1.7%      min: -2.3%      max: -0.9%
regex-check
        avg: -1.5%      min: -1.9%      max: -0.7%
piston-image-check
        avg: -0.9%      min: -1.8%      max: -0.5%
hyper
        avg: -1.0%      min: -1.7%      max: -0.3%
hyper-opt
        avg: -0.9%      min: -1.7%      max: -0.1%
syn-check
        avg: -1.0%      min: -1.5%      max: -0.6%
clap-rs
        avg: -0.3%      min: -1.5%      max: 0.2%
regex-opt
        avg: -0.6%      min: -1.5%      max: -0.0%
regression-31157-check
        avg: -1.1%      min: -1.4%      max: -0.7%
regex
        avg: -0.7%      min: -1.3%      max: -0.1%
clap-rs-check
        avg: -0.5%      min: -1.2%      max: 0.1%
syn-opt
        avg: -0.5%      min: -1.1%      max: -0.1%
syn
        avg: -0.5%      min: -1.1%      max: -0.2%
serde-opt
        avg: -0.3%      min: -1.1%      max: 0.1%
piston-image-opt
        avg: -0.4%      min: -1.1%      max: -0.0%
piston-image
        avg: -0.4%      min: -1.0%      max: -0.0%
```
2018-05-02 10:13:11 +00:00
bors
5f3994f58f Auto merge of #50329 - Zoxc:opt-3, r=alexcrichton
Set opt-level to 3

r? @alexcrichton
2018-05-02 07:50:23 +00:00
bors
c1168be536 Auto merge of #50282 - fitzgen:run-more-passes-on-constant-mir, r=nikomatsakis
Run more passes on constant mir

Not very familiar with this code, but everything seems to be working!

r? @eddyb
2018-05-02 05:22:29 +00:00
bors
a2726846f6 Auto merge of #50278 - eddyb:mir-succ-iter, r=nikomatsakis
rustc: return iterators from Terminator(Kind)::successors(_mut).

Minor cleanup (and potentially speedup) prompted by @nnethercote's `SmallVec` experiments.
This PR assumes `.count()` and `.nth(i)` on `iter::Chain<option::IntoIter, slice::Iter(Mut)>` are `O(1)`, but otherwise all of the uses appear to immediately iterate through the successors.

r? @nikomatsakis
2018-05-02 02:10:51 +00:00
bors
5a662bff7a Auto merge of #50379 - nrc:update, r=alexcrichton
Update RLS

r? @alexcrichton

Fixes RLS tests (broken by Cargo update) and enables nightly release
2018-05-01 23:43:32 +00:00
Nick Cameron
6457241133 Update RLS and Rustfmt 2018-05-02 10:20:49 +12:00
bors
96b09e0212 Auto merge of #49982 - petrochenkov:noreex, r=alexcrichton
Remove unstable `macro_reexport`

It's subsumed by `feature(use_extern_macros)` and `pub use`

cc https://github.com/rust-lang/rust/issues/35896
closes https://github.com/rust-lang/rust/issues/29638
closes https://github.com/rust-lang/rust/issues/38951
2018-05-01 21:22:49 +00:00
varkor
cd2f5f7d97 Reduce the maximum alignment to repr(align(1 << 29))
This brings it into line with LLVM's maximum permitted alignment.
2018-05-01 22:02:05 +01:00
varkor
c1607f80b3 Add E0589 to the error index 2018-05-01 22:01:55 +01:00
Felix S. Klock II
f12d7a55fc Update ui/generator tests to reflect changes from new generator drop rules. 2018-05-01 22:28:54 +02:00
Felix S. Klock II
edb8d1c0d4 Conservatively assume dropping a generator touches its upvars, via locals' dtors.
This is meant to address rust-lang/rust#49918.

Review feedback: put back comment justifying skipping interior traversal.

Review feedback: dropck generators like trait objects: all their upvars must
outlive the generator itself, so just create a DtorckConstraint saying so.
2018-05-01 22:28:54 +02:00
varkor
2d0d73ea5a Add a print_types_sizes regression test 2018-05-01 20:25:30 +01:00
bors
1fd74ebc28 Auto merge of #50374 - petrochenkov:pypath, r=Mark-Simulacrum
rustbuild: Normalize paths coming from Python slightly

Fixes #49785
2018-05-01 19:14:34 +00:00
Vadim Petrochenkov
993f7c5715 rustbuild: Normalize paths coming from Python slightly
Fixes #49785
2018-05-01 21:25:38 +03:00
varkor
4da1f71e4b Add repr(u8) to the test 2018-05-01 18:52:27 +01:00
varkor
7f6d47314b Correct initial field alignment for repr(C)/repr(int) 2018-05-01 18:46:32 +01:00
bors
4d7bbdd826 Auto merge of #49789 - petrochenkov:prelext, r=nikomatsakis
Module experiments: Add one more prelude layer for extern crate names passed with `--extern`

Implements one item from https://internals.rust-lang.org/t/the-great-module-adventure-continues/6678/183

When some name is looked up in lexical scope (`name`, i.e. not module-relative scope `some_mod::name` or `::name`), it's searched roughly in the next order:
- local variables
- items in unnamed blocks
- items in the current module
-  NEW!  crate names passed with `--extern` ("extern prelude")
- standard library prelude (`Vec`, `drop`)
- language prelude (built-in types like `u8`, `str`, etc)

The last two layers contain a limited set of names controlled by us and not arbitrary user-defined names like upper layers. We want to be able to add new names into these two layers without breaking user code, so "extern prelude" names have higher priority than std prelude and built-in types.
This is a one-time breaking change, that's why it would be nice to run this through crater.
Practical impact is expected to be minimal though due to stylistic reasons (there are not many `Uppercase` crates) and due to the way how primitive types are resolved (https://github.com/rust-lang/rust/pull/32131).
2018-05-01 16:58:26 +00:00
Vadzim Dambrouski
f29e62aadf Fix a warning in libcore on 16bit targets.
This code is assuming that usize >= 32bits, but it is not the case on
16bit targets. It is producing a warning that will fail the compilation
on MSP430 if deny(warnings) is enabled.
It is very unlikely that someone would actually use this code on
a microcontroller, but since unicode was merged into libcore we
have compile it on 16bit targets.
2018-05-01 17:48:31 +03:00
Vadim Petrochenkov
730c7222ee Fix an error from "unused" lint + Fix rebase 2018-05-01 17:02:18 +03:00
Vadim Petrochenkov
d98100b967 Give removal reasons to removed features 2018-05-01 15:58:42 +03:00
Vadim Petrochenkov
300b6bb417 Remove macro_reexport
It's subsumed by `feature(use_extern_macros)` and `pub use`
2018-05-01 15:58:42 +03:00
bors
0d8321b5e8 Auto merge of #50198 - oli-obk:const_prop, r=eddyb
Remove some unused code
2018-05-01 12:16:14 +00:00
Oliver Schneider
487f7bc016
Merge adjacent write! invocations 2018-05-01 12:26:58 +02:00
Eduard-Mihai Burtescu
f0f26b875a rustc: return impl Iterator from Terminator(Kind)::successors(_mut). 2018-05-01 13:12:23 +03:00
bors
a4a7947259 Auto merge of #49724 - kennytm:range-inc-start-end-methods, r=Kimundi
Introduce RangeInclusive::{new, start, end} methods and make the fields private.

cc #49022
2018-05-01 10:10:46 +00:00
bors
0eb68b797b Auto merge of #48786 - nagisa:fp, r=nikomatsakis
Add force-frame-pointer flag to allow control of frame pointer ommision

Rebase of #47152 plus some changes suggested by https://github.com/rust-lang/rust/issues/48785.

Fixes #11906

r? @nikomatsakis
2018-05-01 08:05:51 +00:00
Simonas Kazlauskas
7ec0452190 Force frame pointers for the backtrace test 2018-05-01 10:44:45 +03:00
Simonas Kazlauskas
969449f236 Don’t eliminate frame pointers on apple by default 2018-05-01 10:44:44 +03:00
Simonas Kazlauskas
09d2db4e96 Rework force-frame-pointer
This reworks the force-frame-pointer PR to explicitly only consider the
value of the flag if it is provided, and use a target default otherwise.

Something that was tried but not kept was renaming the flag to
`frame-pointer`, because for flag `frame-pointer=no`, there is no
guarante, that LLVM will elide *all* the frame pointers; oposite of what
the literal reading of the flag would suggest.
2018-05-01 10:44:44 +03:00
Björn Steinbrink
5b800c231f Don't force-enable frame pointers when generating debug info
We apparently used to generate bad/incomplete debug info causing
debuggers not to find symbols of stack allocated variables. This was
somehow worked around by having frame pointers.

With the current codegen, this seems no longer necessary, so we can
remove the code that force-enables frame pointers whenever debug info
is requested.

Since certain situations, like profiling code profit from having frame
pointers, we add a -Cforce-frame-pointers flag to always enable frame
pointers.

Fixes #11906
2018-05-01 10:44:44 +03:00
John Kåre Alsaker
aad9840ad4 Set opt-level to 3 2018-05-01 09:04:36 +02:00
bors
491512ba1e Auto merge of #50304 - nox:uninhabited-output, r=eddyb
Mark functions returning uninhabited types as noreturn
2018-05-01 05:52:12 +00:00
bors
2a8ad90930 Auto merge of #50197 - nikomatsakis:skolemize-out-of-tcx, r=eddyb
move skolemized regions into global tcx

Experimental branch to move skolemized regions into global tcx. This is probably not what we want long term but may be convenient to unblock @sgrif in the short term.

I'd like to do a perf run, though the main concern I guess would be memory usage.

r? @eddyb
2018-05-01 00:16:16 +00:00
Vadim Petrochenkov
d5e31158a2 Better support for import resolution in 3 namespaces 2018-05-01 03:12:36 +03:00
Vadim Petrochenkov
428ef191e0 resolve (cleanup): Get rid of Option in PerNS 2018-05-01 03:10:47 +03:00
bors
357bf00f1c Auto merge of #48925 - zackmdavis:fn_must_stabilize, r=nikomatsakis
stabilize `#[must_use]` for functions and must-use comparison operators (RFC 1940)

r? @nikomatsakis
2018-04-30 22:02:33 +00:00
Niko Matsakis
149ab1bc39 put ReSkolemized into the global tcx 2018-04-30 14:06:46 -04:00
Niko Matsakis
69400751ab make needs_infer specific to inference variables
Notably, excluding ReSkolemized
2018-04-30 14:06:45 -04:00
kennytm
f70b2ebd08
new() should be const; start()/end() after iteration is unspecified. 2018-05-01 01:45:18 +08:00
kennytm
c916ee8511
Removed direct field usage of RangeInclusive in rustc itself. 2018-05-01 01:45:18 +08:00
Niko Matsakis
2e59e467a0 remove some (apparently) dead code 2018-04-30 13:36:43 -04:00
bors
17841cc97a Auto merge of #50345 - kennytm:rollup, r=kennytm
Rollup of 7 pull requests

Successful merges:

 - #50233 (Make `Vec::new` a `const fn`)
 - #50312 (Add more links in panic docs)
 - #50316 (Fix some broken links in docs.)
 - #50325 (Add a few more tests for proc macro feature gating)
 - #50327 (Display correct unused field suggestion for nested struct patterns)
 - #50330 (check that #[used] is used only on statics)
 - #50344 (Update Cargo to 2018-04-28 122fd5be5201913d42e219e132d6569493583bca)

Failed merges:
2018-04-30 17:30:55 +00:00