LLVM/project 8d9649aclang/test/CodeGenObjC lit.local.cfg

fix lit
DeltaFile
+5-2clang/test/CodeGenObjC/lit.local.cfg
+5-21 files

LLVM/project c0eda89clang/test/CodeGenObjC expose-direct-method-lto.mm

add comment
DeltaFile
+66-60clang/test/CodeGenObjC/expose-direct-method-lto.mm
+66-601 files

LLVM/project 6deffdbmlir/include/mlir/Dialect/OpenMP OpenMPClauses.td, mlir/lib/Target/LLVMIR/Dialect/OpenMP OpenMPToLLVMIRTranslation.cpp

name change to getNumTeams()
DeltaFile
+3-3mlir/include/mlir/Dialect/OpenMP/OpenMPClauses.td
+2-2mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+5-52 files

LLVM/project aabad4dllvm/lib/Target/X86 X86ISelLoweringCall.cpp, llvm/test/CodeGen/X86 tailcallpic.ll tailcallpic3.ll

[X86] Enable sibcalls through 32-bit function pointers (#176518)

x86_32 is pretty dead, but I think this was an unintended consequence of
a change I reviewed and landed back in 2015 (80956a01425ee0), and the
code didn't match the comments, so it's worth fixing.

I added an ExternalSymbol case to cover sin at PLT, which has test
coverage.

I also combined the 3 relevant tests and made them use CHECK-LABEL, so
now this test uses LLVM test best practices circa 2018.
DeltaFile
+110-0llvm/test/CodeGen/X86/tailcallpic.ll
+0-73llvm/test/CodeGen/X86/tailcallpic3.ll
+0-16llvm/test/CodeGen/X86/tailcallpic1.ll
+0-15llvm/test/CodeGen/X86/tailcallpic2.ll
+6-3llvm/lib/Target/X86/X86ISelLoweringCall.cpp
+116-1075 files

LLVM/project 1033cc6mlir/include/mlir/Dialect/OpenMP OpenMPClauses.td, mlir/lib/Dialect/OpenMP/IR OpenMPDialect.cpp

remove custom parser printer for num_threads
DeltaFile
+0-24mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+5-5mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+4-6mlir/include/mlir/Dialect/OpenMP/OpenMPClauses.td
+9-353 files

LLVM/project bea50e2mlir/include/mlir/Dialect/OpenMP OpenMPClauses.td, mlir/lib/Dialect/OpenMP/IR OpenMPDialect.cpp

remove custom parser/printer for dims
DeltaFile
+0-24mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+8-8mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+6-8mlir/include/mlir/Dialect/OpenMP/OpenMPClauses.td
+14-403 files

LLVM/project 86c2f5dllvm/lib/Target/M68k M68kInstrControl.td, llvm/test/MC/M68k/Control/Classes MxCALL.s

[M68k][MC] Add support for the two remaining 68000 JSR addr modes (#176532)

These are (d16,An) and (d8,An,Xn).
DeltaFile
+14-0llvm/test/MC/M68k/Control/Classes/MxCALL.s
+2-0llvm/lib/Target/M68k/M68kInstrControl.td
+16-02 files

LLVM/project 17b01bblldb/include/lldb/Target Thread.h StackFrameList.h, lldb/source/Target Thread.cpp StackFrameList.cpp

[lldb] Enable chaining multiple scripted frame providers per thread (#172849)

This patch allows threads to have multiple SyntheticFrameProviderSP
instances that chain together sequentially. Each provider receives the
output of the previous provider as input, creating a transformation
pipeline.

It changes `Thread::m_frame_provider_sp` to a vector, adds provider
parameter to SyntheticStackFrameList to avoid calling back into
`Thread::GetFrameProvider()` during frame fetching, updated
`LoadScriptedFrameProvider()` to chain providers by wrapping each
previous provider's output in a `SyntheticStackFrameList` for the next
provider and finally, loads ALL matching providers in priority order
instead of just the first one.

The chaining works as follows:
```
  Real Unwinder Frames
      ↓

    [11 lines not shown]
DeltaFile
+92-0lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
+78-0lldb/test/API/functionalities/scripted_frame_provider/test_frame_providers.py
+35-25lldb/source/Target/Thread.cpp
+7-6lldb/source/Target/StackFrameList.cpp
+5-4lldb/include/lldb/Target/Thread.h
+5-1lldb/include/lldb/Target/StackFrameList.h
+222-366 files

LLVM/project 02f9a26llvm/test/CodeGen/AMDGPU/GlobalISel regbankselect-atomicrmw-add-sub.mir atomicrmw-add-sub.ll

[AMDGPU] Add legalization rules for atomic ops (#175253)

Implement rules for G_ATOMICRMW_{ADD, SUB, XCHG, AND, OR, XOR}.
DeltaFile
+461-0llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-atomicrmw-add-sub.mir
+264-0llvm/test/CodeGen/AMDGPU/GlobalISel/atomicrmw-add-sub.ll
+228-0llvm/test/CodeGen/AMDGPU/GlobalISel/atomicrmw-xchg.ll
+217-2llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-atomicrmw-xor.mir
+217-2llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-atomicrmw-or.mir
+217-2llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-atomicrmw-and.mir
+1,604-67 files not shown
+2,385-1213 files

LLVM/project 6a156fcclang/lib/CodeGen CodeGenModule.cpp, clang/test/CodeGenOpenCL amdgpu-features.cl amdgpu-enqueue-kernel.cl

[RFC][Clang][AMDGPU] Emit only delta target-features to reduce IR bloat

Currently, AMDGPU functions have `target-features` attribute populated with all default features for the target GPU. This is redundant because the backend can derive these defaults from the `target-cpu` attribute via `AMDGPUTargetMachine::getFeatureString()`.

In this PR, for AMDGPU targets only:

- Functions without explicit target attributes no longer emit `target-features`
- Functions with `__attribute__((target(...)))` or `-target-feature` emit only features that differ from the target's defaults (delta)

The backend already handles missing `target-features` correctly by falling back to the TargetMachine's defaults.

A new cc1 flag `-famdgpu-emit-full-target-features` is added to emit full features when needed.

Example:

Before:

```llvm
attributes #0 = { "target-cpu"="gfx90a" "target-features"="+16-bit-insts,+atomic-buffer-global-pk-add-f16-insts,+atomic-fadd-rtn-insts,+ci-insts,+dl-insts,+dot1-insts,+dot2-insts,..." }

    [13 lines not shown]
DeltaFile
+341-12clang/test/OpenMP/amdgcn-attributes.cpp
+53-53clang/test/CodeGenOpenCL/amdgpu-features.cl
+42-40clang/test/CodeGenOpenCL/amdgpu-enqueue-kernel.cl
+70-0clang/test/CodeGenOpenCL/amdgpu-features-default-delta.cl
+33-5clang/lib/CodeGen/CodeGenModule.cpp
+4-6clang/test/CodeGenOpenCL/amdgpu-readonly-features-written-with-no-target.cl
+543-1164 files not shown
+556-11910 files

LLVM/project 4f7d04cclang/lib/CodeGen CGObjCMac.cpp, clang/test/CodeGenObjC expose-direct-method-lto.mm lit.local.cfg

Found a bug with LTO
DeltaFile
+95-0clang/test/CodeGenObjC/expose-direct-method-lto.mm
+6-3clang/lib/CodeGen/CGObjCMac.cpp
+5-0clang/test/CodeGenObjC/lit.local.cfg
+2-2clang/test/CodeGenObjC/expose-direct-method.m
+1-2clang/test/CodeGenObjC/expose-direct-method-cross-linkage.m
+109-75 files

LLVM/project 2b41bc8clang/test/CodeGenCUDA fp-contract.cu, llvm/lib/CodeGen ExpandIRInsts.cpp

Fixed test, addressed comment.
DeltaFile
+5-5clang/test/CodeGenCUDA/fp-contract.cu
+5-5llvm/lib/CodeGen/ExpandIRInsts.cpp
+10-102 files

LLVM/project fe14661clang/test/CodeGen/LoongArch targetattr-la64.c, clang/test/Driver loongarch-march.c

Fix a typo
DeltaFile
+4-4clang/test/Driver/loongarch-march.c
+4-4clang/test/CodeGen/LoongArch/targetattr-la64.c
+1-1llvm/include/llvm/TargetParser/LoongArchTargetParser.h
+9-93 files

LLVM/project 387e6e2clang/include/clang/CIR MissingFeatures.h, clang/lib/CIR/CodeGen CIRGenExprAggregate.cpp CIRGenCoroutine.cpp

[CIR] Upstream support co_return of values from co_await (#173174)

This PR adds support for returning the result of a `co_await` via
`co_return`. A new variable, `__coawait_resume_rval`, is introduced to
store the returned value.
DeltaFile
+85-1clang/test/CIR/CodeGen/coro-task.cpp
+23-1clang/lib/CIR/CodeGen/CIRGenExprAggregate.cpp
+9-2clang/lib/CIR/CodeGen/CIRGenCoroutine.cpp
+6-4clang/test/CIR/CodeGen/trivial-ctor-const-init.cpp
+0-1clang/include/clang/CIR/MissingFeatures.h
+123-95 files

LLVM/project 483c683clang/lib/CodeGen CodeGenModule.cpp, llvm/include/llvm/Support CodeGen.h

[NFC][win] Use an enum for the cfguard module flag (#176461)

Currently the `cfguard` module flag can be set to 1 (emit tables only,
no checks) or 2 (emit tables and checks).

This change formalizes that definition by moving these values into an
enum, instead of just having them documented in comments.

Split out from #176276
DeltaFile
+5-7llvm/lib/Transforms/CFGuard/CFGuard.cpp
+8-4clang/lib/CodeGen/CodeGenModule.cpp
+10-0llvm/include/llvm/Support/CodeGen.h
+4-5llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
+7-0llvm/lib/IR/Module.cpp
+3-3llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+37-192 files not shown
+42-208 files

LLVM/project 719a8ebllvm/lib/Target/RISCV RISCVCallingConv.cpp

[RISCV][llvm] Remove outdated FIXME in calling convention. NFC (#176350)

DeltaFile
+0-2llvm/lib/Target/RISCV/RISCVCallingConv.cpp
+0-21 files

LLVM/project f53c2e6clang/include/clang/CIR/Dialect/Builder CIRBaseBuilder.h, clang/include/clang/CIR/Dialect/IR CIROps.td

[CIR] Upstream support for calling through method pointers (#176063)

This adds support to CIR for calling functions through pointer to method
pointers with the Itanium ABI for x86_64 targets. The ARM-specific
handling of method pointers is not-yet implemented.
DeltaFile
+151-2clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerItaniumCXXABI.cpp
+84-0clang/test/CIR/CodeGen/pointer-to-member-func.cpp
+54-0clang/include/clang/CIR/Dialect/IR/CIROps.td
+47-0clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+44-0clang/lib/CIR/CodeGen/CIRGenExprCXX.cpp
+30-0clang/include/clang/CIR/Dialect/Builder/CIRBaseBuilder.h
+410-27 files not shown
+451-813 files

LLVM/project 56522e4libc/test/src/strings wide_read_memory_test.cpp CMakeLists.txt

Create a poor-developer's msan for libc wide read functions. (#170586)

Most libcs optimize functions like strlen by reading in chunks larger
than a single character. As part of "the implementation", they can
legally do this as long as they are careful not to read invalid memory.

However, such tricks prevents those functions from being tested under
the various sanitizers.

This PR creates a test framework that can report when one of these
functions read or write in an invalid way without using the sanitizers.
DeltaFile
+101-0libc/test/src/strings/wide_read_memory_test.cpp
+15-0libc/test/src/strings/CMakeLists.txt
+116-02 files

LLVM/project 8021b02lldb/source/Plugins/Platform/WebAssembly PlatformWasm.cpp, lldb/source/Plugins/Process/gdb-remote ProcessGDBRemote.cpp

[llvm][Support] Move llvm::createStringErrorV to a new ErrorExtras.h header (#176491)

Introducing `llvm::createStringErrorV` caused a `0.5%` compile-time
regression because it's an inline function in a core header. This moves
the API to a new header to prevent including this function in files that
don't need it.

Also includes the header in the source files that have been using
`createStringErrorV` (which currently is just LLDB).
DeltaFile
+34-0llvm/include/llvm/Support/ErrorExtras.h
+0-16llvm/include/llvm/Support/Error.h
+1-0lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.cpp
+1-0lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+1-0lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
+1-0lldb/source/Protocol/MCP/Server.cpp
+38-166 files not shown
+44-1612 files

LLVM/project 1f9c53cflang/lib/Parser program-parsers.cpp, flang/test/Semantics cuf-proc-attr-error.cuf

[flang][cuda] Emit better error when subprogram attribute is absent or bad (#176501)

this patch update the parser for CUDA Fortran subprogram attribute to
emit more precise error.

Instead of having error like: 

```
error: expected 'END'
      attributes(managed) integer function fooj()
      ^
```

The parser will emit: 
```
 expected DEVICE, GLOBAL, GRID_GLOBAL, or HOST attribute
  attributes(managed) integer function fooj()
             ^
```
DeltaFile
+12-7flang/lib/Parser/program-parsers.cpp
+9-0flang/test/Semantics/cuf-proc-attr-error.cuf
+21-72 files

LLVM/project 022888elibc/shared/math fsqrtf128.h, libc/src/__support/math fsqrtf128.h CMakeLists.txt

[libc][math] Refactor fsqrtf128 to Header Only. (#175686)

builds correctly with both Clang and GCC 12.2.

Closes #175333.
DeltaFile
+33-0libc/src/__support/math/fsqrtf128.h
+28-0libc/shared/math/fsqrtf128.h
+12-1utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+9-0libc/src/__support/math/CMakeLists.txt
+2-5libc/src/math/generic/fsqrtf128.cpp
+2-2libc/src/math/generic/CMakeLists.txt
+86-83 files not shown
+89-89 files

LLVM/project 6397207libc/shared/math ilogbl.h, libc/src/__support/math ilogbl.h CMakeLists.txt

[libc][math] Refactor ilogbl to Header Only. (#176500)

builds with both Clang and GCC 12.2.

Closes https://github.com/llvm/llvm-project/issues/175349.
DeltaFile
+28-0libc/src/__support/math/ilogbl.h
+23-0libc/shared/math/ilogbl.h
+12-1utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+10-0libc/src/__support/math/CMakeLists.txt
+2-6libc/src/math/generic/ilogbl.cpp
+3-0libc/test/shared/shared_math_test.cpp
+78-73 files not shown
+82-89 files

LLVM/project c70fc1allvm/lib/Target/X86 X86ISelLoweringCall.cpp X86ISelLowering.h, llvm/test/CodeGen/X86 nocf_check_musttail.ll

[X86] Separate sibcall checks from guaranteed TCO (#176479)

Rename IsEligibleForTailCallOptimization to isEligibleForSiblingCallOpt.
LLVM supports two other ways to bypass this logic: musttail and
ShouldGuaranteeTCO. The result of this function doesn't really control
tail call eligibility, and returning false from it is not sufficient to
block tail call emission. Rename it to clarify the code.

Move the calling convention match check, which is the only thing that
matters in the guaranteed TCO case, out of this sibcall eligibility
check.

Move the GOT early binding check into the sibcall eligibility check,
since it is bypassed in either guaranteed TCO case. When that [diff
landed](https://reviews.llvm.org/D9799), it did not have exceptions for
`musttail`, but later in 9ff2eb1ea596a the two guaranteed tail call
cases were made to override this check, forcing lazy binding, which I
agree is the right tradeoff.


    [3 lines not shown]
DeltaFile
+44-46llvm/lib/Target/X86/X86ISelLoweringCall.cpp
+17-0llvm/test/CodeGen/X86/nocf_check_musttail.ll
+5-5llvm/lib/Target/X86/X86ISelLowering.h
+66-513 files

LLVM/project 997fdeflibc/shared/math llogbf.h, libc/src/__support/math llogbf.h CMakeLists.txt

[libc][math] Refactor llogbf to Header Only. (#176494)

builds with both Clang and GCC 12.2.

Closes https://github.com/llvm/llvm-project/issues/175354.
DeltaFile
+28-0libc/src/__support/math/llogbf.h
+23-0libc/shared/math/llogbf.h
+12-1utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+10-0libc/src/__support/math/CMakeLists.txt
+2-4libc/src/math/generic/llogbf.cpp
+2-1libc/src/math/generic/CMakeLists.txt
+77-63 files not shown
+80-69 files

LLVM/project 0f739e7llvm/lib/Target/AMDGPU SIInstrInfo.cpp

[AMDGPU] Use lambda in fmaak/fmamk f16 folding. NFC (#176258)

DeltaFile
+23-38llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+23-381 files

LLVM/project bbafff1llvm/lib/Target/AMDGPU AMDGPULowerVGPREncoding.cpp SIInstrInfo.h

[AMDGPU] NFC: Add a comment (#176435)

DeltaFile
+8-5llvm/lib/Target/AMDGPU/AMDGPULowerVGPREncoding.cpp
+0-6llvm/lib/Target/AMDGPU/SIInstrInfo.h
+8-112 files

LLVM/project da34f9bllvm/lib/Target/AArch64 AArch64FrameLowering.cpp AArch64PrologueEpilogue.cpp, llvm/test/CodeGen/AArch64 arm64-windows-calls.ll wineh-pac.ll

[AArch64] Fix Windows prologue handling to pair more registers. (#170214)

Currently, there's code to suppress pairing, but we don't actually need
to suppress that; we just need to suppress the formation of
pre-decrement/post-increment instructions.

Pairing saves an instruction in some cases, and enables packed unwind in
some cases.
DeltaFile
+20-24llvm/test/CodeGen/AArch64/arm64-windows-calls.ll
+16-16llvm/test/CodeGen/AArch64/wineh-pac.ll
+9-16llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
+8-16llvm/test/CodeGen/AArch64/win64_vararg2.ll
+12-12llvm/test/DebugInfo/COFF/AArch64/arm64-register-variables.ll
+13-1llvm/lib/Target/AArch64/AArch64PrologueEpilogue.cpp
+78-851 files not shown
+84-917 files

LLVM/project 08bcd7clibc/shared/math hypotf.h, libc/src/__support/math hypotf.h CMakeLists.txt

[libc][math] Refactor hypotf to Header Only. (#175679)

builds correctly with both Clang and GCC 12.2.

Closes #175338.
DeltaFile
+107-0libc/src/__support/math/hypotf.h
+2-83libc/src/math/generic/hypotf.cpp
+22-0libc/shared/math/hypotf.h
+17-2utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+13-0libc/src/__support/math/CMakeLists.txt
+2-6libc/src/math/generic/CMakeLists.txt
+163-913 files not shown
+166-919 files

LLVM/project 7950a88llvm/lib/Support Jobserver.cpp

[llvm/Support] Remove unnecessary includes from `Jobserver.cpp`, NFC (#176473)

DeltaFile
+0-5llvm/lib/Support/Jobserver.cpp
+0-51 files

LLVM/project a84d743lldb/source/Plugins/Instruction/RISCV EmulateInstructionRISCV.cpp, lldb/unittests/Instruction/RISCV TestRISCVEmulator.cpp

[lldb] Support both RISCV-32 and RISCV-64 in GetRegisterInfo (#176472)

`GetRegisterInfo` hardcodes to use `RegisterInfoPOSIX_riscv64` instead
of checking the triple to determine whether to use
`RegisterInfoPOSIX_riscv64` or `RegisterInfoPOSIX_riscv32`.

Someone put up a [PR](https://github.com/llvm/llvm-project/pull/175262)
for this, but seems to have removed their account and the associated PR
with it.

Fixes #175092
DeltaFile
+19-4lldb/source/Plugins/Instruction/RISCV/EmulateInstructionRISCV.cpp
+17-0lldb/unittests/Instruction/RISCV/TestRISCVEmulator.cpp
+36-42 files