Commit graph

236 commits

Author SHA1 Message Date
Mazdak Farrokhzad
917289907d normalize some imports, prefer direct ones. 2020-03-24 22:47:23 +01:00
Mazdak Farrokhzad
bee074f032
Rollup merge of #69968 - eddyb:tupled-closure-captures, r=nikomatsakis
rustc: keep upvars tupled in {Closure,Generator}Substs.

Previously, each closure/generator capture's (aka "upvar") type was tracked as one "synthetic" type parameter in the closure/generator substs, and figuring out where the parent `fn`'s generics end and the synthetics start involved slicing at `tcx.generics_of(def_id).parent_count`.

Needing to query `generics_of` limited @davidtwco (who wants to compute some `TypeFlags` differently for parent generics vs upvars, and `TyCtxt` is not available there), which is how I got started on this, but it's also possible that the `generics_of` queries are slowing down `{Closure,Generator}Substs` methods.

To give an example, for a `foo::<T, U>::{closure#0}` with captures `x: X` and `y: Y`, substs are:
* before this PR: `[T, U, /*kind*/, /*signature*/, X, Y]`
* after this PR: `[T, U, /*kind*/, /*signature*/, (X, Y)]`

You can see that, with this PR, no matter how many captures, the last 3 entries in the substs (or 5 for a generator) are always the "synthetic" ones, with the last one being the tuple of capture types.

r? @nikomatsakis cc @Zoxc
2020-03-23 10:29:11 +01:00
Mazdak Farrokhzad
61a56fbe00
Rollup merge of #69940 - tmiasko:llvm-api, r=hanna-kruppe
librustc_codegen_llvm: Replace deprecated API usage
2020-03-23 10:29:07 +01:00
Eduard-Mihai Burtescu
d6f4a2fbf9 rustc_codegen_llvm: don't generate static and vtable debuginfo for -Cdebuginfo=1. 2020-03-23 02:36:36 +02:00
Eduard-Mihai Burtescu
c923f045ce rustc_codegen_llvm: don't generate Self type debuginfo for methods for -Cdebuginfo=1. 2020-03-23 02:36:35 +02:00
Eduard-Mihai Burtescu
7023948400 rustc_codegen_llvm: don't generate "lexical block" scopes for -Cdebuginfo=1. 2020-03-23 02:36:35 +02:00
Eduard-Mihai Burtescu
10f08abd2e rustc: keep upvars tupled in {Closure,Generator}Substs. 2020-03-21 14:23:50 +02:00
Matthias Krüger
ad00e91887 remove redundant returns (clippy::needless_return) 2020-03-20 20:23:03 +01:00
Mazdak Farrokhzad
4392a8b73c use direct imports for rustc::{lint, session}. 2020-03-16 02:52:06 +01:00
Dylan DPC
62c0579116
Rollup merge of #69357 - tmiasko:debuginfo-column, r=michaelwoerister
Emit 1-based column numbers in debuginfo

* Use byte offsets instead of char position offsets. Resolves #67360.
* Use 1-based offsets instead of 0-based ones. Resolves #65437.
* Consistently omit column information for msvc targets, matching clang behaviour (previously columns have been omitted from `DILocation`, but not from `DILexicalBlock`).
2020-03-15 02:44:13 +01:00
Tomasz Miąsko
24dc2cb133 librustc_codegen_llvm: Replace deprecated API usage 2020-03-11 23:56:41 +01:00
Tomasz Miąsko
e54a829b57 Avoid unnecessary interning of enum variant part id 2020-03-09 02:05:22 +01:00
Tomasz Miąsko
58303b77e0 Use slices in preference to 0-terminated strings
Additionally whenever possible match C API provided by the LLVM.
2020-03-09 02:05:22 +01:00
Mazdak Farrokhzad
e2617a98c0
Rollup merge of #69734 - tmiasko:di-enumerator, r=ecstatic-morse
Change DIBuilderCreateEnumerator signature to match LLVM 9

* Change DIBuilderCreateEnumerator signature to match LLVM 9 C API.
* Use provided is unsigned flag when emitting enumerators.
2020-03-08 20:54:31 +01:00
Mazdak Farrokhzad
10f999b72d
Rollup merge of #69773 - matthiaskrgr:typos, r=petrochenkov
fix various typos
2020-03-07 17:27:32 +01:00
Matthias Krüger
136ad015b6 fix various typos 2020-03-06 15:19:31 +01:00
Tomasz Miąsko
30650f867b debuginfo: Use is unsigned flag when emitting enumerators 2020-03-05 20:13:01 +01:00
Tomasz Miąsko
ebd941b890 debuginfo: Generators use u32 as discriminant type repr 2020-03-05 20:13:01 +01:00
Tomasz Miąsko
e54a16cffc Change DIBuilderCreateEnumerator signature to match LLVM 9
No functional changes intended.
2020-03-05 15:34:50 +01:00
Yuki Okushi
321d90e1d6 Remove the no_debug feature 2020-03-03 18:22:05 +09:00
Dylan DPC
87284d7e79
Rollup merge of #69569 - matthiaskrgr:nonminimal_bool, r=mark-Simulacrum
simplify boolean expressions
2020-03-01 17:23:30 +01:00
Vadim Petrochenkov
e08c279eac Rename syntax to rustc_ast in source code 2020-02-29 21:59:09 +03:00
Matthias Krüger
56a3da3bd0 simplify boolean expressions 2020-02-29 11:36:18 +01:00
Tomasz Miąsko
0c51f2f5a5 Use byte offsets when emitting debuginfo columns 2020-02-26 21:45:34 +01:00
Tomasz Miąsko
e1a5472508 Emit 1-based column numbers in debuginfo
The debuginfo column numbers are 1-based. The value 0 indicates that no
column has been specified. Translate 0-based column numbers to 1-based
when emitting debug information.
2020-02-26 21:45:34 +01:00
Jonas Schievink
0e23d3681e
Rollup merge of #68881 - eddyb:always-preserve-dbg-vars, r=nagisa
rustc_codegen_llvm: always set AlwaysPreserve on all debuginfo variables

Making this depend on the optimization level appears to have been a copy-paste mistake (other LLVM functions called in this module also take a `bool` argument, but there it means something unrelated).
Also see https://github.com/rust-lang/rust/pull/8855#discussion_r374392128.

I don't believe we have any reason to let LLVM omit user variables from DWARF, and we were already setting this to `true` when LLVM *could* optimize them away, so this PR should have no effect anyway.

r? @michaelwoerister or @nagisa cc @hanna-kruppe @nikomatsakis
2020-02-09 18:23:31 +01:00
Eduard-Mihai Burtescu
bdb72e7b5a rustc_codegen_ssa: remove unnecessary source_locations_enabled. 2020-02-08 18:27:49 +02:00
Eduard-Mihai Burtescu
1385fc4c40 rustc_codegen_llvm: remove InternalDebugLocation and simplify dbg_var_addr. 2020-02-08 18:07:44 +02:00
Eduard-Mihai Burtescu
d6ccbf6ff8 rustc_codegen_llvm: remove unnecessary special-casing of root scopes' children. 2020-02-08 17:58:00 +02:00
Eduard-Mihai Burtescu
b82f6c575e rustc_codegen_llvm: always set AlwaysPreserve on all debuginfo variables. 2020-02-06 11:04:46 +02:00
Eduard-Mihai Burtescu
e35dfad5b8 rustc_codegen_llvm: avoid redundant calls to span_start. 2020-02-03 12:14:22 +02:00
Eduard-Mihai Burtescu
0b633c82f0 rustc_codegen_ssa: split declare_local into create_dbg_var and dbg_var_addr. 2020-02-03 12:14:21 +02:00
Santiago Pastorino
5d9b399044 Remove PlaceBase enum and make Place base field be local: Local 2020-01-10 09:08:25 +01:00
bors
ebbb2bf37a Auto merge of #67886 - Centril:rustc_hir_canon_imports, r=nagisa
Nix `rustc_hir` reexports in rustc::hir

r? @Zoxc cc @Mark-Simulacrum
2020-01-06 12:55:40 +00:00
Aaron Hill
33caf0b61f
Rename Instance.ty to Instance.monomorphic_ty 2020-01-05 14:59:40 -05:00
Mazdak Farrokhzad
ebfd8673a7 Remove rustc_hir reexports in rustc::hir. 2020-01-05 12:49:22 +01:00
Mazdak Farrokhzad
ca297f8cf4 DefId{Map,Set} -> rustc::hir::def_id 2020-01-04 19:01:42 +01:00
Mazdak Farrokhzad
7901c7f707 canonicalize FxHash{Map,Set} imports 2020-01-04 18:57:22 +01:00
Mazdak Farrokhzad
66f5bf1b8b extract rustc::middle::codegen_fn_attrs 2020-01-04 18:43:06 +01:00
Mazdak Farrokhzad
4ff12ce4c1 Normalize syntax::symbol imports. 2020-01-02 13:57:04 +01:00
Vadim Petrochenkov
70f1d57048 Rename syntax_pos to rustc_span in source code 2020-01-01 09:15:18 +03:00
Mark Rousskov
6891388e66 x.py fmt after previous deignore 2019-12-24 17:38:22 -05:00
Mark Rousskov
a06baa56b9 Format the world 2019-12-22 17:42:47 -05:00
Alex Crichton
7f23e6e8d7
rustc: Link LLVM directly into rustc again
This commit builds on #65501 continue to simplify the build system and
compiler now that we no longer have multiple LLVM backends to ship by
default. Here this switches the compiler back to what it once was long
long ago, which is linking LLVM directly to the compiler rather than
dynamically loading it at runtime. The `codegen-backends` directory of
the sysroot no longer exists and all relevant support in the build
system is removed. Note that `rustc` still supports a dynamically loaded
codegen backend as it did previously, it just no longer supports
dynamically loaded codegen backends in its own sysroot.

Additionally as part of this the `librustc_codegen_llvm` crate now once
again explicitly depends on all of its crates instead of implicitly
loading them through the sysroot. This involved filling out its
`Cargo.toml` and deleting all the now-unnecessary `extern crate`
annotations in the header of the crate. (this in turn required adding a
number of imports for names of macros too).

The end results of this change are:

* Rustbuild's build process for the compiler as all the "oh don't forget
  the codegen backend" checks can be easily removed.
* Building `rustc_codegen_llvm` is much simpler since it's simply
  another compiler crate.
* Managing the dependencies of `rustc_codegen_llvm` is much simpler since
  it's "just another `Cargo.toml` to edit"
* The build process should be a smidge faster because there's more
  parallelism in the main rustc build step rather than splitting
  `librustc_codegen_llvm` out to its own step.
* The compiler is expected to be slightly faster by default because the
  codegen backend does not need to be dynamically loaded.
* Disabling LLVM as part of rustbuild is still supported, supporting
  multiple codegen backends is still supported, and dynamic loading of a
  codegen backend is still supported.
2019-12-11 09:50:11 -05:00
Josh Stone
16d21783d6 Migrate to LLVM{Get,Set}ValueName2
The deprecated `LLVM{Get,Set}ValueName` only work with NUL-terminated
strings, but the `2` variants use explicit lengths, which fits better
with Rust strings and slices. We now use these in new helper functions
`llvm::{get,set}_value_name` that convert to/from `&[u8]`.
2019-12-04 12:00:28 -08:00
Eduard-Mihai Burtescu
8a8749b297 rustc_codegen_llvm: rewrite debuginfo::get_function_signature to use FnAbi. 2019-12-03 15:55:20 +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
563ed27c01 rustc: move debug info from LocalDecl and UpvarDecl into a dedicated VarDebugInfo. 2019-11-27 19:22:03 +02:00
Alexander Regueiro
1b2de17647 Applied suggestions from code review. 2019-11-21 18:50:40 +00:00
Alexander Regueiro
51cb60cd3f Aggregation of drive-by cosmetic changes. 2019-11-21 18:50:38 +00:00