SuccessChanges

Summary

  1. [lldb/SWIG] Modulerize lldb.swig so parts of it can be reused. (details)
  2. [ubsan] Enable testing of .m files (details)
  3. [Legalizer] More detailed debugging printing in main loop (details)
  4. [Legalizer] Refactoring out legalizeMachineFunction (details)
  5. [Legalizer] Making artifact combining order-independent (details)
  6. [Mips] Fix gcc -Wunused-but-set-variable in -DLLVM_ENABLE_ASSERTIONS=Off (details)
  7. [OpenMP][Docs] Claim loop tiling. (details)
  8. [lit] Small cleanups. NFCI (details)
  9. [PowerPC] Add Support for indirect calls on AIX. (details)
  10. [analyzer] CStringChecker: Fix a crash on unknown value passed to (details)
  11. [libcxx] [test] Include missing headers. (NFC) (details)
  12. [c++20] Improve phrasing of diagnostic for missing #include <compare>. (details)
  13. PR44268: Fix crash if __builtin_object_size is applied to a heap (details)
  14. [Driver] Default to -momit-leaf-frame-pointer for AArch64 (details)
  15. [AArch64] Save FP for leaf functions when disabling frame pointer (details)
  16. [clang] Move CLANG_BOOTSTRAP_CMAKE_ARGS above PASSTHROUGH_VARIABLES (details)
  17. gn build: add deps I failed to add in b2508ce85c1 (details)
Commit 3a6da1122b990386edeba0987d0d1fdc9c8dc53d by Jonas Devlieghere
[lldb/SWIG] Modulerize lldb.swig so parts of it can be reused.
This groups the headers and interfaces in separate files that can be
included by other swig files for different languages.
The file was addedlldb/scripts/headers.swig
The file was addedlldb/scripts/interfaces.swig
The file was modifiedlldb/scripts/lldb.swig (diff)
Commit ed83942bc02501c62b55f77cba688263ea35221a by Vedant Kumar
[ubsan] Enable testing of .m files
This allows `.m` test files, like the existing Misc/bool.m, to be
tested.
The file was modifiedcompiler-rt/test/ubsan/lit.common.cfg.py (diff)
Commit 8207c81597adab5a06b50339e5ee2891f6e453bf by rtereshin
[Legalizer] More detailed debugging printing in main loop
The file was modifiedllvm/lib/CodeGen/GlobalISel/Legalizer.cpp (diff)
Commit 18bf9670aac901f71bc43ac55c5feb603555a1f6 by rtereshin
[Legalizer] Refactoring out legalizeMachineFunction
and introducing new unittests/CodeGen/GlobalISel/LegalizerTest.cpp
relying on it to unit test the entire legalizer algorithm (including the
top-level main loop).
See also https://reviews.llvm.org/D71448
The file was modifiedllvm/utils/gn/secondary/llvm/unittests/CodeGen/GlobalISel/BUILD.gn (diff)
The file was modifiedllvm/include/llvm/CodeGen/GlobalISel/Legalizer.h (diff)
The file was addedllvm/unittests/CodeGen/GlobalISel/LegalizerTest.cpp
The file was modifiedllvm/unittests/CodeGen/GlobalISel/CMakeLists.txt (diff)
The file was modifiedllvm/lib/CodeGen/GlobalISel/Legalizer.cpp (diff)
Commit 8731799fc6cf70bf4de5688ada506a222272a6a2 by rtereshin
[Legalizer] Making artifact combining order-independent
Legalization algorithm is complicated by two facts: 1) While regular
instructions should be possible to legalize in
  an isolated, per-instruction, context-free manner, legalization
  artifacts can only be eliminated in pairs, which could be deeply, and
  ultimately arbitrary nested: { [ () ] }, where which paranthesis kind
  depicts an artifact kind, like extend, unmerge, etc. Such structure
  can only be fully eliminated by simple local combines if they are
  attempted in a particular order (inside out), or alternatively by
  repeated scans each eliminating only one innermost pair, resulting in
  O(n^2) complexity. 2) Some artifacts might in fact be regular
instructions that could (and
  sometimes should) be legalized by the target-specific rules. Which
  means failure to eliminate all artifacts on the first iteration is
  not a failure, they need to be tried as instructions, which may
  produce more artifacts, including the ones that are in fact regular
  instructions, resulting in a non-constant number of iterations
  required to finish the process.
I trust the recently introduced termination condition (no new artifacts
were created during as-a-regular-instruction-retrial of artifacts not
eliminated on the previous iteration) to be efficient in providing
termination, but only performing the legalization in full if and only if
at each step such chains of artifacts are successfully eliminated in
full as well.
Which is currently not guaranteed, as the artifact combines are applied
only once and in an arbitrary order that has to do with the order of
creation or insertion of artifacts into their worklist, which is a no
particular order.
In this patch I make a small change to the artifact combiner, making it
to re-insert into the worklist immediate (modulo a look-through copies)
artifact users of each vreg that changes its definition due to an
artifact combine.
Here the first scan through the artifacts worklist, while not being done
in any guaranteed order, only needs to find the innermost pair(s) of
artifacts that could be immediately combined out. After that the process
follows def-use chains, making them shorter at each step, thus combining
everything that can be combined in O(n) time.
Reviewers: volkan, aditya_nandakumar, qcolombet, paquette, aemerson,
dsanders
Reviewed By: aditya_nandakumar, paquette
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71448
The file was modifiedllvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h (diff)
The file was modifiedllvm/lib/CodeGen/GlobalISel/Legalizer.cpp (diff)
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fcopysign.mir (diff)
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/artifact-combiner-sext.mir (diff)
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/arm64-fallback.ll (diff)
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/retry-artifact-combine.mir (diff)
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/legalizer-combiner-zext-trunc-crash.mir (diff)
The file was modifiedllvm/lib/Target/Mips/MipsRegisterBankInfo.cpp (diff)
The file was modifiedllvm/unittests/CodeGen/GlobalISel/LegalizerTest.cpp (diff)
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/legalize-merge-values.mir (diff)
Commit 40c288b75c1d9cc94d0409ac00b2421eb8a4c75b by maskray
[Mips] Fix gcc -Wunused-but-set-variable in -DLLVM_ENABLE_ASSERTIONS=Off
builds after D71028
The file was modifiedllvm/lib/Target/Mips/MipsExpandPseudo.cpp (diff)
Commit 2a789dd0ad884cbd73b962b6b07cf48e2178d2c9 by llvm-project
[OpenMP][Docs] Claim loop tiling.
The file was modifiedclang/docs/OpenMPSupport.rst (diff)
Commit cf252240e8819d0c90a5e10f773078bdeba33e44 by julian.lettner
[lit] Small cleanups. NFCI
Remove unnecessary (argument same as default), cleanup imports, use
"pythonic" names for variables, and general formatting.
The file was modifiedllvm/utils/lit/lit/cl_arguments.py (diff)
The file was modifiedllvm/utils/lit/lit/run.py (diff)
The file was modifiedllvm/utils/lit/tests/unit/TestRunner.py (diff)
The file was modifiedllvm/utils/lit/lit/LitTestCase.py (diff)
The file was modifiedllvm/utils/lit/lit/__init__.py (diff)
The file was modifiedllvm/utils/lit/lit.py (diff)
The file was modifiedllvm/utils/lit/lit/main.py (diff)
Commit 93faa237da8ddeb9e2ad91980387bd4d633369a9 by sd.fertile
[PowerPC] Add Support for indirect calls on AIX.
Extends the desciptor-based indirect call support for 32-bit codegen,
and enables indirect calls for AIX.
In-depth Description: In a function descriptor based ABI, a function
pointer points at a descriptor structure as opposed to the function's
entry point. The descriptor takes the form of 3 pointers: 1 for the
function's entry point, 1 for the TOC anchor of the module containing
the function definition, and 1 for the environment pointer:
struct FunctionDescriptor {
void *EntryPoint;
void *TOCAnchor;
void *EnvironmentPointer;
};
An indirect call has several steps of loading the the information from
the descriptor into the proper registers for setting up the call. Namely
it has to:
1) Save the caller's TOC pointer into the TOC save slot in the linkage
  area, and then load the callee's TOC pointer into the TOC register
  (GPR 2 on AIX).
2) Load the function descriptor's entry point into the count register.
3) Load the environment pointer into the environment pointer register
  (GPR 11 on AIX).
4) Perform the call by branching on count register.
5) Restore the caller's TOC pointer after returning from the indirect
call.
A couple important caveats to the above:
- There is no way to directly load a value from memory into the count
register.
Instead we populate the count register by loading the entry point
address into
a gpr and then moving the gpr to the count register.
- The TOC restore has to come immediately after the branch on count
register
instruction (i.e., the 1st instruction executed after we return from
the
call). This is an implementation limitation. We could, in theory,
schedule
the restore elsewhere as long as no uses of the TOC pointer fall in
between
the call and the restore; however, to keep it simple, we insert a
pseudo
instruction that represents both the indirect branch instruction and
the
load instruction that restores the caller's TOC from the linkage area.
As
they flow through the compiler as a single pseudo instruction, nothing
can be
inserted between them and the caller's TOC is then valid at any use.
Differtential Revision: https://reviews.llvm.org/D70724
The file was modifiedllvm/lib/Target/PowerPC/PPCInstrFormats.td (diff)
The file was modifiedllvm/lib/Target/PowerPC/PPCFrameLowering.cpp (diff)
The file was modifiedllvm/lib/Target/PowerPC/PPCSubtarget.h (diff)
The file was modifiedllvm/lib/Target/PowerPC/PPCISelLowering.cpp (diff)
The file was modifiedllvm/lib/Target/PowerPC/PPCISelLowering.h (diff)
The file was modifiedllvm/lib/Target/PowerPC/P9InstrResources.td (diff)
The file was modifiedllvm/lib/Target/PowerPC/PPCInstrInfo.td (diff)
The file was addedllvm/test/CodeGen/PowerPC/aix-indirect-call.ll
The file was addedllvm/test/CodeGen/PowerPC/aix-trampoline.ll
Commit f450dd63a14d6cb16418f6a6f4de26916502c13f by Artem Dergachev
[analyzer] CStringChecker: Fix a crash on unknown value passed to
strlcat.
Checkers should always account for unknown values.
Also use a slightly more high-level API that naturally avoids the
problem.
The file was modifiedclang/test/Analysis/bsd-string.c (diff)
The file was modifiedclang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp (diff)
Commit 5688f168528377d1c55fe1feff82c9caa21a7c0a by stl
[libcxx] [test] Include missing headers. (NFC)
libcxx/test/std/containers/sequences/array/at.pass.cpp Need to include
<stdexcept> for std::out_of_range.
libcxx/test/std/localization/locale.categories/category.time/* Need to
include <ios> for std::ios.
The file was modifiedlibcxx/test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put1.pass.cpp (diff)
The file was modifiedlibcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time_wide.pass.cpp (diff)
The file was modifiedlibcxx/test/std/containers/sequences/array/at.pass.cpp (diff)
The file was modifiedlibcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year.pass.cpp (diff)
The file was modifiedlibcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date.pass.cpp (diff)
The file was modifiedlibcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year_wide.pass.cpp (diff)
The file was modifiedlibcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time.pass.cpp (diff)
The file was modifiedlibcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_many.pass.cpp (diff)
The file was modifiedlibcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date_wide.pass.cpp (diff)
The file was modifiedlibcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_year.pass.cpp (diff)
Commit 38c3b5d562ac6a5ab0ef5503838aad362af866e0 by richard
[c++20] Improve phrasing of diagnostic for missing #include <compare>.
The file was modifiedclang/test/SemaCXX/std-compare-cxx2a.cpp (diff)
The file was modifiedclang/include/clang/Basic/DiagnosticSemaKinds.td (diff)
The file was modifiedclang/lib/Sema/SemaExpr.cpp (diff)
The file was modifiedclang/lib/Sema/SemaDeclCXX.cpp (diff)
The file was modifiedclang/include/clang/Sema/Sema.h (diff)
Commit c5b890e922432bd80a5e3c6d82994ef4cdc41900 by richard
PR44268: Fix crash if __builtin_object_size is applied to a heap
allocation.
The file was modifiedclang/lib/AST/ExprConstant.cpp (diff)
The file was modifiedclang/test/SemaCXX/builtin-object-size-cxx14.cpp (diff)
Commit 074323c84658e51522e7d8d3d0179e53004b219c by maskray
[Driver] Default to -momit-leaf-frame-pointer for AArch64
This matches https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html
> -momit-leaf-frame-pointer
> -mno-omit-leaf-frame-pointer
>
>   Omit or keep the frame pointer in leaf functions. The former
behavior is the default.
-mno-omit-leaf-frame-pointer is currently a no-op because
TargetOptions::DisableFramePointerElim is only considered for non-leaf
functions.
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D71167
The file was modifiedclang/lib/Driver/ToolChains/Clang.cpp (diff)
The file was modifiedclang/test/Driver/cl-options.c (diff)
The file was modifiedclang/test/Driver/frame-pointer-elim.c (diff)
Commit a0aa58dad53f2e5e90a9b7079ec31bf7c3144fc7 by maskray
[AArch64] Save FP for leaf functions when disabling frame pointer
elimination
The change allows clang -mno-omit-leaf-frame-pointer to disable frame
pointer elimination. This behavior matches X86 and Mips, and also GCC
AArch64.
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D71168
The file was modifiedllvm/test/CodeGen/AArch64/f16-instructions.ll (diff)
The file was modifiedllvm/test/CodeGen/AArch64/machine-outliner.mir (diff)
The file was modifiedllvm/test/CodeGen/AArch64/fastcc.ll (diff)
The file was modifiedllvm/test/CodeGen/AArch64/aarch64-fix-cortex-a53-835769.ll (diff)
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/tail-call-no-save-fp-lr.ll (diff)
The file was modifiedllvm/test/CodeGen/AArch64/arm64-large-frame.ll (diff)
The file was modifiedllvm/test/CodeGen/AArch64/arm64-shrink-wrapping.ll (diff)
The file was modifiedllvm/lib/Target/AArch64/AArch64FrameLowering.cpp (diff)
The file was modifiedllvm/test/CodeGen/AArch64/arm64_32.ll (diff)
The file was modifiedllvm/test/CodeGen/AArch64/machine-outliner-regsave.mir (diff)
The file was modifiedllvm/test/DebugInfo/AArch64/line-header.ll (diff)
Commit 61c8ee6a2fa490bc224d006cd03efd650f6561bb by smeenai
[clang] Move CLANG_BOOTSTRAP_CMAKE_ARGS above PASSTHROUGH_VARIABLES
I want to pass some CMake cache files in CLANG_BOOTSTRAP_CMAKE_ARGS as
`-C <cache file>.cmake` arguments. I want to be able to use the values
of the bootstrap passthrough variables in the cache files, so the cache
file arguments need to be after passthrough variables. This should be
safe because the values of passthrough variables are all constants and
can't refer to values in CLANG_BOOTSTRAP_CMAKE_ARGS.
Differential Revision: https://reviews.llvm.org/D71428
The file was modifiedclang/CMakeLists.txt (diff)
Commit ad73f656b3c49f3462625ebeaec7a32f63d11d18 by thakis
gn build: add deps I failed to add in b2508ce85c1
The file was modifiedllvm/utils/gn/secondary/llvm/lib/Frontend/OpenMP/BUILD.gn (diff)