Add ARMv8-M and ARMv8.1-M support for Darwin (#195184)
Extend Mach-O reading/writing and Clang's driver with support for
ARMv8-M and ARMv8.1-M. Then, build libclang_rt for armv8m.main and
armv8.1m.main target triples.
[NVPTX] Add commutativity to SETP instructions to enable MachineCSE of inverted predicates
Inverted predicates can be used freely in PTX. If we can invert a
predicate and CSE the generating instruction we can save calculating
the inverse.
Teach the NVPTX commuteInstructionImpl that SETP instructions can be
inverted to allow CSEing with previous SETP that match the inverted
form. This also inverts the branch users of the predicate to maintain
correctness.
Currently only allow the SETP inversion if all users are branches.
Future work can extend this to sel and not instructions.
Made-with: Cursor
[SSAF] Add SourcePassAnalysis framework
SourcePassAnalysis is for analyses/actions to be performed in a second
pass on source code, after the SSAF whole-program analysis.
SourcePassAnalysis is defined as an ASTConsumer abstraction that
depends on a whole-program analysis result.
This commit adds:
- SourcePassAnalysis base classes
- SourcePassAnalysis registry
- unit test for registry
rdar://175802731
[lldb] Change TestPublicAPIHeaders.py to only build when the target architecture matches the host's (#193848)
This test requires that LLDB.framework be built the same architecture as
the test binary (effectively). There's no way to specify that in our
testing logic currently, so let's just mark this test as arm64 only for
now.
---------
Co-authored-by: Jonas Devlieghere <jonas at devlieghere.com>
[lldb] Remove verbose DWARF spec comments from evaluator (NFC) (#195140)
Most labels in DWARFExpression::Evaluate have a 3-10 line
OPCODE/OPERANDS/DESCRIPTION block copied from the DWARF specification.
My assumption is that anyone editing this code should be consulting the
latest version of the spec, which is the (only) source of truth. This
approach doesn't scale, create the opportunity for subtle bugs and makes
the code harder to read.
Anything LLDB specific (i.e. that's not part of the spec) is preserved.
InstCombine: Don't read first argument of llvm.ptrauth.* call argument until checking intrinsic ID.
If llvm.ptrauth.auth or llvm.ptrauth.resign is called on the result of
a call with no arguments InstCombine will hit an assertion failure due
to reading the non-existent first argument. Fix it.
Assisted-by: gemini (wrote test)
Reviewers: nikic, fmayer
Pull Request: https://github.com/llvm/llvm-project/pull/195195
[clang][modules] Make -fmodules-decluse work on the public/private pair of modules (#192585)
Previously, it would only check the main module.
Now, if the main module is a private module (foo_Private), it will also check the public module.
[lldb] Extract DW_OP_fbreg and DW_OP_call_frame_cfa evaluation (NFC) (#195143)
Both case bodies had several levels of nested if/else validating the
execution context and frame before doing the real work. Invert the
checks and move the bodies to static helpers alongside
Evaluate_DW_OP_piece, matching the pattern already used for
Evaluate_DW_OP_deref_size and Evaluate_DW_OP_entry_value.
[MLIR][Vector] Add unrolling support for bitcast, interleave, and deinterleave ops (#194513)
This patch implements VectorUnrollOpInterface and unrolling patterns for
vector bitcast,
interleave, and deinterleave operations.
---------
Co-authored-by: Claude Sonnet 4.5 <noreply at anthropic.com>
[dsymutil] Fix ODR type uniquing for -gsimple-template-names (#194501) (#195174)
With -gsimple-template-names (now the default on macOS with deployment
target >= 26), template types like vector<int> and vector<float> both
get DW_AT_name("vector") in DWARF, with template parameters encoded only
as DW_TAG_template_type_parameter children.
Previously, dsymutil used only DW_AT_name for ODR type uniquing, causing
different template specializations to collide. This PR fixes that by
reconstructing template parameter information from child DIEs when the
type name does not already contain template parameters.
The reconstructed name is used only for uniquing and not emitted into
the output DWARF. The parallel DWARF linker already handled this
correctly via SyntheticTypeNameBuilder.
This reland removes an overly strict assertion when clang emits
DW_TAG_subprogram DIEs with a demangled template-like DW_AT_name (e.g.
foo<int>) but no DW_AT_linkage_name. The surrounding logic already
[5 lines not shown]