Commit Graph

231743 Commits

Author SHA1 Message Date
Andrew Kane
a75e2284fb Bump compiler_builtins to 0.1.100 2023-08-07 16:38:09 -07:00
Ramon de C Valle
f837c48f0d CFI: Fix error compiling core with LLVM CFI enabled
Fix #90546 by filtering out global value function pointer types from the
type tests, and adding the LowerTypeTests pass to the rustc LTO
optimization pipelines.
2023-08-07 15:59:15 -07:00
bors
443c3161dd Auto merge of #114048 - nikic:llvm-17, r=cuviper
Update to LLVM 17

Expected LLVM 17.0.0 release date: Sep 5th
Rust 1.73 release date: Oct 5th

Compatibility changes in this PR:
 - Drop LLVM_RUSTLLVM check for target-cpu table, which no longer requires a patch with LLVM 17.
 - Update powerpc data layouts, which now include function alignment information. As usual, downgrade for older LLVM versions.
 - Adjust the stack-protector.rs test so that the stack smashing does not get optimized away.
 - Adjust path of crtbegin.c and crtend.c in compiler-rt.
 - Updated dist-riscv64-linux to use binutils 2.36 in order to recognize the zicsr feature, which is no longer part of the base ISA.
 - Fixed symlink for asm include directory on dist-various-2. We should use `/usr/include/x86_64-linux-gnu/asm` for the host, rather than `/usr/include/asm-generic`.

Upstream patches:
 - [x] https://reviews.llvm.org/D156525 (backported)

Perf run: https://perf.rust-lang.org/compare.html?start=f239bb6bea94d16d902c36d72b5cabdddefb3cab&end=8030d71a95a3ea79f5fc95232c32f9b78effb92d&stat=instructions:u

Fixes #109671.

Successful: dist-x86_64-linux, dist-aarch64-linux, dist-s390x-linux, dist-powerpc-linux, armhf-gnu, wasm32
2023-08-07 21:37:42 +00:00
Jakub Beránek
65e468f9c2
Rename method in opt-dist
This makes it clearer that the LLVM is the host one (it doesn't necessarily have to be downloaded).
2023-08-07 23:10:57 +02:00
Arthur Cohen
bdf4e3de9c check_attrs: Warn when #[macro_export] is used on macros 2.0
The compiler should emit a more specific error when the `#[macro_export]`
attribute is present on a decl macro, instead of silently ignoring it.

This commit adds the required error message in rustc_passes/messages.ftl,
 as well as a note. A new variant is added to the `errors::MacroExport`
enum, specifically for the case where the attribute is added to a macro
2.0.
2023-08-07 21:14:28 +02:00
Arthur Cohen
f1776250eb core: Remove #[macro_export] from debug_assert_matches
The `debug_assert_matches` macro was marked with the `#[macro_export]` attribute,
despite being a declarative macro/macro 2.0, for which the exporting rules are similar
to items. In fact, `#[macro_export]` on a decl macro has no effect on its visibility.
2023-08-07 21:13:55 +02:00
Michael Goulet
ba4a2f7cb7 Resolve target type of coercion 2023-08-07 19:06:18 +00:00
Michael Goulet
fb9030d7dd Structurally normalize weak and inherent too 2023-08-07 19:05:59 +00:00
Nikita Popov
7867833652 Fix LLVM version check for ThinLTO import/export lists
These types changed in LLVM 18, not LLVM 17.
2023-08-07 20:36:14 +02:00
Nikita Popov
ec59919273 Symlink correct asm directory on dist-various-2
We should symlink /usr/include/x86_64-linux-gnu/asm for the host
triple, rather than /usr/include/asm-generic, which is used in the
implementation for asm for specific triple, but shouldn't be used
by itself.
2023-08-07 20:35:56 +02:00
Nikita Popov
0d37c2befb Update dist-riscv64-linux to use binutils 2.36
The zicsr feature has been split off from the base ISA. A newer
binutils version is required to recognize it.
2023-08-07 20:35:55 +02:00
Nikita Popov
5be397441e Adjust path to crtbegin.c / crtend.c
These were moved into builtins by https://reviews.llvm.org/D153989.
2023-08-07 20:35:55 +02:00
Nikita Popov
01cdc505d9 Fix stack-protector.rs on LLVM 17
Prevent fill from being (correctly) optimized away by passing the
address of the alloca to black_box.
2023-08-07 20:35:55 +02:00
Nikita Popov
ad7ea8b7e6 Update powerpc data layouts
Function pointer alignment is specified since https://reviews.llvm.org/D147016.
2023-08-07 20:35:55 +02:00
Nikita Popov
055dd282c5 Remove no longer needed LLVM_RUSTLLVM check
The bundled version now uses the LLVM 17 code path.
2023-08-07 20:35:55 +02:00
Nikita Popov
8c1c7d37b2 Update LLVM submodule 2023-08-07 20:35:55 +02:00
bors
03a119b0b0 Auto merge of #114344 - Kobzol:opt-dist-llvm-profdata, r=nikic
Use the correct `llvm-profdata` binary in `opt-dist`

Turns out that we were probably using the wrong `llvm-profdata` binary in the PGO script all along. This should resolve the performance regressions of switching the host LLVM to 17 ([host `llvm-profdata`](https://github.com/rust-lang/rust/pull/114297#issuecomment-1660521361), [target `llvm-profdata`](https://github.com/rust-lang/rust/pull/114297#issuecomment-1661127032)]).

r? `@nikic`
2023-08-07 18:34:03 +00:00
Felix S. Klock II
a2058ddbed Review feedback: return empty iff !should_codegen, and use simpler unconditional logic otherwise. 2023-08-07 13:31:14 -04:00
Deadbeef
057be381c6 Fix ICE 2023-08-07 17:16:10 +00:00
bors
63a81b0c5a Auto merge of #114585 - matthiaskrgr:rollup-h26pvus, r=matthiaskrgr
Rollup of 9 pull requests

Successful merges:

 - #113568 (Fix spurious test failure with `panic=abort`)
 - #114196 (Bubble up nested goals from equation in `predicates_for_object_candidate`)
 - #114485 (Add trait decls to SMIR)
 - #114495 (Set max_atomic_width for AVR to 16)
 - #114496 (Set max_atomic_width for sparc-unknown-linux-gnu to 32)
 - #114510 (llvm-wrapper: adapt for LLVM API changes)
 - #114562 (stabilize abi_thiscall)
 - #114570 ([miri][typo] Fix a typo in a vector_block comment.)
 - #114573 (CI: do not hide error logs in a group)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-08-07 15:29:14 +00:00
Matthias Krüger
d9f3d49c81
Rollup merge of #114573 - Kobzol:ci-no-group-on-error, r=oli-obk
CI: do not hide error logs in a group

This PR avoids creating a GHA group at the very end of a CI workflow when some failure has happened. Before, when a failure has happened, its GHA group was not closed, however the clock drift check function would create a new group, which would actually close the group containing the error log, thus making errors hidden by default, which is not ideal.

See discussion here: https://rust-lang.zulipchat.com/#narrow/stream/326414-t-infra.2Fbootstrap/topic/GHA.20groups.20being.20closed.20on.20failures

r? bootstrap
2023-08-07 16:47:58 +02:00
Matthias Krüger
e7b7362af2
Rollup merge of #114570 - ttsugriy:miri-vc-typo, r=RalfJung
[miri][typo] Fix a typo in a vector_block comment.
2023-08-07 16:47:57 +02:00
Matthias Krüger
06daa9e263
Rollup merge of #114562 - Trolldemorted:thiscall, r=oli-obk
stabilize abi_thiscall

Closes https://github.com/rust-lang/rust/issues/42202, stabilizing the use of the "thiscall" ABI.

FCP was substituted by a poll, and the poll has been accepted.
2023-08-07 16:47:57 +02:00
Matthias Krüger
1d82946e52
Rollup merge of #114510 - krasimirgg:llvm-17-cmi, r=nikic
llvm-wrapper: adapt for LLVM API changes

No functional changes intended.

Adapts llvm-wrapper for 65e57bbed0.

Found by our experimental rust + llvm @ HEAD CI:
https://buildkite.com/llvm-project/rust-llvm-integrate-prototype/builds/21304#0189c526-86cd-4db9-bdbc-dd0132dfc22b/197-500
2023-08-07 16:47:56 +02:00
Matthias Krüger
9b1f9433db
Rollup merge of #114496 - taiki-e:sparc32-atomic, r=Amanieu
Set max_atomic_width for sparc-unknown-linux-gnu to 32

This is currently set to 64

90f0b24ad3/compiler/rustc_target/src/spec/sparc_unknown_linux_gnu.rs (L8)

However, AFAIK, this architecture doesn't support 64-bit atomics, and LLVM generates libcalls: https://godbolt.org/z/chzThWGG1

(Currently, attempts to run `cargo test` for this target result in "undefined reference to `__sync_val_compare_and_swap_8'" error. 02efe1e74f)

r? `@Amanieu`
2023-08-07 16:47:56 +02:00
Matthias Krüger
b0a5126f06
Rollup merge of #114495 - taiki-e:avr-atomic, r=Amanieu
Set max_atomic_width for AVR to 16

This is currently set to 0

90f0b24ad3/compiler/rustc_target/src/spec/avr_gnu_base.rs (L26-L27)

However, LLVM supports {8,16}-bit atomic load/store on AVR (support for RMW is still quite incomplete and only partially supported).

https://github.com/llvm/llvm-project/blob/llvmorg-15.0.0/llvm/test/CodeGen/AVR/atomics/load8.ll#L5-L13
https://github.com/llvm/llvm-project/blob/llvmorg-15.0.0/llvm/test/CodeGen/AVR/atomics/load16.ll#L3-L12
https://github.com/llvm/llvm-project/blob/llvmorg-15.0.0/llvm/test/CodeGen/AVR/atomics/store.ll#L3-L22

cc #99668

r? `@Amanieu`
2023-08-07 16:47:55 +02:00
Matthias Krüger
7a52fe5396
Rollup merge of #114485 - spastorino:add-trait-decls, r=oli-obk
Add trait decls to SMIR

r? `@oli-obk`

Closes https://github.com/rust-lang/project-stable-mir/issues/20
2023-08-07 16:47:55 +02:00
Matthias Krüger
2a643b2dc0
Rollup merge of #114196 - compiler-errors:bubble-pls, r=lcnr
Bubble up nested goals from equation in `predicates_for_object_candidate`

This used to be needed for https://github.com/rust-lang/rust/pull/114036#discussion_r1273987510, but since it's no longer, I'm opening this as a separate PR. This also fixes one ICEing UI test: (`tests/ui/unboxed-closures/issue-53448.rs`)

r? `@lcnr`
2023-08-07 16:47:54 +02:00
Matthias Krüger
bf40327270
Rollup merge of #113568 - ferrocene:pa-spurious-weak-lang-item-2, r=b-naber
Fix spurious test failure with `panic=abort`

Description on why it happens and why the fix should work is in the code comments.
2023-08-07 16:47:54 +02:00
Ian Jackson
1f1d49a2b7 impl Default for ExitStatus 2023-08-07 15:24:55 +01:00
León Orell Valerian Liehr
5468336d6b
Store the laziness of type aliases in the DefKind 2023-08-07 15:54:31 +02:00
Pietro Albini
409d9946cd
change test to use if black_box(false) 2023-08-07 15:42:24 +02:00
bors
84ec2633de Auto merge of #113902 - Enselic:lint-recursive-drop, r=oli-obk
Make `unconditional_recursion` warning detect recursive drops

Closes #55388

Also closes #50049 unless we want to keep it for the second example which this PR does not solve, but I think it is better to track that work in #57965.

r? `@oli-obk` since you are the mentor for #55388

Unresolved questions:
- [x] There are two false positives that must be fixed before merging (see diff). I suspect the best way to solve them is to perform analysis after drop elaboration instead of before, as now, but I have not explored that any further yet. Could that be an option? **Answer:** Yes, that solved the problem.

`@rustbot` label +T-compiler +C-enhancement +A-lint
2023-08-07 13:39:28 +00:00
Santiago Pastorino
6e4d7bd90e
Add TraitDef::trait_decl method 2023-08-07 10:24:12 -03:00
Santiago Pastorino
0e69a8ad20
Add all_trait_decls to SMIR 2023-08-07 10:24:11 -03:00
Santiago Pastorino
496faa857c
Convert trait declaration to SMIR 2023-08-07 10:24:08 -03:00
Santiago Pastorino
4199a3c13a
Convert unsafety using the stable method and reuse mir::Safety 2023-08-07 10:23:20 -03:00
Benedikt Radtke
3f3262e592 stabilize abi_thiscall 2023-08-07 14:11:03 +02:00
Vadim Petrochenkov
b6ac576487 rustc_interface: Dismantle register_plugins query 2023-08-07 19:33:23 +08:00
bors
139b49b995 Auto merge of #114576 - lnicola:sync-from-ra, r=lnicola
⬆️ `rust-analyzer`

r? `@ghost`
2023-08-07 09:16:10 +00:00
Laurențiu Nicola
a42f832312 Merge commit 'baee6b338b0ea076cd7a9f18d47f175dd2ba0e5d' into sync-from-ra 2023-08-07 12:03:15 +03:00
Jakub Beránek
8d3360830c
Do not hide CI error logs in a group when a failure happens 2023-08-07 09:56:34 +02:00
bors
adb15a20ac Auto merge of #114560 - RalfJung:miri, r=RalfJung
update Miri
2023-08-07 07:25:51 +00:00
Deadbeef
1ca4bc966e Migrate a trait selection error to use diagnostic translation 2023-08-07 05:26:38 +00:00
bors
4a71a05d52 Auto merge of #114569 - matthiaskrgr:rollup-p8tcxtz, r=matthiaskrgr
Rollup of 8 pull requests

Successful merges:

 - #98935 (Implement `Option::take_if`)
 - #114093 (Add regression test for `echo 'mod unknown;' | rustc -`)
 - #114229 (Nest tests/codegen/sanitizer*.rs tests in sanitizer dir)
 - #114230 (Nest other codegen test topics)
 - #114362 (string.rs: remove "Basic usage" text)
 - #114365 (str.rs: remove "Basic usage" text)
 - #114382 (Add a new `compare_bytes` intrinsic instead of calling `memcmp` directly)
 - #114549 (Style fix and refactor on resolve diagnostics)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-08-07 05:06:51 +00:00
Taras Tsugrii
dee4cba955 [miri][typo] Fix a typo in a vector_block comment. 2023-08-06 21:44:55 -07:00
Matthias Krüger
d804b74c6c
Rollup merge of #114549 - chenyukang:yukang-review-resolve-part, r=petrochenkov
Style fix and refactor on resolve diagnostics

- coding style
- refactor api of `span_look_ahead`
2023-08-07 05:29:13 +02:00
Matthias Krüger
5dd98a4eb1 Rollup merge of #114382 - scottmcm:compare-bytes-intrinsic, r=cjgillot
Add a new `compare_bytes` intrinsic instead of calling `memcmp` directly

As discussed in #113435, this lets the backends be the place that can have the "don't call the function if n == 0" logic, if it's needed for the target.  (I didn't actually *add* those checks, though, since as I understood it we didn't actually need them on known targets?)

Doing this also let me make it `const` (unstable), which I don't think `extern "C" fn memcmp` can be.

cc `@RalfJung` `@Amanieu`
2023-08-07 05:29:12 +02:00
Matthias Krüger
cbe2522652
Rollup merge of #114382 - scottmcm:compare-bytes-intrinsic, r=cjgillot
Add a new `compare_bytes` intrinsic instead of calling `memcmp` directly

As discussed in #113435, this lets the backends be the place that can have the "don't call the function if n == 0" logic, if it's needed for the target.  (I didn't actually *add* those checks, though, since as I understood it we didn't actually need them on known targets?)

Doing this also let me make it `const` (unstable), which I don't think `extern "C" fn memcmp` can be.

cc `@RalfJung` `@Amanieu`
2023-08-07 05:29:12 +02:00
Matthias Krüger
f5df519fe7
Rollup merge of #114365 - tshepang:patch-6, r=Mark-Simulacrum
str.rs: remove "Basic usage" text

Only one example is given
2023-08-07 05:29:12 +02:00