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
Cameron Hart
946f8e6a59
Use primitive align for tagged enum fill.
...
Hopefully will fix assert on ARM where vector types are being used as
the fill type for enums containing repr aligned types greater than the
largest possible native type, thus don't match the Layout's alignment
and triggers an assert.
2017-04-22 09:38:23 +10:00
Niko Matsakis
85527456e8
use Symbol/InternedString in the cache
2017-04-21 17:26:53 -04:00