Esteban Küber
e8cf5f3662
Clean up closure type mismatch errors
2017-04-23 15:54:49 -07:00
bors
2bd4b5c6db
Auto merge of #41485 - arielb1:dtorck-constraint, r=eddyb
...
cache dtorck constraints on ADTs
This avoids visiting the fields of all structs multiple times, improving item-bodies checking time by 10% (!).
Not sure whether we want this in 1.18 or 1.19. It's a big-ish patch, but the 10% win is very tempting.
r? @eddyb
2017-04-23 20:11:50 +00:00
Ariel Ben-Yehuda
d3476f4b76
cache ADT dtorck results
...
This avoids visiting the fields of all structs multiple times, improving
item-bodies checking time by 10% (!).
2017-04-23 23:09:21 +03:00
Ariel Ben-Yehuda
eadb049799
traits::select: quickly filter out predicates from other traits
...
this improves most pre-trans passes's performance by ~1%.
2017-04-23 23:05:25 +03:00
Tim Neumann
8994277657
FIN: windows-gnu: statically link gcc_s, pthread with llvm
2017-04-23 22:00:03 +02:00
Tim Neumann
f3dda17469
FIN: Compile LLVM with -fno-omit-frame-pointer on 32bit MinGW builds
...
to work around an apparently bad optimization.
2017-04-23 22:00:03 +02:00
Tim Neumann
67560f6fae
FIN: switch appveryor to mingw with posix threads
2017-04-23 22:00:03 +02:00
Tim Neumann
6723e69a54
FIN: ignore failing test on emscripten, see #41299
2017-04-23 22:00:02 +02:00
Tim Neumann
5bd4e27db2
FIN: update appveyor mingw description
2017-04-23 22:00:02 +02:00
Tim Neumann
5ae4a58c33
FIN: build comiler-rt wihout Thumb on arm
2017-04-23 22:00:02 +02:00
Tim Neumann
a146431e4c
FIN: disable backtrace printing for panic-runtime/abort* on ARM
2017-04-23 22:00:02 +02:00
Tim Neumann
a0ce63be2b
FIN: update emscripten builder
2017-04-23 22:00:01 +02:00
Tim Neumann
f622542b64
FIN/CRT: adopt all applicable rust compiler-rt patches
2017-04-23 22:00:01 +02:00
Tim Neumann
aaa307ce47
FIN/LLVM: new rust patches required for 4.0
2017-04-23 22:00:01 +02:00
Tim Neumann
4fcfab16d3
FIN/LLVM: adopt all applicable rust llvm patches
2017-04-23 22:00:01 +02:00
Tim Neumann
167b7eb8b5
FIN: update to upstream (llvm 4.0.1 + fastcomp 1.37.10) & compiler-rt 4.0
2017-04-23 22:00:00 +02:00
Ariel Ben-Yehuda
5412587910
clean-up adt_sized_constraint now that it uses on-demand
2017-04-23 14:37:18 +03:00
bors
23de823e93
Auto merge of #41408 - eddyb:poly-const-eval, r=arielb1
...
rustc: generalize monomorphic_const_eval to polymorphic constants.
With the addition of `Substs` to the query key, we can now evaluate *and cache* polymorphic constants.
Fixes #23898 by replacing the crippled explicit-discriminant-only local-crate-only `lookup_variant_by_id` with `ConstVal::Variant` which can describe variants irrespective of their discriminant.
Fixes #41394 by fixing #23898 (for the original testcase) and by not looping past the first discriminant.
2017-04-23 08:35:00 +00:00
Eduard-Mihai Burtescu
8054377f8f
rustc_const_eval: support all unit enum variants.
2017-04-23 11:11:57 +03:00
Eduard-Mihai Burtescu
0ff828baa0
rustc_const_eval: CallOn isn't needed, typeck/const-qualif handle those cases.
2017-04-23 11:11:56 +03:00
Eduard-Mihai Burtescu
e22873d912
rustc: make the const-eval cache polymorphic.
2017-04-23 11:11:54 +03:00
bors
a94124488a
Auto merge of #41437 - cuviper:remove-unstable-deprecated, r=alexcrichton
...
Remove items that are unstable and deprecated
This removes unstable items that have been deprecated for more than one cycle.
- Since 1.16.0, `#![feature(enumset)]`
- All of `mod collections::enum_set`
- Since 1.15.0, `#![feature(borrow_state)]`
- `cell::BorrowState`
- `RefCell::borrow_state()`
- Since 1.15.0, `#![feature(is_unique)]`
- `Rc::is_unique()` (made private like `Arc::is_unique()`)
- Since 1.15.0, `#![feature(rc_would_unwrap)]`
- `Rc::would_wrap()`
- Since 1.13.0, `#![feature(binary_heap_extras)]`
- `BinaryHeap::push_pop()`
- `BinaryHeap::replace()`
- Since 1.12.0, `#![feature(as_unsafe_cell)]`
- `Cell::as_unsafe_cell()`
- `RefCell::as_unsafe_cell()`
- Since 1.12.0, `#![feature(map_entry_recover_keys)]`
- `btree_map::OccupiedEntry::remove_pair()`
- `hash_map::OccupiedEntry::remove_pair()`
- Since 1.11.0, `#![feature(float_extras)]`
- `Float::nan()`
- `Float::infinity()`
- `Float::neg_infinity()`
- `Float::neg_zero()`
- `Float::zero()`
- `Float::one()`
- `Float::integer_decode()`
- `f32::integer_decode()`
- `f32::ldexp()`
- `f32::frexp()`
- `f32::next_after()`
- `f64::integer_decode()`
- `f64::ldexp()`
- `f64::frexp()`
- `f64::next_after()`
- Since 1.11.0, `#![feature(zero_one)]`
- `num::Zero`
- `num::One`
2017-04-23 02:13:55 +00:00
Corey Farwell
13d2534fd3
Remove unused import.
2017-04-22 22:13:22 -04:00
bors
252d3da8a6
Auto merge of #41469 - arielb1:rustc-spring-cleaning, r=eddyb
...
Performance audit, Spring 2017
Fix up some quite important performance "surprises" I've found running callgrind on rustc.
2017-04-22 20:07:01 +00:00
Ariel Ben-Yehuda
a660ad84b3
bail out of selection when there are multiple surviving candidates
...
In some cases (e.g. <[int-var] as Add<[int-var]>>), selection can turn up
a large number of candidates. Bailing out early avoids O(n^2) performance.
This improves item-type checking time by quite a bit, resulting in ~2% of total
time-to-typeck.
2017-04-22 21:02:50 +03:00
Ariel Ben-Yehuda
a0f145ba8c
add a cache to impl_polarity
...
this is another one of these things that looks *much* worse on valgrind.
2017-04-22 21:02:41 +03:00
Ariel Ben-Yehuda
81af6fb67c
allocate less strings in symbol_names
...
this improves trans performance by *another* 10%.
2017-04-22 21:02:02 +03:00
Ariel Ben-Yehuda
266d36f3b1
weak_lang_items: check for lang
attribute before calling value_str
...
improves trans performance by *another* 10%.
2017-04-22 21:00:50 +03:00
Ariel Ben-Yehuda
ece6c8434b
cache attributes of items from foreign crates
...
this avoids parsing item attributes on each call to `item_attrs`, which takes
off 33% (!) of translation time and 50% (!) of trans-item collection time.
2017-04-22 21:00:50 +03:00
Ariel Ben-Yehuda
acd0e40b86
short-cut SharedCrateContext::layout_of
...
That method is *incredibly* hot, so this ends up saving 10% of trans
time.
BTW, we really should be doing dependency tracking there - and possibly be
taking the respective perf hit (got to find a way to make DTMs fast), but
`layout_cache` is a non-dep-tracking map.
2017-04-22 21:00:50 +03:00
Ariel Ben-Yehuda
e1377a4f47
avoid calling mk_region
unnecessarily
...
this improves typeck & trans performance by 1%. This looked hotter on
callgrind than it is on a CPU.
2017-04-22 21:00:50 +03:00
Ariel Ben-Yehuda
3bf00450cb
remove cleanup branches to the resume block
...
This improves LLVM performance by 10% lost during the shimmir transition.
2017-04-22 21:00:50 +03:00
bors
cb4065b9ce
Auto merge of #41431 - GuillaumeGomez:hoedown-default, r=aturon
...
Re-enable hoedown by default
r? @rust-lang/docs
cc @aturon
2017-04-22 17:37:04 +00:00
bors
9cc77d7690
Auto merge of #41464 - frewsxcv:rollup, r=frewsxcv
...
Rollup of 3 pull requests
- Successful merges: #41077 , #41355 , #41450
- Failed merges:
2017-04-22 14:17:36 +00:00
Corey Farwell
b37163c81c
Rollup merge of #41450 - rillian:rustc-wrapper, r=alexcrichton
...
Update cargo for 1.18.0.
Bump our associated cargo to pick up the RUSTC_WRAPPER feature
for use with build caches.
2017-04-22 09:02:58 -04:00
Corey Farwell
e282817186
Rollup merge of #41355 - nikomatsakis:incr-comp-refactor-trans-2, r=eddyb
...
Refactor trans some more to pave way for incremental compilation
Various refactorings paving the way for the newer approach to incremental compilation (And, in particular, to "query-ifying" trans). My partial goal is to remove `SharedCrateContext`; this PR gets about as far as I can easily get before starting to really want the red/green algorithm.
r? @eddyb
cc @michaelwoerister
2017-04-22 09:02:57 -04:00
Corey Farwell
5e1351b17b
Rollup merge of #41077 - petrochenkov:boundparen, r=nikomatsakis
...
syntax: Support parentheses around trait bounds
An implementation for https://github.com/rust-lang/rust/issues/39318#issuecomment-290956826
r? @nikomatsakis
2017-04-22 09:02:56 -04:00
Guillaume Gomez
9c97882055
Fix line display
2017-04-22 14:56:36 +02:00
bors
6d841da4a0
Auto merge of #39999 - bitshifter:struct_align, r=eddyb
...
Implementation of repr struct alignment RFC 1358.
The main changes around rustc::ty::Layout::struct:
* Added abi_align field which stores abi alignment before repr align is applied
* align field contains transitive repr alignment
* Added padding vec which stores padding required after fields
The main user of this information is rustc_trans::adt::struct_llfields
which determines the LLVM fields to be used by LLVM, including padding
fields.
A possible future optimisation would be to put the padding Vec in an Option, since it will be unused unless you are using repr align.
2017-04-22 11:50:40 +00:00
Guillaume Gomez
91fb6bc1eb
Fix tests
2017-04-22 13:25:14 +02:00
Guillaume Gomez
d79b511f5c
Fix invalid linkage
2017-04-22 13:25:14 +02:00
Guillaume Gomez
295f25b198
Set hoedown to generate error index
2017-04-22 13:25:14 +02:00
Guillaume Gomez
80a2a94d5a
Re-enable hoedown by default
2017-04-22 13:25:14 +02:00
bors
ff13b7c918
Auto merge of #41459 - frewsxcv:rollup, r=frewsxcv
...
Rollup of 4 pull requests
- Successful merges: #37658 , #41405 , #41432 , #41435
- Failed merges:
2017-04-22 03:31:53 +00:00
Corey Farwell
df72158d47
Rollup merge of #41435 - estebank:issue-33884, r=nikomatsakis
...
Add test for issue 33884
Fix #33884 .
r=nikomatsakis
2017-04-21 23:29:15 -04:00
Corey Farwell
48a9d5f6d3
Rollup merge of #41432 - abonander:issue_41211, r=jseyfried
...
Don't panic if an attribute macro fails to resolve at crate root
Adds temporary regression test; this ideally should work as-is (#41430 )
Closes #41211
r? @jseyfried
2017-04-21 23:29:15 -04:00
Corey Farwell
aff40e2de3
Rollup merge of #41405 - GuillaumeGomez:rustdoc-warning-improvement, r=steveklabnik
...
Fix line display for hoedown
Fixes #41401 .
r? @rust-lang/docs
2017-04-21 23:29:14 -04:00
Corey Farwell
5da19f2b69
Rollup merge of #37658 - GuillaumeGomez:ref_suggestion, r=nikomatsakis,eddyb
...
Ref suggestion
2017-04-21 23:29:13 -04:00
Jessica Hamilton
e1afddc29c
Haiku: fix initial platform support
2017-04-22 13:47:36 +12:00
Niko Matsakis
6d86f81eb1
move the uses of the trans caches into rustc::traits
...
This makes these routines more readily available for other bits of
code. It also will help when refactoring.
2017-04-21 21:02:14 -04:00