Commit Graph

45683 Commits

Author SHA1 Message Date
bors
7e13faee17 Auto merge of #27849 - jonas-schievink:macro-errors, r=nikomatsakis
And some small indentation/code style fixes in the macro parser.
2015-08-19 00:54:38 +00:00
bors
4c1daeb7ad Auto merge of #27850 - alexcrichton:fix-musl, r=brson
Some new allocator tests require dynamic libraries to run the full test, but
dylibs aren't currently working on MUSL.
2015-08-18 23:20:52 +00:00
bors
2fb3fb24a3 Auto merge of #27836 - alexcrichton:rename-cstring-raw, r=bluss
This commit renames the `CString::{into_ptr, from_ptr}` methods to `into_raw`
and `from_raw` to mirror the corresponding methods on `Box` and the naming of
"raw" for `from_raw_parts` on slices and vectors.

cc #27769
2015-08-18 21:47:06 +00:00
bors
1d72d31448 Auto merge of #27891 - steveklabnik:rollup, r=steveklabnik
- Successful merges: #27881, #27882, #27883, #27884, #27888
- Failed merges:
2015-08-18 20:13:44 +00:00
Steve Klabnik
101ebe0bb0 Rollup merge of #27888 - steveklabnik:gh27686, r=alexcrichton
Fixes #27686
2015-08-18 15:03:11 -04:00
Steve Klabnik
d27dc3edd4 Rollup merge of #27884 - steveklabnik:gh27632, r=alexcrichton
Fixes #27632
2015-08-18 15:03:11 -04:00
Steve Klabnik
945603c85b Rollup merge of #27883 - steveklabnik:gh27587, r=alexcrichton
Fixes #27587
2015-08-18 15:03:11 -04:00
Steve Klabnik
572526be27 Rollup merge of #27882 - steveklabnik:gh27428, r=alexcrichton
This is where panic!() is introduced.
2015-08-18 15:03:11 -04:00
Steve Klabnik
a1f64c2204 Rollup merge of #27881 - jotomicron:patch-1, r=steveklabnik
Added the cost of the edge 3 -> 4 on the example in the module documentation
2015-08-18 15:03:10 -04:00
bors
6c11e4a48e Auto merge of #27624 - apasel422:issue-27620, r=Gankro
Closes #27620.
2015-08-18 18:41:17 +00:00
Steve Klabnik
288edec968 add cfg(target_env) to the reference
Fixes #27587
2015-08-18 14:24:25 -04:00
Steve Klabnik
dbbcb434b1 Add note about backtraces to TRPL
This is where panic!() is introduced.

Fixes #27428
2015-08-18 14:22:18 -04:00
Steve Klabnik
b2dc2ef709 Make distinction between -l and --extern more clear
Fixes #27686
2015-08-18 13:59:18 -04:00
Steve Klabnik
fd53ea28d8 Add notes about building documentation to the README.
Fixes #27632
2015-08-18 13:49:20 -04:00
bors
dc9b74f38d Auto merge of #27536 - steveklabnik:doc_object_safety, r=alexcrichton
Fixes #26938
2015-08-18 16:28:13 +00:00
Alex Crichton
3cf9e1086e std: Rename cstr_memory feature to use "raw"
This commit renames the `CString::{into_ptr, from_ptr}` methods to `into_raw`
and `from_raw` to mirror the corresponding methods on `Box` and the naming of
"raw" for `from_raw_parts` on slices and vectors.

cc #27769
2015-08-18 09:10:50 -07:00
Steve Klabnik
ce1bdc7293 Add object safety to TRPL
Fixes #26938
2015-08-18 11:27:02 -04:00
jotomicron
6f6ea4687e Fixed example in documentation
Added the cost of the edge 3 -> 4 on the example in the module documentation
2015-08-18 15:58:05 +01:00
bors
c6291e04cc Auto merge of #27880 - remram44:doc-seek-repetitions, r=steveklabnik
"Don't seek past end of stream" is mentioned twice in a row. This happened because seeking before offset 0 was previously mentioned there, and was moved to the "errors" section afterwards.

Somehow made it through [#26924](https://github.com/rust-lang/rust/pull/26924/files#diff-668f8f358d4a93474b396dcb3727399eR825).
2015-08-18 14:08:24 +00:00
Remi Rampin
f70faa91eb Remove repetition in Seek::seek() doc 2015-08-18 10:01:41 -04:00
bors
58e602b03f Auto merge of #27870 - durka:patch-5, r=steveklabnik
I just took out the sentences that were lies. I'm not sure if they need to be replaced.

r? steveklabnik
2015-08-18 10:26:35 +00:00
bors
a91f19f356 Auto merge of #27869 - alexcrichton:libtest-panic, r=brson
This commit removes the call to `panic!("Some tests failed")` at the end of all
tests run when running with libtest. The panic is replaced with
`std::process::exit` to have a nonzero error code, but this change both:

1. Makes the test runner no longer print out the extraneous panic message at the
   end of a failing test run that some tests failed. (this is already summarized
   in the output of the test run).
2. When running tests with `RUST_BACKTRACE` set it removes an extraneous
   backtrace from the output (only failing tests will have their backtraces in
   the output.
2015-08-18 08:51:02 +00:00
bors
16cacbe258 Auto merge of #27866 - arielb1:really-fast-reject, r=nikomatsakis
also, use the right caching logic for type_moves_by_default (this was
broken by @jroesch).

```
before:
593.10user 5.21system 7:51.41elapsed 126%CPU (0avgtext+0avgdata 1150016maxresident)k

after:
567.03user 4.00system 7:28.23elapsed 127%CPU (0avgtext+0avgdata 1133112maxresident)k
```

A nice 4.5% improvement. For reference, on the last run LLVM takes 429.267s, which is 75% - hopefully this can be reduced.

I think the regression since #27751 is because of the wf patch - need to investigate it through.

r? @nikomatsakis
2015-08-18 07:16:10 +00:00
bors
4c0ffc0e38 Auto merge of #27823 - eefriedman:float-dep-core, r=alexcrichton
There wasn't any particular reason the functions needed to be there
anyway, so just get rid of them, and adjust libstd to compensate.

With this change, libcore depends on exactly two floating-point functions:
fmod and fmodf.  They are implicitly referenced because they are used to
implement "%".

Dependencies of libcore on Linux x86-x64 with this patch:
```
0000000000000000         *UND*	0000000000000000 __powidf2
0000000000000000         *UND*	0000000000000000 __powisf2
0000000000000000         *UND*	0000000000000000 fmod
0000000000000000         *UND*	0000000000000000 fmodf
0000000000000000         *UND*	0000000000000000 memcmp
0000000000000000         *UND*	0000000000000000 memcpy
0000000000000000         *UND*	0000000000000000 memset
0000000000000000         *UND*	0000000000000000 rust_begin_unwind
0000000000000000         *UND*	0000000000000000 rust_eh_personality
```
2015-08-18 04:23:25 +00:00
bors
de67d62c6b Auto merge of #27474 - bluss:twoway-reverse, r=brson
StrSearcher: Implement the complete reverse case for the two way algorithm

Fix quadratic behavior in StrSearcher in reverse search with periodic
needles.

This commit adds the missing pieces for the "short period" case in
reverse search. The short case will show up when the needle is literally
periodic, for example "abababab".

Two way uses a "critical factorization" of the needle: x = u v.

Searching matches v first, if mismatch at character k, skip k forward.
Matching u, if mismatch, skip period(x) forward.

To avoid O(mn) behavior after mismatch in u, memorize the already
matched prefix.

The short period case requires that |u| < period(x).

For the reverse search we need to compute a different critical
factorization x = u' v' where |v'| < period(x), because we are searching
for the reversed needle. A short v' also benefits the algorithm in
general.

The reverse critical factorization is computed quickly by using the same
maximal suffix algorithm, but terminating as soon as we have a location
with local period equal to period(x).

This adds extra fields crit_pos_back and memory_back for the reverse
case. The new overhead for TwoWaySearcher::new is low, and additionally
I think the "short period" case is uncommon in many applications of
string search.

The maximal_suffix methods were updated in documentation and the
algorithms updated to not use !0 and wrapping add, variable left is now
1 larger, offset 1 smaller.

Use periodicity when computing byteset: in the periodic case, just
iterate over one period instead of the whole needle.

Example before (rfind) after (twoway_rfind) benchmark shows the removal
of quadratic behavior.

needle: "ab" * 100, haystack: ("bb" + "ab" * 100) * 100

```
test periodic::rfind           ... bench:   1,926,595 ns/iter (+/- 11,390) = 10 MB/s
test periodic::twoway_rfind    ... bench:      51,740 ns/iter (+/- 66) = 386 MB/s
```
2015-08-18 02:02:57 +00:00
bors
e35fd74811 Auto merge of #27169 - huonw:simd, r=alexcrichton
This implements https://github.com/rust-lang/rfcs/pull/1199 (except for doing all the platform intrinsics).

Things remaining for SIMD (not necessarily in this PR):

- [x] I (@huonw) am signed up to ensure the compiler matches the RFC, when it lands
- [x] the platform specific intrinsics aren't properly type checked at the moment (LLVM will throw a "random" assertion)
- [ ] there's a lot of useful intrinsics that are missing, including whole platforms (mips, powerpc)
- [ ] the target-feature `cfg` detection/adding is not so great at the moment
- [x] I think the platform specific intrinsics should go in their own `extern` ABI (i.e. not `"rust-intrinsic"`)

(I'm adjusting the RFC to reflect the latter.)

I think it would be very nice for this to land without requiring the RFC to land first, because of the first point, and because this is the only way for any further work to happen/be experimented with, without requiring people to build/install/multirust a compiler from a custom branch.

r? @alexcrichton
2015-08-17 23:41:36 +00:00
Huon Wilson
02e97342c1 Add AArch64 vrecpeq_... intrinsic (necessary for minimal API). 2015-08-17 14:48:44 -07:00
Huon Wilson
b067e4464b Clean up simd_cast translation. 2015-08-17 14:48:44 -07:00
Huon Wilson
502f9acbe9 Revamp SIMD intrinsic trans error handling.
Factor out common pieces, follow `expected ..., found ...` convention
everywhere.
2015-08-17 14:48:44 -07:00
Huon Wilson
891c91438d simd_shuffleNNN returns its type parameter directly.
I.e. the signature now must be

    fn simd_shuffleNNN<T, U>(x: T, y: T, idx: [u32; NNN]) -> U;

(modulo names.)
2015-08-17 14:48:44 -07:00
Huon Wilson
d792925b4d Shim some of the old std::simd functionality.
Overload the operators using the traits so that things mostly keep
working during the deprecation period.
2015-08-17 14:48:43 -07:00
Huon Wilson
62ba85b7aa Rebase cleanup: is_simd lost its parameter. 2015-08-17 14:41:40 -07:00
Huon Wilson
4b242497d3 Code style tweaks. 2015-08-17 14:41:40 -07:00
Huon Wilson
84de8caa87 Add tests for various intrinsic behaviours. 2015-08-17 14:41:40 -07:00
Huon Wilson
926b8351cf Tweak intrinsic error handling.
Better error messages, US spelling, more real checks.
2015-08-17 14:41:40 -07:00
Huon Wilson
3e500673cc Fix existing tests for new #[repr(simd)]. 2015-08-17 14:41:40 -07:00
Huon Wilson
8b68f58fef Allow generic repr(simd) types.
Absolute correctness is checked at monomorphisation time.
2015-08-17 14:41:40 -07:00
Huon Wilson
1f5739fb3c Switch shuffle intrinsics to arrays of indices.
Format:

    fn shuffle_simdNNN<T, U>(x: T, y: T, idx: [u32; NNN]) -> U;
2015-08-17 14:41:40 -07:00
Huon Wilson
2115468f33 Add most ARM intrinsics. 2015-08-17 14:41:40 -07:00
Huon Wilson
d598bddc98 Reorganise ARM intrinsic definitions. 2015-08-17 14:41:40 -07:00
Huon Wilson
2a408ef6ee Add most AVX2 intrinsics. 2015-08-17 14:41:39 -07:00
Huon Wilson
29b79aabd8 Add most AVX intrinsics. 2015-08-17 14:41:39 -07:00
Huon Wilson
67d56db16f Rearrange x86 intrinsics to prepare for AVX. 2015-08-17 14:41:39 -07:00
Huon Wilson
627784b186 Add most SSE4.1 intrinsics. 2015-08-17 14:41:39 -07:00
Huon Wilson
f6275b760c Add most SSSE3 intrinsics. 2015-08-17 14:41:39 -07:00
Huon Wilson
9d78efbd60 Add most SSE3 intrinsics. 2015-08-17 14:41:39 -07:00
Huon Wilson
907bbac40f Reorganise x86 intrinsic definitions.
- factor out redundant mm prefix
- group methods by instruction set
2015-08-17 14:41:39 -07:00
Huon Wilson
e61f5397db Add most SSE2 intrinsics. 2015-08-17 14:41:39 -07:00
Huon Wilson
9b26895346 Generalise SIMD casting to unequal bitwidths. 2015-08-17 14:41:39 -07:00
Huon Wilson
4fe138cac0 Add _mm_shuffle_epi8 intrinsic. 2015-08-17 14:41:39 -07:00