Skip to content

[pull] main from llvm:main #5556

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10,000 commits into from
Jul 9, 2025
Merged

[pull] main from llvm:main #5556

merged 10,000 commits into from
Jul 9, 2025

Conversation

pull[bot]
Copy link

@pull pull bot commented Mar 27, 2025

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.1)

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull bot added the ⤵️ pull label Mar 27, 2025
RossBrunton and others added 29 commits July 7, 2025 16:20
…147219)

Fixes #144775

--- 

This patch addresses a false-positive `-Wdocumentation` warning on
`@tparam` comments attached to _variable template partial
specializations_
C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\llvm\include\llvm/SandboxIR/Value.h(172,16):
warning: unqualified friend declaration referring to type outside of the
nearest enclosing namespace is a Microsoft extension; add a nested name
specifier [-Wmicrosoft-unqualified-friend]

Clang suggests adding ::llvm::, but:
* Region is in ::llvm::sandboxir
* Region is not defined at this point

So forward declare it.
The 'cache' construct is an interesting one, in that it doesn't take any
clauses, and is exclusively a collection of variables. Lowering wise,
  these just get added to the associated acc.loop.  This did require
  some work to ensure that the cache doesn't have 'vars' that aren't
  inside of the loop, but Sema is taking care of that with a warning.

Otherwise this is just a fairly simple amount of lowering, where each
'var' in the list creates an acc.cache, which is added to the acc.loop.
Implement functional cast to ComplexType

#141365
#146766)

This removes the `{BENIGN,COMPATIBLE}{,_ENUM,_VALUE}_LANGOPT` X macros
controlling `LangOptions`. These are permutations of the base `LANGOPT`,
`ENUM_LANGOPT` and `VALUE_LANGOPT` X macros that also carry the
information of their effect on AST (and therefore module compatibility).
Their functionality is now implemented by passing `Benign`, `Compatible`
or `NotCompatible` argument to the base X macros and using C++17 `if
constexpr` in the clients to achieve the same codegen.

This PR solves this FIXME:
```
// FIXME: Clients should be able to more easily select whether they want
// different levels of compatibility versus how to handle different kinds
// of option.
```

The base X macros are preserved, since they are used in `LangOptions.h`
to generate different kinds of field and function declarations for
flags, values and enums, which can't be achieved with `if constexpr`.

The new syntax also forces developers to think about compatibility when
adding new language option, hopefully reducing the number of new options
that are affecting by default even though they are benign or compatible.

Note that the `BENIGN_` macros used to forward to their `COMPATIBLE_`
counterparts. I don't think this ever kicked in, since there are no
clients of the `.def` file that define `COMPATIBLE_` without also
defining `BENIGN_`. However, this might be something downstream forks
need to take care of by doing `if constexpr (CK::Compatibility ==
CK::Benign || CK::Compatibility == CK::Compatible)` in place of `#define
COMPATIBLE_`.
… arg (#146910)

This is the `CodeGenOptions` counterpart to
#146766.
This revision adds DeviceMaskingAttrInterface and extends
DeviceMappingArrayAttr to accept a union of DeviceMappingAttrInterface
and DeviceMaskingAttrInterface.

Support is added to GPUTransformOps to take advantage of this
information and lower to block/warpgroup/warp/thread specialization when
mapped to linear ids.

The revision also connects to scf::ForallOp and uses the new attribute
to implement warp specialization.
The implementation is in the form of a GPUMappingMaskAttr, which can be
additionally passed to the scf.forall.mapping attribute to specify a
mask on compute resources that should be active.

In the first implementation the masking is a bitfield that specifies for
each processing unit whether it is active or not.
In the future, we may want to implement this as a symbol to refer to
dynamically defined values.
Extending op semantics with an operand is deemed too intrusive at this
time.

---------

Co-authored-by: Oleksandr "Alex" Zinenko <[email protected]>
Change undef branch conditions to the values that loop-simplify gives
them, and handle other undef values by using extra arguments. I'm making
this change because of an upcoming loop strength reduction change that
results in instsimplify removing more instructions due to them using
undef, causing the test checks to fail.
Fixes `#146802`

#146582 started using the `Reserved` Frame Pointer kind for Arm64
Windows, but this revealed a bug in Flang where it copied the
`-mframe-pointer=reserved` flag from Clang, but didn't correctly handle
it in its own command line parser and subsequent compilation pipeline.

This change adds support for `-mframe-pointer=reserved` and adds a test
to make sure that functions are correctly marked when the flag is set.
…r vector floating point operations (#146792)

Fixes #146428 _fltused reference generated for vector floating point
operations

Currently references to _fltused are incorrectly emitted due to the
presence of vector floating point operations. This causes spurious
references to _fltused in vector floating point system code where the
CRT is not used. This issue is limited to the X86 MSVC environment.

As described in the bug:
* _fltused should only be emitted for floating point operations as the
reference is used to initialize some parts of FP CRT support.
* Vector floating point operations on their own don't require that CRT
support.

Have confirmed intended behavior with MSVC team.

Fix alters usesMSVCFloatingPoint() to look for floating point
instructions/operands rather than floating point or vector floating
point.
…146916)

This was an oversight in
#128942 where I forgot to add
the configured page size to the `WasmLimits` in the import we emit when
importing a memory.

Fixes: #146713
Implement AbstractConditionalOperator support for ComplexType

#141365
…c (NFC) (#146784)

Change the name of `ValueObjectSyntheticFilter.{h,cpp}` to match the main type they
declare and define: `ValueObjectSynthetic`.
#126315 changes the premerge
testing to build in Debug, Release, and MinSizeRel configs, as opposed
to only MinSizeRel, but for some reason the matrix is not returning all
options now. Fix so that it actually builds the intended configs.

Per discussion in
[146161](#146161), only test
all three configs on Linux x86_64. Other OS's and configurations will
build in Debug mode only.

Also fix a cmake variable and remove outdated comments.

Bug: #146161
…#146954)

This PR add support for linearizing the insertion of a scalar element by
just linearizing the `vector.insert` op.
This commit upstreams the LLDB RPC server interface emitters. These
emitters generate the server-side API interfaces for RPC, which
communicate directly with liblldb itself out of process using the SB
API.

https://discourse.llvm.org/t/rfc-upstreaming-lldb-rpc/85804
… Finalize Linkage pass (#146406)

Fixes #140420. The switch.table.* validation errors were caused by DXIL
not supporting private global variables. Converting them to internal
linkage fixes the bug.

May need more discussion on the preserved analyses/a follow-up PR that
fixes what this pass says it preserves.
kazutakahirata and others added 29 commits July 8, 2025 12:47
D is already of CXXMethodDecl *.
AfterCSRPopSize is already of int64_t.
These are identified by misc-include-cleaner.  I've filtered out those
that break builds.  Also, I'm staying away from llvm-config.h,
config.h, and Compiler.h, which likely cause platform- or
compiler-specific build failures.
This should improve synchronizing the MainLoopWindows monitor thread
with the main loop state.

This uses the `m_ready` and `m_event` event handles to manage when the
Monitor thread continues and adds new tests to cover additional use
cases.

I believe this should fix #147291 but it is hard to ensure a race
condition is fixed without running the CI on multiple
machines/configurations.

---------

Co-authored-by: Pavel Labath <[email protected]>
getOrCreateResultFromMemIntrinsic can modify the current function by
inserting new instructions without EarlyCSE keeping track of the
changes.

Introduce a new CanCreate argument, and update the function to only create
new instructions when CanCreate = true. Use it when appropriate.

Fixes #145183
…immediate. (#147458)

This applies the same check as llvm.vector.splice which checks that the immediate is in the range [-VL, VL-1] where VL is the minimum vector length. If vscale_range is available, the lower bound is used to increase the known minimum vector length for this check. This ensures the immediate is in range for any possible value of vscale that satisfies the vscale_range.
This patch fixes:

  third-party/unittest/googletest/include/gtest/gtest.h:1379:11:
  error: comparison of integers of different signs: 'const unsigned
  long' and 'const int' [-Werror,-Wsign-compare]
Update tests to fix silently failing test and handle when a module is
removed.
…ion is lower than 1.6 (#147432)

Fixes #147394

References DXC for the implementation logic:

https://github.com/microsoft/DirectXShaderCompiler/blob/d751c827ed3b61e87fdf57d0f424cb2d7af30cd0/lib/HLSL/DxilPreparePasses.cpp#L693-L699

If DXIL Version < 1.6 then replace lifetime intrinsics with stores

- For validator version >= 1.6, store an undef
- For validator version < 1.6, store zeros

else keep the lifetime intrinsics in the DXIL.

After this PR, the number of DML shaders failing validation due to
#146974 is reduced from 157 to 50.
…44970)

443377a handled simple variable
definitions, but it didn't handle uninitialized variables with a
consteval constructor, and it didn't handle template instantiation.

Fixes #135281 .
This patch fixes:

  lldb/tools/lldb-dap/ProtocolUtils.cpp:77:22: error: implicit
  instantiation of undefined template 'std::basic_ostringstream<char>'
…rget divergency. (#147560)

This is the next attempt to upstream this:
#144947
The las one caused build errors in AArch64.
Issue was resolved.
Same as #146696 but for #145357.

---------

Signed-off-by: Justin King <[email protected]>
Working in the Breakpoint library is a minefield if you have your editor
configured to trim trailing whitespace. Remove it and format the
affected lines.
…47011)

Commands that take an address expression/address through the
OptionArgParser::ToAddress method, which has filtered this
user-specified address through one of the Process Fix methods to clear
non-addressable bits (MTE, PAC, top byte ignore, etc). We don't know
what class of address this is, IMEM or DMEM, but this method is passing
the addresses through Process::FixCodeAddress, and on at least one
target, FixCodeAddress clears low bits which are invalid for
instructions.

Correct this to use FixAnyAddress, which doesn't make alignment
assumptions.

The actual issue found was by people debugging on a 32-bit ARM Cortex-M
part, who tried to do a memory read from an odd address, and lldb
returned results starting at the next lower even address.

rdar://154885727
…42188)

In GFX9 and GFX10, the op_sel modifier should be allowed in the
instructions v_align_bit_b32 and v_alignbyte_b32.
…ts (#147475)

These are already applied to all the tests in the target subdirectory
This PR doesn't really need to change anything else, since the
instruction is
already supported, but just not tested.

Co-authored-by: Mekhanoshin, Stanislav <[email protected]>
This patch refactors use_clang into two functions. This is intended for
use within the clang-tools-extra test suite to avoid a race condition
where the clang binary exists but is not yet ready for execution which
results in a lit configuration failure.

Details are in #145703.

Reviewers: Keenuts, pogo59, AaronBallman, DavidSpickett

Reviewed By: pogo59

Pull Request: #147436
… required (#146224)

Fixes: #141659

In C23, something like [[/*possible attributes*/]]; is an attribute
declaration, not a statement. So it is not allowed by the syntax in
places where a statement is required, specifically as the secondary
block of a selection or iteration statement.

Therefore, code like the following should give a diagnostic (at least
with -std=c23 -pedantic), but Clang currently does not produce one:
```cpp
int main(void) {
    if (1)
        [[]];
}
```

---------

Signed-off-by: yronglin <[email protected]>
Signed-off-by: Wang, Yihan <[email protected]>
Co-authored-by: Mariya Podchishchaeva <[email protected]>
…reValidations` (#147117)

This pr abstracts out the logic of detecting resource range overlap from
`SemaHLSL` into the `RootSignatureValidations` library.

For more context see linked issue.

- Moves the validation logic from `SemaHLSL` to
`RootSignatureValidations`
- Updates `SemaHLSL` to use the new interface for the validations

Resolves: #146393
@pull pull bot merged commit aa1829d into Ericsson:main Jul 9, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment