bors
95979dcfb2
Auto merge of #51601 - Emerentius:step_by_range_diet, r=sfackler
...
Specialize StepBy<Range(Inclusive)>
Part of #51557 , related to #43064 , #31155
As discussed in the above issues, `step_by` optimizes very badly on ranges which is related to
1. the special casing of the first `StepBy::next()` call
2. the need to do 2 additions of `n - 1` and `1` inside the range's `next()`
This PR eliminates both by overriding `next()` to always produce the current element and also step ahead by `n` elements in one go. The generated code is much better, even identical in the case of a `Range` with constant `start` and `end` where `start+step` can't overflow. Without constant bounds it's a bit longer than the manual loop. `RangeInclusive` doesn't optimize as nicely but is still much better than the original asm.
Unsigned integers optimize better than signed ones for some reason.
See the following two links for a comparison.
[godbolt: specialization for ..](https://godbolt.org/g/haHLJr )
[godbolt: specialization for ..=](https://godbolt.org/g/ewyMu6 )
`RangeFrom`, the only other range with an `Iterator` implementation can't be specialized like this without changing behaviour due to overflow. There is no way to save "finished-ness".
The approach can not be used in general, because it would produce side effects of the underlying iterator too early.
May obsolete #51435 , haven't checked.
2018-06-21 08:55:13 +00:00
bors
fff1abadd7
Auto merge of #51662 - Mark-Simulacrum:beta-next, r=Mark-Simulacrum
...
[beta] Prepare 1.28.0 beta release
This feels likely to fail due to https://github.com/rust-lang/rust/issues/51650 but I want to see what CI says.
2018-06-21 04:02:57 +00:00
Mark Simulacrum
09a0bc7975
Fix error-chain warnings
2018-06-20 19:52:07 -06:00
Esteban Küber
70c88e500c
Don't suggest incorrect syntax
2018-06-20 16:55:52 -07:00
Jorge Aparicio
9a96876d2d
no -Bsymbolic for mac; no static-libstdc++ for windows
2018-06-20 17:48:04 -05:00
bors
01172a7d13
Auto merge of #50698 - Eijebong:tempfile, r=oli-obk
...
Replace tempdir by tempfile
2018-06-20 22:40:18 +00:00
Marco Castelluccio
e9aacfd5c1
Disable probestack when GCOV profiling is being used
2018-06-20 22:07:55 +01:00
jeb
2dcafef621
make parse_seq_to_before_end
, mk_mac_expr
, and parse_optional_str
public in libsyntax
2018-06-20 08:19:05 -10:00
Bastien Orivel
c863049225
Fix tidy
2018-06-20 19:28:27 +02:00
Bastien Orivel
9d5b13e74b
Replace tempdir by tempfile in librustc
...
This removes the last dependency on tempdir.
2018-06-20 19:28:27 +02:00
Bastien Orivel
677eeaaa61
Replace tempdir by tempfile in librustc_trans
2018-06-20 19:28:27 +02:00
Bastien Orivel
ae9a27185e
Replace tempdir by tempfile in librustdoc
2018-06-20 19:28:27 +02:00
Rémy Rakic
71543836ab
NLL: Walk the MIR only once for the "unused mut" lint
2018-06-20 18:02:44 +02:00
Mark Simulacrum
842a9061ea
[beta] Prepare 1.28.0 beta release
2018-06-20 07:48:06 -06:00
bors
637fd2e048
Auto merge of #51651 - spastorino:fix_var_name_in_e0502, r=nikomatsakis
...
Fix variable name in E0502 double borrow error
Closes #51268
r? @nikomatsakis
2018-06-20 12:46:15 +00:00
Santiago Pastorino
3d31e5ffa6
Fix variable name in E0502 double borrow error
2018-06-20 09:04:52 -03:00
varkor
daf7e359a1
Fix rebase issues with existential types
2018-06-20 12:34:39 +01:00
varkor
21136b8ab4
Rename ParenthesizedArgData to ParenthesisedArgs
2018-06-20 12:23:46 +01:00
varkor
95ce05c586
Simplify some counting
2018-06-20 12:23:46 +01:00
varkor
7a829273bf
Rename ty_param_bound to generic_bound
2018-06-20 12:23:46 +01:00
varkor
4343c20819
Use ty::Generics instead of hir::Generics for various checks
2018-06-20 12:23:46 +01:00
varkor
dde942bb64
Fix additional comments
2018-06-20 12:23:46 +01:00
varkor
a65a9d77f3
Fix accidental quadratic loops
2018-06-20 12:23:46 +01:00
varkor
37204027b6
Rename ty_param_bound to trait_bound
2018-06-20 12:23:46 +01:00
varkor
95f1866a4d
Make GenericBound explicit
2018-06-20 12:23:46 +01:00
varkor
c5f16e0e18
Rename ParamBound(s) to GenericBound(s)
2018-06-20 12:23:46 +01:00
varkor
991efa4284
Address various comments
2018-06-20 12:23:33 +01:00
varkor
91712bc665
Lift attrs into hir::GenericParam
2018-06-20 12:23:23 +01:00
varkor
7de6ed06a5
Rename TraitTyParamBound to ParamBound::Trait
2018-06-20 12:23:23 +01:00
varkor
8bc3a35576
Fix HasAttrs support for GenericParam
2018-06-20 12:23:23 +01:00
varkor
390aa5d421
Introduce ParamName and use it in place of LifetimeName
2018-06-20 12:23:23 +01:00
varkor
59feafd9d8
Fix NodeLifetime/NodeGenericParam confusion
2018-06-20 12:23:08 +01:00
varkor
831b5c02df
Take advantage of the lifetime refactoring
2018-06-20 12:23:08 +01:00
varkor
6015edf9af
Remove name from GenericParamKind::Lifetime
2018-06-20 12:23:08 +01:00
varkor
c4e8e71880
Lift name into GenericParam
2018-06-20 12:23:08 +01:00
varkor
32b2dacdf8
Handle lifetimes in NodeGenericParam also
2018-06-20 12:23:07 +01:00
varkor
80dbe58efc
Use ParamBounds in WhereRegionPredicate
2018-06-20 12:23:07 +01:00
varkor
aed530a457
Lift bounds into GenericParam
2018-06-20 12:22:46 +01:00
varkor
a5328bc17b
Simply joint lifetime/type iteration
2018-06-20 12:21:52 +01:00
varkor
8bccfe7a52
Refactor counting methods
2018-06-20 12:21:52 +01:00
varkor
3bcb006fd9
Rename structures in ast
2018-06-20 12:21:52 +01:00
varkor
f457b3d10a
Refactor generic parameters in rustdoc/clean
2018-06-20 12:21:52 +01:00
varkor
80b381e041
Remove all traces of lifetimes() and types() methods
2018-06-20 12:21:24 +01:00
varkor
10229fd9d5
Rename DefPathData::LifetimeDef to LifetimeParam
2018-06-20 12:21:24 +01:00
varkor
c65454850f
Remove AngleBracketedArgs impl
2018-06-20 12:21:08 +01:00
varkor
e1d888c722
Remove methods from ast::GenericParam and ast::Generics
2018-06-20 12:21:08 +01:00
varkor
2c6ff2469a
Refactor ast::GenericParam as a struct
2018-06-20 12:21:08 +01:00
varkor
fba1fe2108
Remove hir::GenericParam::is_*_param
2018-06-20 12:21:08 +01:00
varkor
c818a1df9b
Remove specific parameter iterators from hir::Generics
2018-06-20 12:21:08 +01:00
varkor
82dba3d419
Refactor hir::GenericParam as a struct
2018-06-20 12:21:07 +01:00