Commit Graph

46872 Commits

Author SHA1 Message Date
Alex Crichton
18607149fb syntax: Add a new unstable #[linked_from] attribute
To correctly reexport statically included libraries from a DLL on Windows, the
compiler will soon need to have knowledge about what symbols are statically
included and which are not. To solve this problem a new unstable
`#[linked_from]` attribute is being added and recognized on `extern` blocks to
indicate which native library the symbols are coming from.

The compiler then keeps track of what the set of FFI symbols are that are
included statically. This information will be used in a future commit to
configure how we invoke the linker on Windows.
2015-08-10 18:20:00 -07:00
Alex Crichton
138252cc6a trans: Specify archive_format for MSVC
This means that we no longer need to ship the `llvm-ar.exe` binary in the MSVC
distribution, and after a snapshot we can remove a good bit of logic from the
makefiles!
2015-08-10 17:45:16 -07:00
Steven Fackler
e29a62f140 Add back and deprecate old methods. 2015-08-10 20:04:22 -04: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
Felix S. Klock II
91f5d3275f Turn nonzeroing move hints back off by default.
This is a temporary workaround for the bugs that have been found in
the implementation of PR #26173.

 * pnkfelix is unavailable in the short-term (i.e. for the next week) to fix them.

 * When the bugs are fixed, we will turn this back on by default.

(If you want to play with the known-to-be-buggy optimization in the
meantime, you can opt-back in via the debugging option that this
commit is toggling.)
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
Alex Crichton
7a3fdfbf67 Remove morestack support
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)
2015-08-10 16:35:44 -07:00
Björn Steinbrink
689d13dde9 Make the backtrace-debuginfo test less error prone
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 01:18:45 +02:00
Tshepang Lekhonkhobe
9f597fe7ef doc: remove an unneeded distinction 2015-08-11 01:13:15 +02:00
Brian Anderson
620d1ee534 Update AUTHORS.txt for 1.3 2015-08-10 15:25:32 -07:00
bors
75383ea7d7 Auto merge of #27531 - bluss:io-copy-dst, r=alexcrichton
std: Allow ?Sized parameters in std::io::copy
2015-08-10 22:03:09 +00:00
Elaine "See More" Nemo
ac25b449e2 Use pentium4 for base CPU on i686-pc-windows-msvc
This is in line with other targets.

Closes #27646
2015-08-10 17:53:00 -04:00
Tshepang Lekhonkhobe
b8de07d5e6 doc: success is implied really 2015-08-10 23:52:18 +02:00
Andrew Paseltiner
28d5d2fad0 Remove transmute from btree::node::Node::as_slices_internal_mut
Closes #27620.
2015-08-10 17:30:35 -04:00
Guillaume Gomez
a4e4233828 Add Send/Sync traits on Iter struct in hash/table 2015-08-10 22:46:58 +02:00
bors
8856927f64 Auto merge of #27451 - seanmonstar:use-groups-as, r=alexcrichton
An implementation of [RFC 1219](https://github.com/rust-lang/rfcs/pull/1219).

The RFC is not merged yet, but once merged, this could be.
2015-08-10 20:24:06 +00:00
Alisdair Owens
f0419661f0 fix import nit for long diagnostics on E0387 2015-08-10 20:35:27 +01:00
bors
3d69bec881 Auto merge of #27252 - tbu-:pr_less_transmutes, r=alexcrichton
The replacements are functions that usually use a single `mem::transmute` in their body and restrict input and output via more concrete types than `T` and `U`. Worth noting are the `transmute` functions for slices and the `from_utf8*` family for mutable slices. Additionally, `mem::transmute` was often used for casting raw pointers, when you can already cast raw pointers just fine with `as`.

This builds upon #27233.
2015-08-10 18:46:21 +00:00
Tim Neumann
d46e84081f add and use Span.substitute_dummy method 2015-08-10 20:43:11 +02:00
bors
96a1f40402 Auto merge of #27516 - alexcrichton:osx-flaky-zomg, r=brson
The investigation into #14232 discovered that it's possible that signal delivery
to a newly spawned process is racy on OSX. This test has been failing spuriously
on the OSX bots for some time now, so ignore it as we don't currently know a
solution and it looks like it may be out of our control.
2015-08-10 17:06:15 +00:00
Alisdair Owens
78d28336fe add info about cell types to diagnostic message E0387 2015-08-10 16:48:53 +01:00
bors
1db1417736 Auto merge of #27547 - vberger:more_perseverant_resolve, r=nrc
As noted in my previous PR #27439 , the import resolution algorithm has two cases where it bails out:

- The algorithm will delay an import if the module containing the target of the import still has unresolved glob imports
- The algorithm will delay a glob import of the target module still has unresolved imports

This PR alters the behaviour to only bail out when the above described unresolved imports are `pub`, as non-pub imports don't affect the result anyway.

It is still possible to fail the algorithm with examples like
```rust
pub mod a {
    pub use b::*;
}

pub mod b {
    pub use a::*;
}
```
but such configurations cannot be resolved in any meaningful way, as these are cyclic imports.

Closes #4865
2015-08-10 14:40:07 +00:00
llogiq
86191e2014 Fixed algorithm to match shootout requirements
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).

Perhaps the multi-thread output from the fasta benchmark could be used to speed it up even more.
2015-08-10 15:41:19 +02:00
Guillaume Gomez
347991540a Add another example for E0425 2015-08-10 15:29:06 +02:00
Ulrik Sverdrup
664fdbed32 std: Allow ?Sized parameters in std::io::copy
std::io::copy did not allow passing trait objects directly (only with an
extra &mut wrapping).
2015-08-10 14:29:08 +02:00
bors
a136d4c95f Auto merge of #27634 - TimNN:master, r=dotdash
I don't know how this single inline caused the breakage but it seems to be the cause of the issue (see https://github.com/rust-lang/rust/issues/27619#issuecomment-129420094).
2015-08-10 12:01:01 +00:00
Tim Neumann
03f561c5f2 Revert "Mark round_up_to_next as inline"
This reverts commit febdc3b201.
2015-08-10 13:51:55 +02:00
Tshepang Lekhonkhobe
3b686a3ffb doc: add missing symbol 2015-08-10 13:46:03 +02:00
Sylvestre Ledru
5bcbc5c735 Bug #27621 - Make sure that LLVM FileCheck is available on the system 2015-08-10 09:53:00 +02:00
Garming Sam
fc9ecae444 Modify the callback to be run from a macro 2015-08-10 19:12:47 +12:00
William Throwe
f001f9a73e Make tidy-binaries find invocation work on Linux
New enough find on Linux doesn't support "-perm +..." and suggests
using "-perm /..." instead, but that doesn't work on Windows.
Hopefully all platforms are happy with this expanded version.
2015-08-10 00:12:45 -04:00
Eli Friedman
7d3c4bd72a Tweak style guide to avoid referencing the removed ascii::Ascii. 2015-08-09 18:56:48 -07:00
Tobias Bucher
33af24ca4c Remove unused feature 2015-08-09 23:53:28 +02:00
Eli Friedman
bbbfed2f93 Use https URLs to refer to rust-lang.org where appropriate.
Also fixes a few outdated links.
2015-08-09 14:28:46 -07:00
Tobias Bucher
2ec26681a4 Remove #[cfg(stage0)] annotation 2015-08-09 22:05:23 +02:00
Tobias Bucher
587a32b61b Change TODO to FIXME 2015-08-09 22:05:23 +02:00
Tobias Bucher
5309fbb6c9 Make str::as_bytes_mut private 2015-08-09 22:05:22 +02:00
Tobias Bucher
47041fe289 Make slice::transmute* private 2015-08-09 22:05:22 +02:00
Tobias Bucher
22ec5f4af7 Replace many uses of mem::transmute with more specific functions
The replacements are functions that usually use a single `mem::transmute` in
their body and restrict input and output via more concrete types than `T` and
`U`. Worth noting are the `transmute` functions for slices and the `from_utf8*`
family for mutable slices. Additionally, `mem::transmute` was often used for
casting raw pointers, when you can already cast raw pointers just fine with
`as`.
2015-08-09 22:05:22 +02:00
Garming Sam
22baa46f78 Avoid adding extra paren with two casts 2015-08-10 04:52:43 +12:00
Alisdair Owens
d07a094fb0 add diagnostics for E0193 2015-08-09 16:45:56 +01:00
Ariel Ben-Yehuda
febdc3b201 Mark round_up_to_next as inline
This speeds up rustc on #25916 from 1.36Â0.022s to 1.326Â0.025s
2015-08-09 17:20:12 +03:00
Robin Kruppe
82dbc2ea61 Add optional, external tests for floating point parsing.
Running these tests takes hours, so they are not run by @bors.
2015-08-09 14:17:39 +02:00
Garming Sam
6a51de0a0a Casts are a type of binop
This just adds paren following the same cases as before
2015-08-09 21:16:49 +12:00
Garming Sam
c0c6af7f07 Add operator precedence for pretty printer
Previously it just added parentheses in excess.
e.g. ((1 + 2) + 3) + 4
2015-08-09 21:16:21 +12:00
Garming Sam
c67a34b9e5 Binary ops should add parenthesis to each side
Otherwise, we get (1 + 2) * 3 looking like 1 + 2 * 3
2015-08-09 21:15:47 +12:00
Garming Sam
fdba872944 Add a proper comment for create_resolver 2015-08-09 21:09:55 +12:00
Garming Sam
ed9f8f83c9 Expose more of the save analysis module 2015-08-09 20:54:12 +12:00