Commit
41d4aa7de68ed551010f27ff04ffc54e7616292a
by clattner[SymbolRefAttr] Revise SymbolRefAttr to hold a StringAttr.
SymbolRefAttr is fundamentally a base string plus a sequence of nested references. Instead of storing the string data as a copies StringRef, store it as an already-uniqued StringAttr.
This makes a lot of things simpler and more efficient because: 1) references to the symbol are already stored as StringAttr's: there is no need to copy the string data into MLIRContext multiple times. 2) This allows pointer comparisons instead of string comparisons (or redundant uniquing) within SymbolTable.cpp. 3) This allows SymbolTable to hold a DenseMap instead of a StringMap (which again copies the string data and slows lookup).
This is a moderately invasive patch, so I kept a lot of compatibility APIs around. It would be nice to explore changing getName() to return a StringAttr for example (right now you have to use getNameAttr()), and eliminate things like the StringRef version of getSymbol.
Differential Revision: https://reviews.llvm.org/D108899
|
 | mlir/include/mlir/IR/Builders.h |
 | mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp |
 | mlir/lib/Conversion/GPUCommon/OpToFuncCallLowering.h |
 | mlir/lib/Dialect/GPU/IR/GPUDialect.cpp |
 | mlir/lib/IR/Builders.cpp |
 | mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorConversion.cpp |
 | mlir/lib/Conversion/GPUToVulkan/ConvertGPULaunchFuncToVulkanLaunchFunc.cpp |
 | mlir/lib/Dialect/SPIRV/Linking/ModuleCombiner/ModuleCombiner.cpp |
 | mlir/include/mlir/IR/SymbolTable.h |
 | mlir/lib/Conversion/LinalgToStandard/LinalgToStandard.cpp |
 | mlir/include/mlir/Dialect/GPU/GPUOps.td |
 | mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp |
 | mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp |
 | mlir/lib/Dialect/SPIRV/Transforms/DecorateCompositeTypeLayoutPass.cpp |
 | mlir/lib/Rewrite/ByteCode.cpp |
 | mlir/include/mlir/IR/SymbolInterfaces.td |
 | mlir/include/mlir/IR/OpBase.td |
 | mlir/lib/IR/AsmPrinter.cpp |
 | mlir/lib/Target/LLVMIR/ModuleTranslation.cpp |
 | mlir/lib/CAPI/IR/BuiltinAttributes.cpp |
 | mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp |
 | mlir/test/lib/IR/TestSymbolUses.cpp |
 | mlir/test/lib/Rewrite/TestPDLByteCode.cpp |
 | mlir/lib/IR/BuiltinAttributes.cpp |
 | mlir/include/mlir/IR/BuiltinAttributes.td |
 | mlir/lib/Conversion/SPIRVToLLVM/ConvertLaunchFuncToLLVMCalls.cpp |
 | mlir/lib/IR/SymbolTable.cpp |
 | mlir/include/mlir/IR/BuiltinAttributes.h |
Commit
ab40dbfe03d50a2e4a12168beb0ad9ae660916cf
by pengfei.wang[X86] AVX512FP16 instructions enabling 6/6
Enable FP16 complex FMA instructions.
Ref.: https://software.intel.com/content/www/us/en/develop/download/intel-avx512-fp16-architecture-specification.html
Reviewed By: LuoYuanke
Differential Revision: https://reviews.llvm.org/D105269
|
 | llvm/test/MC/X86/intel-syntax-avx512fp16vl.s |
 | llvm/test/MC/X86/avx512fp16vl.s |
 | llvm/test/CodeGen/X86/avx512cfma-intrinsics.ll |
 | llvm/test/CodeGen/X86/avx512cfmulsh-instrinsics.ll |
 | llvm/test/MC/X86/avx512fp16-complex-fma.s |
 | llvm/lib/Target/X86/X86InstrAVX512.td |
 | llvm/lib/Target/X86/X86ISelLowering.h |
 | llvm/test/MC/X86/avx512fp16.s |
 | clang/include/clang/Basic/BuiltinsX86.def |
 | clang/lib/Headers/avx512fp16intrin.h |
 | llvm/test/CodeGen/X86/stack-folding-fp-avx512fp16vl.ll |
 | llvm/test/CodeGen/X86/avx512fp16-combine-xor-vfmulc.ll |
 | llvm/lib/Target/X86/X86InstrFragmentsSIMD.td |
 | llvm/lib/Target/X86/X86InstrFoldTables.cpp |
 | llvm/test/CodeGen/X86/avx512fp16-combine-xor-vfmulc-fadd.ll |
 | clang/lib/Sema/SemaChecking.cpp |
 | llvm/test/CodeGen/X86/stack-folding-fp-avx512fp16.ll |
 | clang/test/CodeGen/X86/avx512vlfp16-builtins.c |
 | clang/lib/Headers/avx512vlfp16intrin.h |
 | llvm/test/CodeGen/X86/avx512fp16-combine-vfmulc-fadd.ll |
 | llvm/lib/Target/X86/X86ISelLowering.cpp |
 | llvm/test/MC/Disassembler/X86/avx512fp16vl.txt |
 | clang/test/CodeGen/X86/avx512fp16-builtins.c |
 | llvm/include/llvm/IR/IntrinsicsX86.td |
 | llvm/test/MC/X86/intel-syntax-avx512fp16.s |
 | llvm/lib/Target/X86/X86IntrinsicsInfo.h |
 | llvm/test/CodeGen/X86/avx512cfmul-intrinsics.ll |
 | llvm/test/MC/X86/avx512fp16-complex-fma_vl.s |
 | llvm/test/MC/Disassembler/X86/avx512fp16.txt |
 | llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp |
Commit
31fb52f8749ee43385cd7a9c8064c3adf58b2596
by jperier[flang] Apply double precision KindCode in specific proc interface
The double precision KindCode was ignored when building the interface of specific intrinsic procedures leading to bad semantics checks.
Differential Revision: https://reviews.llvm.org/D108828
|
 | flang/lib/Evaluate/intrinsics.cpp |
 | flang/test/Semantics/call20.f90 |
Commit
3a6b722db856cbd6279d0c6578c0d7cca12b18f6
by kuhnel[docs] Add a new tutorial that talk about how to make a change to llvm
This tutorial will guide you through the process of making a change to LLVM, and contributing it back to the LLVM project. We'll be making a change to Clang, but the steps for other parts of LLVM are the same. Even though the change we'll be making is simple, we're going to cover steps like building LLVM, running the tests, and code review. This is good practice, and you'll be prepared for making larger changes.
Authors: @meikeb , @gribozavr Commit: Zhiqian Xia
PS - This is a duplicate revision of https://reviews.llvm.org/D100714 which was actually used for patch review.
Reviewed By: kuhnel
Differential Revision: https://reviews.llvm.org/D108267
|
 | llvm/docs/GettingStartedTutorials.rst |
 | llvm/docs/MyFirstTypoFix.rst |
Commit
abd36fe512a6ba8de51bca7911322ae8fa1b0a78
by flo[VPlan] Introduce code to limit querying VPValues using IR references.
After applying VPlan-to-VPlan transformations, using IR references to query VPlan values may be incorrect, as the IR is not in sync with the VPlan any longer.
To better detect such mis-matches, this patch introduces a new flag to VPlans to indicate whether it is safe to query VPValues using IR values.
getVPValue is updated to assert if it is called when the flag indicates it is not safe any longer.
There is an escape hatch via an extra argument, because there are 3 places that need to be fixed first. Those are
1. truncateToMinimalBitwidths 2. clearReductionWrapFlags 3. fixLCSSAPHIs
As a first step, this flag will help preventing new code from violating this property.
Any suggestions with respect to naming very welcome!
Reviewed By: Ayal
Differential Revision: https://reviews.llvm.org/D108573
|
 | llvm/lib/Transforms/Vectorize/LoopVectorize.cpp |
 | llvm/lib/Transforms/Vectorize/VPlan.h |
Commit
cc4d28691bbc382aabf2a59c017b55a6c37f1b18
by diana.picus[flang] Add runtime interface for COMMAND_ARGUMENT_COUNT
Differential Revision: https://reviews.llvm.org/D108687
|
 | flang/runtime/command.h |
Commit
4fae60c4b0ed02dbb6e4c73e49197dd8dd8d4ccf
by diana.picus[flang] Add runtime interface for GET_COMMAND_ARGUMENT
GET_COMMAND_ARGUMENT takes a lot of optional arguments: VALUE, LENGTH, STATUS and ERRMSG. This patch breaks up the interface into 2 different functions:
* One for getting the LENGTH of an argument.
* One for getting the VALUE and the ERRMSG of an argument. This returns the STATUS, which can be easily ignored by lowering if it is missing in the invocation.
Differential Revision: https://reviews.llvm.org/D108688
|
 | flang/runtime/command.h |
Commit
0a6fad754ed8f0812dd57357ce8071b02e962259
by Bhuvanendra.KumarN[DebugInfo] Emit DW_TAG_namelist and DW_TAG_namelist_item
This patch emits DW_TAG_namelist and DW_TAG_namelist_item for fortran namelist variables. DICompositeType is extended to support this fortran feature.
Reviewed By: aprantl
Differential Revision: https://reviews.llvm.org/D108553
|
 | llvm/test/DebugInfo/X86/namelist2.ll |
 | llvm/test/DebugInfo/X86/namelist1.ll |
 | llvm/lib/IR/Verifier.cpp |
 | llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp |
Commit
0a1d80d56e6a0e062d493e262d3322d2ac3a04d4
by mgorny[lldb] [gdb-remote client] Support minimal fork/vfork handling
Add a support for handling fork/vfork stops in LLGS client. At this point, it only sends a detach packet for the newly forked child (and implicitly resumes the parent).
Differential Revision: https://reviews.llvm.org/D100206
|
 | lldb/source/Target/StopInfo.cpp |
 | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp |
 | lldb/include/lldb/Target/StopInfo.h |
 | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h |
 | lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp |
 | lldb/test/API/functionalities/gdb_remote_client/gdbclientutils.py |
 | lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h |
 | lldb/test/API/functionalities/gdb_remote_client/TestFork.py |
 | lldb/include/lldb/Target/Process.h |
Commit
ada219b13a2debc94cb252feb0dd987ef9290126
by lebedev.ri[NFC][IndVars] Add test that caused D108043 to be reverted
We currently don't simplify anything here, but we can.
|
 | llvm/test/Transforms/IndVarSimplify/D108043.ll |
Commit
7b0d59da9af4bf4eb8342cac579e42a818ac1ae7
by lebedev.ri[IndVars] Drop check for the validity of rewrite
`isValidRewrite()` checks that the both the original SCEV, and the rewrite SCEV have the same base pointer. I //believe//, after all the recent SCEV improvements, this invariant is already enforced by SCEV itself.
I originally tried changing it into an assert in D108043, but that showed that it triggers on e.g. https://reviews.llvm.org/D108043#2946621, where SCEV manages to forward the store to load, test added.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D108655
|
 | llvm/test/Transforms/IndVarSimplify/D108043.ll |
 | llvm/lib/Transforms/Utils/LoopUtils.cpp |
Commit
9db95a67d14c918371234e5c98263a977835e19f
by zinenkoFix interface trait declaration in SymbolInterfaces.td
41d4aa7de68ed551010f27ff04ffc54e7616292a introduced incorrect code in extraTraitClassDeclaration: `this` refers to the trait class and not the operation class so `->getContext()` is not valid. Use `$_op` instead.
|
 | mlir/include/mlir/IR/SymbolInterfaces.td |
Commit
b1b68b4c0190b7fc7f0ebe823277966056b39494
by anton.a.afanasyev[CMake] Add `--gdb-index` option to linker if split dwarf compiling
The option `--gdb-index` should be passed to linker if compiler is invoked with `-gsplit-dwarf` option. This allows debugger to locate the appropriate units quickly. See "Invocation" section here: https://gcc.gnu.org/wiki/DebugFission
Suggested by @dblaikie here: https://reviews.llvm.org/D68556#1698442
Differential Revision: https://reviews.llvm.org/D108776
|
 | llvm/cmake/modules/HandleLLVMOptions.cmake |
Commit
795d142d237e0a06c136886a6dd9c49235c37295
by lebedev.ri[NFCI][IndVars] rewriteLoopExitValues(): don't expand SCEV's until needed
Previously, we'd expand *ALL* the SCEV's eagerly, because we needed to check with `isValidRewrite()`, and discard bad rewrite candidates, but now that we do not do that, we also don't need to always expand.
In particular, this avoids expanding potentially-huge SCEV's that we would discard anyways because they are high-cost and we aren't rewriting aggressively.
|
 | llvm/lib/Transforms/Utils/LoopUtils.cpp |
Commit
37b78291c67c1a8b0a207b966697342834db388a
by dvyukovtsan: add a comment to CallUserSignalHandler
Reviewed By: melver
Differential Revision: https://reviews.llvm.org/D108907
|
 | compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp |
Commit
3f0c6100a226d33a3d9861fa6dc4649e43c7abd4
by anton.a.afanasyev[CMake][NFC] Add comment about new `--gdb-index` option used with `-gsplit-dwarf`
Follow-up of https://reviews.llvm.org/D108776
|
 | llvm/CMakeLists.txt |
Commit
f3ad3ea4719bd025711062725732dd597533a8c9
by Raphael Isemann[lldb][NFC] Remove TypeSystemClang::CreateFunctionType overload
This can just be a default argument.
|
 | lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.h |
Commit
7c25a32840354e2a852ea8d1d839a708dcdd0921
by llvm-devFix MSVC "signed/unsigned mismatch" comparison warning. NFCI.
|
 | llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp |
Commit
af2920ec6f859e9b7e0ef519cdc601ee2567c379
by llvm-dev[TTI][X86] getArithmeticInstrCost - move opcode canonicalization before all target-specific costs. NFCI.
The GLM/SLM special cases still get tested first but after the the MUL/DIV/REM pattern detection - this will be necessary for when we make the SLM vXi32 MUL canonicalization generic to improve PMULLW/PMULHW/PMADDDW cost support etc.
|
 | llvm/lib/Target/X86/X86TargetTransformInfo.cpp |
Commit
a5791badde32cf794edbddf737cbc8344257449b
by simon.moll[clang] Add gcc-toolset-10 support (RHEL/CentOS 8)
Clang only adds GCC paths for RHEL <= 7 'devtoolset-<N>' Software Collections (SCL). This generalizes this support to also include the 'gcc-toolset-10' SCL in RHEL/CentOS 8.
Reviewed By: stephan.dollberg
Differential Revision: https://reviews.llvm.org/D108908
|
 | clang/lib/Driver/ToolChains/Linux.cpp |
 | clang/lib/Driver/ToolChains/Gnu.cpp |
Commit
58e1a5e4c29325dc985ad4976d65fab53f05e946
by jperier[flang][mlir] Fix FIR after D108899
After 41d4aa7de68ed551010f27ff04ffc54e7616292a, some builder.getStringAttr calls in FIR were wrong.
|
 | flang/include/flang/Optimizer/Dialect/FIROps.td |
 | flang/lib/Optimizer/Dialect/FIROps.cpp |
Commit
86f5288eae4a27fd2f497ac45ad087d643ad73a8
by djordje.todorovic[LiveDebugValues] Cleanup Transfers when removing Entry Value
If we encounter a new debug value, describing the same parameter, we should stop tracking the parameter's Entry Value. At that point, in some cases, the Transfer which uses the parameter's Entry Value, is already emitted. Thanks to the RemoveRedundantDebugValues pass, many problems with incorrect instruction order and number of DBG_VALUEs are fixed. However, we still cannot rely on the rule that each new debug value is set by the previous non-debug instruction in Machine Basic Block.
When new parameter debug value triggers removal of Backup Entry Value for the same parameter, do the cleanup of Transfers emitted from Backup Entry Values. Get the Transfer Instruction which created the new debug value and search for debug values already emitted from the to-be-deleted Backup Entry Value and attached to the Transfer Instruction. If found, delete the Transfer and remove "primary" Entry Value Var Loc from OpenRanges.
This patch fixes PR47628.
Patch by Nikola Tesic.
Differential revision: https://reviews.llvm.org/D106856
|
 | llvm/lib/CodeGen/LiveDebugValues/VarLocBasedImpl.cpp |
 | llvm/test/DebugInfo/MIR/X86/dbgcall-site-reference.mir |
 | llvm/test/DebugInfo/MIR/X86/entry-value-of-modified-param.mir |
 | llvm/test/DebugInfo/MIR/X86/backup-entry-values-usage.mir |
 | llvm/test/DebugInfo/MIR/X86/remove-entry-value-from-loop.mir |
Commit
3973d8b29e249a6ea4aceaa4225dfde5663937c6
by kimanh[lldb] Return all line entries matchign a line if no column is specified
Previously, if no column was specified, ResolveSymbolContext would take the first match returned by FindLineEntryIndexByFileIndex, and reuse it to find subsequent exact matches. With the introduction of columns, columns are now considered when matching the line entries.
This leads to a problem if one wants to get all existing line entries that match that line, since now the column is also used for the exact match. This way, all line entries are filtered out that have a different column number, but the same line number.
This patch changes that by ignoring the column information of the first match if the original request of ResolveSymbolContext was also ignoring it.
Reviewed By: mib
Differential Revision: https://reviews.llvm.org/D108816
|
 | lldb/source/Symbol/CompileUnit.cpp |
 | lldb/unittests/Symbol/TestLineEntry.cpp |
Commit
21d11c87a21b007da20cb3b55bfe6a4c33679ee3
by aaronSilence a signed/unsigned mismatch warning; NFC
|
 | llvm/lib/ExecutionEngine/JITLink/x86_64.cpp |
Commit
ffcf571107594ff5d02bc2410266efe527787fb0
by Raphael Isemann[LLDB] Fix 'std::out_of_range' crashing bug when file name completion using file path.
When I run a lldb command that uses filename completion, if I enter a string that is not only a filename but also a string with a non-file name string added, such as "./" that is relative path string , it will crash as soon as I press the [Tab] key. For example, debugging an executable file named "hello" that is compiled from a file named "hello.c" , and I’ll put a breakpoint on line 3 of hello.c.
``` $ lldb ./hello (lldb) breakpoint set --file hello.c --line 3 ```
This is not a problem, but if I set "--file ./hello." and then press [Tab] key to complete file name, lldb crashes.
``` $ lldb ./hello (lldb) breakpoint set --file ./hello.terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::substr: __pos (which is 8) > this->size() (which is 7) ```
The crash was caused because substr() (in lldb/source/Host/common/Editline.cpp) cut out string which size is user's input string from the completion string.
I modified the code that erase the user's intput string from current line and then add the completion string.
Differential Revision: https://reviews.llvm.org/D108817
|
 | lldb/test/API/iohandler/completion/TestIOHandlerCompletion.py |
 | lldb/test/API/iohandler/completion/Makefile |
 | lldb/source/Host/common/Editline.cpp |
Commit
2ce889fa4e5cab75fc65d03a4dfae52784d57db9
by Raphael Isemann[lldb][NFC] Add size tests for empty records with alignment and with empty members
This came up during the Windows bot failure discussing after D105471 . See also 3d9a9fa6911a5228ce799a7c639e94d322678934 .
|
 | lldb/test/API/lang/cpp/sizeof/TestCPPSizeof.py |
 | lldb/test/API/lang/c/sizeof/TestCSizeof.py |
 | lldb/test/API/lang/c/sizeof/main.c |
 | lldb/test/API/lang/cpp/sizeof/main.cpp |
Commit
2e5c17d19e370c4d4f17ee89ca645113692f5407
by wei.huang[PowerPC][NFC] Rename P10 builtins vec_clrl, vec_clrr to vec_clr_first and vec_clr_last
This patch renames the vector clear left/right builtins vec_clrl, vec_clrr to vec_clr_first and vec_clr_last to avoid the ambiguities when dealing with endianness.
Reviewed By: amyk, lei
Differential revision: https://reviews.llvm.org/D108702
|
 | clang/test/CodeGen/builtins-ppc-p10vector.c |
 | clang/lib/Headers/altivec.h |
Commit
57b46056b9435b52028fd96bed43f562be1705fd
by Jake.Egan[AIX] Suppress -Waix-compat warning with SmallVector class
When building LLVM with Open XL and -Werror is specified, the -Waix-compat warning becomes an error. This patch updates the SmallVector class to suppress the -Waix-compat warning/error on AIX.
Reviewed By: daltenty
Differential Revision: https://reviews.llvm.org/D108577
|
 | llvm/lib/Support/SmallVector.cpp |
Commit
8e6c55c92c807ad77106298d9b7eaf453407d009
by stellaraccident[mlir][python] Extend C/Python API to be usable for CFG construction.
* It is pretty clear that no one has tried this yet since it was both incomplete and broken. * Fixes a symbol hiding issues keeping even the generic builder from constructing an operation with successors. * Adds ODS support for successors. * Adds CAPI `mlirBlockGetParentRegion`, `mlirRegionEqual` + tests (and missing test for `mlirBlockGetParentOperation`). * Adds Python property: `Block.region`. * Adds Python methods: `Block.create_before` and `Block.create_after`. * Adds Python property: `InsertionPoint.block`. * Adds new blocks.py test to verify a plausible CFG construction case.
Differential Revision: https://reviews.llvm.org/D108898
|
 | mlir/lib/Bindings/Python/IRCore.cpp |
 | mlir/include/mlir-c/IR.h |
 | mlir/test/CAPI/ir.c |
 | mlir/tools/mlir-tblgen/OpPythonBindingGen.cpp |
 | mlir/test/mlir-tblgen/op-python-bindings.td |
 | mlir/lib/CAPI/IR/IR.cpp |
 | mlir/test/python/ir/blocks.py |
Commit
5ea1c37118699f0ed1da17e0d8562011d0002edd
by protze[libomptarget][amdcgn] Only add opt/llvm-link dependency if TARGET is available
In some build configurations, the target we depend on is not available for declaring the build dependency. We only need to declare the build dependency, if the build target is available in the same build.
Fixes the issue raised in https://reviews.llvm.org/D107156#2969862 This patch should go into release/13 together with D108404
Differential Revision: https://reviews.llvm.org/D108868
|
 | llvm/runtimes/CMakeLists.txt |
 | openmp/libomptarget/deviceRTLs/amdgcn/CMakeLists.txt |
Commit
cf56b08d15b6fe4c8b87569529e1d220baf44aea
by andrew.litteken[IRSim] Adding missing comments canonical relation commit
Adding missing comments to IRSimilarityIdentifier.cpp since they were not properly added in commit 063af63b9664151b3a9206feefa9a6a36a471e80.
|
 | llvm/lib/Analysis/IRSimilarityIdentifier.cpp |
Commit
668b045b8d9ff4ea238dbdc6d07b15beaad8c9f3
by dmalyutin[LSR][NFC] Add test case for pr42770
|
 | llvm/test/Transforms/LoopStrengthReduce/pr42770.ll |
Commit
705d00578128c6089fe05adb175a5306f46c695c
by craig.topper[DAGCombiner][RISCV] Don't use vector types in DAGCombiner::tryStoreMergeOfLoads if we need a rotate.
The check for whether a rotate is possible occurs before the memory legality checks for the integer type. So it's possible we decide we can use a rotate, but then fail the legality checks. If that happens we should not fall back to a vector type. This triggers an assertion in the rotate handling when it finds a vector type instead of an integer type.
In theory we could use a shufflevector in place of the rotate, but right now I'd just like to fix the crash.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D108839
|
 | llvm/test/CodeGen/RISCV/rvv/fixed-vectors-store-merge-crash.ll |
 | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp |
Commit
0560a4adb3ef72eeb1697474532f42d78cd23354
by craig.topper[RISCV] Enable CONCAT_VECTORS for fixed FP vectors.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D108487
|
 | llvm/test/CodeGen/RISCV/rvv/fixed-vectors-i2fp.ll |
 | llvm/lib/Target/RISCV/RISCVISelLowering.cpp |
 | llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-conv.ll |
Commit
c50faffb4eeca004109a1591e56cd7cac2ed1083
by kazu[llvm] Remove redundant calls to str() and c_str() (NFC)
Identified with readability-redundant-string-cstr.
|
 | llvm/lib/Target/AMDGPU/AMDGPUPrintfRuntimeBinding.cpp |
 | llvm/lib/InterfaceStub/ELFObjHandler.cpp |
 | llvm/lib/Target/AVR/AsmParser/AVRAsmParser.cpp |
 | llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp |
Commit
5b3fad49661525e4053acaa13f8ac5bde5328462
by daniil.fukalov[AMDGPU][CostModel] Update shuffle instruction tests. NFC.
New tests ported over from test/Analysis/CostModel/AArch64/shuffle-other.ll.
|
 | llvm/test/Analysis/CostModel/AMDGPU/shufflevector.ll |
Commit
f564299fe94bade150c845f134284038d27b422a
by andrew.litteken[IROutliner] Ensure instructions at end of candidate are excluded
Occasionally instructions are between the last instruction in a region, and the following instruction as identified by the Candidate. This adds an extra check right before splitting a candidate that excludes the region from being split/checked for outlining to remove errors.
Tests Added: Tranforms/IROuutliner/outlining-extra-bitcasts.ll
Reviewer: paquette, jroelofs
Differential Revision: https://reviews.llvm.org/D104142
|
 | llvm/lib/Transforms/IPO/IROutliner.cpp |
 | llvm/test/Transforms/IROutliner/outlining-bitcasts.ll |
Commit
9721197520e5badd4e6385399f6b08575c6c8504
by thakis[lld/mac] Set branchRange a bit more carefully
- Don't subtract thunkSize from branchRange. Most places care about the actual maximal branch range. Subtract thunkSize in the one place that wants to leave room for a thunk. - Set it to 0x800_0000 instead of 0xFF_FFFF - Subtract 4 for the positive branch direction since it's a two's complement 24bit number sign-extended mutiplied by 4, so its range is -0x800_0000..+0x7FF_FFFC - Make boundary checks include the boundary values
This doesn't make a huge difference in practice. It's preparation for a "real" fix for PR51578 -- but it also lets the repro in comment 0 in that bug place one more thunk before hitting the TODO.
Differential Revision: https://reviews.llvm.org/D108897
|
 | lld/MachO/ConcatOutputSection.cpp |
 | lld/MachO/Arch/ARM64.cpp |
 | lld/MachO/Target.h |
Commit
770602cfa01346db58417fa2f6bfd49f8ed4e9fa
by Louis Dionne[libc++] Various cleanups in the ranges tests
- Rename test files to follow conventions better - Split constructor tests that were in a single file - Add missing tests for take_view and transform_view's default constructors - Add missing tests for transform_view's view/function constructor - Fix include guards - Mark some tests as being specific to libc++
Differential Revision: https://reviews.llvm.org/D108829
|
 | libcxx/test/std/ranges/range.access/range.access.cend/incomplete.compile.verify.cpp |
 | libcxx/test/std/ranges/range.adaptors/range.take/ctor.view_count.pass.cpp |
 | libcxx/test/std/ranges/range.access/range.access.end/incomplete.compile.verify.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/structured_bindings.pass.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/access/get.pass.cpp |
 | libcxx/test/std/ranges/range.adaptors/range.transform/types.h |
 | libcxx/test/std/ranges/range.access/range.prim/empty.incomplete.verify.cpp |
 | libcxx/test/std/ranges/range.adaptors/range.transform/ctor.default.pass.cpp |
 | libcxx/test/std/ranges/range.adaptors/range.transform/ctor.view_function.pass.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/subrange_test_types.h |
 | libcxx/test/std/ranges/range.utility/range.subrange/get.pass.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/ctor.pair_like_conv.pass.cpp |
 | libcxx/test/std/ranges/range.access/range.access.begin/incomplete.compile.verify.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/access/advance.pass.cpp |
 | libcxx/test/std/ranges/range.req/range.range/borrowed_range.subsumption.compile.pass.cpp |
 | libcxx/test/std/ranges/range.access/range.access.cbegin/incomplete.compile.verify.cpp |
 | libcxx/test/std/ranges/range.access/range.access.end/incomplete.verify.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/ctor.begin_end.pass.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/ctor/range_size.pass.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/ctor.range.pass.cpp |
 | libcxx/test/std/ranges/range.adaptors/range.drop/dangling.cache.pass.cpp |
 | libcxx/test/std/ranges/range.adaptors/range.take/ctor.default.pass.cpp |
 | libcxx/test/std/ranges/range.access/range.prim/data.incomplete.verify.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/advance.pass.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/primitives.pass.cpp |
 | libcxx/test/std/ranges/range.access/range.access.cbegin/incomplete.verify.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/ctor.range_size.pass.cpp |
 | libcxx/test/std/ranges/range.adaptors/range.join.view/ctor.base.pass.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/ctor/pair_like_conv.pass.cpp |
 | libcxx/test/std/ranges/range.access/range.access.cend/incomplete.verify.cpp |
 | libcxx/test/std/ranges/range.req/range.range/borrowed_range.compile.pass.cpp |
 | libcxx/test/std/ranges/range.adaptors/range.take/ctor.pass.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/ctor.begin_end_size.pass.cpp |
 | libcxx/test/std/ranges/range.range/borrowed_range.compile.pass.cpp |
 | libcxx/test/std/ranges/range.range/borrowed_range.subsumption.compile.pass.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/ctor/begin_end.pass.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/ctor/begin_end_size.pass.cpp |
 | libcxx/test/std/ranges/range.adaptors/range.join.view/ctor.view.pass.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/ctor/range.pass.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/access/structured_binding.pass.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/types.h |
 | libcxx/test/std/ranges/range.access/range.access.begin/incomplete.verify.cpp |
 | libcxx/test/std/ranges/range.utility/range.subrange/access/primitives.pass.cpp |
Commit
1724a164378f1fb5210771680eb577ddf13c5a47
by andrei.elovikov[NFC][clang] Move IR-independent parts of target MV support to X86TargetParser.cpp
...that is located under llvm/lib/Support/.
Reviewed By: erichkeane
Differential Revision: https://reviews.llvm.org/D108423
|
 | clang/lib/CodeGen/CodeGenFunction.h |
 | clang/lib/CodeGen/CGBuiltin.cpp |
 | llvm/include/llvm/Support/X86TargetParser.h |
 | clang/lib/CodeGen/CodeGenModule.cpp |
 | llvm/lib/Support/X86TargetParser.cpp |
 | clang/lib/Basic/Targets/X86.cpp |
Commit
301fbf9b8115620480db851d091cbbb516cd983d
by listmail[SCEV] Clarify the overflow precondition of computeMaxBECountForLT [NFC]
And add a test case to illustrate that we do in fact produce the right result for the multiple exit case. I have gotten myself confused at least three times when reading this code, so clarify to prevent future confusion.
|
 | llvm/test/Analysis/ScalarEvolution/max-trip-count.ll |
 | llvm/include/llvm/Analysis/ScalarEvolution.h |
Commit
7d7765cef50252e760fc9bbc657f7c29934c30e8
by Louis Dionne[libcxx][docs] Mark LWG3348 as complete
Mark LWG3348 as complete. The `__cpp_lib_unwrap_ref` feature test macro was placed in `<functional>` in 466df1718e41fe2fca6ce6bd98c01b18f42c05e4
Differential Revision: https://reviews.llvm.org/D108920
|
 | libcxx/docs/Status/Cxx20Issues.csv |
Commit
881677b58a1f88076fccee5f32152d981de66b74
by nikita.ppv[AsmParser] Support %ty* in force-opaque-pointers mode
Only enforce that ptr* is illegal if the base type is a simple type, not when it is something like %ty, where %ty may resolve to an opaque pointer in force-opaque-pointers mode.
Differential Revision: https://reviews.llvm.org/D108876
|
 | llvm/lib/AsmParser/LLParser.cpp |
 | llvm/test/Other/force-opaque-ptrs.ll |
Commit
f39256e3a5dd1f3d7311703003608340ffdb42bc
by hoy[CSSPGO] Avoid repeatedly computing md5 hash code for pseudo probe inline contexts.
Md5 hashing is expansive. Using a hash map to look up already computed GUID for dwarf names. Saw a 2% build time improvement on an internal large application.
Reviewed By: wenlei
Differential Revision: https://reviews.llvm.org/D108722
|
 | llvm/lib/CodeGen/AsmPrinter/PseudoProbePrinter.h |
 | llvm/lib/CodeGen/AsmPrinter/PseudoProbePrinter.cpp |
Commit
5097b6e35291c23b50002c651b80ae8f770a015c
by goncharov.mikhailRevert "[SLP]Improve graph reordering."
This reverts commit 84cbd71c95923f9912512f3051c6ab548a99e016.
This commit breaks one of the internal tests. As agreed with Alexey I will provide the reproducer later.
|
 | llvm/include/llvm/Transforms/Vectorize/SLPVectorizer.h |
 | llvm/test/Transforms/SLPVectorizer/X86/jumbled_store_crash.ll |
 | llvm/test/Transforms/SLPVectorizer/AArch64/transpose.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/split-load8_2-unord.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/jumbled-load.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/reorder_repeated_ops.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/addsub.ll |
 | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp |
 | llvm/test/Transforms/SLPVectorizer/X86/vectorize-reorder-reuse.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/crash_cmpop.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/jumbled-load-multiuse.ll |
 | llvm/test/Transforms/SLPVectorizer/AArch64/transpose-inseltpoison.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/extract.ll |
Commit
0e42ec1add336e7fbf6cc1f82f663cabe48bf55e
by dblaikieDebugInfo: Correct printing empty template parameter packs
Empty packs in the non-final position would result in an extra ", ". Empty packs in the final position would result in missing the space between trailing >>.
|
 | clang/lib/AST/TypePrinter.cpp |
 | clang/test/CodeGenCXX/debug-info-template.cpp |
Commit
ed4946fe20964509b27b38e74331c36857d4be53
by Louis Dionne[libc++abi] Avoid the warning: "__EXCEPTIONS" is not defined, evaluates to 0 [-Werror=undef]
Differential Revision: https://reviews.llvm.org/D108896
|
 | libcxxabi/include/__cxxabi_config.h |
Commit
0529e2e01888129b21becd1fe3a61d9cb07c6fcd
by nikita.ppv[InstrInfo] Use 64-bit immediates for analyzeCompare() (NFCI)
The backend generally uses 64-bit immediates (e.g. what MachineOperand::getImm() returns), so use that for analyzeCompare() and optimizeCompareInst() as well. This avoids truncation for targets that support immediates larger 32-bit. In particular, we can avoid the bugprone value normalization hack in the AArch64 target.
This is a followup to D108076.
Differential Revision: https://reviews.llvm.org/D108875
|
 | llvm/lib/Target/SystemZ/SystemZInstrInfo.h |
 | llvm/lib/Target/AArch64/AArch64InstrInfo.h |
 | llvm/lib/Target/Hexagon/HexagonHardwareLoops.cpp |
 | llvm/lib/Target/Hexagon/HexagonInstrInfo.h |
 | llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp |
 | llvm/lib/Target/AArch64/AArch64InstrInfo.cpp |
 | llvm/lib/Target/X86/X86InstrInfo.cpp |
 | llvm/lib/Target/PowerPC/PPCInstrInfo.h |
 | llvm/lib/Target/X86/X86InstrInfo.h |
 | llvm/include/llvm/CodeGen/TargetInstrInfo.h |
 | llvm/lib/Target/ARM/ARMBaseInstrInfo.h |
 | llvm/lib/Target/Hexagon/HexagonSplitDouble.cpp |
 | llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp |
 | llvm/lib/Target/Lanai/LanaiInstrInfo.cpp |
 | llvm/lib/Target/PowerPC/PPCInstrInfo.cpp |
 | llvm/lib/CodeGen/PeepholeOptimizer.cpp |
 | llvm/lib/Target/Lanai/LanaiInstrInfo.h |
 | llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp |
Commit
83df94067d367d91dcc37e269a3d7317ebe97bb4
by thakis[lld/mac] Tweak estimateStubsInRangeVA a bit
- Move a few variables closer to their uses, remove some completely (no behavior change) - Add some comments - Make maxPotentialThunks include calls to stubs. It's possible that an earlier call to a stub late in the stub table will need a thunk, and that inserted thunk could push a stub earlier in the stub table out of range. This is unlikely to happen, but usually there are way fewer stub calls than non-stub calls, so if we're doing a conservative approximation here we might as well do it correctly. (For chromium's unit_tests target, 134421/242639 stub calls are direct calls without this change, compared to 134408/242639 with this change)
No real, meaningful behavior difference.
Differential Revision: https://reviews.llvm.org/D108924
|
 | lld/MachO/ConcatOutputSection.cpp |
Commit
efa340fbd264c1a1fc3d0c41275536693369f897
by david.green[ARM] Workaround tailpredication min/max costmodel
The min/max intrinsics are not yet canonical, but when they are the tail predications analysis will change from treating them like icmp to treating them like intrinsics. Unfortunately, they can currently produce better code by not being tail predicated thanks to the vectorizer picking higher VF's and the backend folding to better instructions (especially for saturate patterns). In the long run we will need to improve the vectorizers cost modelling, recognizing the instruction directly, but in the meantime this treats min/max as before to prevent performance regressions.
|
 | llvm/test/Transforms/PhaseOrdering/ARM/arm_mult_q15.ll |
 | llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp |
Commit
843da6f4085cc65d4d3772f3372171cf590933d5
by pyadav2299[docs][GlobalISel]Adding info for G_JUMP_TABLE generic opcode
Added description of jump table and G_JUMP_TABLE opcode.
Differential Revision: https://reviews.llvm.org/D107630
|
 | llvm/docs/GlobalISel/GenericOpcode.rst |
Commit
47b239eb5a17065d13c317600c46e56ffe2d6c75
by kyulee[DIBuilder] Do not replace empty enum types
It looks like this array was missed in 4276d4a8d08b7640eb57cabf6988a5cf65b228b6
Fixed tests that expected `elements` to be empty or depeneded on the order of the empty DINode.
Reviewed By: aprantl
Differential Revision: https://reviews.llvm.org/D107024
|
 | clang/test/CodeGenCXX/debug-info-template.cpp |
 | clang/test/CodeGenCoroutines/coro-dwarf.cpp |
 | clang/test/CodeGenCXX/debug-info-cxx1y.cpp |
 | llvm/test/CodeGen/AArch64/GlobalISel/phi-mir-debugify.mir |
 | clang/test/CodeGen/debug-info-macro.c |
 | llvm/test/DebugInfo/debugify.ll |
 | clang/test/CodeGenCXX/debug-info-codeview-var-templates.cpp |
 | llvm/lib/IR/DIBuilder.cpp |
 | llvm/test/CodeGen/AArch64/GlobalISel/constant-mir-debugify.mir |
 | clang/test/CodeGen/debug-info-codeview-heapallocsite.c |
 | clang/test/CodeGenCXX/debug-info-var-template-partial-spec.cpp |
Commit
070090cfa57f282e64ef355d2f8b8232bddedaf5
by chih-ping.chen[DebugInfo] Remove the restriction on the size of DIStringType in DebugHandlerBase::isUnsignedDIType.
Differential Revision: https://reviews.llvm.org/D108559
|
 | llvm/test/CodeGen/Generic/dbg-distringtype-uint.ll |
 | llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp |
Commit
daf0dfb786f0d72c2cd39a64a97f1593ccaebadf
by i[libc++] Support -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=on in CI
This fixes -isystem/-L/-Wl,-rpath paths when -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=on is used (https://reviews.llvm.org/D107799#2969650).
* `-isystem path/to/build/generic-cxx17/include/c++/v1`. `build/generic-cxx17/include/x86_64-unknown-linux-gnu/c++/v1 (__config_site)` is missing. * `-L path/to/build/generic-cxx17/lib`. Should be `build/generic-cxx17/lib/x86_64-unknown-linux-gnu` instead
Reviewed By: ldionne, phosek, #libc
Differential Revision: https://reviews.llvm.org/D108836
|
 | libcxx/test/configs/libcxx-trunk-static.cfg.in |
 | libcxx/test/configs/libcxx-trunk-shared.cfg.in |
Commit
db9de22f2b6900bdf6f4ada73cfd6eff04de7864
by resistorTeach the AArch64 backend patterns to generate the EOR3 instruction.
Adds patterns to match the EOR3 instruction.
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D108793
|
 | llvm/test/CodeGen/AArch64/eor3.ll |
 | llvm/lib/Target/AArch64/AArch64InstrInfo.td |
Commit
0bbb2d003622d3743a33623dcfc382e3ceadce3b
by pklausler[flang] Fold CSHIFT
Implement folding of the transformational intrinsic function CSHIFT for all types.
Differential Revision: https://reviews.llvm.org/D108931
|
 | flang/lib/Evaluate/fold-implementation.h |
 | flang/lib/Evaluate/fold-logical.cpp |
 | flang/lib/Evaluate/fold-integer.cpp |
 | flang/lib/Evaluate/fold-real.cpp |
 | flang/lib/Evaluate/fold-complex.cpp |
 | flang/lib/Evaluate/fold-character.cpp |
 | flang/include/flang/Evaluate/tools.h |
 | flang/test/Evaluate/folding22.f90 |
 | flang/test/Evaluate/folding27.f90 |
Commit
789f01283d52065b10049b58a3288c4abd1ef351
by bjorn.a.pettersson[SelectionDAG] Fix miscompile bugs related to smul.fix.sat with scale zero
When expanding a SMULFIXSAT ISD node (usually originating from a smul.fix.sat intrinsic) we've applied some optimizations for the special case when the scale is zero. The idea has been that it would be cheaper to use an SMULO instruction (if legal) to perform the multiplication and at the same time detect any overflow. And in case of overflow we could use some SELECT:s to replace the result with the saturated min/max value. The only tricky part is to know if we overflowed on the min or max value, i.e. if the product is positive or negative. Unfortunately the implementation has been incorrect as it has looked at the product returned by the SMULO to determine the sign of the product. In case of overflow that product is truncated and won't give us the correct sign bit.
This patch is adding an extra XOR of the multiplication operands, which is used to determine the sign of the non truncated product.
This patch fixes PR51677.
Reviewed By: lebedev.ri
Differential Revision: https://reviews.llvm.org/D108938
|
 | llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp |
 | llvm/test/CodeGen/X86/smul_fix_sat_constants.ll |
 | llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp |
 | llvm/test/CodeGen/X86/smul_fix_sat.ll |
Commit
201f6446da5643fb13cbbbe58c58311a70a9bd43
by craig.topper[LegalizeTypes][X86] Improve ExpandIntRes_FP_TO_SINT/ExpandIntRes_FP_TO_UINT when input is SoftPromoteHalf.
Instead of splitting off the fp16 to float conversion and generating a libcall, we should split the operation into fp16 to float and float to integer operations. This will allow the float to integer conversion to go through any custom handling the target has. If the target doesn't have custom handling then we should come back to ExpandIntRes_FP_TO_SINT/ ExpandIntRes_FP_TO_UINT automatically to create the libcall.
This avoids generating libcalls on 32-bit X86. These library functions may not exist in 32-bit libgcc. At least for LLVM, we never generate them when hardware floating point instructions are available.
Differential Revision: https://reviews.llvm.org/D108933
|
 | llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp |
 | llvm/test/CodeGen/X86/half.ll |
Commit
203d38b234b8a744f364807ff0f15644453b14c7
by rob.suderman[mlir][tosa] Small refactor to the functionality of Conv2D and Fully_connected to add the bias at the end of the convolution
Made to adjust for a modification to the tiling algorithm
Reviewed By: rsuderman
Differential Revision: https://reviews.llvm.org/D108746
|
 | mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp |
 | mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir |
Commit
c1b7540645cf8d840385ecd6ee7f1f5c1e7c6fc2
by nikita.ppv[TTI] Sink IVDescriptors.h include (NFC)
Forward declare RecurrenceDescriptor and include IVDescritor.h only in implementation code that actually needs it.
|
 | llvm/include/llvm/Analysis/TargetTransformInfo.h |
 | llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp |
 | llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h |
Commit
c58d4c4bd347474dd82dfa79b5f04bf09b58b66f
by andrew.litteken[IROutliner] Changing outliner to prioritize reductions on assembly rather than IR instruction
Currently, the IROutliner uses a simple metric to outline the largest amount of IR possible to outline first if it fits the cost model. This is model loses out on smaller blocks of code that have higher reductions in cost that are contained within larger blocks of IR.
This reverses the order, where we calculate all of the costs first, and then reorder and extract items based on the calculated results.
Reviewers: paquette
Differential Revision: https://reviews.llvm.org/D106440
|
 | llvm/test/Transforms/IROutliner/outlining-bitcasts.ll |
 | llvm/test/Transforms/IROutliner/opt-remarks.ll |
 | llvm/include/llvm/Transforms/IPO/IROutliner.h |
 | llvm/lib/Transforms/IPO/IROutliner.cpp |
Commit
7a2a765745973ebeb041276d2d9489a000ba9371
by sivachandra[libc] Add mtx_destroy which does nothing.
There is not cleanup to be done for the mutex type so mtx_destroy does nothing.
|
 | libc/src/threads/linux/CMakeLists.txt |
 | libc/test/src/threads/call_once_test.cpp |
 | libc/test/src/threads/mtx_test.cpp |
 | libc/src/threads/linux/mtx_destroy.cpp |
 | libc/src/threads/mtx_destroy.h |
 | libc/test/src/threads/CMakeLists.txt |
 | libc/config/linux/x86_64/entrypoints.txt |
 | libc/spec/stdc.td |
 | libc/src/threads/CMakeLists.txt |
Commit
30dfd3449e45ac371012c6e46c77ab9089496d4e
by tra[MemCpyOpt] Allow specifying --enable-memcpyopt-without-libcalls more than once
so we can override it via clang's CLI if necessary.
|
 | llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp |
Commit
ea8539111d444ffb93ab09c5865d9a1a0927cb2c
by vtjnash[COFF] Force Symbols containing '.' to be quoted
In D87099, the mangler learned to quote export directives that contain special characters. Only alhpanumerical characters as well as '_', '$', '.' and '@' were exmpt from this quoting. However, at least binutils considers an unquoted '.' to be syntax and object files containing such symbols will cause errors during linking. Fix that by removing '.' from the list of allowed exemptions.
Differential Revision: https://reviews.llvm.org/D100359
|
 | llvm/test/CodeGen/X86/dllexport.ll |
 | llvm/lib/IR/Mangler.cpp |
Commit
7f2ce19d1cf1dd08330ae8e5ef8aa2130aaf5833
by michaelrj[libc][nfc][obvious] fix typos in FPUtil
Fix minor typos in FPUtil comments.
Reviewed By: michaelrj
Differential Revision: https://reviews.llvm.org/D108952
|
 | libc/src/__support/FPUtil/FMA.h |
 | libc/src/__support/FPUtil/generic/README.md |
 | libc/src/__support/FPUtil/Sqrt.h |
Commit
faf1c22408cfea27749632d880e0a9c0d6b7a568
by clattner[Builder] Eliminate the StringRef/StringAttr forms of getSymbolRefAttr.
The StringAttr version doesn't need a context, so we can just use the existing `SymbolRefAttr::get` form. The StringRef version isn't preferred so we want to encourage people to use StringAttr.
There is an additional form of getSymbolRefAttr that takes a (SymbolTrait implementing) operation. This should also be moved, but I'll do that as a separate patch.
Differential Revision: https://reviews.llvm.org/D108922
|
 | mlir/include/mlir/Dialect/StandardOps/IR/Ops.td |
 | mlir/include/mlir/IR/BuiltinAttributes.h |
 | mlir/lib/Dialect/SPIRV/Transforms/DecorateCompositeTypeLayoutPass.cpp |
 | mlir/lib/IR/BuiltinAttributes.cpp |
 | mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp |
 | mlir/lib/Conversion/GPUCommon/OpToFuncCallLowering.h |
 | mlir/examples/toy/Ch5/mlir/Dialect.cpp |
 | mlir/lib/Target/SPIRV/Deserialization/DeserializeOps.cpp |
 | mlir/lib/Conversion/GPUToVulkan/ConvertGPULaunchFuncToVulkanLaunchFunc.cpp |
 | mlir/lib/Target/LLVMIR/ConvertFromLLVMIR.cpp |
 | flang/include/flang/Optimizer/Dialect/FIROps.td |
 | mlir/lib/Dialect/StandardOps/Transforms/DecomposeCallGraphTypes.cpp |
 | mlir/lib/Transforms/NormalizeMemRefs.cpp |
 | mlir/examples/toy/Ch4/mlir/Dialect.cpp |
 | flang/lib/Lower/IntrinsicCall.cpp |
 | mlir/include/mlir/IR/BuiltinAttributes.td |
 | mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td |
 | mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp |
 | mlir/examples/toy/Ch7/mlir/MLIRGen.cpp |
 | mlir/lib/IR/Builders.cpp |
 | mlir/lib/Parser/AttributeParser.cpp |
 | mlir/lib/Dialect/LLVMIR/IR/FunctionCallUtils.cpp |
 | mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp |
 | mlir/include/mlir/IR/OpBase.td |
 | mlir/lib/Conversion/LinalgToStandard/LinalgToStandard.cpp |
 | mlir/lib/Conversion/PDLToPDLInterp/PDLToPDLInterp.cpp |
 | mlir/lib/Conversion/GPUToVulkan/ConvertLaunchFuncToVulkanCalls.cpp |
 | mlir/examples/toy/Ch3/mlir/Dialect.cpp |
 | mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp |
 | mlir/examples/toy/Ch2/mlir/Dialect.cpp |
 | flang/lib/Optimizer/Dialect/FIROps.cpp |
 | mlir/include/mlir/IR/Builders.h |
 | mlir/lib/Conversion/AsyncToLLVM/AsyncToLLVM.cpp |
 | mlir/examples/toy/Ch7/mlir/Dialect.cpp |
 | mlir/lib/Dialect/GPU/IR/GPUDialect.cpp |
 | mlir/examples/toy/Ch6/mlir/Dialect.cpp |
 | mlir/lib/Parser/Parser.cpp |
Commit
3fefebabe5154929f987b0418ed99bbe34ed4b4e
by pklausler[flang] Fold EOSHIFT
Implement constant folding for the transformational intrinsic function EOSHIFT.
Differential Revision: https://reviews.llvm.org/D108941
|
 | flang/lib/Evaluate/fold-logical.cpp |
 | flang/test/Evaluate/folding23.f90 |
 | flang/lib/Evaluate/fold-implementation.h |
 | flang/lib/Evaluate/intrinsics.cpp |
Commit
ba72cfe73464b9f1e06f2cd2bed93b07483c0be1
by ravishankarm[mlir] Add an interface to allow operations to specify how they can be tiled.
An interface to allow for tiling of operations is introduced. The tiling of the linalg.pad_tensor operation is modified to use this interface.
Differential Revision: https://reviews.llvm.org/D108611
|
 | mlir/test/Dialect/Linalg/tile-pad-tensor-op.mlir |
 | mlir/include/mlir/Interfaces/CMakeLists.txt |
 | mlir/include/mlir/Dialect/Linalg/IR/LinalgOps.td |
 | mlir/lib/Interfaces/CMakeLists.txt |
 | mlir/lib/Dialect/Linalg/IR/CMakeLists.txt |
 | mlir/lib/Dialect/Utils/StaticValueUtils.cpp |
 | mlir/include/mlir/Dialect/Linalg/IR/LinalgOps.h |
 | mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp |
 | utils/bazel/llvm-project-overlay/mlir/BUILD.bazel |
 | mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp |
 | mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp |
 | mlir/lib/Interfaces/TilingInterface.cpp |
 | mlir/include/mlir/Interfaces/TilingInterface.h |
 | mlir/include/mlir/Interfaces/TilingInterface.td |
Commit
b5da3120b8ca99ad626af937eff0509ffa8e3440
by keithbsmiley[llvm-cov][NFC] Add test for coverage-prefix-map remappings
This test covers acts as a regression test for these fixes:
c75a0a1e9dc29be4e00d37d0d00288afc1a6153f dd388ba3e0b0a5f06565d0bcb6e1aebb5daac065
Differential Revision: https://reviews.llvm.org/D108805
|
 | llvm/test/tools/llvm-cov/Inputs/coverage_prefix_map/main.profdata |
 | llvm/test/tools/llvm-cov/Inputs/coverage_prefix_map/bar.h |
 | llvm/test/tools/llvm-cov/Inputs/coverage_prefix_map/main.cc |
 | llvm/test/tools/llvm-cov/coverage-prefix-map.test |
 | llvm/test/tools/llvm-cov/Inputs/coverage_prefix_map/main.covmapping |
Commit
93764ff6e2005b92057cffa9b3866307e2de260f
by vsapsai[modules] Fix miscompilation when using two RecordDecl definitions with the same name.
When deserializing a RecordDecl we don't enforce that redeclaration chain contains only a single definition. So if the canonical decl is not a definition itself, `RecordType::getDecl` can return different objects before and after an include. It means we can build CGRecordLayout for one RecordDecl with its set of FieldDecl but try to use it with FieldDecl belonging to a different RecordDecl. With assertions enabled it results in
> Assertion failed: (FieldInfo.count(FD) && "Invalid field for record!"), > function getLLVMFieldNo, file llvm-project/clang/lib/CodeGen/CGRecordLayout.h, line 199.
and with assertions disabled a bunch of fields are treated as their memory is located at offset 0.
Fix by keeping the first encountered RecordDecl definition and marking the subsequent ones as non-definitions. Also need to merge FieldDecl properly, so that `getPrimaryMergedDecl` works correctly and during name lookup we don't treat fields from same-name RecordDecl as ambiguous.
rdar://80184238
Differential Revision: https://reviews.llvm.org/D106994
|
 | clang/test/Modules/merge-record-definition-nonmodular.m |
 | clang/test/Modules/Inputs/merge-record-definition/RecordDefIncluder.framework/Modules/module.modulemap |
 | clang/test/Modules/merge-record-definition.m |
 | clang/test/Modules/Inputs/merge-record-definition/RecordDefIncluder.framework/Headers/RecordDefIncluder.h |
 | clang/lib/Serialization/ASTCommon.cpp |
 | clang/lib/Serialization/ASTReaderDecl.cpp |
 | clang/test/Modules/Inputs/merge-record-definition/RecordDef.framework/Modules/module.modulemap |
 | clang/test/Modules/Inputs/merge-record-definition/RecordDef.framework/Headers/RecordDef.h |
 | clang/test/Modules/Inputs/merge-record-definition/RecordDefHidden.framework/Headers/Hidden.h |
 | clang/test/Modules/merge-record-definition-visibility.m |
 | clang/test/Modules/Inputs/merge-record-definition/RecordDefHidden.framework/Headers/Visible.h |
 | clang/include/clang/Serialization/ASTReader.h |
 | clang/test/Modules/Inputs/merge-record-definition/RecordDefCopy.framework/Modules/module.modulemap |
 | clang/test/Modules/Inputs/merge-record-definition/RecordDefCopy.framework/Headers/RecordDefCopy.h |
 | clang/test/Modules/Inputs/merge-record-definition/RecordDefHidden.framework/Modules/module.modulemap |
Commit
86c8f395ae7ad901a4b64fda67d367610c05a5cb
by thakis[lld/mac] Leave more room for thunks in thunk placement code
Fixes PR51578 in practice.
Currently there's only enough room for a single thunk, which for real-life code isn't enough. The error case only happens when there are many branch statements very close to each other (0 or 1 instructions apart), with the function at the finalization barrier small.
There's a FIXME on what to do if we hit this case, but that suggestion sounds complicated to me (see end of PR51578 comment 5 for why).
Instead, just leave more room for thunks. Chromium's unit_tests links fine with room for 3 thunks. Leave room for 100, which should fix this for most cases in practice.
There's little cost for leaving lots of room: This slop value only determines when we finalize sections, and we insert thunks for forward jumps into unfinalized sections. So leaving room means we'll need a few more thunks, but the thunk jump range is 128 MiB while a single thunk is just 12 bytes.
For Chromium's unit_tests: With a slop of 3: thunk calls = 355418, thunks = 10903 With a slop of 100: thunk calls = 355426, thunks = 10904
Chances are 100 is enough for all use cases we'll hit in practice, but even bumping it to 1000 would probably be fine.
Differential Revision: https://reviews.llvm.org/D108930
|
 | lld/MachO/ConcatOutputSection.cpp |
 | lld/test/MachO/arm64-thunk-starvation.s |
Commit
f10d003b0c1e99354266be3fa23b6d9961a3c6ba
by wangliushuai[tsan] Add environment variable TSAN_SYMBOLIZER_PATH as we do in other sanitizers
ASan, LSan, MSan and UBSan all allow to use environment variable `*SAN_SYMBOLIZER_PATH` to pass the symbolizer path, this patch add `TSAN_SYMBOLIZER_PATH` to TSan.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D108911
|
 | compiler-rt/lib/tsan/rtl/tsan_flags.cpp |
Commit
2dfb66833fd23a0bf03c3e610e9b985a8141a4cf
by ravishankarmFix unused variable in release build.
Differential Revision: https://reviews.llvm.org/D108963
|
 | mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp |
Commit
b9db70369b7799887b817e13109801795e4d70fc
by hoy[CSSPGO] Split context string to deduplicate function name used in the context.
Currently context strings contain a lot of duplicated function names and that significantly increase the profile size. This change split the context into a series of {name, offset, discriminator} tuples so function names used in the context can be replaced by the index into the name table and that significantly reduce the size consumed by context.
A follow-up improvement made in the compiler and profiling tools is to avoid reconstructing full context strings which is time- and memory- consuming. Instead a context vector of `StringRef` is adopted to represent the full context in all scenarios. As a result, the previous prevalent profile map which was implemented as a `StringRef` is now engineered as an unordered map keyed by `SampleContext`. `SampleContext` is reshaped to using an `ArrayRef` to represent a full context for CS profile. For non-CS profile, it falls back to use `StringRef` to represent a contextless function name. Both the `ArrayRef` and `StringRef` objects are underpinned by real array and string objects that are stored in producer buffers. For compiler, they are maintained by the sample reader. For llvm-profgen, they are maintained in `ProfiledBinary` and `ProfileGenerator`. Full context strings can be generated only in those cases of debugging and printing.
When it comes to profile format, nothing has changed to the text format, though internally CS context is implemented as a vector. Extbinary format is only changed for CS profile, with an additional `SecCSNameTable` section which stores all full contexts logically in the form of `vector<int>`, which each element as an offset points to `SecNameTable`. All occurrences of contexts elsewhere are redirected to using the offset of `SecCSNameTable`.
Testing This is no-diff change in terms of code quality and profile content (for text profile).
For our internal large service (aka ads), the profile generation is cut to half, with a 20x smaller string-based extbinary format generated.
The compile time of ads is dropped by 25%.
Differential Revision: https://reviews.llvm.org/D107299
|
 | llvm/include/llvm/Transforms/IPO/ProfiledCallGraph.h |
 | llvm/lib/ProfileData/SampleProf.cpp |
 | llvm/tools/llvm-profgen/ProfileGenerator.cpp |
 | llvm/lib/ProfileData/SampleProfWriter.cpp |
 | llvm/include/llvm/ProfileData/SampleProfReader.h |
 | llvm/tools/llvm-profgen/ProfileGenerator.h |
 | llvm/test/tools/llvm-profgen/cs-interrupt.test |
 | llvm/include/llvm/ProfileData/SampleProf.h |
 | llvm/tools/llvm-profdata/llvm-profdata.cpp |
 | llvm/tools/llvm-profgen/ProfiledBinary.cpp |
 | llvm/lib/MC/MCPseudoProbe.cpp |
 | llvm/test/tools/llvm-profgen/recursion-compression-noprobe.test |
 | llvm/include/llvm/ProfileData/ProfileCommon.h |
 | llvm/lib/ProfileData/ProfileSummaryBuilder.cpp |
 | llvm/include/llvm/MC/MCPseudoProbe.h |
 | llvm/include/llvm/ProfileData/SampleProfWriter.h |
 | llvm/test/tools/llvm-profgen/noinline-cs-noprobe.test |
 | llvm/tools/llvm-profgen/PerfReader.h |
 | llvm/test/tools/llvm-profdata/Inputs/cs-sample.proftext |
 | llvm/test/tools/llvm-profgen/recursion-compression-pseudoprobe.test |
 | llvm/tools/llvm-profgen/CSPreInliner.cpp |
 | llvm/tools/llvm-profgen/PerfReader.cpp |
 | llvm/tools/llvm-profgen/ProfiledBinary.h |
 | llvm/tools/llvm-profgen/CSPreInliner.h |
 | llvm/lib/ProfileData/SampleProfReader.cpp |
 | llvm/test/Transforms/SampleProfile/Inputs/csspgo-import-list.prof.extbin |
 | llvm/test/Transforms/SampleProfile/csspgo-import-list.ll |
 | llvm/unittests/ProfileData/SampleProfTest.cpp |
 | llvm/include/llvm/Transforms/IPO/SampleContextTracker.h |
 | llvm/test/Transforms/SampleProfile/profile-context-tracker-debug.ll |
 | llvm/tools/llvm-profgen/CallContext.h |
 | llvm/lib/Transforms/IPO/SampleContextTracker.cpp |
Commit
b8fc71b7aeeda0c86a4920da201cc19132ad6d03
by aheejin[WebAssembly] Share rethrowing BBs in LowerEmscriptenEHSjLj
There are three kinds of "rethrowing" BBs in this pass: 1. In Emscripten SjLj, after a possibly longjmping function call, we check if the thrown longjmp corresponds to one of setjmps within the current function. If not, we rethrow the longjmp by calling `emscripten_longjmp`. 2. In Emscripten EH, after a possibly throwing function call, we check if the thrown exception corresponds to the current `catch` clauses. If not, we rethrow the exception by calling `__resumeException`. 3. When both Emscripten EH and SjLj are used, when we check for an exception after a possibly throwing function call, it is possible that we get not an exception but a longjmp. In this case, we shouldn't swallow it; we should rethrow the longjmp by calling `emscripten_longjmp`. 4. When both Emscripten EH and SjLj are used, when we check for a longjmp after a possibly longjmping function call, it is possible that we get not a longjmp but an exception. In this case, we shouldn't swallot it; we should rethrow the exception by calling `__resumeException`.
Case 1 is in Emscripten SjLj, 2 is in Emscripten EH, and 3 and 4 are relevant when both Emscripten EH and SjLj are used. 3 and 4 were first implemented in D106525.
We create BBs for 1, 3, and 4 in this pass. We create those BBs for every throwing/longjmping function call, along with other BBs that contain condition checks. What this CL does is to create a single BB within a function for each of 1, 3, and 4 cases. These BBs are exiting BBs in the function and thus don't have successors, so easy to be shared between calls.
The names of BBs created are: Case 1: `call.em.longjmp` Case 3: `rethrow.exn` Case 4: `rethrow.longjmp`
For the case 2 we don't currently create BBs; we only replace the existing `resume` instruction with `call @__resumeException`. And Clang already creates only a single `resume` BB per function and reuses it, so we don't need to optimize this case.
Not sure what are good benchmarks for EH/SjLj, but this decreases the size of the object file for `grfmt_jpeg.bc` (presumably from opencv) we got from one of our users by 8.9%. Even after running `wasm-opt -O4` on them, there is still 4.8% improvement.
Reviewed By: dschuff
Differential Revision: https://reviews.llvm.org/D108945
|
 | llvm/test/CodeGen/WebAssembly/lower-em-sjlj-debuginfo.ll |
 | llvm/test/CodeGen/WebAssembly/lower-em-ehsjlj.ll |
 | llvm/lib/Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp |
 | llvm/test/CodeGen/WebAssembly/lower-em-sjlj.ll |
Commit
3419e85b15e35e4b5b4d0cd8153fdbe0958e80c7
by aheejin[WebAssembly] Free setjmpTable before exiting calls in EmSjLj
This is an improvement over D107852. We don't need to enumerate specific function names; we can just check for `noreturn` attribute. This also requires us to make sure `__resumeExeption` and `emscripten_longjmp` have `noreturn` attribute too; one of them is a JS function and the other calls a JS function so Clang does not have a way to deduce they don't return.
This is effectively NFC, because I'm not sure if there is an additional case this case covers; if we add a custom function call that has `noreturn` attribute, it will be processed within the SjLj handling and turned into `__invoke` call. So this really applies to some special functions like `emscripten_longjmp`.
Reviewed By: dschuff
Differential Revision: https://reviews.llvm.org/D108955
|
 | llvm/test/CodeGen/WebAssembly/lower-em-sjlj.ll |
 | llvm/lib/Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp |
Commit
f05ff4f7570ca009f22f5e2fe8c6361f28faaa8a
by stellaraccident[mlir][python] Apply py::module_local() to all classes.
* This allows multiple MLIR-API embedding downstreams to co-exist in the same process. * I believe this is the last thing needed to enable isolated embedding.
Differential Revision: https://reviews.llvm.org/D108605
|
 | mlir/lib/Bindings/Python/IRAttributes.cpp |
 | mlir/lib/Bindings/Python/IRCore.cpp |
 | mlir/lib/Bindings/Python/IRAffine.cpp |
 | mlir/lib/Bindings/Python/Pass.cpp |
 | mlir/lib/Bindings/Python/ExecutionEngineModule.cpp |
 | mlir/lib/Bindings/Python/MainModule.cpp |
Commit
4f3a92ca0aff115ee17649610c46d8705e550a03
by dblaikieDebugInfo: Refactor/deduplicate various template argument list emission
Streamline template arguments across types, variables, and functions - for convenient reuse in experiments related to template argument list reconstitution (not including template argument lists in the "name" of those entities, and leaving it to debug info consumers to rebuild the full template name from the semantic descriptions of the argument lists)
But the change seems like a good refactoring/cleanup anyway.
I'd certainly be open to suggestions about how this might be more streamlined - like is there no generic way to query template argument lists across the 3 kinds of entities, rather than needing special case code?
|
 | clang/lib/CodeGen/CGDebugInfo.h |
 | clang/lib/CodeGen/CGDebugInfo.cpp |