FailedChanges

Changes from Git (git http://labmaster3.local/git/llvm-project.git)

Summary

  1. Revert "[libomptarget] Move resource id functions into target specific (details)
  2. [NFC] Change SelectionDAG::getMemBasePlusOffset() to use int64_t (details)
  3. [NFC] Add a SDValue overload for SelectionDAG::getMemBasePlusOffset() (details)
  4. [NFC] Implement SelectionDAG::getObjectPtrOffset() using (details)
  5. [NFC] Use SelectionDAG::getMemBasePlusOffset() instead of (details)
  6. [LSAN] Increase stack space for guard-page.c test (details)
  7. [lldb/CMake] Rename LLDB_DISABLE_PYTHON to LLDB_ENABLE_PYTHON (details)
  8. [lldb/CMake] Initialize LLDB_ENABLE_POSIX based on the UNIX variable. (details)
  9. [OPENMP]Fix skipping of functions body. (details)
  10. [Driver] Use .init_array for all gcc installations and simplify (details)
  11. [lldb/SWIG] Modulerize lldb.swig so parts of it can be reused. (details)
  12. [ubsan] Enable testing of .m files (details)
  13. [Legalizer] More detailed debugging printing in main loop (details)
  14. [Legalizer] Refactoring out legalizeMachineFunction (details)
  15. [Legalizer] Making artifact combining order-independent (details)
  16. [Mips] Fix gcc -Wunused-but-set-variable in -DLLVM_ENABLE_ASSERTIONS=Off (details)
  17. [OpenMP][Docs] Claim loop tiling. (details)
  18. [lit] Small cleanups. NFCI (details)
  19. [PowerPC] Add Support for indirect calls on AIX. (details)
  20. [analyzer] CStringChecker: Fix a crash on unknown value passed to (details)
Commit dd8a7fcdd73dd63529b81bf9f72c7529dfe99ec3 by a.bataev
Revert "[libomptarget] Move resource id functions into target specific
code, implement for amdgcn"
This reverts commit dbb3fec8adfc4ac3fbf31f51f294427dbabbebb2 since it
breaks the NVPTX tests.
The file was modifiedopenmp/libomptarget/deviceRTLs/amdgcn/src/target_impl.h
The file was modifiedopenmp/libomptarget/deviceRTLs/common/src/support.cu
The file was modifiedopenmp/libomptarget/deviceRTLs/common/support.h
The file was modifiedopenmp/libomptarget/deviceRTLs/nvptx/src/target_impl.h
Commit d9bb70acd7f6da7c4637826d5ae942ae61bf9494 by Alexander.Richardson
[NFC] Change SelectionDAG::getMemBasePlusOffset() to use int64_t
Summary: This change is preparatory work to use this helper functions in
more places. Currently the function only allows positive offsets, but
there are cases where we want to subtract an offset from an existing
pointer.
The motivation for this change is our out-of-tree CHERI backend
(https://github.com/CTSRD-CHERI/llvm-project). We use a separate
register type to store pointers (128-bit capabilities, which are
effectively unforgeable and monotonic fat pointers). These capabilities
permit a reduced set of operations and therefore use a separate
ValueType (iFATPTR). to represent pointers implemented as capabilities.
Therefore, we need to avoid using ISD::ADD for our patterns that operate
on pointers and need to use a function that chooses ISD::ADD or a new
ISD::PTRADD opcode depending on the value type.
We originally added a new DAG.getPointerAdd() function, but after this
patch series we can modify the implementation of getMemBasePlusOffset()
instead. Avoiding direct uses of ISD::ADD for pointer types will
significantly reduce the amount of assertion/instruction selection
failures for us in future upstream merges.
Reviewers: spatel
Reviewed By: spatel
Subscribers: merge_guards_bot, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71204
The file was modifiedllvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
The file was modifiedllvm/include/llvm/CodeGen/SelectionDAG.h
Commit ea8888d1af3a992d82d1ff3bf99537220828d388 by Alexander.Richardson
[NFC] Add a SDValue overload for SelectionDAG::getMemBasePlusOffset()
Summary: This change is preparatory work to use this helper functions in
more places. Currently the function only allows integer constants
offsets, but there are cases where we can use an existing SDValue
parameter.
The motivation for this change is our out-of-tree CHERI backend
(https://github.com/CTSRD-CHERI/llvm-project). We use a separate
register type to store pointers (128-bit capabilities, which are
effectively unforgeable and monotonic fat pointers). These capabilities
permit a reduced set of operations and therefore use a separate
ValueType (iFATPTR). to represent pointers implemented as capabilities.
Therefore, we need to avoid using ISD::ADD for our patterns that operate
on pointers and need to use a function that chooses ISD::ADD or a new
ISD::PTRADD opcode depending on the value type.
We originally added a new DAG.getPointerAdd() function, but after this
patch series we can modify the implementation of getMemBasePlusOffset()
instead. Avoiding direct uses of ISD::ADD for pointer types will
significantly reduce the amount of assertion/instruction selection
failures for us in future upstream merges.
Reviewers: spatel, craig.topper
Reviewed By: spatel, craig.topper
Subscribers: craig.topper, merge_guards_bot, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71205
The file was modifiedllvm/include/llvm/CodeGen/SelectionDAG.h
The file was modifiedllvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
Commit fc83f53a86d802fc2d56aac4eb3dc53998751042 by Alexander.Richardson
[NFC] Implement SelectionDAG::getObjectPtrOffset() using
getMemBasePlusOffset()
Summary: This change is preparatory work to use this helper functions in
more places. In order to make this change, getMemBasePlusOffset() has
been extended to also take a SDNodeFlags parameter.
The motivation for this change is our out-of-tree CHERI backend
(https://github.com/CTSRD-CHERI/llvm-project). We use a separate
register type to store pointers (128-bit capabilities, which are
effectively unforgeable and monotonic fat pointers). These capabilities
permit a reduced set of operations and therefore use a separate
ValueType (iFATPTR). to represent pointers implemented as capabilities.
Therefore, we need to avoid using ISD::ADD for our patterns that operate
on pointers and need to use a function that chooses ISD::ADD or a new
ISD::PTRADD opcode depending on the value type.
We originally added a new DAG.getPointerAdd() function, but after this
patch series we can modify the implementation of getMemBasePlusOffset()
instead. Avoiding direct uses of ISD::ADD for pointer types will
significantly reduce the amount of assertion/instruction selection
failures for us in future upstream merges.
Reviewers: spatel
Reviewed By: spatel
Subscribers: merge_guards_bot, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71206
The file was modifiedllvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
The file was modifiedllvm/include/llvm/CodeGen/SelectionDAG.h
Commit 11448eeb72e1392f9f4ad072866c2c6dc82d14bc by Alexander.Richardson
[NFC] Use SelectionDAG::getMemBasePlusOffset() instead of
getNode(ISD::ADD)
Summary: To find potential opportunities to use getMemBasePlusOffset() I
looked at all ISD::ADD uses found with the regex
getNode\(ISD::ADD,.+,.+Ptr in lib/CodeGen/SelectionDAG. If this patch is
accepted I will convert the files in the individual backends too.
The motivation for this change is our out-of-tree CHERI backend
(https://github.com/CTSRD-CHERI/llvm-project). We use a separate
register type to store pointers (128-bit capabilities, which are
effectively unforgeable and monotonic fat pointers). These capabilities
permit a reduced set of operations and therefore use a separate
ValueType (iFATPTR). to represent pointers implemented as capabilities.
Therefore, we need to avoid using ISD::ADD for our patterns that operate
on pointers and need to use a function that chooses ISD::ADD or a new
ISD::PTRADD opcode depending on the value type.
We originally added a new DAG.getPointerAdd() function, but after this
patch series we can modify the implementation of getMemBasePlusOffset()
instead. Avoiding direct uses of ISD::ADD for pointer types will
significantly reduce the amount of assertion/instruction selection
failures for us in future upstream merges.
Reviewers: spatel
Reviewed By: spatel
Subscribers: merge_guards_bot, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71207
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
The file was modifiedllvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
The file was modifiedllvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
The file was modifiedllvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
Commit 9cb7a1be2a430a50fb5644b3f48d4a1544034fb9 by Alexander.Richardson
[LSAN] Increase stack space for guard-page.c test
Summary: When running the tests on a Ubuntu 18.04 machine this test is
crashing for me inside the runtime linker. My guess is that it is trying
to save more registers (possibly large vector ones) and the current
stack space is not sufficient.
Reviewers: samsonov, kcc, eugenis
Reviewed By: eugenis
Subscribers: eugenis, merge_guards_bot, #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D71461
The file was modifiedcompiler-rt/test/lsan/TestCases/Linux/guard-page.c
Commit 4e26cf2cfb2b140a33ec236153cb2f23b5c44127 by Jonas Devlieghere
[lldb/CMake] Rename LLDB_DISABLE_PYTHON to LLDB_ENABLE_PYTHON
This matches the naming scheme used by LLVM and all the other optional
dependencies in LLDB.
Differential revision: https://reviews.llvm.org/D71482
The file was modifiedlldb/test/Shell/lit.cfg.py
The file was modifiedlldb/test/Shell/lit.site.cfg.py.in
The file was modifiedlldb/docs/resources/build.rst
The file was modifiedlldb/source/Plugins/ScriptInterpreter/CMakeLists.txt
The file was modifiedlldb/test/API/lldbtest.py
The file was modifiedlldb/packages/Python/lldbsuite/test/dotest.py
The file was modifiedlldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.h
The file was modifiedlldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
The file was modifiedlldb/CMakeLists.txt
The file was modifiedlldb/source/API/SBHostOS.cpp
The file was modifiedlldb/test/API/lit.site.cfg.py.in
The file was modifiedlldb/cmake/modules/LLDBConfig.cmake
The file was modifiedlldb/source/Core/ValueObject.cpp
The file was modifiedlldb/unittests/ScriptInterpreter/CMakeLists.txt
The file was modifiedlldb/source/Plugins/OperatingSystem/Python/OperatingSystemPython.h
The file was modifiedlldb/source/Plugins/OperatingSystem/Python/OperatingSystemPython.cpp
The file was modifiedlldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h
The file was modifiedlldb/include/lldb/Host/Config.h.cmake
The file was modifiedlldb/source/Commands/CommandObjectType.cpp
The file was modifiedlldb/source/API/CMakeLists.txt
The file was modifiedlldb/source/Commands/CommandObjectFrame.cpp
The file was modifiedlldb/source/Interpreter/CommandObjectScript.cpp
The file was modifiedlldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
The file was modifiedlldb/test/CMakeLists.txt
The file was modifiedlldb/source/API/SystemInitializerFull.cpp
The file was modifiedlldb/tools/intel-features/CMakeLists.txt
The file was modifiedlldb/docs/CMakeLists.txt
The file was modifiedlldb/source/Plugins/ScriptInterpreter/Python/lldb-python.h
The file was modifiedlldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPythonImpl.h
Commit e8af4fd42da3580f9bda5202f381bf92d07f4b9c by Jonas Devlieghere
[lldb/CMake] Initialize LLDB_ENABLE_POSIX based on the UNIX variable.
The file was modifiedlldb/cmake/modules/LLDBGenerateConfig.cmake
Commit 8035bb4a6573f7d20f17044a68a1405691000525 by a.bataev
[OPENMP]Fix skipping of functions body.
When parsing the code with OpenMP and the function's body must be
skipped, need to skip also OpenMP annotation tokens. Otherwise the
counters for braces/parens are unbalanced and parsing fails.
The file was modifiedclang/test/OpenMP/openmp_check.cpp
The file was addedclang/test/OpenMP/crash-skipped-bodies-template-inst.cpp
The file was modifiedclang/include/clang/Parse/Parser.h
The file was modifiedclang/include/clang/Parse/RAIIObjectsForParser.h
The file was modifiedclang/lib/Parse/Parser.cpp
The file was modifiedclang/lib/Parse/ParseOpenMP.cpp
Commit e4fce659a759ecdd59ceee750f1ff9b44f9de3f3 by maskray
[Driver] Use .init_array for all gcc installations and simplify
Generic_ELF -fno-use-init-array rules
D39317 made clang use .init_array when no gcc installations is found.
This change changes all gcc installations to use .init_array .
GCC 4.7 by default stopped providing .ctors/.dtors compatible crt files,
and stopped emitting .ctors for __attribute__((constructor)).
.init_array should always work.
FreeBSD rules are moved to FreeBSD.cpp to make Generic_ELF rules clean.
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D71434
The file was modifiedclang/lib/Driver/ToolChains/FreeBSD.cpp
The file was modifiedclang/docs/ReleaseNotes.rst
The file was modifiedclang/lib/Driver/ToolChains/FreeBSD.h
The file was modifiedclang/lib/Driver/ToolChains/Gnu.cpp
The file was modifiedclang/test/Driver/constructors.c
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/interfaces.swig
The file was addedlldb/scripts/headers.swig
The file was modifiedlldb/scripts/lldb.swig
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
Commit 8207c81597adab5a06b50339e5ee2891f6e453bf by rtereshin
[Legalizer] More detailed debugging printing in main loop
The file was modifiedllvm/lib/CodeGen/GlobalISel/Legalizer.cpp
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
The file was modifiedllvm/lib/CodeGen/GlobalISel/Legalizer.cpp
The file was modifiedllvm/include/llvm/CodeGen/GlobalISel/Legalizer.h
The file was modifiedllvm/unittests/CodeGen/GlobalISel/CMakeLists.txt
The file was addedllvm/unittests/CodeGen/GlobalISel/LegalizerTest.cpp
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
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fcopysign.mir
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/legalizer-combiner-zext-trunc-crash.mir
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/artifact-combiner-sext.mir
The file was modifiedllvm/lib/Target/Mips/MipsRegisterBankInfo.cpp
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/legalize-merge-values.mir
The file was modifiedllvm/lib/CodeGen/GlobalISel/Legalizer.cpp
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/arm64-fallback.ll
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/retry-artifact-combine.mir
The file was modifiedllvm/unittests/CodeGen/GlobalISel/LegalizerTest.cpp
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
Commit 2a789dd0ad884cbd73b962b6b07cf48e2178d2c9 by llvm-project
[OpenMP][Docs] Claim loop tiling.
The file was modifiedclang/docs/OpenMPSupport.rst
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/__init__.py
The file was modifiedllvm/utils/lit/lit.py
The file was modifiedllvm/utils/lit/lit/cl_arguments.py
The file was modifiedllvm/utils/lit/lit/main.py
The file was modifiedllvm/utils/lit/lit/run.py
The file was modifiedllvm/utils/lit/lit/LitTestCase.py
The file was modifiedllvm/utils/lit/tests/unit/TestRunner.py
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
The file was modifiedllvm/lib/Target/PowerPC/PPCISelLowering.h
The file was addedllvm/test/CodeGen/PowerPC/aix-trampoline.ll
The file was modifiedllvm/lib/Target/PowerPC/P9InstrResources.td
The file was modifiedllvm/lib/Target/PowerPC/PPCInstrInfo.td
The file was addedllvm/test/CodeGen/PowerPC/aix-indirect-call.ll
The file was modifiedllvm/lib/Target/PowerPC/PPCISelLowering.cpp
The file was modifiedllvm/lib/Target/PowerPC/PPCSubtarget.h
The file was modifiedllvm/lib/Target/PowerPC/PPCFrameLowering.cpp
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/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
The file was modifiedclang/test/Analysis/bsd-string.c