Commit graph

892 commits

Author SHA1 Message Date
Dylan DPC
238e8228d4
Rollup merge of #71401 - spastorino:remove-visit-place-base, r=wesleywiser
visit_place_base is just visit_local

r? @wesleywiser
2020-04-22 16:41:14 +02:00
bors
00f677d897 Auto merge of #71424 - Dylan-DPC:rollup-iunh61a, r=Dylan-DPC
Rollup of 6 pull requests

Successful merges:

 - #70970 (Detect mistyped associated consts in `Instance::resolve`.)
 - #71203 (Correct await span for async-await error reporting)
 - #71214 (Add error code for inner doc error)
 - #71337 (Moving all rustdoc-ui tests to check-pass)
 - #71412 (Clarify unused_doc_comments note on macro invocations)
 - #71414 (More diagnostic items for Clippy usage)

Failed merges:

r? @ghost
2020-04-22 11:14:23 +00:00
Dylan DPC
707004c552
Rollup merge of #70970 - eddyb:trait-vs-impl-mismatch, r=oli-obk
Detect mistyped associated consts in `Instance::resolve`.

*Based on #71049 to prevent redundant/misleading downstream errors.*

Fixes #70942 by refusing to resolve an associated `const` if it doesn't have the same type in the `impl` that it does in the `trait` (which we assume had errored, and `delay_span_bug` guards against bugs).
2020-04-22 12:18:31 +02:00
bors
4bfd62acb1 Auto merge of #71323 - nnethercote:bitcode-in-rlib, r=alexcrichton
Add `-Cbitcode-in-rlib`.

This is a cut-down version of #70458 that gets the compile-time wins.

r? @alexcrichton
2020-04-22 07:52:42 +00:00
Nicholas Nethercote
ae322ff651 Add a new option -Cbitcode-in-rlib.
It defaults to true, but Cargo will set this to false whenever it can to
reduce compile times.
2020-04-22 15:22:18 +10:00
Yuki Okushi
567e54fca5
Rollup merge of #71236 - sinkuu:cleanup, r=nikomatsakis
Remove unused rustc_serialize::hex module

* Remove unused `rustc_serialize::hex` module
* Cleanup `Cargo.toml`
2020-04-22 10:34:04 +09:00
Santiago Pastorino
15ecfe65a8
visit_place_base is just visit_local 2020-04-21 17:46:27 -03:00
bors
8ce3f840ae Auto merge of #70729 - nnethercote:a-big-options-clean-up, r=petrochenkov
A big options clean-up

Lots of improvements here.

r? @Centril
2020-04-20 12:30:45 +00:00
Shotaro Yamada
33905adc5f Remove unused dependencies 2020-04-20 17:59:27 +09:00
Josh Stone
7b005c5fcb Dogfood more or_patterns in the compiler 2020-04-19 07:33:58 -07:00
Nicholas Nethercote
58217bc996 Replace uses of parse_opt_* with parse_* where possible.
This lets us specify the default at the options declaration point,
instead of using `.unwrap(default)` or `None | Some(default)` at some
use point far away. It also makes the code more concise.
2020-04-19 19:53:54 +10:00
Eduard-Mihai Burtescu
289f46a7f5 Detect mistyped associated consts in Instance::resolve. 2020-04-18 18:39:59 +03:00
Dylan DPC
43cf9d791b
Rollup merge of #70467 - wesleywiser:invoke-vs-call, r=nagisa
Use `call` instead of `invoke` for functions that cannot unwind

The `FnAbi` now knows if the function is allowed to unwind. If a
function isn't allowed to unwind, we can use a `call` instead of an
`invoke`.

This resolves an issue when calling LLVM intrinsics which cannot unwind
LLVM will generate an error if you attempt to invoke them so we need to
ignore cleanup blocks in codegen and generate a call instead.

Fixes #69911

r? @eddyb
cc @rust-lang/wg-ffi-unwind
2020-04-17 23:55:56 +02:00
Eduard-Mihai Burtescu
d7c4081b18 mir/interpret: only use ErrorHandled::Reported for ErrorReported. 2020-04-16 19:00:30 +03:00
Dylan DPC
905a920313
Rollup merge of #71145 - pfmooney:illumos-triple, r=nagisa
Add illumos triple

This fixes rust-lang/rust#55553 and adds support for `illumos` as a `target_os` on `x86_64`.  In addition to the compile spec and libstd additions, several library dependencies have been bumped in order to permit working builds of cargo and rustup for the new target.

Work originally started by @jasonbking, with subsequent additions by @pfmooney and @jclulow.
2020-04-16 00:39:25 +02:00
Wesley Wiser
8da26e0366 Use call instead of invoke for functions that cannot unwind
The `FnAbi` now knows if the function is allowed to unwind. If a
function isn't allowed to unwind, we can use a `call` instead of an
`invoke`.

This resolves an issue when calling LLVM intrinsics which cannot unwind
LLVM will generate an error if you attempt to invoke them so we need to
ignore cleanup blocks in codegen and generate a call instead.
2020-04-15 05:45:21 -04:00
Patrick Mooney
b77aefb76e Add illumos triple
Co-Authored-By: Jason King <jason.brian.king@gmail.com>
Co-Authored-By: Joshua M. Clulow <jmc@oxide.computer>
2020-04-14 20:36:07 +00:00
Vadim Petrochenkov
cfe90ebfe3 linker: Pass /NODEFAULTLIB in a more regular way 2020-04-13 18:37:51 +03:00
Vadim Petrochenkov
3ad8c8858e rustc_target: Make sure lld-link is treated as link.exe by default
The differences if they are discovered will need to be explicitly documented
2020-04-13 18:37:51 +03:00
bors
378901d988 Auto merge of #71031 - Dylan-DPC:rollup-zr8hh86, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #70644 (Clean up `ModuleConfig` initialization)
 - #70937 (Fix staticlib name for *-pc-windows-gnu targets)
 - #70996 (Add or_insert_with_key to Entry of HashMap/BTreeMap)
 - #71020 (Store UNICODE_VERSION as a tuple)
 - #71021 (Use write!-style syntax for MIR assert terminator)

Failed merges:

r? @ghost
2020-04-11 21:19:28 +00:00
Dylan DPC
f9c0ea2862
Rollup merge of #70644 - nnethercote:clean-up-ModuleConfig-init, r=Mark-Simulacrum
Clean up `ModuleConfig` initialization

Because it's currently a mess.

r? @Mark-Simulacrum
2020-04-11 17:52:08 +02:00
bors
e82734e56b Auto merge of #70161 - cjgillot:query-arena, r=nikomatsakis
Allocate some query results on an arena

This avoids a cloning few `Lrc` and `Vec`s in the queries.
2020-04-11 15:31:54 +00:00
longfangsong
c728c75de7 fix rustc-dev-guide url in src/librustc_codegen_ssa 2020-04-10 22:48:34 +08:00
Mazdak Farrokhzad
cefee7bd9a
Rollup merge of #70868 - petrochenkov:linkorder, r=nagisa,mati865
rustc_codegen_ssa: Refactor construction of linker arguments

And add comments.

This PR doesn't reorder any linker arguments and therefore shouldn't contain any observable changes.

The next goal here is to
- Factor out order-independent linker arguments in the compiler code and in target specifications and pass them together. Such arguments generally apply to the whole linking session or the produced linking result rather to individual object files or libraries.
- Figure out where exactly among the remaining order-dependent arguments we should place customization points like `-C link-args` and `-Z pre-link-args`.
- Possibly provide command line opt-outs for options that are currently passed unconditionally (like CRT objects or arguments defined by the target spec).
- Document and stabilize the customization points that are not yet stable (https://github.com/rust-lang/rust/pull/70505).
2020-04-09 05:29:42 +02:00
Vadim Petrochenkov
5a4fa4554f linker: Some minor code cleanup 2020-04-07 02:41:41 +03:00
Linus Färnstrand
f7778d36c7 Use assoc integer constants in librustc_* 2020-04-07 00:43:16 +02:00
Vadim Petrochenkov
379c255eb9 linker: Factor out more parts of linker_with_args and add some docs 2020-04-07 01:41:18 +03:00
Vadim Petrochenkov
fd6fa686df linker: Add more markup and comments to code producing linker arguments 2020-04-07 01:36:59 +03:00
Vadim Petrochenkov
7f42d81ea4 linker: Factor out addition of pre-, post- and late link args 2020-04-07 01:35:09 +03:00
Vadim Petrochenkov
927db7d322 linker: Factor out linking of pre- and post-link objects 2020-04-07 01:28:49 +03:00
Vadim Petrochenkov
032462e06f linker: Combine argument building into a single function 2020-04-07 01:28:47 +03:00
Vadim Petrochenkov
ce25dabc66 linker: Make argument building interface in trait Linker richer
by redirecting everything to `Command`
2020-04-07 01:24:53 +03:00
Mazdak Farrokhzad
aafbe07af3
Rollup merge of #70665 - petrochenkov:linkargs, r=nagisa
Do not lose or reorder user-provided linker arguments

Linker arguments are potentially order-dependent, so the order in which `-C link-arg` and `-C link-args` options are passed to `rustc` should be preserved when they are passed further to the linker.

Also, multiple `-C link-args` options are now appended to each other rather than overwrite each other.

In other words, `-C link-arg=a -C link-args="b c" -C link-args="d e" -C link-arg=f` is now passed as `"a" "b" "c" "d" "e" "f"` and not as `"d" "e" "a" "f"`.

Addresses https://github.com/rust-lang/rust/pull/70505#issuecomment-606780163.
2020-04-06 00:53:43 +02:00
Camille GILLOT
5e1ad0d1e4 Remove Arcs in queries. 2020-04-05 15:21:08 +02:00
Linus Färnstrand
fcf45999f7 Stop importing int/float modules in librustc_* 2020-04-05 11:22:01 +02:00
Vadim Petrochenkov
13bd25e472 Do not lose or reorder user-provided linker arguments 2020-04-04 22:01:18 +03:00
Mazdak Farrokhzad
6daff1400a direct imports for langitem stuff 2020-04-02 13:40:43 +02:00
Mazdak Farrokhzad
86c0fca44b use direct import for ErrorReported 2020-04-02 13:40:43 +02:00
Mazdak Farrokhzad
124144704f nix rustc_target::abi::* reexport in ty::layout 2020-04-02 13:40:43 +02:00
Dylan DPC
1b40067ffc
Rollup merge of #70616 - anyska:fieldplacement-rename, r=oli-obk
rustc_target::abi: rename FieldPlacement to FieldsShape.

Originally suggested by @eddyb.
2020-04-01 22:25:18 +02:00
Nicholas Nethercote
5131c69dd6 Rename modules_config as regular_config.
That way it matches `ModuleKind::Regular`.
2020-04-01 17:40:32 +11:00
Nicholas Nethercote
72a28e85d7 Improve ModuleConfig initialization.
There are three `ModuleConfigs`, one for each `ModuleKind`. The code to
initialized them is spaghetti imperative code that sets each field to a
default value and then modifies many fields in complicated ways. This
makes it very hard to tell what value ends up in each field in each
config.

For example, the `modules_config.emit_pre_lto_bc` field is set twice,
which means it can be set to true and then incorrectly set back to
false. (This probably hasn't been noticed because it happens in a very
obscure case.)

This commit changes the code to a declarative style in which
`ModuleConfig::new` initializes all fields and then they are never
changed again. This is slightly more concise and much easier to read.
(And it fixes the abovementioned `emit_pre_lto_bc` error as well.)
2020-04-01 17:40:27 +11:00
Nicholas Nethercote
4c8bf5028f Remove some dead code.
The condition checks if `sess.opts.output_types` doesn't contain
`OutputType::Assembly` within a match arm that is only reached if
`sess.opts.output_types` contains `OutputType::Assembly`.
2020-04-01 17:11:56 +11:00
Santiago Pastorino
017608f5d2
Use Place directly in codegen_place_to_pointer, it's Copy 2020-03-31 17:37:55 -03:00
Santiago Pastorino
a865e779b0
Use Place directly in evaluate_array_len, it's Copy 2020-03-31 17:37:55 -03:00
Santiago Pastorino
1f5338cfd6
Use Place directly in codegen_transmute, it's Copy 2020-03-31 17:37:54 -03:00
Santiago Pastorino
5f8a6edbbb
Use Place directly on make_return_dest, it's Copy 2020-03-31 17:37:53 -03:00
Santiago Pastorino
afcd7fc51d
Use Place directly on codegen_drop_terminator, it's Copy 2020-03-31 17:37:52 -03:00
Ana-Maria Mihalache
f259470da3 rustc_target::abi: rename FieldPlacement to FieldsShape. 2020-03-31 13:44:52 +00:00
Mazdak Farrokhzad
1ccb0b4a02 rustc -> rustc_middle part 3 (rustfmt) 2020-03-30 07:19:55 +02:00