Commit
116affb18dfc8c48ad0bd5134b42a51e34ad6fd8
by arsenm2TableGen/GlobalISel: Allow inst matcher to check multiple opcodes
This is to initially handleg immAllOnesV, which should match G_BUILD_VECTOR or G_BUILD_VECTOR_TRUNC. In the future, it could be used for other patterns cases that map to multiple G_* instructions, such as G_ADD and G_PTR_ADD.
|
 | llvm/utils/TableGen/GlobalISelEmitter.cpp (diff) |
 | llvm/test/TableGen/GlobalISelEmitter-immAllZeroOne.td (diff) |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/orn2.ll (diff) |
 | llvm/include/llvm/CodeGen/GlobalISel/InstructionSelector.h (diff) |
 | llvm/include/llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h (diff) |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/andn2.ll (diff) |
Commit
188f1ac301c5c6da6d2f5697952510fc39cbdd43
by Raphael Isemann[lldb] type category name common completion
1. Added a new common completion TypeCategoryNames to provide a list of category names for completion; 2. Applied the completion to these commands: type category delete/enable/disable/list/define; 3. Added a related test case; 4. Bound the completion to the arguments of the type 'eArgTypeName'.
Reviewed By: teemperor, JDevlieghere
Differential Revision: https://reviews.llvm.org/D84124
|
 | lldb/source/Commands/CommandCompletions.cpp (diff) |
 | lldb/source/Interpreter/CommandObject.cpp (diff) |
 | lldb/source/Commands/CommandObjectTarget.cpp (diff) |
 | lldb/include/lldb/Interpreter/CommandCompletions.h (diff) |
 | lldb/test/API/functionalities/completion/TestCompletion.py (diff) |
 | lldb/source/Commands/CommandObjectType.cpp (diff) |
Commit
d5557c6e056f41776efbcdf67e0a9629229a4c34
by clementval[flang][openacc] Fix reduction operator parsing/unparsing
Update the way reduction operator are defined for the OpenACC parser.
Reviewed By: klausler
Differential Revision: https://reviews.llvm.org/D86296
|
 | flang/lib/Parser/unparse.cpp (diff) |
 | flang/include/flang/Parser/dump-parse-tree.h (diff) |
 | flang/lib/Parser/openacc-parsers.cpp (diff) |
 | flang/test/Semantics/acc-clause-validity.f90 (diff) |
 | flang/include/flang/Parser/parse-tree.h (diff) |
|
 | llvm/docs/AMDGPUDwarfExtensionsForHeterogeneousDebugging.rst (diff) |
Commit
2b7a2cbb15c461380bebed0fc8603a0ef16a8f5d
by julian.lettner[TSan][Darwin] Handle NULL argument in interceptor
Handle NULL address argument in the `mach_vm_[de]allocate()` interceptors and fix test: `Assignment 2` is not valid if we weren't able to re-allocate memory.
rdar://67680613
|
 | compiler-rt/lib/tsan/rtl/tsan_interceptors_mach_vm.cpp (diff) |
 | compiler-rt/test/tsan/Darwin/mach_vm_allocate.c (diff) |
Commit
75e6f0b3d43c90edcc027bca7a896bace5c0677c
by arsenm2AMDGPU: Add flag to disable promotion of uniform i16 ops
This interferes with GlobalISel's much better handling of the situation.
This should really be disable for GlobalISel. However, the fallback only re-runs the selection passes, and doesn't go back and rerun any codegen IR passes. I haven't come up with a good solution to this problem.
|
 | llvm/test/CodeGen/AMDGPU/GlobalISel/orn2.ll (diff) |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/andn2.ll (diff) |
 | llvm/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp (diff) |
Commit
44ee9d070adee1aed105f90d88b30b8802d90d35
by iRevert D85812 "[coroutine] should disable inline before calling coro split"
This reverts commit 2e43acfed89b1903de473f682c65878bdebc395a.
LLVMCoroutines (the library which contains Coroutines.h) depends on LLVMipo (the library which contains SampleProfile.cpp). It is inappropriate for SampleProfile.cpp to depent on Coroutines.h (circular dependency).
The test inverted dependencies as well: llvm/test/Transforms/Coroutines/coro-inline.ll uses -sample-profile.
|
 | llvm/test/Transforms/Coroutines/Inputs/sample.text.prof |
 | llvm/test/Transforms/Coroutines/coro-inline.ll |
 | llvm/lib/Transforms/IPO/AlwaysInliner.cpp (diff) |
 | llvm/include/llvm/Transforms/Coroutines.h (diff) |
 | llvm/lib/Transforms/Coroutines/CoroInternal.h (diff) |
 | llvm/lib/Transforms/IPO/SampleProfile.cpp (diff) |
Commit
0e6c9a6e7940a2f8ee624358d828acffdb9ccca5
by gclaytonAdd hashing of the .text section to ProcessMinidump.
Breakpad will always have a UUID for binaries when it creates minidump files. If an ELF files has a GNU build ID, it will use that. If it doesn't, it will create one by hashing up to the first 4096 bytes of the .text section. LLDB was not able to load these binaries even when we had the right binary because the UUID didn't match. LLDB will use the GNU build ID first as the main UUID for a binary and fallback onto a 8 byte CRC if a binary doesn't have one. With this fix, we will check for the Breakpad hash or the Facebook hash (a modified version of the breakpad hash that collides a bit less) and accept binaries when these hashes match.
Differential Revision: https://reviews.llvm.org/D86261
|
 | lldb/test/API/functionalities/postmortem/minidump-new/libbreakpad.yaml |
 | lldb/test/API/functionalities/postmortem/minidump-new/TestMiniDumpUUID.py (diff) |
 | lldb/test/API/functionalities/postmortem/minidump-new/linux-arm-breakpad-uuid-match.yaml |
 | lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp (diff) |
 | lldb/test/API/functionalities/postmortem/minidump-new/libbreakpad-overflow.yaml |
 | lldb/test/API/functionalities/postmortem/minidump-new/linux-arm-facebook-uuid-match.yaml |
Commit
1f6c4d829c2dad147e30dcb0611eb9886dae9155
by stellaraccident[mlir] Add Index Type, Floating Point Type and None Type subclasses to python bindings.
Based on the PyType and PyConcreteType classes, this patch implements the bindings of Index Type, Floating Point Type and None Type subclasses. These three subclasses share the same binding strategy: - The function pointer `isaFunction` points to `mlirTypeIsA***`. - The `mlir***TypeGet` C API is bound with the `***Type` constructor in the python side.
Reviewed By: stellaraccident
Differential Revision: https://reviews.llvm.org/D86466
|
 | mlir/test/Bindings/Python/ir_types.py (diff) |
 | mlir/lib/Bindings/Python/IRModules.cpp (diff) |
Commit
b6d7ed469f2f7e70110f6f0d0fa03b99bb818d36
by froese[PowerPC] Extend custom lower of vector truncate to handle wider input
Current custom lowering of truncate vector handles a source of up to 128 bits, but that only uses one of the two shuffle vector operands. Extend it to use both operands to handle 256 bit sources.
Differential Revision: https://reviews.llvm.org/D68035
|
 | llvm/test/CodeGen/PowerPC/vec-trunc2.ll |
 | llvm/lib/Target/PowerPC/PPCISelLowering.cpp (diff) |
|
 | llvm/lib/Transforms/InstCombine/InstCombineInternal.h (diff) |
 | llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp (diff) |
|
 | llvm/test/Transforms/InstCombine/phi-of-insertvalues.ll (diff) |
Commit
b8bfe3586eb892951b79eb70f8af758a318db861
by tkeith[flang] Fix bug accessing implicit variable in specification expression
A specification expression can reference an implicitly declared variable in the host procedure. Because we have to process specification parts before execution parts, this may be the first time we encounter the variable. We were assuming the variable was implicitly declared in the scope where it was encountered, leading to an error because local variables may not be referenced in specification expressions.
The fix is to tentatively create the implicit variable in the host procedure because that is the only way the specification expression can be valid. We mark it with the flag `ImplicitOrError` to indicate that either it must be implicitly defined in the host (by being mentioned in the execution part) or else its use turned out to be an error. We need to apply the implicit type rules of the host, which requires some changes to implicit typing.
Variables in common blocks are allowed to appear in specification expressions (because they are not locals) but the common block definition may not appear until after their use. To handle this we create common block symbols and object entities for each common block object during the `PreSpecificationConstruct` pass. This allows us to remove the corresponding code in the main visitor and `commonBlockInfo_.curr`. The change in order of processing causes some different error messages to be emitted.
Some cleanup is included with this change: - In `ExpressionAnalyzer`, if an unresolved name is encountered but no error has been reported, emit an internal error. - Change `ImplicitRulesVisitor` to hide the `ImplicitRules` object that implements it. Change the interface to pass in names rather than having to get the first character of the name. - Change `DeclareObjectEntity` to have the `attrs` argument default to an empty set; that is the typical case. - In `Pre(parser::SpecificationPart)` use "structured bindings" to give names to the pieces that make up a specification-part. - Enhance `parser::Unwrap` to unwrap `Statement` and `UnlabeledStatement` and make use of that in PreSpecificationConstruct.
Differential Revision: https://reviews.llvm.org/D86322
|
 | flang/lib/Semantics/expression.cpp (diff) |
 | flang/lib/Semantics/compute-offsets.cpp (diff) |
 | flang/test/Semantics/resolve42.f90 (diff) |
 | flang/lib/Semantics/check-declarations.cpp (diff) |
 | flang/lib/Semantics/resolve-names.cpp (diff) |
 | flang/include/flang/Semantics/tools.h (diff) |
 | flang/test/Semantics/modfile21.f90 (diff) |
 | flang/include/flang/Semantics/symbol.h (diff) |
 | flang/include/flang/Parser/tools.h (diff) |
 | flang/lib/Semantics/tools.cpp (diff) |
 | flang/test/Semantics/implicit11.f90 |
 | flang/test/Semantics/block-data01.f90 (diff) |
Commit
fce44ff5da4eba4b781d73d72a18903215962091
by bjorn.a.pettersson[Scalarizer] Avoid updating the name of globals
The "takeName" logic at the end of ScalarizerVisitor::finish could end up renaming global variables when having simplified and extractelement instruction to simply pick a single vector element. If the input vector to the extractelement instruction held pointers to global variables we ended up renaming the global variable. The patch make sure we only take the name of the replaced Op when we have added new instructions that might need a useful name.
Reviewed By: lebedev.ri
Differential Revision: https://reviews.llvm.org/D86472
|
 | llvm/test/Transforms/Scalarizer/basic.ll (diff) |
 | llvm/test/Transforms/Scalarizer/global-bug.ll |
 | llvm/lib/Transforms/Scalar/Scalarizer.cpp (diff) |
Commit
cde8f4c164a27670ebe60a1969d486393336d778
by dimitryMove special va_list handling to kmp_os.h
Instead of copying and pasting the same `#ifdef` expressions in multiple places, define a type and a pair of macros in `kmp_os.h`, to handle whether `va_list` is pointer-like or not:
* `kmp_va_list` is the type to use for `__kmp_fork_call()` * `kmp_va_deref()` dereferences a `va_list`, if necessary * `kmp_va_addr_of()` takes the address of a `va_list`, if necessary
Also add FreeBSD to the list of OSes that has a non pointer-like va_list. This can now be easily extended to other OSes too.
Reviewed By: AndreyChurbanov
Differential Revision: https://reviews.llvm.org/D86397
|
 | openmp/runtime/src/kmp_csupport.cpp (diff) |
 | openmp/runtime/src/kmp_runtime.cpp (diff) |
 | openmp/runtime/src/kmp_gsupport.cpp (diff) |
 | openmp/runtime/src/kmp_os.h (diff) |
 | openmp/runtime/src/kmp.h (diff) |
|
 | openmp/runtime/src/kmp_os.h (diff) |
Commit
68bae34c65b30ad3fe01555b4cf3020266cfec85
by smeenai[llvm-libtool-darwin] Add support for -V option
The -V option in cctools' libtool prints out the version number and performs any specified operation. Add this option to LLVM's version. cctools is more forgiving of invalid command lines when -V is specified, but I think it's better to give errors instead of silently producing no output.
Unfortunately, when -V is present, options that would otherwise be required aren't anymore, so we need to perform some manual argument validation.
Reviewed By: alexshap
Differential Revision: https://reviews.llvm.org/D86359
|
 | llvm/tools/llvm-libtool-darwin/llvm-libtool-darwin.cpp (diff) |
 | llvm/test/tools/llvm-libtool-darwin/version.test |
 | llvm/test/tools/llvm-libtool-darwin/invalid-input-output-args.test (diff) |
 | llvm/test/tools/llvm-libtool-darwin/missing-library-type.test (diff) |
Commit
26c1d689ae4cd24d228df1c35a2067fa970c52cc
by smeenai[compiler-rt] Disable ranlib when using libtool
libtool already produces a table of contents, and ranlib just gives spurious errors because it doesn't understand universal binaries.
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D86365
|
 | compiler-rt/cmake/Modules/UseLibtool.cmake (diff) |
Commit
a7d8aabf298c66cf03f3298ab1addb82e895a6af
by smeenai[runtimes] Remove TOOLCHAIN_TOOLS specialization
{builtin,runtime}_register_target passes a TOOLCHAIN_TOOLS list, whereas {builtin,runtime}_default_target does notl. The explicit TOOLCHAIN_TOOLS list matches what LLVMExternalProjectUtils would have set anyway, barring some target-specific adjustments, and those target-specific adjustments seem valuable, so let's drop the explicit TOOLCHAIN_TOOLS list and let LLVMExternalProjectUtils take care of it.
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D86366
|
 | llvm/runtimes/CMakeLists.txt (diff) |
Commit
2c80e2fe51b685f5663ad6f76c9c05c75d7582c4
by smeenai[runtimes] Use llvm-libtool-darwin for runtimes build
It's full featured now and we can use it for the runtimes build instead of relying on an external libtool, which means the CMAKE_HOST_APPLE restriction serves no purpose either now. Restrict llvm-lipo to Darwin targets while I'm here, since it's only needed there.
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D86367
|
 | compiler-rt/CMakeLists.txt (diff) |
 | compiler-rt/lib/builtins/CMakeLists.txt (diff) |
 | llvm/cmake/modules/LLVMExternalProjectUtils.cmake (diff) |
|
 | llvm/test/Transforms/InstCombine/vec_demanded_elts.ll (diff) |
|
 | llvm/test/Transforms/SLPVectorizer/AArch64/getelementptr.ll (diff) |
Commit
557b890ff4f4dd5fa979c232df5b31cf3fef04c1
by spatel[InstCombine] improve demanded element analysis for vector insert-of-extract
InstCombine currently has odd rules for folding insert-extract chains to shuffles, so we miss collapsing seemingly simple cases as shown in the tests here.
But poison makes this not quite as easy as we might have guessed. Alive2 tests to show the subtle difference (similar to the regression tests): https://alive2.llvm.org/ce/z/hp4hv3 (this is ok) https://alive2.llvm.org/ce/z/ehEWaN (poison leakage)
SLP tends to create these patterns (as shown in the SLP tests), and this could help with solving PR16739.
Differential Revision: https://reviews.llvm.org/D86460
|
 | llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp (diff) |
 | llvm/test/Transforms/InstCombine/vec_demanded_elts.ll (diff) |
 | llvm/test/Transforms/SLPVectorizer/AArch64/getelementptr.ll (diff) |
 | llvm/test/Transforms/SLPVectorizer/X86/operandorder.ll (diff) |
|
 | compiler-rt/lib/tsan/rtl/tsan_interceptors_libdispatch.cpp (diff) |
Commit
9e32d7b6e7e6615dbc5049a53f8e2ba03ae0292f
by rprichard[libunwind] Remove static_assert / __has_feature macros
The static_assert macro broke on GCC when a scope had two asserts and a condition that depended on a template parameter. Remove the macro and rely on the compiler's C++11 static_assert feature.
The __has_feature macro was only used here to determine whether to define the static_assert macro.
Reviewed By: mstorsjo, #libunwind
Differential Revision: https://reviews.llvm.org/D86411
|
 | libunwind/src/config.h (diff) |
Commit
c485343c8310086ff7ee4aaf40330b4c4b35e99f
by nemanja.i.ibm[PowerPC] Handle SUBFIC in reg+reg -> reg+imm transformation
We initially missed the subtract-immediate in this transformation. This patch just adds that.
Differential revision: https://reviews.llvm.org/D84659
|
 | llvm/test/CodeGen/PowerPC/pr44183.ll (diff) |
 | llvm/lib/Target/PowerPC/PPCInstrInfo.cpp (diff) |
|
 | compiler-rt/lib/tsan/rtl/tsan_interceptors_libdispatch.cpp (diff) |
Commit
05a3c8848a08fea5b832e69b94d3d647ef29f745
by Matthew.ArsenaultAMDGPU: Have a few selection failure tests check both paths
SelectionDAG and GlobalISel take different failure paths for these and end up producing different failure errors. Check both so the test passes when the default is switched.
|
 | llvm/test/CodeGen/AMDGPU/div_i128.ll (diff) |
 | llvm/test/CodeGen/AMDGPU/unsupported-image-a16.ll (diff) |
 | llvm/test/CodeGen/AMDGPU/unsupported-image-g16.ll (diff) |
 | llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ds.gws.sema.release.all.ll (diff) |
Commit
f7c87b7e376773c555d92d02d8a52a811caf2fbc
by craig.topper[X86] Copy the tuning features and scheduler model from pentium4/x86-64 to generic
This is preparation for making clang default to -mtune=generic when no -march is specified. This will allow the default tuning to be "generic" even though our default march is "pentium4" or "x86-64".
To avoid llc lit test regressions, if no mcpu is specified, I've defaulted tune to use i586 to match the old tuning settings of no CPU. Some tests explicitly used -mcpu=generic which I've removed so they instead get this default of architecture features from generic and tune from i586.
I updated one llvm-mca test to check a different CPU since generic has a scheduler model now
Differential Revision: https://reviews.llvm.org/D86312
|
 | llvm/test/CodeGen/X86/widen_cast-1.ll (diff) |
 | llvm/test/CodeGen/X86/optimize-max-3.ll (diff) |
 | llvm/test/CodeGen/X86/vec_setcc-2.ll (diff) |
 | llvm/test/CodeGen/X86/abi-isel.ll (diff) |
 | llvm/test/CodeGen/X86/select.ll (diff) |
 | llvm/test/CodeGen/X86/full-lsr.ll (diff) |
 | llvm/test/CodeGen/X86/lsr-loop-exit-cond.ll (diff) |
 | llvm/test/CodeGen/X86/vec_call.ll (diff) |
 | llvm/test/CodeGen/X86/lsr-static-addr.ll (diff) |
 | llvm/test/CodeGen/X86/2007-11-06-InstrSched.ll (diff) |
 | llvm/test/CodeGen/X86/masked-iv-safe.ll (diff) |
 | llvm/test/tools/llvm-mca/X86/no-sched-model.s (diff) |
 | llvm/lib/Target/X86/X86.td (diff) |
 | llvm/lib/Target/X86/X86Subtarget.cpp (diff) |
 | llvm/test/CodeGen/X86/add.ll (diff) |
Commit
075a92dea11ece9e7b7e24238fa995a42b2128d0
by nemanja.i.ibm[PowerPC] Do not use FISel for calls and TOC-based accesses with PC-Rel
PC-Relative addressing introduces a fair bit of complexity for correctly eliminating TOC accesses. FastISel does not include any of that handling so we miscompile code with -mcpu=pwr10 -O0 if it includes an external call that FastISel does not handle followed by any of the following:
Floating point constant materialization Materialization of a GlobalValue Call that FastISel does handle
This patch switches to SDISel for any of the above.
Differential revision: https://reviews.llvm.org/D86343
|
 | llvm/test/CodeGen/PowerPC/fast-isel-pcrel.ll (diff) |
 | llvm/lib/Target/PowerPC/PPCFastISel.cpp (diff) |
|
 | llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-amdgcn.readlane.mir (diff) |
 | llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp (diff) |
 | llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-waterfall-agpr.mir |
Commit
a842950b62b6d029a392c3c312c6495d6368c2a4
by Jonas Devlieghere[lldb] Add a SymbolFileProvider to record and replay calls to dsymForUUID
When replaying a reproducer captured from a core file, we always use dsymForUUID for the kernel binary. When enabled, we also use it to find kexts. Since these files are already contained in the reproducer, there's no reason to call out to an external tool. If the tool returns a different result, e.g. because the dSYM got garbage collected, it will break reproducer replay. The SymbolFileProvider solves the issue by mapping UUIDs to module and symbol paths in the reproducer.
Differential revision: https://reviews.llvm.org/D86389
|
 | lldb/include/lldb/Utility/ReproducerProvider.h (diff) |
 | lldb/include/lldb/Utility/Reproducer.h (diff) |
 | lldb/test/Shell/Reproducer/Inputs/dsymforuuid.sh |
 | lldb/test/Shell/Reproducer/Inputs/core |
 | lldb/source/Commands/CommandObjectReproducer.cpp (diff) |
 | lldb/source/Symbol/LocateSymbolFile.cpp (diff) |
 | lldb/source/Utility/ReproducerProvider.cpp (diff) |
 | lldb/source/Symbol/LocateSymbolFileMacOSX.cpp (diff) |
 | lldb/test/Shell/Reproducer/TestDebugSymbols.test |
|
 | llvm/test/CodeGen/X86/sqrt-fastmath.ll (diff) |
 | llvm/test/CodeGen/AArch64/sqrt-fastmath.ll (diff) |
Commit
62e91bf563337fff93be0059ecb1f4dae32d8980
by spatel[DAGCombine]: Fold X/Sqrt(X) to Sqrt(X)
With FMF ( "nsz" and " reassoc") fold X/Sqrt(X) to Sqrt(X).
This is done after targets have the chance to produce a reciprocal sqrt estimate sequence because that expansion is probably more efficient than an expansion of a non-reciprocal sqrt. That is also why we deferred doing this transform in IR (D85709).
Differential Revision: https://reviews.llvm.org/D86403
|
 | llvm/test/CodeGen/X86/sqrt-fastmath.ll (diff) |
 | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (diff) |
 | llvm/test/CodeGen/AArch64/sqrt-fastmath.ll (diff) |
Commit
93b255142bb7025f62cf83dd5b7d3b04aab5445b
by shafik[LLDB] Fix how ValueObjectVariable handles DW_AT_const_value when the DWARFExpression holds the data that represents a constant value
In some cases when we have a DW_AT_const_value and the data can be found in the DWARFExpression then ValueObjectVariable does not handle it properly and we end up with an extracting data from value failed error.
The test is a very stripped down assembly file since reproducing this relies on the results of compiling with -O1 which may not be stable over time.
Differential Revision: https://reviews.llvm.org/D86311
|
 | lldb/test/Shell/SymbolFile/DWARF/DW_AT_const_value.s |
 | lldb/source/Core/ValueObjectVariable.cpp (diff) |
|
 | libcxxabi/test/test_demangle.pass.cpp (diff) |
Commit
4283320b7286dc94367b22df09499dc934e1fbf9
by omair.javaid[LLDB] Fix SVE offset calculation in NativeRegisterContextLinux_arm64
There was typo left from changes in CalculateSVEOffset where we moved FPSR/FPCR offset calculation into WriteRegister and ReadRegister.
Differential Revision: https://reviews.llvm.org/D79699
|
 | lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp (diff) |