bors
a12d31d5a6
Auto merge of #102963 - ilammy:xray-basic, r=estebank
...
Add `-Z instrument-xray` flag
Implement MCP https://github.com/rust-lang/compiler-team/issues/561 , adding `-Z instrument-xray` flag which enables XRay instrumentation in LLVM.
2023-02-10 00:02:43 +00:00
Matthias Krüger
a621769881
Rollup merge of #107752 - riverar:rafael/gnu_dlltool_temp_prefix, r=petrochenkov
...
Specify dlltool prefix when generating import libs
Ref: https://github.com/rust-lang/rust/pull/106610#issuecomment-1418221274
tl;dr: This PR adds an explicit dlltool temporary filename prefix. The prefix resolves a race condition by ensuring dlltool temporary files are siloed in an appropriate/unique Rust temporary directory.
---
GNU dlltool, as part of its import library generation logic, uses a bunch of temporary files on disk. In the interest of deterministic build runs, dlltool supports deterministic temporary filenames. The temporary filename prefix is automatically generated internally or can be explicitly specified via a `--temp-prefix` argument.
GNU dlltool **2.38** (that ships with `x86_64-12.2.0-release-posix-seh-rt_v10-rev0` [installed during CI](https://github.com/rust-lang/rust/blob/master/src/ci/scripts/install-mingw.sh )) generates a prefix based on the target library name ([source](https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=binutils/dlltool.c;h=d95bf3f5470b999fa3b30bc887791859f48d81d1;hb=20756b0fbe065a84710aa38f2457563b57546440#l3992 )). The tool writes to files such as `target_dll_h.s` and `target_dll_s00203.o` in the current working directory.
This presents a problem when multiple instances of rustc_codegen_llvm are running to generate an import library (as part of the raw_dylib feature) for the same target library (e.g. kernel32) ([source](https://github.com/rust-lang/rust/blob/master/compiler/rustc_codegen_llvm/src/back/archive.rs#L185-L196 )). That is, dlltool instances race and may overwrite or delete files belonging to each other.
GNU dlltool **2.39**+ (not used in Rust CI) generates a prefix based on the output library path ([source](https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=binutils/dlltool.c;h=e2af20847009945b4c61a6fef08268fbb4429715;hb=b51c2fec1da205ea3e7354cbb3e253018d64873c#l3992 )). The tool, when invoked as part of rustc_codegen_llvm, writes to files at paths such as `C_Users_Foo_AppData_Local_Temp_rustcOFqhXZ_target_lib_h.s`. (The output library path is normalized and non-alphanumeric characters are replaced with underscores.)
2023-02-09 11:21:58 +01:00
Oleksii Lozovskyi
bac15db1d0
Emit basic XRay instrumentation attributes
...
Add the attributes to functions according to the settings.
"xray-always" overrides "xray-never", and they both override
"xray-ignore-loops" and "xray-instruction-threshold", but we'll
let lints deal with warnings about silly attribute combinations.
2023-02-09 12:28:00 +09:00
Oleksii Lozovskyi
b3cadd2dcf
Allow multiple instrumentation attributes
...
Four because that's the new reasonable maximum for XRay instrumentation
attributes in the following commit.
2023-02-09 12:28:00 +09:00
Rafael Rivera
c825e08571
Specify dlltool prefix when generating import libs
2023-02-06 21:17:06 -08:00
klensy
4f5f9f0a13
remove unused imports
2023-02-06 17:40:18 +03:00
Guillaume Gomez
c6a104f3e4
Rollup merge of #107412 - tshepang:needless-check, r=wesleywiser
...
avoid needless checks
2023-01-31 23:38:51 +01:00
David Wood
2575b1abc9
session: diagnostic migration lint on more fns
...
Apply the diagnostic migration lint to more functions on `Session`.
Signed-off-by: David Wood <david.wood@huawei.com >
2023-01-30 17:11:35 +00:00
Tshepang Mbambo
5251769c9e
make more pleasant to read
2023-01-28 16:35:07 +02:00
Tshepang Mbambo
a8418c0370
avoid needless checks
2023-01-28 16:33:35 +02:00
bors
226b2496fc
Auto merge of #107400 - matthiaskrgr:rollup-l6bycds, r=matthiaskrgr
...
Rollup of 8 pull requests
Successful merges:
- #107022 (Implement `SpecOptionPartialEq` for `cmp::Ordering`)
- #107100 (Use proper `InferCtxt` when probing for associated types in astconv)
- #107103 (Use new solver in `evaluate_obligation` query (when new solver is enabled))
- #107190 (Recover from more const arguments that are not wrapped in curly braces)
- #107306 (Correct suggestions for closure arguments that need a borrow)
- #107339 (internally change regions to be covariant)
- #107344 (Minor tweaks in the new solver)
- #107373 (Don't merge vtables when full debuginfo is enabled.)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2023-01-28 06:46:42 +00:00
Matthias Krüger
c89bb159f6
Rollup merge of #107373 - michaelwoerister:dont-merge-vtables-when-debuginfo, r=WaffleLapkin
...
Don't merge vtables when full debuginfo is enabled.
This PR makes the compiler not emit the `unnamed_addr` attribute for vtables when full debuginfo is enabled, so that they don't get merged even if they have the same contents. This allows debuggers to more reliably map from a dyn pointer to the self-type of a trait object by looking at the vtable's debuginfo.
The PR only changes the behavior of the LLVM backend as other backends don't emit vtable debuginfo (as far as I can tell).
The performance impact of this change should be small as [measured](https://github.com/rust-lang/rust/pull/103514#issuecomment-1290833854 ) in a previous PR.
2023-01-28 05:20:19 +01:00
bors
252741673b
Auto merge of #107360 - bjorn3:fix_thin_archive_reading, r=wesleywiser
...
Fix thin archive reading
This includes a revert of https://github.com/rust-lang/rust/pull/105221 to restore fat archive reading with LlvmArchiveBuilder.
Should fix #107162 , #107334 and https://github.com/google/shaderc-rs/issues/133
2023-01-28 04:02:25 +00:00
bors
ef982929c0
Auto merge of #107372 - JohnTitor:rollup-zkl2ges, r=JohnTitor
...
Rollup of 9 pull requests
Successful merges:
- #106806 (Replace format flags u32 by enums and bools.)
- #107194 (Remove dependency on slice_internals feature in rustc_ast)
- #107234 (Revisit fix_is_ci_llvm_available logic)
- #107316 (Update snap from `1.0.1` to `1.1.0`)
- #107321 (solver comments + remove `TyCtxt::evaluate_goal`)
- #107332 (Fix wording from `rustbuild` to `bootstrap`)
- #107347 (reduce rightward-drift)
- #107352 (compiler: Fix E0587 explanation)
- #107357 (Fix infinite loop in rustdoc get_all_import_attributes function)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2023-01-27 17:49:56 +00:00
Michael Woerister
e5995e6168
Don't merge vtables when full debuginfo is enabled.
2023-01-27 15:29:04 +00:00
bjorn3
de363d54c4
Revert back to LlvmArchiveBuilder on all platforms
...
ArArchiveBuilder doesn't support reading thin archives, causing a
regression.
2023-01-27 11:48:36 +00:00
bjorn3
2cf101c3e7
Revert "Remove macOS fat archive support from LlvmArchiveBuilder"
...
This reverts commit 047c7cc60c .
2023-01-27 11:46:27 +00:00
Tshepang Mbambo
cce452d8c8
reduce rightward-drift
2023-01-27 07:52:44 +02:00
Kyle Matsuda
c2414dfaa4
change fn_sig query to use EarlyBinder; remove bound_fn_sig query; add EarlyBinder to fn_sig in metadata
2023-01-26 20:28:25 -07:00
Kyle Matsuda
e982971ff2
replace usages of fn_sig query with bound_fn_sig
2023-01-26 20:15:36 -07:00
bors
40fda7b3fe
Auto merge of #107318 - matthiaskrgr:rollup-776kd81, r=matthiaskrgr
...
Rollup of 9 pull requests
Successful merges:
- #97373 (impl DispatchFromDyn for Cell and UnsafeCell)
- #106625 (Remove backwards compat for LLVM 12 coverage format)
- #106779 (Avoid __cxa_thread_atexit_impl on Emscripten)
- #106811 (Append .dwp to the binary filename instead of replacing the existing extension.)
- #106836 (Remove optimistic spinning from `mpsc::SyncSender`)
- #106946 (implement Hash for proc_macro::LineColumn)
- #107074 (remove unnecessary check for opaque types)
- #107287 (Improve fn pointer notes)
- #107304 (Use `can_eq` to compare types for default assoc type error)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2023-01-26 09:14:05 +00:00
Matthias Krüger
b2448f9f9c
Rollup merge of #106625 - Swatinem:ref/cov6, r=nagisa
...
Remove backwards compat for LLVM 12 coverage format
The minimum external LLVM was updated to 13 recently in https://github.com/rust-lang/rust/pull/100611 , so this PR removes backwards compat with older coverage formats.
I kept the version check and error message there, in accordance with this comment: https://github.com/rust-lang/rust/pull/91207#issuecomment-981121867
2023-01-26 07:53:22 +01:00
Erik Desjardins
adc1890448
create and use GlobalAlloc::address_space
2023-01-25 01:46:19 -05:00
Erik Desjardins
009192b01b
abi: add AddressSpace field to Primitive::Pointer
...
...and remove it from `PointeeInfo`, which isn't meant for this.
There are still various places (marked with FIXMEs) that assume all pointers
have the same size and alignment. Fixing this requires parsing non-default
address spaces in the data layout string, which will be done in a followup.
2023-01-22 23:41:39 -05:00
Michael Woerister
8a1de57a4a
Use UnordSet instead of FxHashSet in define_id_collections!().
2023-01-19 10:19:07 +01:00
bors
65d2f2a5f9
Auto merge of #106810 - oli-obk:resolver_reverse_plumbing, r=petrochenkov
...
Various cleanups around pre-TyCtxt queries and functions
part of #105462
based on https://github.com/rust-lang/rust/pull/106776 (everything starting at [0e2b39f](https://github.com/rust-lang/rust/pull/106810/commits/0e2b39fd1ffde51b50d45ccbe41de52b85136b8b ) is new in this PR)
r? `@petrochenkov`
I think this should be most of the uncontroversial part of #105462 .
2023-01-19 05:23:40 +00:00
bors
edefa4189f
Auto merge of #106998 - matthiaskrgr:rollup-hmfisji, r=matthiaskrgr
...
Rollup of 7 pull requests
Successful merges:
- #104505 (Remove double spaces after dots in comments)
- #106784 (prevent E0512 from emitting [type error] by checking the references_error)
- #106834 (new trait solver: only consider goal changed if response is not identity)
- #106889 (Mention the lack of `windows_mut` in `windows`)
- #106963 (Use `scope_expr_id` from `ProbeCtxt`)
- #106970 (Switch to `EarlyBinder` for `item_bounds` query)
- #106980 (Hide `_use_mk_alias_ty_instead` in `<AliasTy as Debug>::fmt`)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2023-01-17 20:53:05 +00:00
Matthias Krüger
68f12338af
Rollup merge of #104505 - WaffleLapkin:no-double-spaces-in-comments, r=jackh726
...
Remove double spaces after dots in comments
Most of the comments do not have double spaces, so I assume these are typos.
2023-01-17 20:21:25 +01:00
Maybe Waffle
6a28fb42a8
Remove double spaces after dots in comments
2023-01-17 08:09:33 +00:00
Nilstrieb
645c0fddd2
Put noundef on all scalars that don't allow uninit
...
Previously, it was only put on scalars with range validity invariants
like bool, was uninit was obviously invalid for those.
Since then, we have normatively declared all uninit primitives to be
undefined behavior and can therefore put `noundef` on them.
The remaining concern was the `mem::uninitialized` function, which cause
quite a lot of UB in the older parts of the ecosystem. This function now
doesn't return uninit values anymore, making users of it safe from this
change.
The only real sources of UB where people could encounter uninit
primitives are `MaybeUninit::uninit().assume_init()`, which has always
be clear in the docs about being UB and from heap allocations (like
reading from the spare capacity of a vec. This is hopefully rare enough
to not break anything.
2023-01-17 08:14:35 +01:00
Oli Scherer
9f5cd03153
Move compiler input and ouput paths into session
2023-01-16 14:46:44 +00:00
bors
44a500c8c1
Auto merge of #106646 - Amanieu:ilp32-object, r=Mark-Simulacrum
...
Fix aarch64-unknown-linux-gnu_ilp32 target
This was broken because the synthetic object files produced by rustc were for 64-bit AArch64, which caused link failures when combined with 32-bit ILP32 object files.
This PR updates the object crate to 0.30.1 which adds support for generating ILP32 AArch64 object files.
2023-01-14 08:33:09 +00:00
Amanieu d'Antras
a529ba8f67
Fix aarch64-unknown-linux-gnu_ilp32 target
...
This was broken because the synthetic object files produced by rustc
were for 64-bit AArch64, which caused link failures when combined with
32-bit ILP32 object files.
This PR updates the object crate to 0.30.1 which adds support for
generating ILP32 AArch64 object files.
2023-01-09 17:49:24 +00:00
Arpad Borsos
9f5a933f00
Remove backwards compat for LLVM 12 coverage format
2023-01-09 16:31:24 +01:00
Matthias Krüger
771cfa5581
Rollup merge of #104543 - JhonnyBillM:migrate-codegen-ssa-to-diagnostics-structs-pt3, r=davidtwco
...
Migrate `codegen_ssa` to diagnostics structs - [Part 3]
Completes migrating `codegen_ssa` module except 2 outstanding errors that depend on other crates:
1. [`rustc_middle::mir::interpret::InterpError`](https://github.com/rust-lang/rust/blob/b6097f2e1b2ca62e188ba53cf43bd66b06b36915/compiler/rustc_middle/src/mir/interpret/error.rs#L475 ): I saw `rustc_middle` is unassigned, I am open to take this work.
2. `codegen_llvm`'s use of `fn span_invalid_monomorphization_error`, which I started to replace in the [last commit](https://github.com/rust-lang/rust/commit/9a31b3cdda78a2c0891828254fe9886e0a1cfd16 ) of this PR, but would like to know the team's preference on how we should keep replacing the other macros:
2.1. Update macros to expect a `Diagnostic`
2.2. Remove macros and expand the code on each use.
See [some examples of the different options in this experimental commit](https://github.com/JhonnyBillM/rust/commit/64aee83e80857dcfa450f0c6e31d5f29c6d577e6 )
_Part 2 - https://github.com/rust-lang/rust/pull/103792_
r? ``@davidtwco``
Cc ``@compiler-errors``
2023-01-07 20:43:19 +01:00
Erik Desjardins
d165a6d708
cleanup: handle -Zmutable-noalias like -Zbox-noalias
2023-01-04 19:24:42 -05:00
Jhonny Bill Mena
29d8c87fe8
DELETE - fn span_invalid_monomorphization_error and localize intrinsics macros
2022-12-27 20:59:22 -05:00
Jhonny Bill Mena
d1030fab22
UPDATE - migrate fn simd_simple_float_intrinsic error messages
2022-12-27 20:59:21 -05:00
Jhonny Bill Mena
e26366ad99
[WIP] UPDATE - migrate intrinsic.rs to new diagnostic infrastructure
...
WIP - replacing span_invalid_monomorphization_error function. Still in progress due to its use in codegen_llvm inside macros
2022-12-27 20:59:21 -05:00
Matthias Krüger
6689d2df08
Rollup merge of #105955 - Nilstrieb:no-trivial-opt-wrappers-we-have-field-accesses-for-that, r=cjgillot
...
Remove wrapper functions for some unstable options
They are trivial and just forward to the option. Like most other options, we can just access it directly.
2022-12-25 22:15:00 +01:00
Matthias Krüger
d23cb738d2
Rollup merge of #105975 - jeremystucki:rustc-remove-needless-lifetimes, r=eholk
...
rustc: Remove needless lifetimes
2022-12-24 00:31:41 +01:00
Matthias Krüger
49287a4095
Rollup merge of #106051 - jyn514:cranelift-std, r=bjorn3
...
Allow building std with cranelift
- Don't pass llvm-specific args when using cranelift
- Don't use `asm` in compiler_builtins when using cranelift
r? `@bjorn3` cc `@Mark-Simulacrum`
2022-12-23 01:17:50 +01:00
Joshua Nelson
0b3ffcbb0b
Allow building std with cranelift
...
- Don't pass llvm-specific args when using cranelift
- Don't use `asm` in compiler_builtins when using cranelift
2022-12-22 11:50:19 -06:00
Matthias Krüger
924a1d4a7a
Rollup merge of #105932 - MasterAwesome:aarch64-bti-llvm-15, r=nikic
...
Correct branch-protection ModFlagBehavior for Aarch64 on LLVM-15
When building with Fat LTO and BTI enabled on aarch64, the BTI is set to `Module::Min` for alloc shim but is set to `Module::Error` for the crate. This was fine when we were using LLVM-14 but LLVM-15 changes it's behaviour to support for compiling with different `mbranch-protection` flags.
Refer:
https://github.com/rust-lang/llvm-project/commit/b0343a38a5910e980bb031e4014655d77cd0c162
fixes https://github.com/rust-lang/rust/issues/102162
2022-12-22 01:01:13 +01:00
bors
a8207df49e
Auto merge of #105812 - ojeda:no-jump-tables, r=nikic
...
Add `-Zno-jump-tables`
This flag mimics GCC/Clang's `-fno-jump-tables` [1][2], which makes the codegen backend avoid generating jump tables when lowering switches.
In the case of LLVM, the `"no-jump-tables"="true"` function attribute is added to every function.
The kernel currently needs it for x86 when enabling IBT [3], as well as for Alpha (plus VDSO objects in MIPS/LoongArch).
[1] https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#index-fno-jump-tables
[2] https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fjump-tables
[3] https://github.com/torvalds/linux/blob/v6.1/arch/x86/Makefile#L75-L83
2022-12-21 17:38:38 +00:00
Jeremy Stucki
3dde32ca97
rustc: Remove needless lifetimes
2022-12-20 22:10:40 +01:00
Miguel Ojeda
a65ec44779
Add -Zno-jump-tables
...
This flag mimics GCC/Clang's `-fno-jump-tables` [1][2], which makes
the codegen backend avoid generating jump tables when lowering switches.
In the case of LLVM, the `"no-jump-tables"="true"` function attribute is
added to every function.
The kernel currently needs it for x86 when enabling IBT [3], as well
as for Alpha (plus VDSO objects in MIPS/LoongArch).
[1] https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#index-fno-jump-tables
[2] https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fjump-tables
[3] https://github.com/torvalds/linux/blob/v6.1/arch/x86/Makefile#L75-L83
Signed-off-by: Miguel Ojeda <ojeda@kernel.org >
2022-12-20 21:42:54 +01:00
Arvind Mukund
5480ac540c
Use Error behavior for LLVM versions prior to 15
...
CI fails when building with LLVM-13. This raises unknown behavior
constant `8` from IRVerifier.
2022-12-20 11:47:11 -08:00
Nilstrieb
fb79e44df6
Remove wrapper functions for some unstable options
...
They are trivial and just forward to the option. Like most other
options, we can just access it directly.
2022-12-20 15:02:15 +01:00
Arvind Mukund
55c4164fff
Correct ModFlagBehavior for Aarch64 on LLVM-15
...
When building with Fat LTO and BTI enabled on aarch64, the BTI is set to
`Module::Min` for alloc shim but is set to `Module::Error` for the
crate. This was fine when we were using LLVM-14 but LLVM-15 changes it's
behaviour to support for compiling with different `mbranch-protection`
flags.
Refer:
https://github.com/rust-lang/llvm-project/commit/b0343a38a5910e980bb031e4014655d77cd0c162
2022-12-19 19:13:17 -08:00