Changes

Summary

  1. [SCEV][NFC] Reduce memory footprint & compile time via DFS refactoring (details)
  2. PR52183: Don't emit code for a void-typed constant expression. (details)
  3. [analyzer] Fix property access kind detection inside parentheses. (details)
  4. [PowerPC] Support ppc-asm-full-reg-names for AIX (details)
  5. [SCEV] Prove implication of predicates to their sign-flipped counterparts (details)
  6. [llvm] Use llvm::is_contained (NFC) (details)
  7. [RISCV] Optimize immediate materialisation with SH*ADD (details)
  8. [NFC] fix a typo (details)
  9. Use Module's FileSpec for limiting binaries to set dyld breakpoint in (details)
  10. [MLIR] Add `KeywordOrString` handling to AsmParser (details)
Commit 1202d280c6d96d6ad85d7e3d9f0968a7331f4322 by mkazantsev
[SCEV][NFC] Reduce memory footprint & compile time via DFS refactoring

Current implementations of DFS in SCEV check unique-visited of traversed
values on pop, and not on push. As result, the same value may be pushed
multiple times just to be thrown away when popped. These operations are
meaningless and only waste time and increase memory footprint of the
worklist.

This patch reworks the DFS strategy to check uniqueness before push.
Should be NFC.

Differential Revision: https://reviews.llvm.org/D111774
Reviewed By: nikic, reames
The file was modifiedllvm/lib/Analysis/ScalarEvolution.cpp
Commit effbf0bdd039237542ac5e9afe1f23c9386010e2 by richard
PR52183: Don't emit code for a void-typed constant expression.

This is unnecessary in general, and wrong when the expression invokes a
consteval function.
The file was modifiedclang/lib/CodeGen/CGExprScalar.cpp
The file was modifiedclang/test/CodeGenCXX/cxx2a-consteval.cpp
The file was modifiedclang/lib/CodeGen/CGExprConstant.cpp
Commit 12cbc8cbf071901686b36e192a6d4da19deb6ec6 by Artem Dergachev
[analyzer] Fix property access kind detection inside parentheses.

'(self.prop)' produces a surprising AST where ParenExpr
resides inside `PseudoObjectExpr.

This breaks ObjCMethodCall::getMessageKind() which in turn causes us
to perform unnecessary dynamic dispatch bifurcation when evaluating
body-farmed property accessors, which in turn causes us
to explore infeasible paths.
The file was modifiedclang/lib/StaticAnalyzer/Core/CallEvent.cpp
The file was modifiedclang/test/Analysis/ObjCProperties.m
Commit 9e9b0f462146e91570f8a4d86611d737f65b0404 by qiucofan
[PowerPC] Support ppc-asm-full-reg-names for AIX

Reviewed By: jsji

Differential Revision: https://reviews.llvm.org/D94282
The file was modifiedllvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-sync-32.ll
The file was modifiedllvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp
The file was modifiedllvm/test/CodeGen/PowerPC/reg-names.ll
The file was modifiedllvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-sync-64.ll
The file was modifiedllvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-cmpb-32.ll
Commit 90ae538cab4b0535450b079244241424ff90711c by mkazantsev
[SCEV] Prove implication of predicates to their sign-flipped counterparts

This patch teaches SCEV two implication rules:

  x <u y && y >=s 0 --> x <s y,
  x <s y && y <s 0 --> x <u y.

And all equivalents with signs/parts swapped.

Differential Revision: https://reviews.llvm.org/D110517
Reviewed By: nikic
The file was modifiedllvm/lib/Analysis/ScalarEvolution.cpp
The file was modifiedllvm/test/Transforms/IndVarSimplify/outer_phi.ll
Commit 81e9c90686f7bfbdd721b8e1a780152c95c258b0 by kazu
[llvm] Use llvm::is_contained (NFC)
The file was modifiedllvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
The file was modifiedllvm/include/llvm/Support/CommandLine.h
The file was modifiedllvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
The file was modifiedllvm/lib/Transforms/Vectorize/LoopVectorize.cpp
The file was modifiedllvm/lib/Target/AArch64/AArch64LowerHomogeneousPrologEpilog.cpp
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp
The file was modifiedllvm/lib/IR/Assumptions.cpp
The file was modifiedllvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
Commit 4fe5ab4b00b211cab1be36845965cf2aded5472d by powerman1st
[RISCV] Optimize immediate materialisation with SH*ADD

Use SH1ADD/SH2ADD/SH3ADD along with LUI+ADDI to compose int32*3,
int32*5 and int32*9.

Reviewed By: craig.topper, luismarques

Differential Revision: https://reviews.llvm.org/D111484
The file was modifiedllvm/test/MC/RISCV/rv64zba-aliases-valid.s
The file was modifiedllvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
The file was modifiedllvm/lib/Target/RISCV/MCTargetDesc/RISCVMatInt.cpp
The file was modifiedllvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
The file was modifiedllvm/test/CodeGen/RISCV/imm.ll
The file was modifiedllvm/lib/Target/RISCV/RISCVInstrInfo.cpp
Commit 7c704c0f53bd7f785ec99fc6bedd71569816a28c by shaoce
[NFC] fix a typo
The file was modifiedlldb/test/API/python_api/target/TestTargetAPI.py
The file was modifiedlldb/bindings/interface/SBSymbolContextList.i
The file was modifiedllvm/tools/llvm-mca/CodeRegionGenerator.cpp
Commit 35d710148b98e2ec52056271e7f9103620593b7a by Jason Molenda
Use Module's FileSpec for limiting binaries to set dyld breakpoint in

When DynamicLoaderMacOS::SetNotificationBreakpoint sets the breakpoint
for new binaries being loaded/unloaded, it limits the scope of that
breakpoint to just dyld, so we don't re-evaluate the breakpoint for
every new binary loaded.  I wrote this to get the module's ObjectFile
FileSpec in an earlier change, but this is not correct.  If lldb
is debugging a remote system, and it had to read dyld out of memory
from the remote system, it will have no FileSpec on the lldb debugger
host.  We need to grab the Module's FileSpec, which in this case is
actually falling back to the PlatformFileSpec, the binary path on the
target system.

rdar://84199646
The file was modifiedlldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.cpp
Commit 844706701ea36ea78ffab8398541bccf967ae40c by youngar17
[MLIR] Add `KeywordOrString` handling to AsmParser

This adds a new parser and printer for text which may be a keyword or a
string. When printing, it will attempt to print the text as a keyword,
but if it has any special or non-printable characters, it will be
printed as an escaped string.  When parsing, it will parse either a
valid keyword or a potentially escaped string. The printer allows for an
empty string, in which case it prints `""`.

This new function is used for printing the name in NamedAttributes, and
for printing the symbol name after the `@`. In CIRCT we are using this
to print module port names, which are conceptually similar to named
function arguments.

Reviewed By: rriddle

Differential Revision: https://reviews.llvm.org/D111683
The file was modifiedmlir/lib/IR/AsmPrinter.cpp
The file was modifiedmlir/include/mlir/IR/OpImplementation.h
The file was modifiedmlir/lib/Parser/AsmParserImpl.h