Commit
d2be4f95494e642b72852cc33e69a47016fe4a23
by aeubanks[OpaquePtr][LLParser] Explicitly turn off opaque pointers if we see a star
If we turn on --opaque-pointers, tests with '*' would use opaque pointers.
Can't really test this without flipping the default value for --opaque-pointers.
Reviewed By: #opaque-pointers, nikic
Differential Revision: https://reviews.llvm.org/D125735
|
 | llvm/lib/AsmParser/LLParser.cpp |
Commit
470910c4ad8af2555c49aec16409630d2a3246b6
by aeubanks[OpaquePtr][BitcodeReader] Explicitly turn off opaque pointers if we see a typed pointer
Followup to D125735 on the bitcode reader side.
Reviewed By: #opaque-pointers, nikic
Differential Revision: https://reviews.llvm.org/D125736
|
 | llvm/lib/Bitcode/Reader/BitcodeReader.cpp |
Commit
627928c58bd4f06fff394e8c2e595791f35b17ed
by keithbsmileyRevert "[llvm-objcopy][test] Add cmp after copy"
This reverts commit 0d863b5b90a2f11e58b0b54d7183cb1577fd3a0b.
Broke a test https://reviews.llvm.org/D125478#3519509
|
 | llvm/test/tools/llvm-objcopy/MachO/universal-object.test |
Commit
be738c9d1c1612f5cb0a84227f5ced2726ae609e
by walter erquinigo[lldb-vscode] Fix data race in lldb-vscode when running with ThreadSanitizer
This patch fixes https://github.com/llvm/llvm-project/issues/54768. A ProgressEventReporter creates a dedicated thread that keeps checking whether there are new events that need to be sent to IDE as long as m_thread_should_exit is true. When the VSCode instance is destructed, it will set m_thread_should_exit to false, which caused a data race because at the same time its ProgressEventReporter is reading this value to determine whether it should quit. This fix simply uses mutex to ensure they cannot read and write this value at the same time.
Committed on behalf of PRESIDENT810
Reviewed By: clayborg, wallace
Differential Revision: https://reviews.llvm.org/D125073
|
 | lldb/tools/lldb-vscode/ProgressEvent.h |
Commit
d8f4f1027a92883067ecd4b01030484cffeb24d3
by walter erquinigo[llvm][json] Fix UINT64 json parsing
https://reviews.llvm.org/D109347 added support for UINT64 json numeric types. However, it seems that it didn't properly test uint64_t numbers larger than the int64_t because the number parsing logic doesn't have any special handling for these large numbers.
This diffs adds a handler for large numbers, and besides that, fixes the parsing of signed types by checking for errno ERANGE, which is the recommended way to check if parsing fails because of out of bounds errors. Before this diff, strtoll was always returning a number within the bounds of an int64_t and the bounds check it was doing was completely superfluous.
As an interesting fact about the old implementation, when calling strtoll with "18446744073709551615", the largest uint64_t, End was S.end(), even though it didn't use all digits. Which means that this check can only be used to identify if the numeric string is malformed or not.
This patch also adds additional tests for extreme cases.
Differential Revision: https://reviews.llvm.org/D125322
|
 | llvm/unittests/Support/JSONTest.cpp |
 | llvm/lib/Support/JSON.cpp |
Commit
f84741d8bf3b382dba8c37bb9bff1f5c5576af15
by jay.foad[AMDGPU] Add a MIR test for D125567
|
 | llvm/test/CodeGen/AMDGPU/gfx10-shrink-mad-fma.mir |
Commit
366e57de23ed20ac95201e1623dfffed215e98f8
by pzheng[clang-cl] Add /Zc:wchar_t- option
Map /Zc:wchar_t- to the cc1 flag -fno-wchar which is already supported.
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D125513
|
 | clang/lib/Driver/ToolChains/Clang.cpp |
 | clang/test/Driver/cl-options.c |
 | clang/test/Driver/cl-zc.cpp |
 | clang/include/clang/Driver/Options.td |
Commit
d92cec4c96eb85096cc64643764e1370fc08eafc
by flo[LV] Regenerate check lines for some tests.
Make sure the auto-generated check lines are up-to-date for some files, to reduce the test diff in upcoming changes
|
 | llvm/test/Transforms/LoopVectorize/PowerPC/optimal-epilog-vectorization.ll |
 | llvm/test/Transforms/LoopVectorize/X86/invariant-load-gather.ll |
 | llvm/test/Transforms/LoopVectorize/AArch64/sve-epilog-vect-inloop-reductions.ll |
 | llvm/test/Transforms/LoopVectorize/AArch64/sve-epilog-vect-reductions.ll |
 | llvm/test/Transforms/LoopVectorize/AArch64/sve-epilog-vect-strict-reductions.ll |
 | llvm/test/Transforms/LoopVectorize/X86/limit-vf-by-tripcount.ll |
 | llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization-liveout.ll |
 | llvm/test/Transforms/LoopVectorize/X86/masked_load_store.ll |
 | llvm/test/Transforms/LoopVectorize/epilog-vectorization-reductions.ll |
Commit
bd93df937a6441db4aff67191ca0bb486554c34b
by llvm-project[Polly] Mark classes as final by default. NFC.
This make is obivious that a class was not intended to be derived from.
NPM analysis pass can unfortunately not marked as final because they are derived from a llvm::Checker<T> template internally by the NPM.
Also normalize the use of classes/structs * NPM passes are structs * Legacy passes are classes * structs that have methods and are not a visitor pattern are classes * structs have public inheritance by default, remove "public" keyword * Use typedef'ed type instead of inline forward declaration
|
 | polly/include/polly/Support/VirtualInstruction.h |
 | polly/lib/Support/SCEVValidator.cpp |
 | polly/lib/Transform/Simplify.cpp |
 | polly/include/polly/Simplify.h |
 | polly/lib/Transform/ForwardOpTree.cpp |
 | polly/lib/Analysis/ScopDetection.cpp |
 | polly/include/polly/ScheduleTreeTransform.h |
 | polly/lib/Support/ScopHelper.cpp |
 | polly/include/polly/CodeGen/IslExprBuilder.h |
 | llvm/include/llvm/Analysis/DOTGraphTraitsPass.h |
 | polly/include/polly/Support/DumpFunctionPass.h |
 | polly/include/polly/DependenceInfo.h |
 | polly/include/polly/Support/SCEVAffinator.h |
 | polly/lib/Transform/FlattenSchedule.cpp |
 | polly/lib/Transform/ScheduleTreeTransform.cpp |
 | polly/include/polly/DeLICM.h |
 | polly/include/polly/ScopDetection.h |
 | polly/lib/Support/RegisterPasses.cpp |
 | polly/lib/CodeGen/IslNodeBuilder.cpp |
 | polly/lib/Transform/MaximalStaticExpansion.cpp |
 | polly/lib/CodeGen/CodeGeneration.cpp |
 | polly/lib/CodeGen/PPCGCodeGeneration.cpp |
 | polly/lib/CodeGen/CodegenCleanup.cpp |
 | polly/include/polly/CodePreparation.h |
 | polly/include/polly/CodeGen/IRBuilder.h |
 | polly/lib/Transform/ScopInliner.cpp |
 | polly/include/polly/ForwardOpTree.h |
 | polly/lib/Analysis/ScopInfo.cpp |
 | polly/include/polly/Support/ScopHelper.h |
 | polly/lib/Transform/CodePreparation.cpp |
 | polly/lib/CodeGen/IslAst.cpp |
 | polly/lib/Support/DumpModulePass.cpp |
 | polly/include/polly/Support/GICHelper.h |
 | polly/lib/Analysis/PolyhedralInfo.cpp |
 | polly/lib/Analysis/PruneUnprofitable.cpp |
 | polly/lib/CodeGen/ManagedMemoryRewrite.cpp |
 | polly/include/polly/MatmulOptimizer.h |
 | polly/include/polly/ScopDetectionDiagnostic.h |
 | polly/include/polly/CodeGen/CodeGeneration.h |
 | polly/include/polly/JSONExporter.h |
 | polly/include/polly/PolyhedralInfo.h |
 | polly/lib/Support/DumpFunctionPass.cpp |
 | polly/lib/Transform/Canonicalization.cpp |
 | polly/lib/Transform/DeLICM.cpp |
 | polly/include/polly/ScheduleOptimizer.h |
 | polly/include/polly/CodeGen/LoopGeneratorsGOMP.h |
 | polly/include/polly/PruneUnprofitable.h |
 | polly/lib/Analysis/DependenceInfo.cpp |
 | polly/include/polly/CodeGen/BlockGenerators.h |
 | polly/include/polly/CodeGen/PerfMonitor.h |
 | polly/include/polly/Support/ISLTools.h |
 | polly/include/polly/ScopInfo.h |
 | polly/include/polly/ScopPass.h |
 | polly/include/polly/ScopBuilder.h |
 | polly/lib/Transform/ManualOptimizer.cpp |
 | polly/lib/Transform/ScheduleOptimizer.cpp |
 | polly/include/polly/ManualOptimizer.h |
 | polly/lib/Analysis/ScopGraphPrinter.cpp |
 | polly/lib/Transform/DeadCodeElimination.cpp |
 | polly/include/polly/CodeGen/LoopGeneratorsKMP.h |
 | polly/include/polly/DeadCodeElimination.h |
 | polly/include/polly/ScopGraphPrinter.h |
 | polly/include/polly/CodeGen/IslAst.h |
 | polly/include/polly/Support/DumpModulePass.h |
 | polly/lib/Transform/MatmulOptimizer.cpp |
 | polly/lib/Exchange/JSONExporter.cpp |
Commit
4c6a070a2ce1722f53da8164b6d50d5d54fdc1d2
by david.green[AArch64] Teach perfect shuffles tables about D-lane movs
Similar to D123386, this adds D-Movs to the AArch64 perfect shuffle tables, slightly lowering the costs a little more. This is a rough improvement in general, especially if you ignore mov v0.16b, v2.16b type moves that are often artefacts of the calling convention.
The D register movs are encoded as (0x4 | LaneIdx), and to generate a D register move we are required to bitcast into a higher type, but it is otherwise very similar to the S-lane mov's already supported.
Differential Revision: https://reviews.llvm.org/D125477
|
 | clang/test/CodeGen/aarch64-neon-vcmla.c |
 | llvm/test/CodeGen/AArch64/arm64-dup.ll |
 | llvm/test/CodeGen/AArch64/shuffles.ll |
 | llvm/test/Transforms/VectorCombine/AArch64/vecreduce-shuffle.ll |
 | llvm/test/Analysis/CostModel/AArch64/shuffle-other.ll |
 | llvm/lib/Target/AArch64/AArch64ISelLowering.cpp |
 | llvm/utils/PerfectShuffle/PerfectShuffle.cpp |
 | llvm/test/CodeGen/AArch64/shuffle-tbl34.ll |
 | llvm/test/CodeGen/AArch64/reduce-shuffle.ll |
 | llvm/lib/Target/AArch64/AArch64PerfectShuffle.h |
Commit
e1cf702a02bc35b934cc2f8ada2a2bf12e74888f
by hanruobingfix typo error in DivergenceAnalysis.h
Fix a typo error in the comment in DivergenceAnalysis.h
Reviewed By: asbirlea
Differential Revision: https://reviews.llvm.org/D125808
|
 | llvm/include/llvm/Analysis/DivergenceAnalysis.h |
Commit
0b168a49bf584ddd9aae4be8b1907aee8ed65615
by minyihh[mlir][LLVMIR] Use a new way to verify GEPOp indices
Previously, GEPOp relies on `findKnownStructIndices` to check if a GEP index should be static. The truth is, `findKnownStructIndices` can only tell you a GEP index _might_ be indexing into a struct (which should use a static GEP index). But GEPOp::build and GEPOp::verify are falsely taking this information as a certain answer, which creates many false alarms like the one depicted in `test/Target/LLVMIR/Import/dynamic-gep-index.ll`.
The solution presented here adopts a new verification scheme: When we're recursively checking the child element types of a struct type, instead of checking every child types, we only check the one dictated by the (static) GEP index value. We also combine "refinement" logics -- refine/promote struct index mlir::Value into constants -- into the very verification process since they have lots of logics in common. The resulting code is more concise and less brittle.
We also hide GEPOp::findKnownStructIndices since most of the aforementioned logics are already encapsulated within GEPOp::build and GEPOp::verify, we found little reason for findKnownStructIndices (or the new findStructIndices) to be public.
Differential Revision: https://reviews.llvm.org/D124935
|
 | mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td |
 | mlir/test/Dialect/LLVMIR/dynamic-gep-index.mlir |
 | mlir/test/Target/LLVMIR/Import/dynamic-gep-index.ll |
 | mlir/lib/Target/LLVMIR/ConvertFromLLVMIR.cpp |
 | mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp |
Commit
791ec1c68e3bbf017ace434a162e61806fc03b47
by Stanislav.Mekhanoshin[AMDGPU] Add intrinsics llvm.amdgcn.{raw|struct}.buffer.load.lds
Differential Revision: https://reviews.llvm.org/D124884
|
 | llvm/test/CodeGen/AMDGPU/llvm.amdgcn.struct.buffer.load.lds.ll |
 | llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp |
 | llvm/lib/Target/AMDGPU/SIInstrInfo.cpp |
 | llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp |
 | llvm/lib/Target/AMDGPU/SIISelLowering.cpp |
 | llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp |
 | llvm/test/CodeGen/AMDGPU/llvm.amdgcn.raw.buffer.load.lds.ll |
 | llvm/include/llvm/IR/IntrinsicsAMDGPU.td |
 | llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.h |
Commit
320545b577777f12df5f6d562bad0e6df0d52861
by llvm-dev[X86] Rename combineCONCAT_VECTORS\INSERT_SUBVECTOR\EXTRACT_SUBVECTOR to match Opcode name. NFCI.
Its a lot easier to quickly search for the combine when it actually contains the name of the opcode it combines.
|
 | llvm/lib/Target/X86/X86ISelLowering.cpp |
Commit
2e2f3e33dff4917df055b7dba2860a64f8060db2
by Stanislav.Mekhanoshin[AMDGPU] Add test for no waitcnt before issuing LDS DMA. NFC.
A wait is only needed after the DMA before LDS can be read.
|
 | llvm/test/CodeGen/AMDGPU/lds-dma-waitcnt.mir |
Commit
d21b9b4946cd4e5f784077691e273ee6acc92d3e
by Joseph.Nash[AMDGPU] gfx11 scalar alu instructions
MC layer support for SOP(scalar alu operations) including encoding support for s_delay_alu and s_sendmsg_rtn.
Contributors: Jay Foad <jay.foad@amd.com>
Patch 7/N for upstreaming of AMDGPU gfx11 architecture.
Depends on D125319
Reviewed By: #amdgpu, arsenm
Differential Revision: https://reviews.llvm.org/D125498
|
 | llvm/lib/Target/AMDGPU/SIInstrInfo.td |
 | llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp |
 | llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h |
 | llvm/test/MC/AMDGPU/sopp-gfx11.s |
 | llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp |
 | llvm/lib/Target/AMDGPU/SOPInstructions.td |
 | llvm/test/MC/Disassembler/AMDGPU/gfx11_dasm_all.txt |
 | llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp |
 | llvm/test/MC/AMDGPU/sopk-err.s |
 | llvm/lib/Target/AMDGPU/SIDefines.h |
 | llvm/test/MC/AMDGPU/gfx11_asm_scalar.s |
 | llvm/test/MC/AMDGPU/sopp-err.s |
 | llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp |
 | llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.h |
 | llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp |
 | llvm/lib/Target/AMDGPU/Utils/AMDGPUAsmUtils.cpp |
 | llvm/test/MC/AMDGPU/sopk.s |
 | llvm/test/MC/AMDGPU/gfx11_err.s |
Commit
26d83a431ecbc79d227b0f3b92b0fb2166a7c7d7
by walter erquinigo[NFC][lldb][trace] Use uint64_t when decoding and enconding json
llvm's json parser supports uint64_t, so let's better use it for the packets being sent between lldb and lldb-server instead of using int64_t as an intermediate type, which might be error-prone.
|
 | lldb/include/lldb/Utility/TraceGDBRemotePackets.h |
 | lldb/source/Plugins/Trace/intel-pt/TraceIntelPT.cpp |
 | lldb/source/Utility/TraceGDBRemotePackets.cpp |
 | lldb/source/Utility/TraceIntelPTGDBRemotePackets.cpp |
 | lldb/source/Plugins/Process/Linux/IntelPTCollector.cpp |
 | lldb/source/Target/Trace.cpp |
 | lldb/include/lldb/Utility/TraceIntelPTGDBRemotePackets.h |
Commit
79a66ec97b4fb8cbc4e0a81ead356caf5507a6ea
by preames[RISCV] Enable strict assertions in InsertVSETVLI data flow
These asserts are believed to hold after several recent miscompiles have been fixed. If you see an assertion failure on this change, please toggle the default back and make sure you file a bug with a reproducer. We may have as yet uncaught miscompiles lurking in this code.
Differential Revision: https://reviews.llvm.org/D125271
|
 | llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp |
Commit
127a1492d72902e2b2cd8905c1198743761f52fb
by sam.mccall[clangd] Add command-line flag to set background indexing thread priority.
This is a followup to D124715, which changed the default, and it anticipates future patches raising the priority of Low (which is currently equal to Background on Windows & Linux). The main point is to allow users to restore the old behavior, which e.g. allows efficiency cores to remain idle.
I did consider making this a config setting, this is a more complicated change: - needs to touch queue priorities as well as thread priorities - we don't know the priority until evaluating the config inside the task - users would want the ability to prioritize background indexing tasks relative to each other without necessarily affecting thread priority, so using one option for both may be confusing I don't really have a use case, so I prefer the simpler thing.
Differential Revision: https://reviews.llvm.org/D125673
|
 | clang-tools-extra/clangd/index/Background.cpp |
 | clang-tools-extra/clangd/tool/ClangdMain.cpp |
 | clang-tools-extra/clangd/ClangdServer.h |
 | clang-tools-extra/clangd/index/Background.h |
Commit
5c3b20520b5716d61833c8ce45d19faa48ce8db7
by jeffniu22[mlir] Update LLVMIR Fastmath flags use of MLIR BitEnum functionality
This diff updates the LLVMIR dialect Fastmath flags attribute to use recently added features of `BitEnum` attributes. Specifically, this diff uses the bit enum "group" case to represent the `fast` value as an alias for a combination of other values (`ninf`, `nnan`, ...), instead of using a separate integer value. (This is in line with LLVM's fastmath flags representation.) This diff also leverages the `printBitEnumPrimaryGroups` `tblgen` field for concise enum printing.
The `BitEnum` features were developed for an upcoming diff that adds `fastmath` support to the arithmetic dialect. This diff simply applies some of the relevant new features to the LLVM dialect attribute.
Reviewed By: ftynse, Mogball
Differential Revision: https://reviews.llvm.org/D124720
|
 | mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp |
 | mlir/unittests/TableGen/enums.td |
 | mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td |
 | mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp |
 | mlir/tools/mlir-tblgen/EnumsGen.cpp |
 | mlir/test/lib/Dialect/Test/TestOps.td |
 | mlir/unittests/TableGen/EnumsGenTest.cpp |
 | mlir/test/Dialect/LLVMIR/roundtrip.mlir |
 | mlir/include/mlir/IR/EnumAttr.td |
 | mlir/test/IR/attribute.mlir |
Commit
e8e00e342c4fadc8355d1dfb8de86fb0a3dcd5f7
by sam.mccall[pseudo] benchmark cleanups. NFC
- add missing benchmark for lex/preprocess steps - name benchmarks after the function they're benchmarking, when appropriate - remove unergonomic "run" prefixes from benchmark names - give a useful error message if --grammar or --source are missing - Use realistic example of how to run, run all benchmarks by default. (for someone who doesn't know the commands, this is the most useful action) - Improve typos/wording in comment - clean up unused vars - avoid "parseable stream" name, which isn't a great name & not one I expected to escape from ClangPseudoMain
Differential Revision: https://reviews.llvm.org/D125312
|
 | clang-tools-extra/pseudo/benchmarks/Benchmark.cpp |
Commit
dbf3b5f114553e4d5a446cd9ef57e98a8d04354e
by spatel[InstCombine] fold more shuffles with FP<->Int cast operands
shuffle (cast X), (cast Y), Mask --> cast (shuffle X, Y, Mask)
This extends the transform added with 0353c2c996c5.
If the casts are to a larger element type, the transform reduces shuffle bit width, so that should be a win for most codegen (if not, it can be inverted).
|
 | llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp |
 | llvm/test/Transforms/InstCombine/vec_shuffle.ll |
Commit
ff6fe39eca705186fab1f06376cc4b648ff9711b
by michaelrj[libc] add sprintf
This adds the sprintf entrypoint, as well as unit tests. Currently sprintf only supports %%, %s, and %c, but the other conversions are on the way.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D125573
|
 | libc/src/stdio/printf_core/converter.h |
 | libc/src/stdio/printf_core/CMakeLists.txt |
 | libc/src/stdio/printf_core/char_converter.h |
 | libc/test/src/stdio/CMakeLists.txt |
 | libc/src/stdio/printf_core/printf_main.h |
 | libc/src/stdio/CMakeLists.txt |
 | libc/src/stdio/sprintf.h |
 | libc/spec/stdc.td |
 | libc/test/src/stdio/sprintf_test.cpp |
 | libc/src/stdio/printf_core/converter.cpp |
 | libc/src/stdio/sprintf.cpp |
 | libc/test/src/stdio/printf_core/parser_test.cpp |
 | libc/config/linux/x86_64/entrypoints.txt |
 | libc/src/stdio/printf_core/string_converter.h |
Commit
11a7e77c95ddcb51779d9e9d804222eb45a1da92
by preames[RISCV] Canonicalize AVL=setvli to AVL=Imm or AVL=VLMAX
This patch adds a transform to the local prepass in InsertVSETVLI which canonicalizes an AVL of a register from another vsetvli into immediate or VLMAX when VTYPE is the same. In this patch, I chose to be conservative and avoid arbitrary vreg forwarding due to profitability concerns about possibility overlapping live ranges.
This has the effect of eliminating vsetvli instructions in loops which are walking either VLMAX or a constant number of lanes per iteration.
Differential Revision: https://reviews.llvm.org/D125812
|
 | llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp |
 | llvm/test/CodeGen/RISCV/rvv/vsetvli-insert-crossbb.ll |