about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorLines
2016-01-17Rollup merge of #30959 - bluss:bench-resolution, r=GankroManish Goregaokar-2/+1
test: Increase resolution of MB/s stat for bench runs close to 1 second MB/s was based on the number of iterations performed in a second, when the iteration duration nears 1 second (1e9 ns), the resolution of the MB/s stat decreases.
2016-01-17Rollup merge of #30957 - GuillaumeGomez:patch-3, r=apasel422Manish Goregaokar-1/+1
r? @Manishearth
2016-01-17Rollup merge of #30952 - jonastepe:nomicon_vec_zst_code_fix, r=GankroManish Goregaokar-6/+14
* Moved semicolon to the right place in the `let` statement in the ZST section. * Fixed the missing ZST additions for `RawValIter<T>` from this section in the final code section.
2016-01-17Rollup merge of #30943 - alexcrichton:stabilize-1.7, r=aturonManish Goregaokar-235/+356
This commit stabilizes and deprecates the FCP (final comment period) APIs for the upcoming 1.7 beta release. The specific APIs which changed were: Stabilized * `Path::strip_prefix` (renamed from `relative_from`) * `path::StripPrefixError` (new error type returned from `strip_prefix`) * `Ipv4Addr::is_loopback` * `Ipv4Addr::is_private` * `Ipv4Addr::is_link_local` * `Ipv4Addr::is_multicast` * `Ipv4Addr::is_broadcast` * `Ipv4Addr::is_documentation` * `Ipv6Addr::is_unspecified` * `Ipv6Addr::is_loopback` * `Ipv6Addr::is_unique_local` * `Ipv6Addr::is_multicast` * `Vec::as_slice` * `Vec::as_mut_slice` * `String::as_str` * `String::as_mut_str` * `<[T]>::clone_from_slice` - the `usize` return value is removed * `<[T]>::sort_by_key` * `i32::checked_rem` (and other signed types) * `i32::checked_neg` (and other signed types) * `i32::checked_shl` (and other signed types) * `i32::checked_shr` (and other signed types) * `i32::saturating_mul` (and other signed types) * `i32::overflowing_add` (and other signed types) * `i32::overflowing_sub` (and other signed types) * `i32::overflowing_mul` (and other signed types) * `i32::overflowing_div` (and other signed types) * `i32::overflowing_rem` (and other signed types) * `i32::overflowing_neg` (and other signed types) * `i32::overflowing_shl` (and other signed types) * `i32::overflowing_shr` (and other signed types) * `u32::checked_rem` (and other unsigned types) * `u32::checked_shl` (and other unsigned types) * `u32::saturating_mul` (and other unsigned types) * `u32::overflowing_add` (and other unsigned types) * `u32::overflowing_sub` (and other unsigned types) * `u32::overflowing_mul` (and other unsigned types) * `u32::overflowing_div` (and other unsigned types) * `u32::overflowing_rem` (and other unsigned types) * `u32::overflowing_neg` (and other unsigned types) * `u32::overflowing_shl` (and other unsigned types) * `u32::overflowing_shr` (and other unsigned types) * `ffi::IntoStringError` * `CString::into_string` * `CString::into_bytes` * `CString::into_bytes_with_nul` * `From<CString> for Vec<u8>` * `From<CString> for Vec<u8>` * `IntoStringError::into_cstring` * `IntoStringError::utf8_error` * `Error for IntoStringError` Deprecated * `Path::relative_from` - renamed to `strip_prefix` * `Path::prefix` - use `components().next()` instead * `os::unix::fs` constants - moved to the `libc` crate * `fmt::{radix, Radix, RadixFmt}` - not used enough to stabilize * `IntoCow` - conflicts with `Into` and may come back later * `i32::{BITS, BYTES}` (and other integers) - not pulling their weight * `DebugTuple::formatter` - will be removed * `sync::Semaphore` - not used enough and confused with system semaphores Closes #23284 cc #27709 (still lots more methods though) Closes #27712 Closes #27722 Closes #27728 Closes #27735 Closes #27729 Closes #27755 Closes #27782 Closes #27798
2016-01-17Rollup merge of #30940 - tshepang:extraneous-playpen-whitespace, r=steveklabnikManish Goregaokar-0/+1
2016-01-17Rollup merge of #30938 - dotdash:zst_void, r=eddybManish Goregaokar-5/+43
The only way to get a value for a zero-sized type is `undef`, so there's really no point in actually having a return type other than void for such types. Also, while the comment in return_type_is_void mentioned something about aiding C ABI support, @eddyb correctly pointed out on IRC that there is no such thing as a zero-sized type in C. And even with clang, which allows empty structs, those get translated as void return types as well. Fixes #28766
2016-01-17Auto merge of #30928 - sfackler:any-unsized, r=aturonbors-1/+6
This is a bit weird since unsized types can't be used in trait objects, but Any is *also* used as pure marker trait since Reflect isn't stable. There are many cases (e.g. TypeMap) where all you need is a TypeId. r? @aturon
2016-01-17Auto merge of #30426 - gereeter:btree-rewrite, r=Gankrobors-2593/+1914
Despite being over 700 lines shorter, this implementation should use less memory than the previous one and is faster on at least insertions and iteration, the latter improving approximately 5x. Technically a [breaking-change] due to removal of deprecated functions. cc @apasel422 @Gankro @goyox86 Fixes #27865. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/rust-lang/rust/30426) <!-- Reviewable:end -->
2016-01-16BTreeMap: Add a test for cloneJonathan S-0/+32
2016-01-16Rewrite BTreeMap to use parent pointers.Jonathan S-2593/+1882
2016-01-16Auto merge of #30567 - steffengy:master, r=alexcrichtonbors-6/+81
Add support to use functions exported using vectorcall. This essentially only allows to pass a new LLVM calling convention from rust to LLVM. ```rust extern "vectorcall" fn abc(param: c_void); ``` references ---- http://llvm.org/docs/doxygen/html/CallingConv_8h_source.html https://msdn.microsoft.com/en-us/library/dn375768.aspx
2016-01-16test: Increase resolution of MB/s stat for bench runs close to 1 secondUlrik Sverdrup-2/+1
MB/s was based on the number of iterations performed in a second, when the iteration duration nears 1 second (1e9 ns), the resolution of the MB/s stat decreases.
2016-01-16Auto merge of #30624 - Ticki:specialization, r=alexcrichtonbors-0/+85
Part of #30520. Completes #24214
2016-01-16Fixed indent from tabs to spacesJonas Tepe-8/+8
2016-01-16std: Stabilize APIs for the 1.7 releaseAlex Crichton-235/+356
This commit stabilizes and deprecates the FCP (final comment period) APIs for the upcoming 1.7 beta release. The specific APIs which changed were: Stabilized * `Path::strip_prefix` (renamed from `relative_from`) * `path::StripPrefixError` (new error type returned from `strip_prefix`) * `Ipv4Addr::is_loopback` * `Ipv4Addr::is_private` * `Ipv4Addr::is_link_local` * `Ipv4Addr::is_multicast` * `Ipv4Addr::is_broadcast` * `Ipv4Addr::is_documentation` * `Ipv6Addr::is_unspecified` * `Ipv6Addr::is_loopback` * `Ipv6Addr::is_unique_local` * `Ipv6Addr::is_multicast` * `Vec::as_slice` * `Vec::as_mut_slice` * `String::as_str` * `String::as_mut_str` * `<[T]>::clone_from_slice` - the `usize` return value is removed * `<[T]>::sort_by_key` * `i32::checked_rem` (and other signed types) * `i32::checked_neg` (and other signed types) * `i32::checked_shl` (and other signed types) * `i32::checked_shr` (and other signed types) * `i32::saturating_mul` (and other signed types) * `i32::overflowing_add` (and other signed types) * `i32::overflowing_sub` (and other signed types) * `i32::overflowing_mul` (and other signed types) * `i32::overflowing_div` (and other signed types) * `i32::overflowing_rem` (and other signed types) * `i32::overflowing_neg` (and other signed types) * `i32::overflowing_shl` (and other signed types) * `i32::overflowing_shr` (and other signed types) * `u32::checked_rem` (and other unsigned types) * `u32::checked_neg` (and other unsigned types) * `u32::checked_shl` (and other unsigned types) * `u32::saturating_mul` (and other unsigned types) * `u32::overflowing_add` (and other unsigned types) * `u32::overflowing_sub` (and other unsigned types) * `u32::overflowing_mul` (and other unsigned types) * `u32::overflowing_div` (and other unsigned types) * `u32::overflowing_rem` (and other unsigned types) * `u32::overflowing_neg` (and other unsigned types) * `u32::overflowing_shl` (and other unsigned types) * `u32::overflowing_shr` (and other unsigned types) * `ffi::IntoStringError` * `CString::into_string` * `CString::into_bytes` * `CString::into_bytes_with_nul` * `From<CString> for Vec<u8>` * `From<CString> for Vec<u8>` * `IntoStringError::into_cstring` * `IntoStringError::utf8_error` * `Error for IntoStringError` Deprecated * `Path::relative_from` - renamed to `strip_prefix` * `Path::prefix` - use `components().next()` instead * `os::unix::fs` constants - moved to the `libc` crate * `fmt::{radix, Radix, RadixFmt}` - not used enough to stabilize * `IntoCow` - conflicts with `Into` and may come back later * `i32::{BITS, BYTES}` (and other integers) - not pulling their weight * `DebugTuple::formatter` - will be removed * `sync::Semaphore` - not used enough and confused with system semaphores Closes #23284 cc #27709 (still lots more methods though) Closes #27712 Closes #27722 Closes #27728 Closes #27735 Closes #27729 Closes #27755 Closes #27782 Closes #27798
2016-01-16Auto merge of #30934 - oli-obk:simplify_const_eval, r=alexcrichtonbors-20/+6
the `None` and the `DefVariant` paths were unused anyway.
2016-01-16Auto merge of #30533 - nikomatsakis:fulfillment-tree, r=aturonbors-356/+1467
This PR introduces an `ObligationForest` data structure that the fulfillment context can use to track what's going on, instead of the current flat vector. This enables a number of improvements: 1. transactional support, at least for pushing new obligations 2. remove the "errors will be reported" hack -- instead, we only add types to the global cache once their entire subtree has been proven safe. Before, we never knew when this point was reached because we didn't track the subtree. - this in turn allows us to limit coinductive reasoning to structural traits, which sidesteps #29859 3. keeping the backtrace should allow for an improved error message, where we give the user full context - we can also remove chained obligation causes This PR is not 100% complete. In particular: - [x] Currently, types that embed themselves like `struct Foo { f: Foo }` give an overflow when evaluating whether `Foo: Sized`. This is not a very user-friendly error message, and this is a common beginner error. I plan to special-case this scenario, I think. - [x] I should do some perf. measurements. (Update: 2% regression.) - [x] More tests targeting #29859 - [ ] The transactional support is not fully integrated, though that should be easy enough. - [ ] The error messages are not taking advantage of the backtrace. I'd certainly like to do 1 through 3 before landing, but 4 and 5 could come as separate PRs. r? @aturon // good way to learn more about this part of the trait system f? @arielb1 // already knows this part of the trait system :)
2016-01-16Fix typoGuillaume Gomez-1/+1
2016-01-16Add regression tests for #29859. However #29859 is not fully fixed.Niko Matsakis-0/+84
2016-01-16Auto merge of #30946 - antonblanchard:powerpc64_merge2, r=alexcrichtonbors-0/+0
This brings in powerpc64 and powerpc64le support recently added.
2016-01-16simplify some codeOliver 'ker' Schneider-20/+6
2016-01-16added zst iterator additions to final codeJonas Tepe-2/+10
2016-01-16Semicolon was at wrong place in let statementJonas Tepe-4/+4
2016-01-16Auto merge of #30939 - shepmaster:btreeset-insert-return-value, r=alexcrichtonbors-1/+1
2016-01-16Document `ObligationForest` better.Niko Matsakis-50/+179
2016-01-16Pacify tidy.Niko Matsakis-59/+89
2016-01-16Implement a hacky version of the DAG support we ultimately want, leavingNiko Matsakis-9/+54
a FIXME for later.
2016-01-16Detect cycles and specialize error reporting for Sized. It is importantNiko Matsakis-92/+291
to get the `Sized` error usable, since that hits new users frequently. Further work is needed for the error reporting for non-Sized cycle cases; those currently just fallback to the old path. Also adjust tests.
2016-01-16Permit coinductive match only for purely OIBIT backtraces.Niko Matsakis-11/+39
Better safe than sorry.
2016-01-16Fix bug in new stall checking code, it should consider integer variablesNiko Matsakis-1/+1
too.
2016-01-16fallout from removing the `errors_will_be_reported` flagNiko Matsakis-42/+47
2016-01-16only insert global predicates into the global cache once we'veNiko Matsakis-37/+28
completely proven them to be true
2016-01-16enable coinductive reasoning for structural traits, this isNiko Matsakis-0/+13
potentially just a stopgap measure
2016-01-16Auto merge of #30935 - ollie27:pad_int, r=alexcrichtonbors-9/+9
The function expects a value of true for zero but zero is not positive.
2016-01-16Auto merge of #30930 - oli-obk:fix/30887, r=arielb1bors-70/+307
this makes sure the checks run before typeck (which might use the constant or const function to calculate an array length) and gives prettier error messages in case of for loops and such (since they aren't expanded yet). fixes #30887 r? @pnkfelix
2016-01-16Make style more uniform, add tests for specialization of .last(), move tests ↵Ticki-73/+68
to libcoretest Remove unused import Fold nth() method into the match expr
2016-01-16Overide methods in iterator implementation for EscapeDefault, see #24214Ticki-0/+90
Complete the tests
2016-01-16Auto merge of #30908 - petrochenkov:backtrace, r=alexcrichtonbors-1925/+473
@dhuseby @semarie Please, confirm that all Rust-specific changes in the second commit are still required. (It would be ideal to have an unpatched copy of libbacktrace straight from the gcc repo.) Fixes https://github.com/rust-lang/rust/issues/28447 r? @alexcrichton
2016-01-16Auto merge of #30896 - petrochenkov:vkindmeta, r=alexcrichtonbors-50/+229
Also add tests for use of empty structs in cross-crate scenarios Some tests are commented out, they depend on fixes from https://github.com/rust-lang/rust/pull/30882
2016-01-16Auto merge of #30740 - bluss:ascii-is-the-best, r=brsonbors-27/+72
Add fast path for ASCII in UTF-8 validation This speeds up the ASCII case (and long stretches of ASCII in otherwise mixed UTF-8 data) when checking UTF-8 validity. Benchmark results suggest that on purely ASCII input, we can improve throughput (megabytes verified / second) by a factor of 13 to 14 (smallish input). On XML and mostly English language input (en.wikipedia XML dump), throughput improves by a factor 7 (large input). On mostly non-ASCII input, performance increases slightly or is the same. The UTF-8 validation is rewritten to use indexed access; since all access is preceded by a (mandatory for validation) length check, bounds checks are statically elided by LLVM and this formulation is in fact the best for performance. A previous version had losses due to slice to iterator conversions. A large credit to Björn Steinbrink who improved this patch immensely, writing this second version. Benchmark results on x86-64 (Sandy Bridge) compiled with -C opt-level=3. Old code is `regular`, this PR is called `fast`. Datasets: - `ascii` is just ASCII (2.5 kB) - `cyr` is cyrillic script with ascii spaces (5 kB) - `dewik10` is 10MB of a de.wikipedia XML dump - `enwik8` is 100MB of an en.wikipedia XML dump - `jawik10` is 10MB of a ja.wikipedia XML dump ``` test from_utf8_ascii_fast ... bench: 140 ns/iter (+/- 4) = 18221 MB/s test from_utf8_ascii_regular ... bench: 1,932 ns/iter (+/- 19) = 1320 MB/s test from_utf8_cyr_fast ... bench: 10,025 ns/iter (+/- 245) = 511 MB/s test from_utf8_cyr_regular ... bench: 10,944 ns/iter (+/- 795) = 468 MB/s test from_utf8_dewik10_fast ... bench: 6,017,909 ns/iter (+/- 105,755) = 1740 MB/s test from_utf8_dewik10_regular ... bench: 11,669,493 ns/iter (+/- 264,045) = 891 MB/s test from_utf8_enwik8_fast ... bench: 14,085,692 ns/iter (+/- 1,643,316) = 7000 MB/s test from_utf8_enwik8_regular ... bench: 93,657,410 ns/iter (+/- 5,353,353) = 1000 MB/s test from_utf8_jawik10_fast ... bench: 29,154,073 ns/iter (+/- 4,659,534) = 340 MB/s test from_utf8_jawik10_regular ... bench: 29,112,917 ns/iter (+/- 2,475,123) = 340 MB/s ``` Co-authored-by: Björn Steinbrink <bsteinbr@gmail.com>
2016-01-15Update libcAnton Blanchard-0/+0
This brings in powerpc64 and powerpc64le support recently added.
2016-01-15Auto merge of #30878 - brson:raw-pointer-derive, r=brsonbors-38/+272
This adds back the raw_pointer_derive lint as a 'removed' lint, so that its removal does not cause errors (#30346) but warnings. In the process I discovered regressions in the code for renamed and removed lints, which didn't appear to have any tests. The addition of a second lint pass (ast vs. hir) meant that attributes were being inspected twice, renamed and removed warnings printed twice. I restructured the code so these tests are only done once and added tests. Unfortunately it makes the patch more complicated for the needed beta backport. r? @nikomatsakis
2016-01-15Auto merge of #30446 - michaelwu:associated-const-type-params-pt1, ↵bors-72/+217
r=nikomatsakis This provides limited support for using associated consts on type parameters. It generally works on things that can be figured out at trans time. This doesn't work for array lengths or match arms. I have another patch to make it work in const expressions. CC @eddyb @nikomatsakis
2016-01-15Auto merge of #30890 - nagisa:mir-tuple-adts, r=nikomatsakisbors-22/+152
This PR changes translation of tuple-like ADTs from being calls to being proper aggregates. This change is done in hope to make code generation better. Namely, now we can avoid: 1. Call overhead; 2. Generating landingpads in presence of cleanups (we know for sure constructing ADTs can’t panic); 3. And probably much more, gaining better MIR introspectablilty. Along with that a few serious deficiencies with translation of ADTs and switches have been fixed as well (commits 2 and 3). r? @nikomatsakis cc @tsion
2016-01-15Add some tests for non-trivial ADTsSimonas Kazlauskas-3/+98
These tests test building and matching some non-trivial ADT configurations such as C-like enums and packed structs.
2016-01-15Fix type retrieval for Switch translationSimonas Kazlauskas-5/+4
Previously it would go through def_id and retrieve a type that’s not always correct, monomorphized, etc.
2016-01-15Fix translation for all other discriminated ADTsSimonas Kazlauskas-4/+10
Again.
2016-01-15Auto merge of #30773 - fhahn:test-fix, r=alexcrichtonbors-11/+13
In my PR for #21659 I accidentally used `// | help` as test annotation. This PR updates it to `//~| help`. I also found and updated 2 other tests with the same issue.
2016-01-15Translate zero-sized return types as voidBjörn Steinbrink-5/+43
The only way to get a value for a zero-sized type is `undef`, so there's really no point in actually having a return type other than void for such types. Also, while the comment in return_type_is_void mentioned something about aiding C ABI support, @eddyb correctly pointed out on IRC that there is no such thing as a zero-sized type in C. And even with clang, which allows empty structs, those get translated as void return types as well. Fixes #28766
2016-01-15rustdoc: remove extraneous whitespace inserted in playpen linksTshepang Lekhonkhobe-0/+1