Commit Graph

191 Commits

Author SHA1 Message Date
Irina Popa f224441ed5 rustc_codegen_llvm: remove unused UseRef type. 2018-07-30 19:49:22 +03:00
Irina Popa 3eb50358e4 rustc_codegen_llvm: use safe references for BasicBlock. 2018-07-30 19:49:20 +03:00
Irina Popa f375185314 rustc_codegen_llvm: use safe references for Value. 2018-07-30 19:49:18 +03:00
Irina Popa 8d17684341 rustc_codegen_llvm: remove _opaque suffix. 2018-07-30 19:32:22 +03:00
Irina Popa 1da26707d6 rustc_codegen_llvm: remove #![allow(dead_code)] from llvm. 2018-07-30 19:32:20 +03:00
Irina Popa 50d764298e rustc_codegen_llvm: remove unused ExecutionEngineRef type. 2018-07-30 19:27:16 +03:00
Irina Popa eed48f560f rustc_codegen_llvm: use safe references for Metadata and DI*. 2018-07-30 19:27:13 +03:00
Irina Popa 6d0d82ce10 rustc_codegen_llvm: use safe references for DIBuilder. 2018-07-30 18:36:32 +03:00
Irina Popa 2dbde55395 rustc_codegen_llvm: use safe references for Builder. 2018-07-30 18:36:30 +03:00
Irina Popa d04e66d114 rustc_codegen_llvm: use safe references for Type. 2018-07-30 18:36:29 +03:00
Irina Popa 249d5acaec rustc_codegen_llvm: use safe references for Context and Module. 2018-07-30 18:27:52 +03:00
Irina Popa af04e9426c rustc_codegen_llvm: move from empty enums to extern types. 2018-07-30 18:12:47 +03:00
Irina Popa 077be49bde rustc_llvm: move to rustc_codegen_llvm::llvm. 2018-07-30 18:03:50 +03:00
bors 7bbcd005b3 Auto merge of #52805 - ljedrz:format_str_literal, r=petrochenkov
Don't format!() string literals

Prefer `to_string()` to `format!()` take 2, this time targetting string literals. In some cases (`&format!("...")` -> `"..."`) also removes allocations. Occurences of `format!("")` are changed to `String::new()`.
2018-07-30 06:29:39 +00:00
bors 866a713258 Auto merge of #52738 - ljedrz:push_to_extend, r=eddyb
Replace push loops with extend() where possible

Or set the vector capacity where I couldn't do it.

According to my [simple benchmark](https://gist.github.com/ljedrz/568e97621b749849684c1da71c27dceb) `extend`ing a vector can be over **10 times** faster than `push`ing to it in a loop:

10 elements (6.1 times faster):
```
test bench_extension ... bench:          75 ns/iter (+/- 23)
test bench_push_loop ... bench:         458 ns/iter (+/- 142)
```

100 elements (11.12 times faster):
```
test bench_extension ... bench:          87 ns/iter (+/- 26)
test bench_push_loop ... bench:         968 ns/iter (+/- 3,528)
```

1000 elements (11.04 times faster):
```
test bench_extension ... bench:         311 ns/iter (+/- 9)
test bench_push_loop ... bench:       3,436 ns/iter (+/- 233)
```

Seems like a good idea to use `extend` as much as possible.
2018-07-29 21:37:47 +00:00
ljedrz 59c8a279da Replace push loops with collect() and extend() where possible 2018-07-29 18:53:22 +02:00
bors 023fd7e74a Auto merge of #52767 - ljedrz:avoid_format, r=petrochenkov
Prefer to_string() to format!()

Simple benchmarks suggest in some cases it can be faster by even 37%:
```
test converting_f64_long  ... bench:         339 ns/iter (+/- 199)
test converting_f64_short ... bench:         136 ns/iter (+/- 34)
test converting_i32_long  ... bench:          87 ns/iter (+/- 16)
test converting_i32_short ... bench:          87 ns/iter (+/- 49)
test converting_str       ... bench:          54 ns/iter (+/- 15)
test formatting_f64_long  ... bench:         349 ns/iter (+/- 176)
test formatting_f64_short ... bench:         145 ns/iter (+/- 14)
test formatting_i32_long  ... bench:          98 ns/iter (+/- 14)
test formatting_i32_short ... bench:          93 ns/iter (+/- 15)
test formatting_str       ... bench:          86 ns/iter (+/- 23)
```
2018-07-29 09:33:37 +00:00
bors a5c2d0fffa Auto merge of #52764 - sinkuu:cleanup, r=nikomatsakis
Misc cleanups
2018-07-29 06:32:24 +00:00
ljedrz 421b2ba347 Don't format!() string literals 2018-07-28 17:58:52 +02:00
kennytm 7da22148ec
Rollup merge of #52703 - ljedrz:vec_improvements, r=nikomatsakis
Improve a few vectors - calculate capacity or build from iterators

Collecting from iterators improves readability and tailoring vector capacities should be beneficial in terms of performance.
2018-07-28 16:24:57 +08:00
bors 4f1e235744 Auto merge of #52336 - ishitatsuyuki:dyn-rollup, r=Mark-Simulacrum
Rollup of bare_trait_objects PRs

All deny attributes were moved into bootstrap so they can be disabled with a line of config.

Warnings for external tools are allowed and it's up to the tool's maintainer to keep it warnings free.

r? @Mark-Simulacrum
cc @ljedrz @kennytm
2018-07-27 20:27:40 +00:00
Shotaro Yamada 4c1cb7534b Unnecessary `to_string` 2018-07-27 23:26:36 +09:00
ljedrz 57a5a9b054 Prefer to_string() to format!() 2018-07-27 11:11:18 +02:00
ljedrz acd38f656a Improve a few vectors - calculate capacity or build from iterators 2018-07-26 21:48:38 +02:00
bors 45b48b9b6d Auto merge of #52735 - Mark-Simulacrum:rollup, r=Mark-Simulacrum
Rollup of 16 pull requests

Successful merges:

 - #52558 (Add tests for ICEs which no longer repro)
 - #52610 (Clarify what a task is)
 - #52617 (Don't match on region kinds when reporting NLL errors)
 - #52635 (Fix #[linkage] propagation though generic functions)
 - #52647 (Suggest to take and ignore args while closure args count mismatching)
 - #52649 (Point spans to inner elements of format strings)
 - #52654 (Format linker args in a way that works for gcc and ld)
 - #52667 (update the stdsimd submodule)
 - #52674 (Impl Executor for Box<E: Executor>)
 - #52690 (ARM: expose `rclass` and `dsp` target features)
 - #52692 (Improve readability in a few sorts)
 - #52695 (Hide some lints which are not quite right the way they are reported to the user)
 - #52718 (State default capacity for BufReader/BufWriter)
 - #52721 (std::ops::Try impl for std::task::Poll)
 - #52723 (rustc: Register crates under their real names)
 - #52734 (sparc ABI issue - structure returning from function is returned in 64bit registers (with tests))

Failed merges:

 - #52678 ([NLL] Use better spans in some errors)

r? @ghost
2018-07-26 17:42:59 +00:00
bors bfbf8375d7 Auto merge of #52488 - nikomatsakis:nll-issue-48071-universe-and-sub, r=pnkfelix
introduce universes to NLL type check

This branch aims to fix #48071 and also advance chalk integration a bit at the same time. It re-implements the subtyping/type-equating check so that NLL doesn't "piggy back" on the subtyping code of the old type checker.

This new code uses the "universe-based" approach to handling higher-ranked lifetimes, which sidesteps some of the limitations of the current "leak-based" scheme. This avoids the ICE in #48071.

At the same time, I aim for this to potentially be a kind of optimization. This NLL code is (currently) not cached, but it also generates constraints without doing as much instantiation, substitution, and folding. Right now, though, it still piggy backs on the `relate_tys` trait, which is a bit unfortunate -- it means we are doing more hashing and things than we have to. I want to measure the see the perf. Refactoring that trait is something I'd prefer to leave for follow-up work.

r? @pnkfelix -- but I want to measure perf etc first
2018-07-26 15:23:50 +00:00
Mark Rousskov 37835be2e3
Rollup merge of #52690 - paoloteti:rclass-dsp, r=alexcrichton
ARM: expose `rclass` and `dsp` target features

- `dsp`: the subtarget supports the DSP (saturating arith. and such)
         instructions
- `rclass`: target is a Cortex-R

Both features are useful to support ARM MCUs on `coresimd`.

Note: Cortex-R52 is the first Armv8-R with `neon` support.

r? @alexcrichton
cc @japaric
2018-07-26 09:18:35 -06:00
Mark Rousskov 9f91195e2a
Rollup merge of #52654 - alecmocatta:master, r=alexcrichton
Format linker args in a way that works for gcc and ld

Pass multiple linker arguments rather than concatenate with commas (fixes #52634).

`-l library` -> `-llibrary` to work with apple's ld.

To build with apple's ld I'm currently also passing `-C link-args="-arch x86_64 -macosx_version_min 10.13.0"`. I'll try and understand the latter flag better before PRing that.

This PR currently works for me. Hopefully CI will pick up any grievous ramifications in other toolchains?

Thanks to @alexcrichton for the pointer to the relevant code!
2018-07-26 09:18:31 -06:00
Mark Rousskov c7555cedde
Rollup merge of #52635 - yodaldevoid:issue_18804, r=oli-obk
Fix #[linkage] propagation though generic functions

Fixes #18804

In the non-local branch of `get_static` (where the fix was implemented) `span_fatal` had to be replaced with `bug!` as we have no span in that case.
2018-07-26 09:18:27 -06:00
Paolo Teti 580f437ff2 ARM: expose `rclass` and `dsp` target features
- `dsp`: the subtarget supports the DSP (saturating arith. and such)
         instructions
- `rclass`: target is a Cortex-R

Both features are useful to support ARM MCUs on `coresimd`.

Note: Cortex-R52 is the first Armv8-R with `neon` support
2018-07-25 09:27:55 +02:00
Niko Matsakis 145155dc96 parameterize `BitVector` and `BitMatrix` by their index types 2018-07-25 06:38:19 +03:00
Tatsuyuki Ishi e098985939 Deny bare_trait_objects globally 2018-07-25 10:25:29 +09:00
Gabriel Smith 0bcbe91b48 Deduplicate linkage checking code for statics
Signed-off-by: Gabriel Smith <ga29smith@gmail.com>
2018-07-24 20:17:14 -04:00
Gabriel Smith a20262c069 Properly set the linkage type on non-local statics
Fixes issue #18804

Signed-off-by: Gabriel Smith <ga29smith@gmail.com>
2018-07-24 20:15:06 -04:00
Mark Rousskov 06ba69d043
Rollup merge of #52391 - Amanieu:volatile_unaligned, r=alexcrichton
Add unaligned volatile intrinsics

Surprisingly enough, it turns out that unaligned volatile loads are actually useful for certain (very niche) types of lock-free code. I included unaligned volatile stores for completeness, but I currently do not know of any use cases for them.

These are only exposed as intrinsics for now. If they turn out to be useful in practice, we can work towards stabilizing them.

r? @alexcrichton
2018-07-24 16:43:44 -06:00
bors 6a3db033ad Auto merge of #52597 - oli-obk:promotion_simplify, r=nagisa
Promoteds are statics and statics have a place, not just a value

r? @eddyb

This makes everything around promoteds a little simpler
2018-07-24 13:10:06 +00:00
alecmocatta 296a179b1c
break --subsystem=x into 2 args; closer to former presumably known-good incantation 2018-07-24 02:11:57 +01:00
alecmocatta 22d0ab0bc3
Pass multiple linker arguments rather than concatenate with commas; -l library -> -llibrary to work with apple's ld 2018-07-24 01:30:43 +01:00
ljedrz fe588d894f Replace a few expect+format combos with unwrap_or_else+panic 2018-07-23 14:47:13 +02:00
Oliver Schneider 2aab6af0fa Fix tidy 2018-07-23 09:51:30 +02:00
Oliver Schneider 62581b8f0d Explain promoted extraction for simd shuffle 2018-07-23 09:51:30 +02:00
Oliver Schneider de511438cd Promoteds are statics and statics have a place, not just a value 2018-07-23 09:51:30 +02:00
bors 210d61f05c Auto merge of #52571 - oli-obk:promotion_abort, r=nagisa
Abort if a promoted fails to be const evaluable and its runtime checks didn't trigger

r? @eddyb

cc @RalfJung @nagisa

cc https://github.com/rust-lang/rust/issues/49760
2018-07-23 03:06:08 +00:00
bors bf7afee52a Auto merge of #52438 - ljedrz:rustc_vec_capacity, r=eddyb
Calculate Vec capacities in librustc

Calculate the required capacity of a few vectors in rustc based on the number of elements they are populated with.
2018-07-21 00:55:46 +00:00
kennytm 7bf3578a39
Rollup merge of #52573 - oli-obk:cleanups, r=RalfJung
Cleanups

r? @RalfJung
2018-07-21 04:08:12 +08:00
kennytm 9a273a3d66
Rollup merge of #52505 - alexcrichton:remove-thinlto-hack, r=nikomatsakis
rustc: Remove a workaround in ThinLTO fixed upstream

This commit removes a hack in our ThinLTO passes which removes available
externally functions manually. The [upstream bug][1] has long since been fixed,
so we should be able to rely on LLVM natively for this now!

[1]: https://bugs.llvm.org/show_bug.cgi?id=35736
2018-07-21 04:08:06 +08:00
ljedrz e3d14c4c56 Refactor a few push loops to iterators in librustc 2018-07-20 21:57:12 +02:00
Oliver Schneider 7064f69c43 Abort instead of UB if promotion fails 2018-07-20 19:00:48 +02:00
Oliver Schneider c7d39e0c51 Remove unused method 2018-07-20 18:43:25 +02:00
Alex Crichton 829bc268a9 rustc: Remove a workaroudn in ThinLTO fixed upstream
This commit removes a hack in our ThinLTO passes which removes available
externally functions manually. The [upstream bug][1] has long since been fixed,
so we should be able to rely on LLVM natively for this now!

[1]: https://bugs.llvm.org/show_bug.cgi?id=35736
2018-07-18 11:37:56 -07:00