Commit Graph

55523 Commits

Author SHA1 Message Date
Manish Goregaokar
6234610252 Rollup merge of #35058 - jethrogb:no_panic_abs, r=alexcrichton
Add non-panicking abs() functions to all signed integer types.

Currently, calling abs() on one of the signed integer types might panic (in
debug mode at least) because the absolute value of the largest negative value
can not be represented in that signed type. Unlike all other integer
operations, there is currently not a non-panicking version on this function.
This seems to just be an oversight in the design, therefore just adding it now.
2016-07-30 13:44:46 +05:30
Manish Goregaokar
96e3972707 Rollup merge of #35049 - knight42:add-test, r=alexcrichton
Add a test for AddAssign on String

Fix #35047
2016-07-30 13:44:46 +05:30
bors
7580534c3a Auto merge of #35051 - japaric:backtrace, r=alexcrichton
rustbuild: make backtraces (RUST_BACKTRACE) optional

but keep them enabled by default to maintain the status quo.

When disabled shaves ~56KB off every x86_64-unknown-linux-gnu
binary.

To disable backtraces you have to use a config.toml (see
src/bootstrap/config.toml.example for details) when building rustc/std:

$ python bootstrap.py --config=config.toml

---

r? @alexcrichton
cc rust-lang/rfcs#1417
2016-07-30 00:08:24 -07:00
bors
2ad98a0b42 Auto merge of #35032 - vadimcn:rusty-ehabi, r=alexcrichton
Implement ARM personality routine in Rust.

Remove the `eh_personality_catch` lang item.
Use a simplified version of `cfg_if!` in libunwind.

Closes #34786
2016-07-29 20:29:43 -07:00
bors
f164cf5d64 Auto merge of #34842 - cgswords:attr_enc, r=nrc
Better attribute and metaitem encapsulation throughout the compiler

This PR refactors most (hopefully all?) of the `MetaItem` interactions outside of `libsyntax` (and a few inside) to interact with MetaItems through the provided traits instead of directly creating / destruct / matching against them. This is a necessary first step to eventually converting `MetaItem`s to internally use `TokenStream` representations (which will make `MetaItem` interactions much nicer for macro writers once the new macro system is in place).

r? @nrc
2016-07-29 16:26:38 -07:00
Guillaume Gomez
aeb3af898a Add doc example for Stdout 2016-07-30 00:57:20 +02:00
Guillaume Gomez
451683f0ee Add doc example for Stdin 2016-07-30 00:56:14 +02:00
Guillaume Gomez
aad5f6f912 Add doc example for io::Stderr 2016-07-30 00:53:18 +02:00
Guillaume Gomez
e805cb6374 Add io::Error doc examples 2016-07-29 14:32:35 +02:00
bors
5a7773a180 Auto merge of #35100 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 7 pull requests

- Successful merges: #34258, #34894, #35050, #35062, #35066, #35072, #35087
- Failed merges:
2016-07-29 03:28:01 -07:00
Guillaume Gomez
5f5fdf64f1 Rollup merge of #35103 - brettcannon:patch-1, r=Manishearth
Try to clear up some awkward wording
2016-07-29 11:57:54 +02:00
Guillaume Gomez
d69161c119 Rollup merge of #35087 - GuillaumeGomez:fs_docs, r=steveklabnik
Fs docs

Fixes #29356.

r? @steveklabnik
2016-07-29 11:57:54 +02:00
Guillaume Gomez
3f06bf9afb Rollup merge of #35072 - munyari:assert_debug, r=steveklabnik
Update docs for assert! and debug_assert!

Refer to #34455
2016-07-29 11:57:54 +02:00
Guillaume Gomez
01505a3311 Rollup merge of #35066 - vadimcn:fix-typos, r=apasel422
Fix typos

r? @steveklabnik
2016-07-29 11:57:54 +02:00
Guillaume Gomez
41c8d3f630 Rollup merge of #35062 - frewsxcv:chars-as-str, r=GuillaumeGomez
Add documentation example for `str::Chars::as_str`.

None
2016-07-29 11:57:53 +02:00
Guillaume Gomez
72d1d06692 Rollup merge of #35050 - knight42:improve-fmt-doc, r=steveklabnik
More intuitive explantion of strings formatting
2016-07-29 11:57:53 +02:00
Guillaume Gomez
679f88d345 Rollup merge of #34258 - durka:patch-25, r=steveklabnik
book/ffi: nullable pointer cleanup

Expand the "nullable pointer optimization" section with a code example. Fixes #34250.

I also noticed that many of the examples use the libc crate just for types such as `c_char` and `c_int`, which are now available through `std::os::raw`. I changed the ones that don't need to rely on libc. I'm glad to revert that part of the commit if it's unwanted churn.
2016-07-29 11:57:53 +02:00
Michael Woerister
415fde498a intravisit: Fold functionality of IdVisitor into the regular Visitor. 2016-07-29 04:55:31 -04:00
Wang Xuerui
2a41b31a88
syntax_ext: format: fix ICE with bad named arguments 2016-07-29 16:40:10 +08:00
Jan-Erik Rediger
7c0cd30c4b Update LLVM again 2016-07-29 10:29:59 +02:00
Alex Crichton
52430727cd test: Fix a test on MSVC
Apparently MSVC now has namespaces in backtraces!
2016-07-29 10:29:59 +02:00
Jan-Erik Rediger
f38762a881 [LLVM-3.9] Use llvm-3.9 branch 2016-07-29 10:29:59 +02:00
Vladimir Vukicevic
330dd39bb2 Remove NO_FILE_METADATA; always use unknown_file_metadata instead of passing 0 2016-07-29 10:29:59 +02:00
Alex Crichton
2492d24baa llvm: Remove no longer existent LLVMAddTargetData binding 2016-07-29 10:29:59 +02:00
Alex Crichton
0509be1f6b Update parsing llvm-config output
Now it prints full paths on MSVC, but we're only interested in path names
2016-07-29 10:29:59 +02:00
Alex Crichton
75bcda4cf1 rustc: Update LLVM to the LLVM 3.9 release branch
The 3.9 release of LLVM isn't out yet, but this moves us onto that branch to
start tracking it.
2016-07-29 10:29:59 +02:00
Alex Crichton
5fa55781bd test: Remove the execution-engine test
We don't actually officially support this at all, and the execution engine
support in LLVM we've had to gut as it's not compiling on MinGW, so just delete
this test for now.
2016-07-29 10:29:59 +02:00
Alex Crichton
e8f76661f1 rustc: Fix data-layout for AArch64 targets
Also relax the assertion whenever we have a custom LLVM root as LLVM may
disagree about exact specifics.
2016-07-29 10:29:44 +02:00
Alex Crichton
d851428cc3 configure: Fix grep invocation for llvm-mc argument 2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
a36595ed14 Force check of error
The passed error needs to be checked.
Otherwise it will force an abort when it is deconstructed, but a
success value.
2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
2c16e24643 Use C type when passing value to LLVM pass
Previously the C type LLVMRelocMode (available as RelocMode in Rust)
was passed as is to the function.
However createTargetMachine expects a Reloc::Model, which is an enum
just one value short.
Additionally, the function was marked as requiring Reloc::Model in the
C code, but RelocMode on the Rust-side.

We now use the correct C type LLVMRelocMode and convert it to an
Optional<Reloc::Model> as expected by the createTargetMachine call the
same the original LLVMCreateTargetMachine function does.
See
c9b262bfbd/lib/Target/TargetMachineC.cpp (L104-L121)

This was found by @eddyb.
2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
079db4f971 Use correct error handling type 2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
dc7076b52e [LLVM-3.9] Pass correct relocation model flag 2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
2c92756dde Upgrade llvm 2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
ad262d54dc Update compiler-rt 2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
09c3f33ec2 Flip LLVM verion check clause 2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
f439aeef07 [LLVM-3.9] Use old way of getting next child
This was changed back in
https://github.com/rust-lang/llvm/commit/aacf2fbf
2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
d0e5aa4820 Upgrade compiler-rt 2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
2bcb2b8990 Upgrade LLVM to include std::thread patch 2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
1798c1aa59 Refactor determining of relocation model into methods 2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
1bc0447260 [LLVM-3.9] Maintain backward compatibility in Archiver 2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
deafab19be [LLVM-3.9] Increase PIELevel
Previously, we had a PositionIndependentExecutable, now we simply
choose the highest level. This should be equivalent.

🍰
2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
12ccff99bf Use relative path to type 2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
9e706f90cb [LLVM-3.9] Configure PIE at the module level instead of compilation unit level
This was deleted here[1] which appears to be replaced by this[2]
which is a new setPIELevel function on the LLVM module itself.

[1]: http://reviews.llvm.org/D19753
[2]: http://reviews.llvm.org/D19671
2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
dbb4178f4e [LLVM-3.9] Update return type for Archive::create
Changed in
0b21d88fd3
2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
8433f9bb33 [LLVM-3.9] Replace NewArchiveIterator with NewArchiveMember
The new NewArchiveMember is simpler and requires less context,
according to upstream.

This was changed in http://reviews.llvm.org/D21721
2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
5b44e10fb7 [LLVM-3.9] Preserve certain functions when internalizing
This makes sure to still use the old way for older LLVM versions.
2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
6ed5db8d35 [LLVM-3.9] Specify that we are using the legacy interface
LLVM pass manager infrastructure is currently getting rewritten to be
more flexible, but the rewrite isn't complete yet.
2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
fba1f8f123 [LLVM-3.9] Setup the compile unit information immediately
Since LLVM reversed the order of the debug info graphs, we need to have
a compile unit that exists *before* any functions (`DISubprogram`s) are
created. This allows the LLVM debug info builder to automatically link
the functions to the compile unit.
2016-07-29 10:29:44 +02:00
Jan-Erik Rediger
7420874a97 [LLVM-3.9] Rename custom methods to Rust-specific ones 2016-07-29 10:29:44 +02:00