Commit graph

565466 commits

Author SHA1 Message Date
Craig Topper
e9846648fd [RISCV] Use a vector MemVT when converting store+extractelt into a vector store. (#190107)
This is needed so that `allowsMemoryAccessForAlignment` checks for
unaligned vector memory
support instead of unaligned scalar memory support when called from
`RISCVTargetLowering::expandUnalignedVPStore`

While there remove incorrect setting of the truncating store flag
on the vector instruction. And restrict the transform to simple stores
since we don't have tests for volatile or atomic.

Fixes #189037

(cherry picked from commit b44d2c977c)
2026-04-06 22:57:04 +00:00
Craig Topper
c55c1c1140 [TargetLowering] Speculative fix for a non-determinism issue between different compilers. (#190219)
The evaluation order of function arguments is unspecified by the C++
standard. We had two getNode calls as function arguments which causes
the nodes to be created in a different order depending on the compiler
used. This patch moves them to their own variables to ensure they are
called in the same order on all compilers.

Possible fix for #190148.

(cherry picked from commit e2e5db8401)
2026-04-06 18:47:01 +00:00
Devajith
151b4a3baf [clang-repl] Use canonical types in QualTypeToString (#190528)
Use the canonical type when generating type strings to ensure sugared
(e.g. `AutoType`, `DecltypeType`) are resolved before calling
getFullyQualifiedType.

This will revert a few commits that were added to fix these assertions.

---------

Co-authored-by: Harald van Dijk <hdijk@accesssoftek.com>
(cherry picked from commit ba286040c9)
2026-04-06 18:44:06 +00:00
Eli Friedman
0fecbff69a [clang] Fix issues with const/pure on varargs function. (#190252)
There are two related issues here. On the declaration/definition side,
we need to make sure the markings are conservative. Then on the caller
side, we need to make sure we don't access parameters that don't exist.

Fixes #187535.

(cherry picked from commit 9471fabf8a)
2026-04-06 18:40:35 +00:00
Jonas Devlieghere
ae980d3b4d [lldb] Iterate over a copy of the ModuleList in SearchFilter (#189009)
Avoid a potential deadlock caused by the search filter callback
acquiring the target's module lock by iterating over a copy of the list.

Fixes #188766

(cherry picked from commit ce1b12ee08)
2026-04-06 18:34:28 +00:00
Jean-Didier PAILLEUX
307a11d7aa [Flang] Fix lowering failure for some constructs inside a CHANGE TEAM (#184342)
This PR is here to fix the `CHANGE_TEAM` construct if it contains an
IF/ELSE (construct with a body too) in its body, for example.

(cherry picked from commit 0625467c63)
2026-04-06 18:30:01 +00:00
Jonathan Thackray
cd7f7379a0 [AArch64][llvm] Fix encoding for stshh instruction (#189588)
The encoding for `stshh` was incorrect, and has been fixed. This
has been checked against the Arm ARM.
2026-04-06 18:24:51 +00:00
Jim Lin
4250a0fc5d [RISCV] Fix stackmap shadow trimming NOP size for compressed targets (#189774)
The shadow trimming loop in LowerSTACKMAP hardcoded a 4-byte decrement
per instruction, but when Zca is enabled NOPs are 2 bytes. Use NOPBytes
instead of the hardcoded 4 so the shadow is correctly trimmed on
compressed targets.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 3d7eedce56)
2026-04-02 07:02:15 +00:00
Katherine Rasmussen
da8a5b950c [flang] Update Flang Extension doc to reflect previous change (#188088)
Update Flang Extension doc to remove note about a warning that was
removed in a previous PR (PR #178088). It is an oversight that this doc
change was not made in that previous PR. The oversight was only recently
discovered and has led to this PR.

(cherry picked from commit 45b932a2d4)
2026-04-02 07:00:41 +00:00
lrzlin
0626016c5b [LoongArch] Implement canMergeStoresTo to avoid crash while NoImplicitFloat attribute is set (#188005)
Currently, when the `NoImplicitFloat` attribute is set, consecutive
64-bit load
and store operations will be combined into 128-bit ones, which is
illegal
because that attribute makes floating point and SIMD unavailable.
By implementing the canMergeStoresTo, we can prevent this incorrect
merging.

Fixes https://github.com/llvm/llvm-project/issues/186645

(cherry picked from commit 5651490992)
2026-04-01 09:51:14 +00:00
Alexey Karyakin
bc44e9b803 [Hexagon] Use __HVX_IEEE_FP__ to guard protos that need -mhvx-ieee-fp (#184422)
Hexagon clang recently started to define __HVX_IEEE_FP__ when the
-mhvx-ieee-fp option is specified. Guard the intrinsic macros for
instructions that should only be available with -mhvx-ieee-fp with
__HVX_IEEE_FP__.

Additionally, the following NFC changes are included:

- NFC: Remove guards around HVX v60 intrinsic macros
  Hexagon v60 is the oldest Hexagon version that supports HVX so these
  guards were redundant. Presence of HVX is guarded separately, once
  per the whole file.

- Remove comments from closing guards (HVX protos)
  These comments served very limited function as they only guard
  one macro. Also, they were incorrect. Instead of fixing remove them.
  This will also reduce by the factor of two the amount of changes
  when guarding conditions change.
2026-04-01 08:46:45 +00:00
Ankit Aggarwal
e6e59749af [Hexagon] Define __HVX_IEEE_FP__ when -mhvx-ieee-fp is enabled (#183829)
Add a __HVX_IEEE_FP__ define when the compiler is invoked with
-mhvx-ieee-fp flag
2026-04-01 08:46:45 +00:00
Austin Hudson
dc9d64aad7 [lld][COFF] Restore lto-embed-bitcode and -fembed-bitcode Bitcode Embedding Features (#188398)
Removes the patches introduced by #150897 which broke LTO embed
documented features for creating whole-program-bitcode representations
of executables, used in production analysis/rewriting toolsets. This was
a documented feature available up until 21.1.8 broken by 22.x release.

This previously allowed the users to have a whole-program-bitcode
section `.llvmbc` embedded inside of the final executable.

(cherry picked from commit 1e99c9e4c7)
2026-03-31 08:45:20 +00:00
Kerem Şahin
8fef0fb1a2 [clang-repl] Fix C89 incompatible keywords (#189432)
Restrict and inline keywords are removed for C89 interpreter since these
keywords caused fail at runtime preamble.

Fixes #189088

(cherry picked from commit 8bd8304808)
2026-03-31 08:42:42 +00:00
Andrew Haberlandt
7b6514cd30 [sanitizer_common] [Darwin] Adopt _dyld_get_dyld_header (#182943)
(cherry picked from commit 2e7d07a337)
2026-03-31 08:27:08 +00:00
Luo Yuanke
24b53fbc67 [X86] Improve illegal return type handling in FastISel (#186723)
Previously, FastISel would fall back to DAG ISel for any illegal return
type. This change adds a more precise check to determine if the ABI
requires a type conversion that FastISel cannot handle.

For example, bfloat is returned as f16 in XMM0, but FastISel would
assign f32 register type and store it in FuncInfo.ValueMap, causing DAG
to incorrectly perform type conversion from f32 to bfloat later.

However, i1 is promoted to i8 and returned as i8 per the ABI, so
FastISel
can safely lower it without switching to DAGISel. This change enables
FastISel to handle such cases properly.

---------

Co-authored-by: Yuanke Luo <ykluo@birentech.com>
(cherry picked from commit 140adc92d5)
2026-03-30 15:12:38 +00:00
Fangrui Song
cc87fcfeef [AccelTable] Pre-compute entry pool offsets for DW_IDX_parent. NFC (#188915)
After PR #150846 changed MCFragment to use fixed 16KB blocks, large
sections like .debug_names produce thousands of fragments. The
DW_IDX_parent emission called emitLabelDifference(ParentSymbol,
EntryPool, 4) per entry, which fell through to
attemptToFoldSymbolOffsetDifference's O(n) fragment walk when symbols
were in different fragments. This caused O(entries * fragments)
quadratic behavior, regressing dsymutil on large binaries like clang.

Fix by pre-computing byte offsets from EntryPool for each entry in a
first pass, then emitting emitInt32(offset) directly for DW_IDX_parent
instead of symbol differences. This also eliminates per-entry MCSymbol
allocation that was only needed for parent references.

Fix #188376

(cherry picked from commit 0f63c0a3a5)
2026-03-30 15:10:58 +00:00
Nikita Popov
561944ebcb [lit] Explicitly unset timer to free thread stack (#188717)
Currently the virtual address space usage of lit fluctuates wildly, with
peak usage exceeding 4GB, which results in subsequent thread spawning
errors on 32-bit systems.

The cause of this is a circular reference in TimeoutHelper._timer (via the
callback), which causes the 8MB thread stack to not be immediately
reclaimed when the timer is cancelled.

We can avoid this by explicitly unsetting the timer.

(cherry picked from commit dfefc03769)
2026-03-30 15:07:15 +00:00
Nick Begg
58468775a5 [lit] dealloc ApplyResult objects as they're waited on (#188642)
In _wait_for(), all async tasks are waited for. However, the objects
are held in the async_result list until the function calls complete.
This leads to about 3.6gig mem usage on my system when running
check-llvm, even though these objects aren't needed after the ar.get()
call.

Dealloc them as we go instead.

Addresses #188641

(cherry picked from commit b7d8831f8c)
2026-03-30 15:07:15 +00:00
Nick Begg
719a040bf1 [lit] Stop holding subprocess objects open in TimeoutHelper (#186712)
Tweak TestRunner's TimeoutHelper storage to hold only PIDs rather
than the whole process object. Holding the object causes many pipes to
stay open, when all we need is the pid.

Addresses #185941

(cherry picked from commit 202ef22fae)
2026-03-30 15:07:15 +00:00
wanglei
b8918e6248 [LoongArch] Fix incorrect reciprocal sqrt estimate semantics (#187621)
The current implementation of getSqrtEstimate() has incorrect semantics
when using `FRSQRTE`.

`FRSQRTE` computes an approximation to 1/sqrt(x), but the existing code
multiplies the estimate by the operand when Reciprocal is true. This
results in returning sqrt(x) instead of 1/sqrt(x), effectively reversing
the intended semantics of the 'Reciprocal' flag.

Additionally, the implementation does not properly account for LLVM's
Newton-Raphson refinement pipeline. When refinement steps are requested,
the initial estimate must be in reciprocal form so that the generic
DAGCombiner can apply NR iterations correctly.

This patch fixes the behavior by:

- Returning the raw FRSQRTE result when Reciprocal is true, or when
  refinement steps are required.
- Only reconstructing sqrt(x) via x * rsqrt(x) when no refinement is
  requested.
- Refactoring type checks into a helper function
(isSupportedReciprocalEstimateType)
  for improved readability and maintainability.

The updated implementation aligns with the expectations of LLVM's
reciprocal estimate framework and matches the behavior of other targets
such as X86 and AArch64.

No functional change when reciprocal estimates are disabled, but fixes
incorrect results when fast-math enables reciprocal sqrt estimates.

Fixes #186328

(cherry picked from commit 6ae5803ffd)
2026-03-30 15:04:50 +00:00
Fangrui Song
62b14a8890 [MC,clang] Fix -Wa,--noexecstack not emitting .note.GNU-stack (#187880)
AsmPrinter (clang -c a.c) and AsmParser (clang -c a.s, llvm-mc
-filetype=obj a.s) have different ways to emit .note.GNU-stack section.

913c5b4d1f removed a redundant initSections call from cc1as, but
that was the only place where NoExecStack was consumed for the
assembler path.

Unify the .note.GNU-stack emission in MCELFStreamer::finishImpl,
making the `initSections` parameter redundant.

Add a -filetype=obj test for Solaris (see
https://reviews.llvm.org/D159179), which doesn't use .note.GNU-stack

`initSections` has 20+ uses. The parameter cleanup will be deferred to a
subsequent change.

Fixes https://github.com/llvm/llvm-project/issues/186004
2026-03-30 15:00:51 +00:00
David Green
4bae0d33b2 [ARM] Fix incorrect post increment from Or (#188036)
If a Or is detected by findPointerConstIncrement but not by
getPointerConstIncrement it could use an invalid increment for the
offset. Protect against cases where getPointerConstIncrement cannot
return a valid offset.

Fixes #185677

(cherry picked from commit 5012b76ae2)
2026-03-30 14:57:19 +00:00
David Green
d033ffe4ee [ARM] Regenerate vld2.ll test. NFC
(cherry picked from commit bcdb7d3c8f)
2026-03-30 14:57:18 +00:00
David Green
5f04300518 [AArch64] Use an unknown size for memcpy ops with non-constant sizes. (#187445)
The previous value of 0 was allowing loads to move past the mops
operations where it is not valid. Use a LocationSize::afterPointer()
size instead.

The GISel lowering currently loses the MMO, which is fine as it should
be conservatively treated as a load/store to any location.

(cherry picked from commit 441790b31f)
2026-03-30 14:53:03 +00:00
Brian Cain
f6198f61b2 [Hexagon] Fix truncation to boolean vector that need widening (#182528)
When truncating a sub-HVX-width vector to a boolean vector (e.g., v64i8
-> v64i1 in 128-byte HVX mode), the operation would crash with
"Unhandled HVX operation" UNREACHABLE. This happened because the
condition in LowerHvxOperationWrapper/ReplaceHvxNodeResults did not
handle the case where the input vector needs widening and the result is
a boolean vector.

The fix adds WidenHvxTruncateToBool which widens the input to HVX
register width (e.g., v64i8 -> v128i8), performs the truncate to widened
bool type (v128i8 -> v128i1), extracts the result subvector (v128i1 ->
v64i1).

This allows the widened truncate to match the existing V6_vandvrt
pattern in HexagonPatternsHVX.td.

(cherry picked from commit 0c53a89b22)
2026-03-30 14:49:51 +00:00
Brian Cain
240f42d95f [Hexagon] Fix 64-bit funnel shift miscompilation with register shift amounts (#183669)
64-bit regpair shift amounts are treated as signed 7-bits, so a
complement
shift amount of 64 (when the primary amount is 0) is sign-extended to
-64,
reversing the shift direction and producing incorrect results. This
affected
any 64-bit rotate or funnel shift where the runtime shift amount could
be 0
(making the complement 64) or >= 64.

Fix by masking the shift amount to [0, 63] and computing the complement
as
(m - 64), which is always in [-64, -1]. Using lsl/lsr (logical shift)
instructions with this negative amount causes the hardware to reverse
the
shift direction while zero-filling vacated positions:

fshl(a, b, amt) = (a << m) | lsl(b, m - 64) // lsl reverses to lsr
fshr(a, b, amt) = (b >> m) | lsr(a, m - 64) // lsr reverses to lsl

where m = amt & 63. The logical shift instructions (lsl/lsr) are used
instead of arithmetic (asl) because asl with a negative amount performs
an
arithmetic right shift that sign-extends, which would corrupt the result
for negative source values.

When m = 0, the complement amount is -64 (magnitude 64), which shifts
all
64 bits out and produces zero, so the complement term vanishes as
required.

(cherry picked from commit 4fffee0375)
2026-03-30 14:45:43 +00:00
Brian Cain
a6cd46b239 [Hexagon] Fix B0 macro conflict between hexagon_types.h and termios.h (#184539)
POSIX termios.h defines `#define B0 0000000` for baud rate 0. This
conflicts with the B0() member functions in hexagon_types.h vector
classes, causing compilation failures when both headers are included.

Use #pragma push_macro/pop_macro to save, undefine, and restore B0
around the class definitions so the header is safe to use alongside
termios.h without losing the macro afterward.

Fixes #183815

(cherry picked from commit b84ea71e2a)
2026-03-30 14:30:08 +00:00
Brad Smith
4592b0b638
[libunwind] Fix building on OpenBSD / FreeBSD aarch64 (#188397)
Just checking for the header presence of sys/auxv.h breaks the
build on OpenBSD / FreeBSD. Make use of elf_aux_info().

(cherry picked from commit 588451c160)
2026-03-27 08:46:19 +00:00
Charlie Li
cf542a3d9c
[lldb] use the Py_REFCNT() macro instead of directly accessing member (#188161)
[PyObject members are not to be accessed
directly](https://docs.python.org/3/c-api/structures.html#c.PyObject),
but rather through macros, in this case `Py_REFCNT()`.

In most, ie Global Interpreter Lock-enabled, CPython cases,
`Py_REFCNT()` expands to accessing `ob_refcnt` anyway. However, in a
free-threaded CPython, combined with disabling the limited API (since it
requires the GIL for now), the direct member does not exist, causing the
build to fail. The macro expands to the correct access method in the
free-threaded configuration.

(cherry picked from commit 2a7b0f06d2)
2026-03-27 08:45:31 +00:00
hev
d40e607590
[LoongArch] Fix incorrect indexing of incoming byval arguments in tail call eligibility check (#188006)
The loop that validates byval arguments in
`isEligibleForTailCallOptimization()` incorrectly used the loop index
`i` when accessing `getIncomingByValArgs()`, even though `j` is the
index tracking the number of encountered byval arguments.

This mismatch could lead to out-of-bounds access or incorrect type
comparisons when non-byval arguments are interleaved with byval
arguments, causing the tail call eligibility check to fail or behave
incorrectly.

Fix this by using `j` consistently as the index into the incoming byval
argument list and only incrementing it after the bounds check.

Fixes #187832

(cherry picked from commit ab17b5408a)
2026-03-27 08:44:53 +00:00
Devajith
b68aafeb0d
[clang][AST] Preserve qualifiers in getFullyQualifiedType for AutoType (#187717)
A previous change (86c4e96) did not preserve qualifiers attached to the
AutoType QualType when the type was deduced.

For an AutoType after `getDeducedType()`, qualifiers from the original
QualType were dropped. Preserve and reapply them to the deduced type.

(cherry picked from commit 1f9c54a15a)
2026-03-27 08:43:59 +00:00
Younan Zhang
55b4424958
[Clang] Fix a concept subsumption bug when template depths are adjusted (#186735)
We cannot reuse the cached normalization results if any template depth
adjustments (in subsumption checking) are involved.

Fixes https://github.com/llvm/llvm-project/issues/186624

(cherry picked from commit 13138b3cb9)
2026-03-27 08:43:09 +00:00
Douglas Yung
7b593cd6c0
Bump version to 22.1.3 2026-03-24 20:03:33 +00:00
owenca
1ab49a973e
[clang-format] Fix regression in annotating angles in static_assert (#187966)
Fixes #187936

(cherry picked from commit 4b084f23ba)
2026-03-23 18:46:22 +00:00
Alexey Bataev
ed9551146f
[SLP]Improve reductions for copyables/split nodes
The original support for copyables leads to a regression in x264 in
RISCV, this patch improves detection of the copyable candidates by more
precise checking of the profitability and adds and extra check for
splitnode reduction, if it is profitable.

Fixes #184313

Reviewers: hiraditya, RKSimon

Pull Request: https://github.com/llvm/llvm-project/pull/185697
2026-03-23 18:45:28 +00:00
Martin Storsjö
8f8b53a0ec
[LLD] [ELF] Make -z gcs=always implicitly warn on missing GCS, like force-bti (#186203)
This matches GNU ld, where gcs=always makes it implicitly warn about
missing GCS flags, by matching the existing code pattern used for BTI
and IBT.

Also test that warnings can be printed for both missing BTI and GCS for
the same object file.

This fixes #186173.

(cherry picked from commit 887d2d4bf7)
2026-03-23 03:20:01 +00:00
Pengcheng Wang
8efb87ae5a
[RISCV] Relax out of range Zibi conditional branches (#186965)
If `.Label` is not within +-4KiB range, we convert

```
beqi/bnei reg, imm, .Label
```

to

```
bnei/beqi reg, imm, 8
j .Label
```

This is similar to what is done for the RISCV conditional branches
and `Xqcibi` conditional branches.

---------

Co-authored-by: Sudharsan Veeravalli <svs@qti.qualcomm.com>
2026-03-23 03:12:38 +00:00
Dominik Steenken
94411c9d56
[SystemZ] Remove custom lowering of f16 IS_FPCLASS (#187532)
As pointed out in #187518 , currently, `__builtin_isnormal` returns
`true` for subnormal half precision floating point numbers on `s390x.

This is because there is a custom lowering defined which lowers an `f16`
`IS_FPCLASS` ISD node by extending the `f16` value to `f32`, and then
using SystemZ's "test data class" instruction to determine whether the
number is subnormal. However, a number that is subnormal in 16 bits of
precision will no longer be subnormal in 32 bits of precision, and so
the test always returns true, i.e. all subnormal numbers are classified
as normal.

This PR addresses this by removing the custom lowering and instead
relying on the generic expansion of `IS_FPCLASS`, which does not have
this error.

Fixes #187518 .

(cherry picked from commit 6eb5ac52ca)
2026-03-23 03:11:30 +00:00
wanglei
2e1aea6464
[LoongArch] Ensure .dwo sections do not contain relocations (#187429)
When linker relaxation is enabled, LoongArchAsmBackend may emit
relocations for same-section symbol differences, even when the fixup
is in a .dwo section. This leads to errors such as:

  error: A dwo section may not contain relocations

Split DWARF (.dwo) sections must not contain relocations. Fix this by
resolving such fixups immediately when they are emitted into .dwo
sections, even if the referenced symbols are in relaxable sections.

This avoids generating invalid relocations in .debug_*.dwo sections
when compiling with -gsplit-dwarf and -mrelax.

Fixes #187428

(cherry picked from commit 89d8fe9d08)
2026-03-23 03:10:46 +00:00
Devajith
bef8df8a60
[clang][AST] Fix assertion in getFullyQualifiedType for AutoType (#186105)
getFullyQualifiedType() asserts "Unhandled type node" when the input
QualType is an AutoType.

This was exposed by clang-repl's value printer:
```
clang-repl> namespace N { struct D {}; }
clang-repl> auto x = N::D(); x // asserts
```

Strip AutoType early before the type-specific handling.

(cherry picked from commit 86c4e96856)
2026-03-21 00:49:39 +00:00
Balazs Benics
9fdb8da1c5 [analyzer][docs] Mention that 'expand-macros' won't use clang-format in the future
See the discussion at:
https://discourse.llvm.org/t/can-we-link-clang-format-into-clanganalysis/89014/7

The clang-format macros expansion formatting was reverted from llvm/main
in PR #186614.
2026-03-20 11:47:58 +00:00
Victor Chernyakin
80f11cb923
release/22.x: Backport workarounds for certain addMatcher overloads ignoring traversal kind 2026-03-18 21:20:48 +00:00
Nikita Popov
8ac0a123a5
[PowerPC] Preserve load output chain in vcmpequb combine (#187010)
Replace uses of the old load output chain with the new load output
chain. A plain replacement here is fine because the transform verifies
the load is one-use.

Fixes https://github.com/llvm/llvm-project/issues/186549.

(cherry picked from commit 7404a5dbe0)
2026-03-18 21:20:07 +00:00
Matheus Izvekov
20795d7ebd
[clang] Backport: use canonical arguments for checking function template constraints
Backport from #186889

This is a partial revert of #161671, restoring the original behaviour
where the canonical template arguments are used for function template
constraint checking in diagnostics.

This reverts the fix from #183010, which attempted to fix #182344
but it causes regressions. These regressions now have test cases
included.

The attempt at #183010 is flawed because in the general case we can't
check satisfaction for constraints which have unsubstituted template
arguments, even if they don't affect the canonical type (ie they are
purely
syntactical), because these types can still turn out to be invalid after
substitution.

This is a problem when directly evaluating a concept specialization, but
it's not a problem with other template specializations because the
as-written types are preserved, and will be later substituted, and any
failures
here will cause the program to be ill-formed anyway.

The only downside of this revert is the loss of sugar in some
diagnostics.

This could be improved in the future by adding a new flag which would
allow ignoring this instantiation dependence in such cases where a
substitution failure will be handled later anyway.

This is not done in this patch because we want the safest thing
possible, to help backporting this patch to Clang 22.

This preserves the tests from #183010 and also adds the tests from

Since this fixes a regression since Clang 21 and will be backported to
Clang 22, there are no release notes.
2026-03-18 21:19:05 +00:00
wanglei
160377d628
[lld][ELF] Fix crash when relaxation pass encounters synthetic sections
In LoongArch and RISC-V, the relaxation pass iterates over input sections
within executable output sections. When a linker script places a synthetic
section (e.g., .got) into such an output section, the linker would crash
because synthetic sections do not have the relaxAux field initialized.

The relaxAux data structure is only allocated for non-synthetic sections
in initSymbolAnchors. This patch adds the necessary null checks in the
relaxation loops (relaxOnce and finalizeRelax) to skip sections that
do not require relaxation.

A null check is also added to elf::initSymbolAnchors to ensure the
subsequent sorting of anchors is safe.

Fixes: #184757

Reviewers: MaskRay

Pull Request: https://github.com/llvm/llvm-project/pull/184758

(cherry picked from commit 655d5e7f69)
2026-03-18 21:18:17 +00:00
Nikolas Klauser
dc8750d911
[libc++] Fix iostream size ABI break (#185839)
In #124103 we changed the size of various iostream objects, which turns
out to be ABI breaking when compiling non-PIE code.

This ABI break is safe to fix, since for any programs allocating more
memory for the iostream objects, the remaining bytes are simply unused
now.

Fixes #185724

(cherry picked from commit c1d26c3c25)
2026-03-18 21:16:42 +00:00
Benjamin Maxwell
3611dc1bf0
Fix comment in FPR128 test (NFC)
(cherry picked from commit 4c31b6f93c)
2026-03-18 21:15:56 +00:00
Benjamin Maxwell
34bf276866
[AArch64] Ensure FPR128 callee-save stack offsets are aligned (#184314)
This was benign for Linux targets (as when dividing by the scale the
offset would be correctly truncated), so only resulted in failures with
`-DLLVM_ENABLE_ASSERTIONS=On`. On Windows, this was a miscompile as the
lack of alignment would result in the FPR128 callee-save getting
assigned to the same offset as the previous GPR.

Fixes: #183708
(cherry picked from commit 327f1adef8)
2026-03-18 21:15:56 +00:00
Artem Belevich
c1c833734c
[clang][CUDA] Define _NV_RSQRT_SPECIFIER for glibc-2.42/cuda-13.2 compatibility (#185701)
CUDA-13.2 defines _NV_RSQRT_SPECIFIER to make its headers compileable
with glibc 2.42+. However, clang does not include the header that
defines the macro, and has to define it by itself.

(cherry picked from commit ab048ac6c0)
2026-03-18 21:14:36 +00:00