Commit graph

11344 commits

Author SHA1 Message Date
glendc
55546362d9 Whitelisting PatWild for E0022. Fix #28822 2015-10-10 09:27:24 +00:00
bors
e3376d8a13 Auto merge of #28929 - pnkfelix:expand-legal-cycles-test, r=alexcrichton
Major revision to the dropck_legal_cycles test.

1. Added big comment block explaining the test framework.

2. Added tests exericising Rc and Arc. This was inspired by a comment
   from eefriedman on PR #28861.

3. Made the cycle-detection not issue false-positives on acyclic dags.

   Doing this efficiently required revising the framework; instead of
   visiting all children (i.e. doing a traversal), now each test is
   responsible for supplying the path that will act as a witness to
   the cycle.

   Luckily for me, all of the pre-existing tests worked with a trivial
   path built from "always tke your first left", but new tests I added
   did require other input paths (i.e., "first turn right, then left".

   (The path representation is a bit-string and its branches are
    n-ary, not word phrases and binary branches as you might think
    from the outline above.)

cc PR #27185
2015-10-09 17:07:48 +00:00
Felix S. Klock II
098a7a07ee Major revision to the dropck_legal_cycles test.
1. Added big comment block explaining the test framework.

2. Added tests exericising Rc and Arc. This was inspired by a comment
   from eefriedman on PR #28861.

3. Made the cycle-detection not issue false-positives on acyclic dags.

   Doing this efficiently required revising the framework; instead of
   visiting all children (i.e. doing a traversal), now each test is
   responsible for supplying the path that will act as a witness to
   the cycle.

   Luckily for me, all of the pre-existing tests worked with a trivial
   path built from "always tke your first left", but new tests I added
   did require other input paths (i.e., "first turn right, then left".

   (The path representation is a bit-string and its branches are
    n-ary, not word phrases and binary branches as you might think
    from the outline above.)
2015-10-09 18:04:18 +02:00
bors
c14609035d Auto merge of #28857 - nrc:lowering, r=nikomatsakis
r? @nikomatsakis
2015-10-09 08:53:45 +00:00
Nick Cameron
a62a529eea review comments 2015-10-09 21:44:44 +13:00
Nick Cameron
2b4f28e531 Misc fixups 2015-10-09 11:53:42 +13:00
Nick Cameron
ce80094632 Make save-analysis work for if let etc. 2015-10-09 11:53:42 +13:00
Nick Cameron
08f3752270 hygiene for for loops, if let, while let
and some unrelated test cleanups
2015-10-09 11:53:41 +13:00
Cristi Cobzarenco
4b308b44e1 typos: fix a grabbag of typos all over the place 2015-10-08 19:49:31 +01:00
bors
b75fe81055 Auto merge of #28897 - steveklabnik:rollup, r=steveklabnik
- Successful merges: #28836, #28856, #28874, #28876, #28878, #28880, #28882, #28885, #28889, #28896
- Failed merges:
2015-10-08 12:15:47 +00:00
bors
bcd27eb7d5 Auto merge of #28891 - cristicbz:new-nbody, r=alexcrichton
This new version takes inspiration from the C implementation of the benchmark, but instead of explicitly using SIMD operations which can't be done on stable, it instead arranges everything the same way and leaves the actual vectorization up to LLVM.

In addition to the ~20% speed gains (see below), this PR also adds some general niceties which showcase the language a little bit: a `Vec3` type to cut down on `(x, y, z)` repetition,  using `while let` instead of `loop-if-break`, iterator adapters instead of for loops etc.

Here are the times in seconds of 10 runs each on my workstation:

```
before: 6.254, 6.260, 6.263, 6.264, 6.265, 6.267, 6.334, 6.341, 6.441, 6.509
before-min: 6.254
before-median: 6.266
before-max: 6.509

after: 4.823, 4.824, 4.826, 4.827, 4.837, 4.839, 4.881, 4.959, 4.990, 5.377
after-min: 4.823
after-median: 4.838
after-max: 5.377

gcc: 4.674, 4.676, 4.680, 4.682, 4.695, 4.696, 4.701, 4.708, 4.794, 5.297
gcc-min: 4.674
gcc-median: 4.696
gcc-max: 5.297
```

On my i7 laptop the speed up is less impressive, from ~5.4s to ~4.7s, but still significant. On my Vultr VPS the numbers look closer to the workstation results. Surprisingly my laptop beats both office workstation and VPS...
2015-10-08 10:04:12 +00:00
bors
2d405afeb0 Auto merge of #28863 - nagisa:test-16403, r=alexcrichton
Closes #16403
2015-10-08 02:31:46 +00:00
Steve Klabnik
55c2002b2b Rollup merge of #28876 - steveklabnik:oops, r=Gankro
In #28864, @aarzee submitted some whitespace fixes. I r+'d it. But
@retp998 noticed[1] that this file is explicitly a test of this kind of
whitespace, and so I shouldn't have changed it. This restores the old
line endings.

1: https://github.com/rust-lang/rust/pull/28864#discussion_r41332279
2015-10-07 18:18:37 -04:00
Cristi Cobzarenco
49d2441b05 bench: rewrite nbody for better vectorization 2015-10-07 21:05:22 +01:00
bors
3cee9e20f2 Auto merge of #28873 - dotdash:28339, r=nikomatsakis
Fixes #28839
2015-10-07 16:41:55 +00:00
Björn Steinbrink
4da796f1f4 Fix reborrows of &mut pointers
Fixes #28839
2015-10-07 17:23:51 +02:00
Simonas Kazlauskas
d5dfa87f4d Add a test for #16403 2015-10-07 12:12:13 +03:00
Steve Klabnik
4d40dd3c03 Restore line endings in a test
In #28864, @aarzee submitted some whitespace fixes. I r+'d it. But
@retp998 noticed[1] that this file is explicitly a test of this kind of
whitespace, and so I shouldn't have changed it. This restores the old
line endings.

1: https://github.com/rust-lang/rust/pull/28864#discussion_r41332279
2015-10-06 21:59:49 -04:00
bors
b2cc47ff94 Auto merge of #28841 - jld:const-slice-ice, r=Aatch
This turned up as part of #3170.  When constructing an `undef` value to
return in the error case, we were trying to get the element type of the
Rust-level value being indexed instead of the underlying array; when
indexing a slice, that's not an array and the LLVM assertion failure
reflects this.

The regression test is a lightly altered copy of `const-array-oob.rs`.
2015-10-07 01:59:31 +00:00
Carlos Liam
aba267fd0d Replace multiple trailing newlines with a single trailing newline
Sorry I didn’t get this in the last PR (#28864), I hadn’t thought of it.
2015-10-06 13:06:39 -04:00
Carlos Liam
3967e1c940 Clean newlines 2015-10-06 11:14:11 -04:00
bors
88b6a5063d Auto merge of #28779 - alexcrichton:ffi-isize-usize, r=nrc
This lint warning was originally intended to help against misuse of the old Rust
`int` and `uint` types in FFI bindings where the Rust `int` was not equal to the
C `int`. This confusion no longer exists (as Rust's types are now `isize` and
`usize`), and as a result the need for this lint has become much less over time.

Additionally, starting with [the RFC for libc][rfc] it's likely that `isize` and
`usize` will be quite common in FFI bindings (e.g. they're the definition of
`size_t` and `ssize_t` on many platforms).

[rfc]: https://github.com/rust-lang/rfcs/pull/1291

This commit disables these lints to instead consider `isize` and `usize` valid
types to have in FFI signatures.
2015-10-06 01:26:13 +00:00
Jed Davis
fd077800ea Fix LLVM assertion on out-of-bounds const slice index.
This turned up as part of #3170.  When constructing an `undef` value to
return in the error case, we were trying to get the element type of the
Rust-level value being indexed instead of the underlying array; when
indexing a slice, that's not an array and the LLVM assertion failure
reflects this.

The regression test is a lightly altered copy of `const-array-oob.rs`.
2015-10-04 17:22:28 -07:00
bors
7f4665c3e6 Auto merge of #28806 - wthrowe:bare-outfile-fix, r=alexcrichton
The reason this was not failing is fascinating.  The variable $(rustc)
is empty, so the make recipe was expanded as " -o foo foo.rs".  make
interpreted this as an instruction to run the command "o foo foo.rs"
and ignore any failure that occurred, because it uses a leading '-' on
a command to signal that behavior.
2015-10-04 19:50:50 +00:00
bors
130851e030 Auto merge of #28669 - arielb1:well-formed-methods, r=nikomatsakis
By RFC1214:
>    Before calling a fn, we check that its argument and return types are WF.
    
The previous code only checked the trait-ref, which was not enough
in several cases.
    
As this is a soundness fix, it is a [breaking-change]. Some new annotations are needed, which I think are because of #18653 and the imperfection of `projection_must_outlive` (that can probably be worked around by moving the wf obligation later).
    
Fixes #28609

r? @nikomatsakis
2015-10-03 22:07:37 +00:00
William Throwe
e3df519225 Fix run-make/bare-outfile test
The reason this was not failing is fascinating.  The variable $(rustc)
is empty, so the make recipe was expanded as " -o foo foo.rs".  make
interpreted this as an instruction to run the command "o foo foo.rs"
and ignore any failure that occurred, because it uses a leading '-' on
a command to signal that behavior.
2015-10-03 17:20:45 -04:00
Ariel Ben-Yehuda
2f23e171cb use the correct subtyping order in a test
also, ensure that callers are checked.
2015-10-03 12:03:48 +03:00
bors
16331f1a42 Auto merge of #28820 - steveklabnik:rollup, r=steveklabnik
- Successful merges: #28736, #28805, #28812, #28814, #28819
- Failed merges:
2015-10-03 02:23:03 +00:00
Steve Klabnik
9c5837e0ce Rollup merge of #28805 - wthrowe:compile-stdin, r=alexcrichton 2015-10-02 20:38:22 -04:00
bors
98df45830a Auto merge of #28672 - sanxiyn:const-eval-span, r=alexcrichton
Fix #28402.
2015-10-03 00:36:50 +00:00
bors
bfb26033af Auto merge of #28662 - semmaz:fmt-debug, r=alexcrichton
fixes #26920
2015-10-02 22:49:37 +00:00
bors
669fc7f7d1 Auto merge of #28626 - arielb1:closure-needs-infer, r=nikomatsakis
Fixes #28550
2015-10-02 21:02:49 +00:00
Ariel Ben-Yehuda
ce70207250 fix fallout
looks like some mix of #18653 and `projection_must_outlive`, but
that needs to be investigated further (crater run?)
2015-10-02 23:40:10 +03:00
Ariel Ben-Yehuda
603a75c8ea ensure that the types of methods are well-formed
By RFC1214:
Before calling a fn, we check that its argument and return types are WF. This check takes place after all higher-ranked lifetimes have been instantiated. Checking the argument types ensures that the implied bounds due to argument types are correct. Checking the return type ensures that the resulting type of the call is WF.

The previous code only checked the trait-ref, which was not enough
in several cases.

As this is a soundness fix, it is a [breaking-change].

Fixes #28609
2015-10-02 23:40:10 +03:00
bors
ef07d7dd40 Auto merge of #28650 - sanxiyn:attr-usage, r=nrc
This is technically a [breaking-change].

Fix #2809.
Fix #22746.
2015-10-02 19:16:39 +00:00
bors
e650491f20 Auto merge of #28768 - alexcrichton:dep-info++, r=brson
This PR closes out #28716 and #28735 by making two changes to the compiler:

1. The `--emit` flag to the compiler now supports the ability to specify the output file name of a partuclar emit type. For example `--emit dep-info=bar.d,asm=foo.s,link` is now accepted.
2. The dep-info emission now emits a dummy target for all input file names to protect against deleted files.
2015-10-02 16:33:26 +00:00
Alex Crichton
1741962271 rustc: Emit phony targets for inputs in dep-info
This helps protect against files being deleted to ensure that `make` won't emit
errors.

Closes #28735
2015-10-02 09:33:06 -07:00
Seo Sanghyeon
4fb789b86e Provide the context for error in constant evaluation of enum discriminant 2015-10-03 00:36:20 +09:00
Seo Sanghyeon
61f5b2b0ca Check attribute usage 2015-10-03 00:01:49 +09:00
Seo Sanghyeon
20cccfa67f Change tests per RFC 246 (const vs static) 2015-10-03 00:01:49 +09:00
Manish Goregaokar
ee0157fd52 Rollup merge of #28791 - apasel422:issue-25439, r=alexcrichton
Closes #25439.
2015-10-02 13:07:23 +05:30
Manish Goregaokar
9155edf6a2 Rollup merge of #28686 - eefriedman:unresolved-path-error, r=nikomatsakis
The behavior here isn't really ideal, but we can't really do much better
given the current state of constant evaluation.

The changes to ExprUseVisitor are to avoid a compile error; apparently
that bit of code is extremely sensitive to changes in other areas of the
compiler.

Fixes #28670, and probably a bunch of duplicates.
2015-10-02 13:07:22 +05:30
bors
0ffc682975 Auto merge of #28790 - arielb1:unsafe-coerce, r=eddyb
Fixes #28776

r? @eddyb
2015-10-02 03:28:57 +00:00
William Throwe
8a4bfbb1c6 Add a test that rustc can compile standard input 2015-10-01 23:28:01 -04:00
bors
168a23ebe1 Auto merge of #28787 - dotdash:no_more___fat_ptr, r=eddyb
A DST value and a fat pointer to it have the same representation, all we
have to do is to adjust the type of the datum holding the pointer.
2015-10-01 20:06:35 +00:00
Andrew Paseltiner
a81dfca190 Add test for #25439
Closes #25439.
2015-10-01 11:30:22 -04:00
Björn Steinbrink
bda083fa70 Avoid unnecessary temporaries when ref'ing a DST value
A DST value and a fat pointer to it have the same representation, all we
have to do is to adjust the type of the datum holding the pointer.
2015-10-01 15:24:23 +02:00
Ariel Ben-Yehuda
0706ac0fae use the *adjusted* callee type in effect checking
Fixes #28776
2015-10-01 16:06:50 +03:00
Ariel Ben-Yehuda
c01e0502e7 check upvars in closures that are in statics
Fixes #27890
Fixes #28099
Fixes #28113
2015-10-01 15:22:57 +03:00
Alex Crichton
9502df5798 rustc: Swap link order of native libs/rust deps
This commit swaps the order of linking local native libraries and upstream
native libraries on the linker command line. Detail of bugs this can cause can
be found in #28595, and this change also invalidates the test case that was
added for #12446 which is now considered a bug because the downstream dependency
would need to declare that it depends on the native library somehow.

Closes #28595
2015-09-30 20:17:54 -07:00