Commit Graph

103410 Commits

Author SHA1 Message Date
Eduard-Mihai Burtescu
902433b5bf rustc: take a PolyFnSig instead of an FnSig in FnAbi::of_fn_ptr. 2019-12-03 15:55:14 +02:00
Eduard-Mihai Burtescu
2b921d51d7 rustc: rename FnAbi::new to FnAbi::of_fn_ptr. 2019-12-03 15:41:56 +02:00
Eduard-Mihai Burtescu
052d0edbc1 rustc: compute FnAbi's for virtual calls through FnAbi::of_instance. 2019-12-03 15:41:56 +02:00
Eduard-Mihai Burtescu
39e50e2f28 rustc: use ReifyShim for reifying Virtual call instances. 2019-12-03 15:41:56 +02:00
Eduard-Mihai Burtescu
4b68afe257 rustc_codegen_ssa: use FnAbi::of_instance wherever possible. 2019-12-03 15:41:43 +02:00
Eduard-Mihai Burtescu
5b7d0f389f rustc_codegen_llvm: move NoReturn attribute to apply_attrs_llfn. 2019-12-03 15:28:18 +02:00
Eduard-Mihai Burtescu
95b944210f rustc_codegen_ssa: take a FnAbi instead of a FnSig in declare_fn. 2019-12-03 15:28:18 +02:00
Eduard-Mihai Burtescu
db477af9ad rustc_codegen_ssa: remove define_fn and define_internal_fn. 2019-12-03 15:28:18 +02:00
bors
f577b0ef6e Auto merge of #66982 - Centril:rollup-yq2281i, r=Centril
Rollup of 6 pull requests

Successful merges:

 - #66148 (Show the sign for signed ops on `exact_div`)
 - #66651 (Add `enclosing scope` parameter to `rustc_on_unimplemented`)
 - #66904 (Adding docs for keyword match, move)
 - #66935 (syntax: Unify macro and attribute arguments in AST)
 - #66941 (Remove `ord` lang item)
 - #66967 (Remove hack for top-level or-patterns in match checking)

Failed merges:

r? @ghost
2019-12-03 13:21:03 +00:00
Eduard-Mihai Burtescu
6a75768b33 rustc_codegen_ssa: clean up lifetimes on TerminatorCodegenHelper's methods. 2019-12-03 13:31:10 +02:00
Eduard-Mihai Burtescu
fce40a2256 rustc_codegen_ssa: make codegen_instance a simple wrapper for codegen_mir. 2019-12-03 13:31:03 +02:00
Eduard-Mihai Burtescu
a7094f7ce3 rustc_codegen_ssa: use &'tcx mir::Body<'tcx> instead of &'a ... for the MIR body. 2019-12-03 13:29:05 +02:00
Wesley Wiser
0be80f2909 [const-prop] Fix ICE calculating enum discriminant
Fixes #66787
2019-12-03 06:11:29 -05:00
Eduard-Mihai Burtescu
a57aea88d4 rustc: expose the mir::Body reference lifetime from mir::ReadOnlyBodyCache (#64736 fallout). 2019-12-03 13:04:28 +02:00
Eduard-Mihai Burtescu
4810cf1d1b rustc_mir: don't hardcode InstanceDef::VtableShim behavior to Adjustment::DerefMove. 2019-12-03 12:54:47 +02:00
Eduard-Mihai Burtescu
552ea447e4 rustc: combine Instance::fn_sig_noadjust and Instance::fn_sig. 2019-12-03 12:54:36 +02:00
Mazdak Farrokhzad
bce77980a2
Rollup merge of #66967 - Nadrieril:remove-or-pat-hack, r=varkor
Remove hack for top-level or-patterns in match checking

Follow-up to #66612.

Or-patterns are now truly first-class in match checking. As a side-effect, redundant subpatterns are linted as such, making the `unreachable_patterns` lint a bit more general.

cc #54883

r? @varkor
2019-12-03 11:07:08 +01:00
Mazdak Farrokhzad
1303bf2f3c
Rollup merge of #66941 - CAD97:nord, r=Dylan-DPC
Remove `ord` lang item

At this point it seems to be unused, and just `partial_ord` is used instead. This removes the unused lang item.
2019-12-03 11:07:07 +01:00
Mazdak Farrokhzad
cf937fa84d
Rollup merge of #66935 - petrochenkov:attrtok2, r=Centril
syntax: Unify macro and attribute arguments in AST

The unified form (`ast::MacArgs`) represents parsed arguments instead of an unstructured token stream that was previously used for attributes.
It also tracks some spans and delimiter kinds better for fn-like macros and macro definitions.

I've been talking about implementing this with @nnethercote in https://github.com/rust-lang/rust/pull/65750#issuecomment-546517322.
The parsed representation is closer to `MetaItem` and requires less token juggling during conversions, so it potentially may be faster.

r? @Centril
2019-12-03 11:07:05 +01:00
Mazdak Farrokhzad
01345d65c1
Rollup merge of #66904 - DevinR528:keyword-doc, r=Dylan-DPC
Adding docs for keyword match, move

Partial fix of issue #34601.
2019-12-03 11:07:04 +01:00
Mazdak Farrokhzad
8dacfc2ada
Rollup merge of #66651 - Areredify:on-unimplemented-scope, r=davidtwco
Add `enclosing scope` parameter to `rustc_on_unimplemented`

Adds a new parameter to `#[rustc_on_unimplemented]`, `enclosing scope`, which highlights the function or closure scope with a message.

The wip part refers to adding this annotation to `Try` trait to improve ergonomics (which I don't know how to do since I change both std and librustc)

Closes #61709.
2019-12-03 11:07:01 +01:00
Mazdak Farrokhzad
3045d22263
Rollup merge of #66148 - oli-obk:it_must_be_a_sign, r=RalfJung
Show the sign for signed ops on `exact_div`

r? @RalfJung Cc https://github.com/rust-lang/miri/pull/961/files#r341842128

I'm fairly unhappy with the duplication and the general effort required for this.

Maybe it would be better to add a `display` impl for `ImmTy`?
2019-12-03 11:06:57 +01:00
bors
7d808659cd Auto merge of #66947 - matthiaskrgr:submodule_upd, r=oli-obk
submodules: update clippy from 7b8e8293 to 45196cee

Changes:
````
account for external macro in MISSING_INLINE_IN_PUBLIC_ITEMS lint
build(tests/fmt): use shared target dir
chore: fix and split some ui tests on 32bit system
build: set up build job for i686 targets
remove needless my_lint ui test
git quiet
deploy: cd to out/ before adding files to git
Less needless_doctest_main false positives
fmt
Feed the dog
Use rustc_env instead of exec_env for test
Make triggering this lint less likely 📎
Use exec_env to set backtrace level and normalize output
Update custom ICE function with latest rustc
Use Clippy version in ICE message
Add custom ICE message that points to Clippy repo
Fix master deployment
Run update_lints
Add projections check to EUV for escape analysis
Use infer_ctxt
Move use_self to nursery
Use `println!` on success instead of `eprintln!`
Revert "Disable chalk integration test. Output too large"
Remove the old integration-tests.sh script
Use rust implementation for integration tests in CI
Rust implementation of integration test
Don't error on clippy.toml of dependencies
Fix categorizations
Fix arguments on ExprUseVisitor::new
euv moved from middle to typeck
cmt_ -> Place
build: check if RTIM is not installed
make use of Result::map_or
trigger string_lit_as_bytes when literal has escapes
Remove negative float literal checks.
Enable deny-warnings feature everywhere in CI
Remove unused debugging feature
implemented `as_conversions` lint
fixing a typo
[comparison_chain] #4827 Check `core::cmp::Ord` is implemented
add a good example for the approx_const lint
Add suggested good cases in docs for lifetimes lint
````
Fixes #66840
2019-12-03 09:51:07 +00:00
Oliver Scherer
e2bbf0647a Explain why "loading" constness from extern crates does not necessarily load anything 2019-12-03 10:20:15 +01:00
Oliver Scherer
d9cca74ffc const fns can read constants that invoke unstable const fns 2019-12-03 10:20:15 +01:00
Oliver Scherer
1f20b4dc19 Explain the difference between the two whitelists 2019-12-03 10:20:15 +01:00
Oliver Scherer
cc5b3578f1 Tidy 2019-12-03 10:20:15 +01:00
Oliver Scherer
46c00a21e1 Move all intrinsic whitelists into the constness check file 2019-12-03 10:20:15 +01:00
Oliver Scherer
52be0b07ae Only check min_const_fn for const fns 2019-12-03 10:20:15 +01:00
Mahmut Bulut
f1bacb2dca Check intrinsics for callability in const fns 2019-12-03 10:20:15 +01:00
Parth Sane
54b206034f Change linker for x86_64-fortanix-unknown-sgx to rust-lld
For SGX, the relocation using the relocation table is done by
the code in rust/src/libstd/sys/sgx/abi/reloc.rs and this code
should not require relocation. Setting RelaxELFRelocations flag
if allows this to happen, hence adding a Target Option for it.
2019-12-03 14:44:14 +05:30
bors
4787e97475 Auto merge of #66256 - CAD97:patch-2, r=RalfJung
Layout::pad_to_align is infallible

As per [this comment](https://github.com/rust-lang/rust/issues/55724#issuecomment-441421651) (cc @glandium).

> Per https://github.com/rust-lang/rust/blob/eb981a1/src/libcore/alloc.rs#L63-L65, `layout.size()` is always <= `usize::MAX - (layout.align() - 1)`.
>
> Which means:
>
> * The maximum value `layout.size()` can have is already aligned for `layout.align()` (`layout.align()` being a power of two, `usize::MAX - (layout.align() - 1)` is a multiple of `layout.align()`)
> * Incidentally, any value smaller than that maximum value will align at most to that maximum value.
>
> IOW, `pad_to_align` can not return `Err(LayoutErr)`, except for the layout not respecting its invariants, but we shouldn't care about that.

This PR makes `pad_to_align` return `Layout` directly, representing the fact that it cannot fail.
2019-12-03 01:50:33 +00:00
Matthias Krüger
f77104b424 submodules: update clippy from 7b8e8293 to 7a943a9d
Changes:
````
Normalize custom ICE test
Rustup to rust-lang/rust#64736
Use assert_crate_local for a more explicit error
Rustup to https://github.com/rust-lang/rust/pull/66789
account for external macro in MISSING_INLINE_IN_PUBLIC_ITEMS lint
build(tests/fmt): use shared target dir
chore: fix and split some ui tests on 32bit system
build: set up build job for i686 targets
remove needless my_lint ui test
git quiet
deploy: cd to out/ before adding files to git
Less needless_doctest_main false positives
fmt
Feed the dog
Use rustc_env instead of exec_env for test
Make triggering this lint less likely 📎
Use exec_env to set backtrace level and normalize output
Update custom ICE function with latest rustc
Use Clippy version in ICE message
Add custom ICE message that points to Clippy repo
Fix master deployment
Run update_lints
Add projections check to EUV for escape analysis
Use infer_ctxt
Move use_self to nursery
Use `println!` on success instead of `eprintln!`
Revert "Disable chalk integration test. Output too large"
Remove the old integration-tests.sh script
Use rust implementation for integration tests in CI
Rust implementation of integration test
Don't error on clippy.toml of dependencies
Fix categorizations
Fix arguments on ExprUseVisitor::new
euv moved from middle to typeck
cmt_ -> Place
build: check if RTIM is not installed
make use of Result::map_or
trigger string_lit_as_bytes when literal has escapes
Remove negative float literal checks.
Enable deny-warnings feature everywhere in CI
Remove unused debugging feature
implemented `as_conversions` lint
fixing a typo
[comparison_chain] #4827 Check `core::cmp::Ord` is implemented
add a good example for the approx_const lint
Add suggested good cases in docs for lifetimes lint
````
2019-12-02 23:26:50 +01:00
Josh Stone
2304c25f31 Update the minimum external LLVM to 7
LLVM 7 is over a year old, which should be plenty for compatibility. The
last LLVM 6 holdout was llvm-emscripten, which went away in #65501.

I've also included a fix for LLVM 8 lacking `MemorySanitizerOptions`,
which was broken by #66522.
2019-12-02 11:36:21 -08:00
Vadim Petrochenkov
498737c8e9 Address review comments 2019-12-02 22:13:13 +03:00
Vadim Petrochenkov
cf71538094 syntax: Optimize conversion AttrItem -> MetaItem by avoiding outer_tokens. 2019-12-02 21:56:34 +03:00
Vadim Petrochenkov
537895535d syntax: Use ast::MacArgs for macro definitions 2019-12-02 21:56:34 +03:00
Vadim Petrochenkov
1a496f3379 syntax: Use ast::MacArgs for attributes 2019-12-02 21:56:34 +03:00
Vadim Petrochenkov
0fac56717a syntax: Remove redundant span from ast::Mac
Also remove a couple of redundant `visit_mac` asserts
2019-12-02 21:56:34 +03:00
Vadim Petrochenkov
a81804b4d5 syntax: Introduce a struct MacArgs for macro arguments 2019-12-02 21:56:34 +03:00
Nadrieril
1c1bec2f6d Remove top-level or-pattern hack 2019-12-02 16:03:03 +00:00
Nadrieril
ef087d96f0 Move recently changed tests to the correct file 2019-12-02 16:03:03 +00:00
Nadrieril
a476af22e8 Correct error on partially unreachable or-pat in if let 2019-12-02 16:03:03 +00:00
Nadrieril
5c7bd52a78 Lint for redundant branches in or-patterns 2019-12-02 16:03:00 +00:00
Nadrieril
00ccadf43f Add some tests 2019-12-02 16:00:24 +00:00
Nadrieril
e6aa96246f Simplify lifetimes by allocating patterns on the arena
We want the lifetimes of the patterns contained in the matrix and the
candidate `PatStack` to be the same so that they can be mixed together.
A lot of this would not be necessary if `SmallVec` was covariant in its
type argument (see https://github.com/servo/rust-smallvec/issues/146).
2019-12-02 16:00:24 +00:00
Nadrieril
21af89d773 UsefulWithWitness always carries some witnesses 2019-12-02 16:00:24 +00:00
Nadrieril
fe67196679 Don't build the same matrix twice
The exact same logic was used in check_arms and check_match to build the
matrix of relevant patterns. It would actually probably have been a bug
if it was not the case, since exhaustiveness checking should be the same
as checking reachability of an additional `_ => ...` match branch.
2019-12-02 16:00:12 +00:00
bors
fdc0011561 Auto merge of #64736 - Nashenas88:mir_predecessors_cache_cleanup, r=oli-obk
Remove interior mutability in mir predecessors cache
2019-12-02 14:51:02 +00:00
Paul Daniel Faria
3eaad564d2 Fix issues caused during rebasing 2019-12-02 09:40:03 -05:00