Commit Graph

40719 Commits

Author SHA1 Message Date
Manish Goregaokar
0bf0ea3a52 Rollup merge of #26596 - richo:richo-cleanup-macros, r=alexcrichton 2015-06-27 14:18:47 +05:30
bors
650566ef2a Auto merge of #26575 - eddyb:tycx, r=nikomatsakis
Next step towards split local/global type contexts, after #26351.
cc @rust-lang/compiler @jroesch
2015-06-27 07:32:56 +00:00
bors
d3c03d0987 Auto merge of #26569 - alexcrichton:msvc-llvm-update, r=brson
Now that LLVM has been updated, the only remaining roadblock to implementing
unwinding for MSVC is to fill out the runtime support in `std::rt::unwind::seh`.
This commit does precisely that, fixing up some other bits and pieces along the
way:

* The `seh` unwinding module now uses `RaiseException` to initiate a panic.
* The `rust_try.ll` file was rewritten for MSVC (as it's quite different) and is
  located at `rust_try_msvc_64.ll`, only included on MSVC builds for now.
* The personality function for all landing pads generated by LLVM is hard-wired
  to `__C_specific_handler` instead of the standard `rust_eh_personality` lang
  item. This is required to get LLVM to emit SEH unwinding information instead
  of DWARF unwinding information. This also means that on MSVC the
  `rust_eh_personality` function is entirely unused (but is defined as it's a
  lang item).

More details about how panicking works on SEH can be found in the
`rust_try_msvc_64.ll` or `seh.rs` files, but I'm always open to adding more
comments!

A key aspect of this PR is missing, however, which is that **unwinding is still
turned off by default for MSVC**. There is a [bug in llvm][llvm-bug] which
causes optimizations to inline enough landing pads that LLVM chokes. If the
compiler is optimized at `-O1` (where inlining isn't enabled) then it can
bootstrap with unwinding enabled, but when optimized at `-O2` (inlining is
enabled) then it hits a fatal LLVM error.

[llvm-bug]: https://llvm.org/bugs/show_bug.cgi?id=23884
2015-06-27 05:06:22 +00:00
Huon Wilson
0f6d4aa786 core: fix deprecation since version of align_of_min.
These will first be deprecated in 1.2.0, not 1.1.0.
2015-06-26 15:00:31 -07:00
Ms2ger
532235be27 Use Box::into_raw rather than the deprecated boxed::into_raw in tests and documentation. 2015-06-26 22:29:40 +02:00
Alexis Beingessner
9001da658a make book match reference 2015-06-26 12:06:05 -07:00
Alexis Beingessner
c98e46c7ca accessing private fields is not safe, and io isn't scary 2015-06-26 11:44:02 -07:00
Guillaume Gomez
0d74311e2b Add E0088 error explanation 2015-06-26 19:13:26 +02:00
Richo Healey
30cde078c6 std: clean up duplicated attrs and comment on panic 2015-06-26 09:53:56 -07:00
bors
2cb8a31e7c Auto merge of #26595 - dotdash:fca_slice, r=eddyb
Storing them as FCAs is a regression from the recent change that made
fat pointers immediate return values so that they are passed in
registers instead of memory.
2015-06-26 15:07:27 +00:00
Björn Steinbrink
2051b3e28f Avoid storing fat pointers as first class aggregates
Storing them as FCAs is a regression from the recent change that made
fat pointers immediate return values so that they are passed in
registers instead of memory.
2015-06-26 16:40:51 +02:00
Guillaume Gomez
6c88a2833d Add E0091 error explanation
Part of #24407.
cc @michaelsproul
2015-06-26 13:39:39 +02:00
Eduard Burtescu
ad66c215aa rustc: switch most remaining middle::ty functions to methods. 2015-06-26 07:34:57 +03:00
Eduard Burtescu
5cedd66a6c rustc: remove 3 dead functions in middle::ty. 2015-06-26 07:34:56 +03:00
Eduard Burtescu
6db5126240 rustc: make ty::mk_* constructors into methods on ty::ctxt. 2015-06-26 07:34:56 +03:00
Eduard Burtescu
2332765cbc rustc: prefer unqualified ctxt to ty::ctxt in middle::ty. 2015-06-26 07:34:56 +03:00
Eduard Burtescu
59935f70e0 rustc: move some functions in middle::ty working on Ty to methods. 2015-06-26 07:34:56 +03:00
Eduard Burtescu
aa03871a6e rustc: combine type-flag-checking traits and fns and into one trait. 2015-06-26 07:34:56 +03:00
bors
378a370ff2 Auto merge of #25646 - huonw:align, r=alexcrichton
This removes a footgun, since it is a reasonable assumption to make that
pointers to `T` will be aligned to `align_of::<T>()`. This also matches
the behaviour of C/C++. `min_align_of` is now deprecated.

Closes #21611.
2015-06-26 02:58:31 +00:00
Jared Roesch
44bccd8842 Rename AsPredicate to ToPredicate in order to match naming conventions 2015-06-25 17:29:20 -07:00
Adam Heins
35abf86a1b Improve sentence flow. 2015-06-25 19:29:23 -04:00
bors
912ab64a0d Auto merge of #26567 - Techern:os-dupe-code, r=alexcrichton
It's nearly midnight. I'm tired. I'll look for something worth doing in the morning :)
2015-06-25 20:22:27 +00:00
Cruz Julian Bishop
ad39fcc535 libstd/rand/os.rs: Remove a tiny bit of duplicated code
It's nearly midnight. I'm tired. I'll look for something worth doing in the morning :)
2015-06-25 23:37:28 +00:00
bors
70b2f4789e Auto merge of #26542 - GuillaumeGomez:patch-2, r=Manishearth 2015-06-25 17:21:44 +00:00
Alex Crichton
759a7f1f66 test: Use liblibc in lang-item-public
Makes this test case more robust by using standard libraries to ensure the
binary can be built.
2015-06-25 09:33:15 -07:00
Alex Crichton
9e3cb64475 rustc_trans: Handle empty dlls on MSVC
If a dylib doesn't actually export any symbols then link.exe won't emit a
`foo.lib` file to link against (as one isn't necessary). Detect this case in the
backend by omitting the `foo.lib` argument to the linker if it doesn't actually
exist.
2015-06-25 09:33:15 -07:00
Alex Crichton
91d799eab0 msvc: Implement runtime support for unwinding
Now that LLVM has been updated, the only remaining roadblock to implementing
unwinding for MSVC is to fill out the runtime support in `std::rt::unwind::seh`.
This commit does precisely that, fixing up some other bits and pieces along the
way:

* The `seh` unwinding module now uses `RaiseException` to initiate a panic.
* The `rust_try.ll` file was rewritten for MSVC (as it's quite different) and is
  located at `rust_try_msvc_64.ll`, only included on MSVC builds for now.
* The personality function for all landing pads generated by LLVM is hard-wired
  to `__C_specific_handler` instead of the standard `rust_eh_personality` lang
  item. This is required to get LLVM to emit SEH unwinding information instead
  of DWARF unwinding information. This also means that on MSVC the
  `rust_eh_personality` function is entirely unused (but is defined as it's a
  lang item).

More details about how panicking works on SEH can be found in the
`rust_try_msvc_64.ll` or `seh.rs` files, but I'm always open to adding more
comments!

A key aspect of this PR is missing, however, which is that **unwinding is still
turned off by default for MSVC**. There is a [bug in llvm][llvm-bug] which
causes optimizations to inline enough landing pads that LLVM chokes. If the
compiler is optimized at `-O1` (where inlining isn't enabled) then it can
bootstrap with unwinding enabled, but when optimized at `-O2` (inlining is
enabled) then it hits a fatal LLVM error.

[llvm-bug]: https://llvm.org/bugs/show_bug.cgi?id=23884
2015-06-25 09:33:15 -07:00
Guillaume Gomez
7b4eb1aa90 Add E0327 error code. Thanks @nagisa for his help! 2015-06-25 18:20:29 +02:00
bors
cfb77788ce Auto merge of #26559 - BrodyHolden:ffi-doc-references-std-comm, r=bluss
The FFI documentation references std::comm. Replace with std::sync::mpsc.

Also wrap the line.
2015-06-25 14:53:16 +00:00
bors
b213c947f8 Auto merge of #26558 - nham:fix_24357, r=alexcrichton
Fixes #24357.

Also adds a (totally separate) regression test, which

Closes #18119
2015-06-25 10:39:09 +00:00
bors
688b62382c Auto merge of #26561 - SimonSapin:remove-titlecase, r=alexcrichton
I added it because it was easy (same a `char::to_lowercase`, just a different table), but it doesn’t make sense to have this in std but not str::to_titlecase, which would require https://github.com/unicode-rs/unicode-segmentation

At some point in the future this feature will be available (both on char and str) in a crates.io crate.
2015-06-25 08:24:23 +00:00
Steven Fackler
18e78b91de Avoid overflow in Vec::from_iter
Closes #26550
2015-06-24 22:59:52 -07:00
Simon Sapin
32b7b50baf Remove char::to_titlecase. Fix #26555
I added it because it was easy (same a `char::to_lowercase`,
just a different table), but it doesn’t make sense to have this
in std but not str::to_titlecase, which would require
https://github.com/unicode-rs/unicode-segmentation

At some point in the future this feature will be available
(both on char and str) in a crates.io crate.
2015-06-24 22:16:25 -07:00
Brody Holden
165a2817a4 Replace std::comm reference with std::sync::mpsc.
The FFI documentation references std::comm. Replace with
std::sync::mpsc.

Also wrap the line.
2015-06-24 20:08:55 -07:00
bors
23958d803e Auto merge of #26553 - brson:stddocs, r=Gankro
"Rust" and "The Rust Standard Library" are capitalized.
2015-06-25 01:54:05 +00:00
Nick Hamann
db9af26d76 Add a regression test for #18119.
Closes #18119
2015-06-24 20:15:23 -05:00
Nick Hamann
0cc26b2058 Use correct type for "use of moved value" error with closures.
Fixes #24357
2015-06-24 20:15:11 -05:00
bors
e5a28bca77 Auto merge of #26547 - nham:test-19538, r=alexcrichton
Closes #19538.
2015-06-25 00:21:33 +00:00
Huon Wilson
225b116829 Make align_of behave like min_align_of.
This removes a footgun, since it is a reasonable assumption to make that
pointers to `T` will be aligned to `align_of::<T>()`. This also matches
the behaviour of C/C++. `min_align_of` is now deprecated.

Closes #21611.
2015-06-24 17:00:43 -07:00
bors
009e53d70f Auto merge of #26539 - jooert:remove_bit_vec_append_splitoff, r=alexcrichton
This seems to have slipped through the cracks in #26192.

r? @alexcrichton
2015-06-24 22:49:46 +00:00
Brian Anderson
9b30eabc22 Fix capitalization in std docs
"Rust" and "The Rust Standard Library" are capitalized.
2015-06-24 14:33:41 -07:00
bors
21dd4e2a06 Auto merge of #26546 - agrover:add_flock, r=alexcrichton
flock(2) is in bsd44. Add its fn definition and constants.
2015-06-24 19:44:10 +00:00
Guillaume Gomez
b7e41d9aea Add E0396 error explanation 2015-06-24 20:55:23 +02:00
Guillaume Gomez
47c3dc2e7e Add E0395 error explanation 2015-06-24 20:49:12 +02:00
bors
e2c273f1bb Auto merge of #26536 - frewsxcv:regression-test-22375, r=alexcrichton
Closes #22375
2015-06-24 18:11:39 +00:00
Nick Hamann
079bfad72d Add a regression test for #19538.
Closes #19538.
2015-06-24 12:42:05 -05:00
Andy Grover
0f1e514400 Add flock() to liblibc 2015-06-24 10:22:10 -07:00
bors
43ad8d0bec Auto merge of #26533 - nham:test-23305, r=alexcrichton
Closes #23305.
2015-06-24 15:05:42 +00:00
Ulrik Sverdrup
274bb24efd StrSearcher: Explicitly separate the long and short cases
This is needed to not drop performance, after the trait-based changes.
Force separate versions of the next method to be generated for the short
and long period cases.
2015-06-24 16:22:09 +02:00
bors
52f6318700 Auto merge of #26532 - dhuseby:fixing_bitrig_test_failure, r=alexcrichton
to get the bitrig builder working again.
2015-06-24 13:33:37 +00:00