about summary refs log tree commit diff
path: root/compiler/rustc_codegen_gcc/src/builder.rs
AgeCommit message (Collapse)AuthorLines
2025-09-19added typetree support for memcpyKaran Janthe-0/+1
2025-08-08Rollup merge of #144192 - RalfJung:atomicrmw-ptr, r=nikicTrevor Gross-1/+6
atomicrmw on pointers: move integer-pointer cast hacks into backend Conceptually, we want to have atomic operations on pointers of the form `fn atomic_add(ptr: *mut T, offset: usize, ...)`. However, LLVM does not directly support such operations (https://github.com/llvm/llvm-project/issues/120837), so we have to cast the `offset` to a pointer somewhere. This PR moves that hack into the LLVM backend, so that the standard library, intrinsic, and Miri all work with the conceptual operation we actually want. Hopefully, one day LLVM will gain a way to represent these operations without integer-pointer casts, and then the hack will disappear entirely. Cc ```@nikic``` -- this is the best we can do right now, right? Fixes https://github.com/rust-lang/rust/issues/134617
2025-08-04Merge commit '482e8540a1b757ed7bccc2041c5400f051fdb01e' into ↵Guillaume Gomez-6/+20
subtree-update_cg_gcc_2025-08-04
2025-07-26Implement support for explicit tail calls in the MIR block builders and the ↵Joel Wejdenstål-0/+15
LLVM codegen backend.
2025-07-23atomicrmw on pointers: move integer-pointer cast hacks into backendRalf Jung-1/+6
2025-07-18Merge commit 'f682d09eefc6700b9e5851ef193847959acf4fac' into ↵Guillaume Gomez-1/+5
subtree-update_cg_gcc_2025-07-18
2025-07-07Remove support for dynamic allocasmejrs-4/+0
2025-06-30Merge commit '4b5c44b14166083eef8d71f15f5ea1f53fc976a0' into ↵Guillaume Gomez-35/+11
subtree-update_cg_gcc_2025-06-30
2025-06-29Remove `()` returned valueGuillaume Gomez-1/+1
2025-06-29Fix signature of `filter_landing_pad`Guillaume Gomez-2/+2
2025-06-28Remove unwanted semi-colon in `rustc_codegen_gcc`Guillaume Gomez-1/+1
2025-06-28Merge commit 'b7091eca6d8eb0fe88b58cc9a7aec405d8de5b85' into ↵Guillaume Gomez-24/+41
subtree-update_cg_gcc_2025-06-28
2025-06-22Remove dead instructions in terminate blocksMark Rousskov-2/+2
2025-06-18Merge commit 'fda0bb9588912a3e0606e880ca9f6e913cf8a5a4' into ↵Guillaume Gomez-6/+30
subtree-update_cg_gcc_2025-06-18
2025-06-15Rollup merge of #133952 - bjorn3:remove_wasm_legacy_abi, r=alexcrichtonLeón Orell Valerian Liehr-7/+1
Remove wasm legacy abi Closes https://github.com/rust-lang/rust/issues/122532 Closes https://github.com/rust-lang/rust/issues/138762 Fixes https://github.com/rust-lang/rust/issues/71871 https://github.com/rust-lang/rust/issues/88152 Fixes https://github.com/rust-lang/rust/issues/115666 Fixes https://github.com/rust-lang/rust/issues/129486
2025-06-14Remove all support for wasm's legacy ABIbjorn3-7/+1
2025-06-12Simplify implementation of Rust intrinsics by using type parameters in the cachesayantn-1/+1
2025-05-28get rid of rustc_codegen_ssa::common::AtomicOrderingRalf Jung-5/+5
2025-05-14Merge commit '6ba33f5e1189a5ae58fb96ce3546e76b13d090f5' into ↵Guillaume Gomez-4/+21
subtree-update_cg_gcc_2025-05-14
2025-05-09remove 'unordered' atomic intrinsicsRalf Jung-1/+0
2025-04-30Rollup merge of #134232 - bjorn3:naked_asm_improvements, r=wesleywiserMatthias Krüger-1/+1
Share the naked asm impl between cg_ssa and cg_clif This was introduced in https://github.com/rust-lang/rust/pull/128004.
2025-04-18Merge commit 'db1a31c243a649e1fe20f5466ba181da5be35c14' into ↵Guillaume Gomez-10/+45
subtree-update_cg_gcc_2025-04-18
2025-04-14Pass &mut self to codegen_global_asmbjorn3-1/+1
2025-03-07compiler: Use size_of from the prelude instead of importedThalia Archibald-5/+1
Use `std::mem::{size_of, size_of_val, align_of, align_of_val}` from the prelude instead of importing or qualifying them. These functions were added to all preludes in Rust 1.80.
2025-02-19Rework `OperandRef::extract_field` to stop calling `to_immediate_scalar` on ↵Scott McMurray-4/+8
things which are already immediates That means it stops trying to truncate things that are already `i1`s.
2025-02-19Emit `trunc nuw` for unchecked shifts and `to_immediate_scalar`Scott McMurray-1/+1
- For shifts this shrinks the IR by no longer needing an `assume` while still providing the UB information - Having this on the `i8`→`i1` truncations will hopefully help with some places that have to load `i8`s or pass those in LLVM structs without range information
2025-02-13Set both `nuw` and `nsw` in slice size calculationScott McMurray-25/+1
There's an old note in the code to do this, and now that LLVM-C has an API for it, we might as well.
2025-02-08Rustfmtbjorn3-11/+10
2025-02-04cg_gcc: Directly use rustc_abi instead of reexportsJubilee Young-1/+1
2025-01-13Merge commit '59a81c2ca1edc88ad3ac4b27a8e03977ffb8e73a' into ↵Antoni Boucher-20/+52
subtree-update_cg_gcc_2025_01_12
2024-11-18use `TypingEnv` when no `infcx` is availablelcnr-5/+5
the behavior of the type system not only depends on the current assumptions, but also the currentnphase of the compiler. This is mostly necessary as we need to decide whether and how to reveal opaque types. We track this via the `TypingMode`.
2024-10-29cg_gcc: `rustc_abi::Abi` => `BackendRepr`Jubilee Young-2/+2
2024-10-25coverage: SSA doesn't need to know about `instrprof_increment`Zalathar-10/+0
2024-10-18rust_for_linux: -Zregparm=<N> commandline flag for X86 (#116972)Andrew Zhogin-1/+7
2024-10-08cg_gcc: Factor out rustc_target::abiJubilee Young-3/+4
2024-09-27Merge commit '3187d32079b817522cc17413ec9185b130daf693' into subtree-updateGuillaume Gomez-31/+23
2024-09-24Auto merge of #130389 - Luv-Ray:LLVMMDNodeInContext2, r=nikicbors-0/+1
llvm: replace some deprecated functions `LLVMMDStringInContext` and `LLVMMDNodeInContext` are deprecated, replace them with `LLVMMDStringInContext2` and `LLVMMDNodeInContext2`. Also replace `Value` with `Metadata` in some function signatures for better consistency.
2024-09-22Reformat using the new identifier sorting from rustfmtMichael Goulet-14/+15
2024-09-19replace some deprecated functionsLuv-Ray-0/+1
2024-09-17Use associative type defaults in `{Layout,FnAbi}OfHelpers`.Nicholas Nethercote-5/+0
This avoids some repetitive boilerplate code.
2024-09-17Rename supertraits of `CodegenMethods`.Nicholas Nethercote-2/+2
Supertraits of `BuilderMethods` are all called `XyzBuilderMethods`. Supertraits of `CodegenMethods` are all called `XyzMethods`. This commit changes the latter to `XyzCodegenMethods`, for consistency.
2024-09-17Merge `HasCodegen` into `BuilderMethods`.Nicholas Nethercote-6/+4
It has `Backend` and `Deref` boudns, plus an associated type `CodegenCx`, and it has a single use. This commit "inlines" it into `BuilderMethods`, which makes the complicated backend trait situation a little simpler.
2024-09-14simd_shuffle: require index argument to be a vectorRalf Jung-27/+12
2024-08-13make the GCC backend compatible with vector shuffle indicesRalf Jung-14/+30
2024-08-05nontemporal_store: make sure that the intrinsic is truly just a hintRalf Jung-0/+2
2024-07-29Reformat `use` declarations.Nicholas Nethercote-3/+2
The previous commit updated `rustfmt.toml` appropriately. This commit is the outcome of running `x fmt --all` with the new formatting options.
2024-07-17Format cg_gcc with same formatting parametersGuillaume Gomez-15/+3
2024-07-10Update `Cargo.lock` and remove duplicated implGuillaume Gomez-6/+0
2024-07-10Merge commit '98ed962c7d3eebe12c97588e61245273d265e72f' into masterGuillaume Gomez-41/+85
2024-05-09codegen: memmove/memset cannot be non-temporalRalf Jung-9/+4