Commit graph

11049 commits

Author SHA1 Message Date
Huon Wilson
3e500673cc Fix existing tests for new #[repr(simd)]. 2015-08-17 14:41:40 -07:00
Huon Wilson
e364f0eb5a feature gate cfg(target_feature).
This is theoretically a breaking change, but GitHub search turns up no
uses of it, and most non-built-in cfg's are passed via cargo features,
which look like `feature = "..."`, and hence can't overlap.
2015-08-17 14:41:37 -07:00
Huon Wilson
c8b6d5b23c Implement repr(simd) as an alias for #[simd]. 2015-08-17 10:57:18 -07:00
Alex Crichton
8ef1e3b77f test: Fix tests for requiring issues 2015-08-15 19:35:52 -07:00
bors
29455557aa Auto merge of #27827 - w00ns:for-loop-expn-issue-27639, r=alexcrichton
Fixes #27639
2015-08-15 14:50:13 +00:00
w00ns
ae68e90af4 Fix issue with for loop expansion 2015-08-15 10:17:12 +02:00
bors
e859498d1c Auto merge of #27841 - jonas-schievink:still-repeating-span, r=alexcrichton
Current behaviour demo: http://is.gd/l3FEgo
(The span is printed at the start of the source code)

This patch moves the span to the use of `$i` in the macro rhs (as the code comment already claims)
2015-08-15 06:16:41 +00:00
Jonas Schievink
59f8e3238a Fix span of invalid metavariable repetition 2015-08-15 00:45:34 +02:00
Alex Crichton
45bf1ed1a1 rustc: Allow changing the default allocator
This commit is an implementation of [RFC 1183][rfc] which allows swapping out
the default allocator on nightly Rust. No new stable surface area should be
added as a part of this commit.

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

Two new attributes have been added to the compiler:

* `#![needs_allocator]` - this is used by liballoc (and likely only liballoc) to
  indicate that it requires an allocator crate to be in scope.
* `#![allocator]` - this is a indicator that the crate is an allocator which can
  satisfy the `needs_allocator` attribute above.

The ABI of the allocator crate is defined to be a set of symbols that implement
the standard Rust allocation/deallocation functions. The symbols are not
currently checked for exhaustiveness or typechecked. There are also a number of
restrictions on these crates:

* An allocator crate cannot transitively depend on a crate that is flagged as
  needing an allocator (e.g. allocator crates can't depend on liballoc).
* There can only be one explicitly linked allocator in a final image.
* If no allocator is explicitly requested one will be injected on behalf of the
  compiler. Binaries and Rust dylibs will use jemalloc by default where
  available and staticlibs/other dylibs will use the system allocator by
  default.

Two allocators are provided by the distribution by default, `alloc_system` and
`alloc_jemalloc` which operate as advertised.

Closes #27389
2015-08-14 15:13:10 -07:00
bors
e7261f3ab6 Auto merge of #27641 - nikomatsakis:soundness-rfc-1214, r=nrc
This PR implements the majority of RFC 1214. In particular, it implements:

- the new outlives relation
- comprehensive WF checking

For the most part, new code receives warnings, not errors, though 3 regressions were found via a crater run. 

There are some deviations from RFC 1214. Most notably:

- we still consider implied bounds from fn ret; this intersects other soundness issues that I intend to address in detail in a follow-up RFC. Fixing this without breaking a lot of code probably requires rewriting compare-method somewhat (which is probably a good thing).
- object types do not check trait bounds for fear of encountering `Self`; this was left as an unresolved question in RFC 1214, but ultimately feels inconsistent.

Both of those two issues are highlighted in the tracking issue, https://github.com/rust-lang/rust/issues/27579. #27579 also includes a testing matrix with new tests that I wrote -- these probably duplicate some existing tests, I tried to check but wasn't quite sure what to look for. I tried to be thorough in testing the WF relation, at least, but would welcome suggestions for missing tests.

r? @nrc (or perhaps someone else?)
2015-08-14 15:26:09 +00:00
bors
82b89645fb Auto merge of #27684 - alexcrichton:remove-deprecated, r=aturon
This commit removes all unstable and deprecated functions in the standard
library. A release was recently cut (1.3) which makes this a good time for some
spring cleaning of the deprecated functions.
2015-08-13 23:32:30 +00:00
Niko Matsakis
e1fa00bced add regression test for #27592. Fixes #27592. 2015-08-12 20:58:47 -04:00
bors
82169afba7 Auto merge of #27698 - arielb1:foreign-type-import, r=alexcrichton
Fixes #22968
Probably fixes #27602 (the issue needs a reproduction)

r? @alexcrichton
2015-08-12 22:42:12 +00:00
Niko Matsakis
157422a0c7 Update test error messages based on changes to wfcheck; also, break
apart the tests that tested many things at once.
2015-08-12 17:58:58 -04:00
Niko Matsakis
9c5cfea43d traits: consider whether origin is RFC1214 when caching, ensuring
that the test rfc1214-warn-and-error.rs reports an error
2015-08-12 17:58:57 -04:00
Niko Matsakis
fb1b6fca36 regionck.rs: correct misuse of ty.regions() rather than regions()
and add a test that was (incorrectly) failing to compile with
existing code
2015-08-12 17:58:57 -04:00
Niko Matsakis
ff39ee9a90 wip 082a011e2bd5c8254e6c1b2fdc97a6fcb2927a7f rm binary 2015-08-12 17:58:57 -04:00
Niko Matsakis
7ed39c6d9b Fallout in tests -- explain an interesting test failure having to
do with dropck and the new outlives rules
2015-08-12 17:58:57 -04:00
Niko Matsakis
dee8b54b71 Fallout in tests --- misc error message changes, WF fixes 2015-08-12 17:58:57 -04:00
Niko Matsakis
f4aaedb51e Fallout in tests -- break test into a run-pass and compile-fail component 2015-08-12 17:58:56 -04:00
Niko Matsakis
532fcb250f Fallout in tests -- break this test into three tests, since we later saw
staging differences in terms of when errors were reported
2015-08-12 17:58:56 -04:00
Niko Matsakis
92d16d961d Fallout in tests -- break the object safety part into a separate file because error
will be in future reported by wfcheck, which runs in a later stage than
coherence
2015-08-12 17:58:56 -04:00
Niko Matsakis
09bf2fef22 Fallout in tests -- we now report an error if you even reference a type
`&Foo` where `Foo` is a trait that is not object-safe
2015-08-12 17:58:56 -04:00
Niko Matsakis
788a802dad New tests --- projection outlives relation 2015-08-12 17:58:22 -04:00
Niko Matsakis
39d164d042 New tests --- check that wf relation is being checked in various positions 2015-08-12 17:57:58 -04:00
Niko Matsakis
8d98877112 Implement a new wfcheck to replace the old wf; this new code only issues
warnings. It also checks more conditions than the old code.  Keep the
old wf code around unchanged so that we can continue to issue errors for
the cases where we used to report errors.

As part of this, remove the where-clauses-must-reference-parameter rule,
which is easily circumvented.
2015-08-12 17:57:58 -04:00
Alex Crichton
8d90d3f368 Remove all unstable deprecated functionality
This commit removes all unstable and deprecated functions in the standard
library. A release was recently cut (1.3) which makes this a good time for some
spring cleaning of the deprecated functions.
2015-08-12 14:55:17 -07:00
bors
6a5c4e77a8 Auto merge of #27691 - jonas-schievink:for-macro, r=alexcrichton
Closes #27004
2015-08-12 20:58:31 +00:00
Ariel Ben-Yehuda
1dd0c058cf stop cross-crate associated types from being imported
Fixes #22968
Probably fixes #27602
2015-08-12 19:58:32 +03:00
Jonas Schievink
a016dfb1d1 Fix macro expansion in for loop pattern 2015-08-12 10:34:14 +02:00
bors
2b45a0d908 Auto merge of #27618 - dotdash:drop_fixes, r=luqmana 2015-08-12 08:13:35 +00:00
Alex Crichton
6b09eb8e17 Test fixes and rebase conflicts 2015-08-11 22:42:22 -07:00
Alex Crichton
29eae0eceb rollup merge of #27650: dotdash/backtrace_test
LLVM might perform tail merging on the calls that initiate the unwinding
process which breaks debuginfo and therefore this test. Since tail
merging is guaranteed to break debuginfo, it should be disabled for this
test.

This allows us to restore a testcase that I had to remove earlier
because of the same problem, because back then I didn't realize that
disabling tail merging was an option.

cc #27619
2015-08-11 22:42:20 -07:00
Alex Crichton
4c728f8fe7 rollup merge of #27636: llogiq/patch-1
See line 181: The lookup should start with the random index and iterate from there.

Also locked stdout (which makes it a bit faster on my machine). And the `make_lookup` function now uses `map` (as the TODO asked for).

Perhaps the multi-thread output from the fasta benchmark could be used to speed it up even more.
2015-08-11 22:42:19 -07:00
Alex Crichton
737397c584 rollup merge of #27622: eefriedman/https-url
Also fixes a few outdated links.
2015-08-11 22:11:25 -07:00
Alex Crichton
e132f76703 rollup merge of #27618: dotdash/drop_fixes 2015-08-11 22:11:22 -07:00
Alex Crichton
a0d51819c3 rollup merge of #27615: GuillaumeGomez/send_sync
Part of #22709.
cc @Veedrac

r? @bluss
2015-08-11 22:11:21 -07:00
bors
542d56ea91 Auto merge of #27615 - GuillaumeGomez:send_sync, r=huonw
Part of #22709.
cc @Veedrac

r? @bluss
2015-08-12 03:11:48 +00:00
bors
58b0aa5e42 Auto merge of #27584 - TimNN:macro-eof-span, r=huonw
The ideas is to use the span of the complete macro invocation if the span of a macro error is `DUMMY_SP`.

fixes #7970
2015-08-11 23:21:19 +00:00
bors
dcdcc6f6bc Auto merge of #27571 - TimNN:pretty-no-crate-type, r=alexcrichton
Because I wanted to change the pretty test as little as possible I added `// compiler-flags: --crate-type=lib` to those test that failed because of a missing `main`. Passes `make check-stage1-pretty` locally.

cc @nrc
cc #27567
2015-08-11 17:27:34 +00:00
Guillaume Gomez
f2f4a5c862 Add HashSet and HashMap tests 2015-08-11 18:44:39 +02:00
bors
91c618f133 Auto merge of #27575 - brson:lint, r=alexcrichton
This reverts commit 9191a78955.

This was reverted previously until the `--cap-lints` option was implemented.
2015-08-11 14:42:23 +00:00
Tim Neumann
f0ea2b66f3 Fix #27567: remove --crate-type=lib from pretty test 2015-08-11 13:00:38 +02:00
Tim Neumann
c8f32769b8 remove unused file in test/pretty 2015-08-11 13:00:14 +02:00
bors
50141d7e1e Auto merge of #26818 - sfackler:duration-stabilization, r=aturon
This commit stabilizes the `std::time` module and the `Duration` type.
`Duration::span` remains unstable, and the `Display` implementation for
`Duration` has been removed as it is still being reworked and all trait
implementations for stable types are de facto stable.

This is a [breaking-change] to those using `Duration`'s `Display`
implementation.

I'm opening this PR as a platform for discussion - there may be some method renaming to do as part of the stabilization process.
2015-08-11 03:47:16 +00:00
Alex Crichton
e648c96c5f trans: Stop informing LLVM about dllexport
Rust's current compilation model makes it impossible on Windows to generate one
object file with a complete and final set of dllexport annotations. This is
because when an object is generated the compiler doesn't actually know if it
will later be included in a dynamic library or not. The compiler works around
this today by flagging *everything* as dllexport, but this has the drawback of
exposing too much.

Thankfully there are alternate methods of specifying the exported surface area
of a dll on Windows, one of which is passing a `*.def` file to the linker which
lists all public symbols of the dynamic library. This commit removes all
locations that add `dllexport` to LLVM variables and instead dynamically
generates a `*.def` file which is passed to the linker. This file will include
all the public symbols of the current object file as well as all upstream
libraries, and the crucial aspect is that it's only used when generating a
dynamic library. When generating an executable this file isn't generated, so all
the symbols aren't exported from an executable.

To ensure that statically included native libraries are reexported correctly,
the previously added support for the `#[linked_from]` attribute is used to
determine the set of FFI symbols that are exported from a dynamic library, and
this is required to get the compiler to link correctly.
2015-08-10 18:20:42 -07:00
Steven Fackler
999bdeca88 Stabilize the Duration API
This commit stabilizes the `std::time` module and the `Duration` type.
`Duration::span` remains unstable, and the `Display` implementation for
`Duration` has been removed as it is still being reworked and all trait
implementations for stable types are de facto stable.

This is a [breaking-change] to those using `Duration`'s `Display`
implementation.
2015-08-10 20:04:18 -04:00
Felix S. Klock II
af32c015aa placate the pretty tests by ignoring my test. 2015-08-10 20:04:17 -04:00
Felix S. Klock II
fc54934d88 Regression test for dropflag reinit issue.
Fix #27401.
2015-08-10 20:04:17 -04:00
bors
5aca49c693 Auto merge of #27338 - alexcrichton:remove-morestack, r=brson
This commit removes all morestack support from the compiler which entails:

* Segmented stacks are no longer emitted in codegen.
* We no longer build or distribute libmorestack.a
* The `stack_exhausted` lang item is no longer required

The only current use of the segmented stack support in LLVM is to detect stack
overflow. This is no longer really required, however, because we already have
guard pages for all threads and registered signal handlers watching for a
segfault on those pages (to print out a stack overflow message). Additionally,
major platforms (aka Windows) already don't use morestack.

This means that Rust is by default less likely to catch stack overflows because
if a function takes up more than one page of stack space it won't hit the guard
page. This is what the purpose of morestack was (to catch this case), but it's
better served with stack probes which have more cross platform support and no
runtime support necessary. Until LLVM supports this for all platform it looks
like morestack isn't really buying us much.

cc #16012 (still need stack probes)
Closes #26458 (a drive-by fix to help diagnostics on stack overflow)

r? @brson
2015-08-10 23:40:54 +00:00