Commit Graph

4414 Commits

Author SHA1 Message Date
bjorn3
b929b68a5b
Remove the RUSTFLAGS enable method from Readme.md
It is a worse option than using `CARGO_PROFILE_DEV_CODEGEN_BACKEND`.
When using `--target` it doesn't apply to build scripts and proc macros.
It also overrides any `RUSTFLAGS` you may have set in an env var or
cargo config.
2024-07-20 15:26:46 +02:00
Matthias Krüger
0c9ba01011 Rollup merge of #127779 - momvart:should_codegen_hook, r=cjgillot
Add a hook for `should_codegen_locally`

This PR lifts the module-local function `should_codegen_locally` to `TyCtxt` as a hook.
In addition to monomorphization, this function is used for checking the dependency of `compiler_builtins` on other libraries. Moving this function to the hooks also makes overriding it possible for the tools that use the rustc interface.
2024-07-20 13:24:52 +02:00
Yuri Astrakhan
c1c13bd07c Avoid ref when using format! in compiler
Clean up a few minor refs in `format!` macro, as it has a performance cost. Apparently the compiler is unable to inline `format!("{}", &variable)`, and does a run-time double-reference instead (format macro already does one level referencing).  Inlining format args prevents accidental `&` misuse.
2024-07-19 14:52:07 -04:00
Trevor Gross
25dce8f92b Rollup merge of #124033 - bjorn3:ar_archive_writer_0_3_0, r=davidtwco
Sync ar_archive_writer to LLVM 18.1.3

From LLVM 15.0.0-rc3. This adds support for COFF archives containing Arm64EC object files and has various fixes for AIX big archive files.
2024-07-16 16:15:13 -05:00
Chai T. Rex
580cdfa6a7 Added project-specific Zed IDE settings
Created `.zed/settings.json` with all the settings from
`.vscode/settings.json`.
2024-07-16 11:14:04 -04:00
Mohammad Omidvar
c01fe3ceac Move compiler_builtin check to the use case 2024-07-15 23:43:52 +00:00
Rémy Rakic
5203b7e10d
Set rustup profile to minimal (#1516) 2024-07-14 16:59:06 +02:00
bjorn3
cceadba338 Merge branch 'sync_from_rust' 2024-07-13 18:40:39 +00:00
bjorn3
d0d2e60886 Merge commit '659243d85c7489412bd0faa1c068d904a6042941' into sync_cg_clif-2024-07-13 2024-07-13 18:39:03 +00:00
bjorn3
659243d85c Fix rustc test suite 2024-07-13 18:38:35 +00:00
bjorn3
739dfcab8e Rustup to rustc 1.81.0-nightly (c6727fc9b 2024-07-12) 2024-07-13 18:32:48 +00:00
bjorn3
f5c3195e92 Nicer error message when using raw-dylib
cc rust-lang/rustc_codegen_cranelift#1510
2024-07-13 13:53:14 +00:00
bjorn3
96fa075225 Fix rustc test suite 2024-07-09 10:46:21 +00:00
bjorn3
7292fa2a90 Update dependencies 2024-07-09 10:40:29 +00:00
bjorn3
344e4ef787 Fix rustc test suite 2024-07-09 10:30:12 +00:00
bjorn3
cf25d25de3 Rustup to rustc 1.81.0-nightly (35b658fb1 2024-07-08) 2024-07-09 10:16:04 +00:00
bjorn3
29bc1a5cc0 Sync from rust 35b658fb10 2024-07-09 10:08:02 +00:00
bors
776ab988c1 Auto merge of #113128 - WaffleLapkin:become_trully_unuwuable, r=oli-obk,RalfJung
Support tail calls in mir via `TerminatorKind::TailCall`

This is one of the interesting bits in tail call implementation — MIR support.

This adds a new `TerminatorKind` which represents a tail call:
```rust
    TailCall {
        func: Operand<'tcx>,
        args: Vec<Operand<'tcx>>,
        fn_span: Span,
    },
```

*Structurally* this is very similar to a normal `Call` but is missing a few fields:
- `destination` — tail calls don't write to destination, instead they pass caller's destination to the callee (such that eventual `return` will write to the caller of the function that used tail call)
- `target` — similarly to `destination` tail calls pass the caller's return address to the callee, so there is nothing to do
- `unwind` — I _think_ this is applicable too, although it's a bit confusing
- `call_source` — `become` forbids operators and is not created as a lowering of something else; tail calls always come from HIR (at least for now)

It might be helpful to read the interpreter implementation to understand what `TailCall` means exactly, although I've tried documenting it too.

-----

There are a few `FIXME`-questions still left, ideally we'd be able to answer them during review ':)

-----

r? `@oli-obk`
cc `@scottmcm` `@DrMeepster` `@JakobDegen`
2024-07-08 04:35:04 +00:00
bjorn3
322c2f6b13 Sync ar_archive_writer to LLVM 18.1.3
From LLVM 15.0.0-rc3. This adds support for COFF archives containing
Arm64EC object files and has various fixes for AIX big archive files.
2024-07-07 16:56:35 +00:00
Maybe Waffle
9978261a6e Support tail calls in mir via TerminatorKind::TailCall 2024-07-07 17:11:04 +02:00
bors
8620e85a1c Auto merge of #123781 - RalfJung:miri-fn-identity, r=oli-obk
Miri function identity hack: account for possible inlining

Having a non-lifetime generic is not the only reason a function can be duplicated. Another possibility is that the function may be eligible for cross-crate inlining. So also take into account the inlining attribute in this Miri hack for function pointer identity.

That said, `cross_crate_inlinable` will still sometimes return true even for `inline(never)` functions:
- when they are `DefKind::Ctor(..) | DefKind::Closure` -- I assume those cannot be `InlineAttr::Never` anyway?
- when `cross_crate_inline_threshold == InliningThreshold::Always`

so maybe this is still not quite the right criterion to use for function pointer identity.
2024-07-04 23:45:56 +00:00
bjorn3
253436c04c Better parsing of #[section_name] on Mach-O
This is required by the objc2 crate

Fixes rust-lang/rustc_codegen_cranelift#1504
2024-07-04 21:52:25 +02:00
Michael Goulet
c6b883bb2e Fix spans 2024-07-02 15:48:48 -04:00
Michael Goulet
e4bde05ed6 Give Instance::expect_resolve a span 2024-07-02 15:48:48 -04:00
Ralf Jung
a6056bce92 Miri function identity hack: account for possible inlining 2024-07-02 21:05:30 +02:00
bjorn3
f35bd40d18 Remove unused generic_args arguments from intrinsic codegen functions 2024-07-01 15:56:14 +00:00
bjorn3
126fd7c31d Also mark .debug_line_str as mergeable strings 2024-07-01 08:18:34 +00:00
bjorn3
c9b0075563 Distribute rustc_codegen_cranelift for arm64 macOS 2024-06-30 18:40:09 +00:00
bjorn3
7a1601553d Mark .debug_str as mergeable strings
Fixes rust-lang/rustc_codegen_cranelift#1496
2024-06-30 12:01:15 +00:00
bjorn3
28950f36cc Merge branch 'sync_from_rust' 2024-06-30 11:29:53 +00:00
bjorn3
5adaed06a0 Merge commit '49cd5dd454d0115cfbe9e39102a8b3ba4616aa40' into sync_cg_clif-2024-06-30 2024-06-30 11:28:14 +00:00
bjorn3
49cd5dd454 Rustup to rustc 1.81.0-nightly (ba1d7f4a0 2024-06-29) 2024-06-30 11:20:49 +00:00
bjorn3
45600348c0 Stop pinning XCode 14
The linker issue with XCode 15 has been fixed.
2024-06-29 15:08:04 +00:00
bjorn3
30be8bcb45 Remove --cfg no_unstable_features 2024-06-29 15:06:08 +00:00
bjorn3
3d54358b64 Update object to 0.36.1
This fixes a crash with macOS's ld-prime on arm64.

Fixes rust-lang/rustc_codegen_cranelift#1501
2024-06-29 15:13:34 +02:00
bjorn3
e97cebb2b1 Use dyn Module instead of impl Module where possible 2024-06-28 11:51:17 +00:00
bjorn3
cc05efe29e Introduce UnwindModule wrapper around a Module and UnwindContext
This way all UnwindContext::add_function calls can be done automatically
in a single place.
2024-06-28 11:51:00 +00:00
bjorn3
94c2e7aad3 Fix rustc test suite 2024-06-26 09:33:35 +00:00
bjorn3
476b7bdbe5 Rustup to rustc 1.81.0-nightly (fda509e81 2024-06-25) 2024-06-26 09:13:12 +00:00
bjorn3
8d11939589 Sync from rust fda509e817 2024-06-26 09:11:55 +00:00
Jubilee Young
f1052eb253 cg_clif: Define build opts from FramePointer 2024-06-23 00:36:33 -07:00
bjorn3
aa5d7a0d8a Update platform support table for the new arm64 macOS support
Closes rust-lang/rustc_codegen_cranelift#1248
2024-06-21 12:31:16 +00:00
bjorn3
2a378251fb Update to Cranelift 0.109 2024-06-20 17:05:08 +00:00
bjorn3
cdad523e5f
Merge pull request #1500 from beetrees/mac-arm64-va-call
Fix varargs support on `aarch64-apple-darwin`
2024-06-20 13:45:48 +02:00
beetrees
b0fcf2e27a
Add aarch64-apple-darwin to CI 2024-06-20 00:08:08 +01:00
beetrees
8556604bc6
Fix varargs support on aarch64-apple-darwin 2024-06-20 00:08:08 +01:00
Scott McMurray
e79dc7656a bug! more uses of these in runtime stuff 2024-06-19 10:44:01 -07:00
Guillaume Gomez
1cb728280d
Re-enable tests/run-make/const_fn_mir (#1497) 2024-06-18 18:51:53 +02:00
bjorn3
729cb08d4c Fix rustc tests 2024-06-18 16:23:11 +00:00
bjorn3
c5bd2e3b90 Rustup to rustc 1.81.0-nightly (59e2c01c2 2024-06-17) 2024-06-18 16:14:35 +00:00