- 09 8月, 2023 2 次提交
- 07 8月, 2023 3 次提交
-
-
由 Matthias Krüger 提交于
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`
-
由 scottmcm 提交于
Co-authored-by: NRalf Jung <post@ralfj.de>
-
由 Scott McMurray 提交于
-
- 06 8月, 2023 1 次提交
-
-
由 David Tolnay 提交于
-
- 05 8月, 2023 2 次提交
-
-
由 Matthias Krüger 提交于
Fix ICE failed to get layout for ReferencesError Fixes #114435 r? `@compiler-errors`
-
由 yukang 提交于
-
- 03 8月, 2023 1 次提交
-
-
由 Oli Scherer 提交于
-
- 02 8月, 2023 1 次提交
-
-
由 bjorn3 提交于
Fixes #1391
-
- 30 7月, 2023 2 次提交
-
-
由 bjorn3 提交于
Pass `preserve_frame_pointers` to Cranelift
-
由 Jakub Beránek 提交于
-
- 24 7月, 2023 4 次提交
- 22 7月, 2023 6 次提交
- 18 7月, 2023 1 次提交
-
-
由 chenx97 提交于
-
- 17 7月, 2023 1 次提交
-
-
由 Nicholas Nethercote 提交于
It replaces `(Linkage, Visibility)`, making the code nicer. Plus the next commit will add another field.
-
- 16 7月, 2023 2 次提交
- 15 7月, 2023 1 次提交
-
-
由 bors 提交于
Resurrect: rustc_target: Add alignment to indirectly-passed by-value types, correcting the alignment of byval on x86 in the process. Same as #111551, which I [accidentally closed](https://github.com/rust-lang/rust/pull/111551#issuecomment-1571222612) :/ --- This resurrects PR #103830, which has sat idle for a while. Beyond #103830, this also: - fixes byval alignment for types containing vectors on Darwin (see `tests/codegen/align-byval-vector.rs`) - fixes byval alignment for overaligned types on x86 Windows (see `tests/codegen/align-byval.rs`) - fixes ABI for types with 128bit requested alignment on ARM64 Linux (see `tests/codegen/aarch64-struct-align-128.rs`) r? `@nikic` --- `@pcwalton's` original PR description is reproduced below: Commit 88e4d2c2 from five years ago removed support for alignment on indirectly-passed arguments because of problems with the `i686-pc-windows-msvc` target. Unfortunately, the `memcpy` optimizations I recently added to LLVM 16 depend on this to forward `memcpy`s. This commit attempts to fix the problems with `byval` parameters on that target and now correctly adds the `align` attribute. The problem is summarized in [this comment] by `@EddyB.` Briefly, 32-bit x86 has special alignment rules for `byval` parameters: for the most part, their alignment is forced to 4. This is not well-documented anywhere but in the Clang source. I looked at the logic in Clang `TargetInfo.cpp` and tried to replicate it here. The relevant methods in that file are `X86_32ABIInfo::getIndirectResult()` and `X86_32ABIInfo::getTypeStackAlignInBytes()`. The `align` parameter attribute for `byval` parameters in LLVM must match the platform ABI, or miscompilations will occur. Note that this doesn't use the approach suggested by eddyb, because I felt it was overkill to store the alignment in `on_stack` when special handling is really only needed for 32-bit x86. As a side effect, this should fix #80127, because it will make the `align` parameter attribute for `byval` parameters match the platform ABI on LLVM x86-64. [this comment]: #80822 (comment)
-
- 14 7月, 2023 1 次提交
-
-
由 Mahdi Dibaiee 提交于
-
- 13 7月, 2023 5 次提交
- 12 7月, 2023 3 次提交
- 11 7月, 2023 3 次提交
-
-
由 Erik Desjardins 提交于
-
由 Erik Desjardins 提交于
-
由 Erik Desjardins 提交于
-
- 08 7月, 2023 1 次提交
-
-
由 Nilstrieb 提交于
It makes it sound like the `ExprKind` and `Rvalue` are supposed to represent all pointer related casts, when in reality their just used to share a some enum variants. Make it clear there these are only coercion to make it clear why only some pointer related "casts" are in the enum.
-