Commit
387a8dea7234c94ddc7a1c14c04bb2d894947c53
by shivam98.tkg[Docs] Remove subversion reference from MyFirstTypoFix.rst
|
 | llvm/docs/MyFirstTypoFix.rst |
Commit
8254f4afcbca7ea32dfe9739459016241f0a60c2
by shivam98.tkg[Docs][Phabricator] Mention how to create a draft revision
https://llvm.org/docs/Phabricator.html have two links to Arcnist guide but none of them mention how to create a draft revision. It would create some less noise if developers create draft revisoin in this(--draft) way instead of [WIP] tag way.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D108970
|
 | llvm/docs/Phabricator.rst |
Commit
3af9847a9581fca3c81c7f8669f6f617e35ba9e5
by shivam98.tkg[LLDB][Docs] Convert some .txt files to .rst
Upadate some .txt files to .rst for consistency as most of the documentation is written in reStructuredText format.
Signed-off-by: Shivam Gupta <shivam98.tkg@gmail.com>
Differential Revision: https://reviews.llvm.org/D108807
|
 | lldb/docs/use/links.rst |
 | lldb/docs/use/links.md |
Commit
654e8d6c318a0c4eb9bfd74a9ace6d1a1bda5100
by shivam98.tkg[LLDB][Docs] Move best-practices.txt contain to resources/test.rst
This file contain some old reference to files those are now either renamed or replaced. Also this .txt file didn't generate to html during the sphnix documentation build so I send its contents to resources/test.rst file.
Signed-off-by: Shivam Gupta <shivam98.tkg@gmail.com>
Reviewed By: teemperor, mgorny, JDevlieghere
Differential Revision: https://reviews.llvm.org/D108812
|
 | lldb/docs/testsuite/best-practices.txt |
 | lldb/docs/resources/test.rst |
Commit
eb946cc5b66c84e1f3419b1160a42f19d8976137
by shivam98.tkgFix typo in comments
Reviewed By: MaskRay, jsji
Differential Revision: https://reviews.llvm.org/D108857
|
 | llvm/include/llvm/DebugInfo/CodeView/CodeViewRegisters.def |
 | llvm/include/llvm/Target/TargetOptions.h |
 | llvm/lib/Target/PowerPC/PPCInstrInfo.cpp |
Commit
ed6cff667ed5b2b67eb80abf8a671cfa79865e97
by shivam98.tkgFix typo s/beloinging/belonging
Differential Revision: https://reviews.llvm.org/D107099
|
 | llvm/lib/Transforms/Utils/LCSSA.cpp |
Commit
a594362436de5d843404ee181b097cc34ca9428d
by lkail[AIX] Rename shared_libraries_to_archive -> objects_to_archive. NFC.
|
 | compiler-rt/cmake/Modules/CompilerRTAIXUtils.cmake |
Commit
4a6d8a11f89b9eae984e1b9608c1c010dc6a037b
by shivam98.tkg[clang] Fix Typo in AST Matcher Reference
In [[ https://clang.llvm.org/docs/LibASTMatchersReference.html | AST Matcher Reference]], the example of matcher `hasDeclContext` contained a typo.
`cxxRcordDecl` was changed to `cxxRecordDecl`.
Differential Revision: https://reviews.llvm.org/D102836
|
 | clang/docs/LibASTMatchersReference.html |
Commit
e01ac501af20cdbbc199f4f4ac31111e6d705442
by shivam98.tkgFix typo in two files in Clang, patch by FusionBolt
Reviewed By: xgupta
Differential Revision: https://reviews.llvm.org/D98254
|
 | clang/lib/AST/Interp/Context.h |
 | clang/lib/AST/Interp/Interp.h |
Commit
f417b660eefd512b0058be4aab64180b9a5ee512
by simon.wallis2[Arm] Add assert in T2 Imm7s code emitter
Add assert to provoke failure in object file output, not just in disassembly output.
Reviewed By: yroux
Differential Revision: https://reviews.llvm.org/D107259
|
 | llvm/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp |
Commit
0d02aa6e43a2388fe0fdc14062631a4bc50ef033
by shivam98.tkg[NFC] Correct typo in CodeGenMapTable.cpp, patch by Jordi
CodeGenMapTable.cpp refers to TableGen as TabelGen in the comments. This appears to be a typo. This patch fixes the typo.
Differential Revision: https://reviews.llvm.org/D76343
|
 | llvm/utils/TableGen/CodeGenMapTable.cpp |
Commit
c1184ca6eb97e0ac5f7b6cdcc99e3905d27f9d95
by Jason MolendaUse dSYM's file addr for Sections when it doesn't match binary
When adding a dSYM to a Module and it has different file addresses from the already-present ObjectFile binary, change the Sections to use the dSYM's file addresses so the symbol table and DWARF are properly contained in the Sections. Previously this was only done for IsInMemory ObjectFiles, but it's more common than that.
Differential Revision: https://reviews.llvm.org/D108889 rdar://81504400
|
 | lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h |
 | lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp |
Commit
f9bc1b3bee557de5735c745f9558c47ca568bd96
by Justas.Janickas[OpenCL] Defines helper function for kernel language compatible OpenCL version
This change defines a helper function getOpenCLCompatibleVersion() inside LangOptions class. The function contains mapping between C++ for OpenCL versions and their corresponding compatible OpenCL versions. This mapping function should be updated each time a new C++ for OpenCL language version is introduced. The helper function is expected to simplify conditions on OpenCL C and C++ for OpenCL versions inside compiler code.
Code refactoring performed.
Differential Revision: https://reviews.llvm.org/D108693
|
 | clang/lib/CodeGen/CodeGenModule.cpp |
 | clang/lib/Sema/SemaDecl.cpp |
 | clang/lib/Frontend/CompilerInvocation.cpp |
 | clang/lib/Basic/Builtins.cpp |
 | clang/include/clang/Basic/OpenCLOptions.h |
 | clang/lib/Basic/LangOptions.cpp |
 | clang/lib/Basic/Targets.cpp |
 | clang/include/clang/Basic/LangOptions.h |
 | clang/lib/Parse/ParseDecl.cpp |
 | clang/lib/Sema/SemaDeclAttr.cpp |
 | clang/lib/Sema/DeclSpec.cpp |
 | clang/lib/Sema/SemaType.cpp |
 | clang/lib/Sema/SemaExpr.cpp |
 | clang/lib/Sema/Sema.cpp |
Commit
0080d2aa5542dc59c79c93b031ab58e1dd7306de
by marina.kolpakova[mlir][gpu] folds memref.dim of gpu.alloc
implements canonicalization which folds memref.dim(gpu.alloc(%size), %idx) -> %size
Differential Revision: https://reviews.llvm.org/D108892
|
 | mlir/lib/Dialect/GPU/IR/GPUDialect.cpp |
 | mlir/include/mlir/Dialect/GPU/GPUOps.td |
 | mlir/test/Dialect/GPU/canonicalize.mlir |
Commit
44485fcd97490db57df49796d0566a3ce5e23f4c
by tpopp[mlir] Prevent assertion failure in DropUnitDims
Don't assert fail on strided memrefs when dropping unit dims. Instead just leave them unchanged.
Differential Revision: https://reviews.llvm.org/D108205
|
 | mlir/lib/Dialect/Linalg/Transforms/DropUnitDims.cpp |
 | mlir/test/Dialect/Linalg/drop-unit-extent-dims.mlir |
Commit
76a1a415302d06ceb4a3358493e897e98dd75f77
by douglas.yungFix test by adding REQUIRES: x86-registered-target to skip test in configurations that do not include x86.
|
 | llvm/test/CodeGen/Generic/dbg-distringtype-uint.ll |
Commit
9e2d14c2851269928df28a38c76d4d87536bcd49
by llvm-dev[X86] Copy X86SchedSkylakeServer.td to X86SchedIceLake.td
Icelake, Rocketlake and Tigerlake targets currently use the SkylakeServer scheduler model, despite being a later microarchitecture, leading to both reported bugs (PR48110) and discrepancies when comparing llvm-mca reports to other profiling tools (OSACA, uops, uica, etc.). And tbh I'm getting sick of llvm-mca getting blamed for what are backend scheduler model issues :-(
This patch doesn't attempt to fix any of these discrepancies - there should be no changes in codegen - its a setup patch that copies the skx model, renames all the resources, adds the additional ports (but doesn't reference them yet) and updates the llvm-exegesis pfm counter mappings (based off https://sourceforge.net/p/perfmon2/libpfm4/ci/master/tree/lib/events/intel_icl_events.h).
This should make it trivial for anyone with hardware access to use llvm-exegesis reports to iteratively improve the model (my attempts to get hold of a cheap tiger lake box haven't been fruitful yet....).
I will copy the SkylakeServer llvm-mca resource tests as follow up commits - the diff should entirely be the resource renames.
Differential Revision: https://reviews.llvm.org/D108914
|
 | llvm/lib/Target/X86/X86SchedIceLake.td |
 | llvm/lib/Target/X86/X86.td |
 | llvm/lib/Target/X86/X86PfmCounters.td |
Commit
aafa05e03d629cc6605718c54575256d9d683659
by werat[lldb] Add minidump save-core functionality to ELF object files
This change adds save-core functionality into the ObjectFileELF that enables saving minidump of a stopped process. This change is mainly targeting Linux running on x86_64 machines. Minidump should contain basic information needed to examine state of threads, local variables and stack traces. Full support for other platforms is not so far implemented. API tests are using LLDB's MinidumpParser.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D108233
|
 | lldb/source/Plugins/ObjectFile/Minidump/MinidumpFileBuilder.cpp |
 | lldb/source/Plugins/ObjectFile/Minidump/MinidumpFileBuilder.h |
 | lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py |
 | lldb/source/Plugins/ObjectFile/Minidump/CMakeLists.txt |
 | lldb/source/Plugins/ObjectFile/Minidump/ObjectFileMinidump.h |
 | lldb/include/lldb/Core/PluginManager.h |
 | lldb/source/Commands/CommandObjectProcess.cpp |
 | lldb/test/API/functionalities/process_save_core_minidump/main.cpp |
 | lldb/source/Plugins/ObjectFile/Minidump/ObjectFileMinidump.cpp |
 | lldb/source/Core/PluginManager.cpp |
 | lldb/source/Plugins/ObjectFile/CMakeLists.txt |
 | lldb/source/Commands/Options.td |
 | lldb/source/API/SBProcess.cpp |
 | lldb/test/API/functionalities/process_save_core_minidump/Makefile |
Commit
7ec7272b8056c70f38081aa55ccfb5e8aacf0c53
by llvm-dev[MCA][X86] Add basic coverage for icelake arch
Copy the skylake-avx512 tests for icelake-server coverage.
Add icelake/rocketlake/tigerlake test coverage to the relevent generic tests as well.
|
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-rdseed.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-adx.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-mmx.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-ssse3.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-lzcnt.s |
 | llvm/test/tools/llvm-mca/X86/read-after-ld-2.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-pclmul.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse42.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-cmov.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-x87.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/independent-load-stores.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-bmi2.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse2.s |
 | llvm/test/tools/llvm-mca/X86/read-after-ld-1.s |
 | llvm/test/tools/llvm-mca/X86/cpus.s |
 | llvm/test/tools/llvm-mca/X86/fma3-read-after-ld-2.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-clwb.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-f16c.s |
 | llvm/test/tools/llvm-mca/X86/fma3-read-after-ld-1.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512dq.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bw.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-bmi1.s |
 | llvm/test/tools/llvm-mca/X86/sqrt-rsqrt-rcp-memop.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse3.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bwvl.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-fsgsbase.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-x86_32.s |
 | llvm/test/tools/llvm-mca/X86/bzhi-read-after-ld.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-x86_64.s |
 | llvm/test/tools/llvm-mca/X86/bextr-read-after-ld.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-cmpxchg.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-rdrand.s |
 | llvm/test/tools/llvm-mca/X86/variable-blend-read-after-ld-1.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-aes.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-movbe.s |
 | llvm/test/tools/llvm-mca/X86/variable-blend-read-after-ld-2.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx2.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse1.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-popcnt.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-lea.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/zero-idioms.s |
 | llvm/test/tools/llvm-mca/X86/read-after-ld-3.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-prefetchw.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512dqvl.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse41.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-fma.s |
 | llvm/test/tools/llvm-mca/X86/register-file-statistics.s |
 | llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-clflushopt.s |
 | llvm/test/tools/llvm-mca/X86/scheduler-queue-usage.s |
Commit
1f986f60573c6f4355c2d8a5c7ddcb2d32dfd43c
by weratRevert "[lldb] Add minidump save-core functionality to ELF object files"
This reverts commit aafa05e03d629cc6605718c54575256d9d683659.
Broke builder on aarch64 -- https://lab.llvm.org/buildbot/#/builders/96/builds/10926
|
 | lldb/source/Core/PluginManager.cpp |
 | lldb/test/API/functionalities/process_save_core_minidump/Makefile |
 | lldb/include/lldb/Core/PluginManager.h |
 | lldb/source/Plugins/ObjectFile/Minidump/MinidumpFileBuilder.cpp |
 | lldb/source/Plugins/ObjectFile/CMakeLists.txt |
 | lldb/source/Plugins/ObjectFile/Minidump/ObjectFileMinidump.h |
 | lldb/test/API/functionalities/process_save_core_minidump/main.cpp |
 | lldb/source/Plugins/ObjectFile/Minidump/CMakeLists.txt |
 | lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py |
 | lldb/source/Commands/CommandObjectProcess.cpp |
 | lldb/source/API/SBProcess.cpp |
 | lldb/source/Plugins/ObjectFile/Minidump/ObjectFileMinidump.cpp |
 | lldb/source/Plugins/ObjectFile/Minidump/MinidumpFileBuilder.h |
 | lldb/source/Commands/Options.td |
Commit
8307869a224633d3516d98071b45fdec7314f8a3
by mgorny[lldb] [gdb-remote client] Remove breakpoints in forked processes
Remove software breakpoints from forked processes in order to restore the original program code before detaching it.
Differential Revision: https://reviews.llvm.org/D100263
|
 | lldb/test/Shell/Subprocess/fork-follow-parent-softbp.test |
 | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp |
 | lldb/test/API/functionalities/gdb_remote_client/gdbclientutils.py |
 | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h |
 | lldb/test/Shell/Subprocess/clone-follow-parent-softbp.test |
Commit
077d4cb3abea3f1a8801ef2f063e8ddfffac4e70
by anton.a.afanasyevRevert "[SLP]No need to schedule/check parent for extract{element/value} instruction."
Revert since introduced issure reported here: https://lists.llvm.org/pipermail/llvm-dev/2021-August/152411.html Discussed starting from here: https://reviews.llvm.org/D108703#2974289
This reverts commit a36bc873a269dca0c5399d72bfdd42d3ddc72671.
|
 | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp |
 | llvm/test/Transforms/SLPVectorizer/X86/remark_extract_broadcast.ll |
Commit
d59ae12d585cf6fa001476fad29bd931587f94f7
by spatel[InstCombine] fix typo; NFC
|
 | llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp |
Commit
027de5c7d4729fb54b9b88474066afe222a0401a
by spatel[InstCombine] add tests for FMF propagation for select-of-fneg; NFC
|
 | llvm/test/Transforms/InstCombine/fneg.ll |
Commit
aaae726afb0efdac9867972ec0c5d544a637407a
by anton.a.afanasyev[SLPVectorizer][Test] Add test for extractelements with (non)const indices (NFC)
Add test for an issue discussed here: https://reviews.llvm.org/D108703#2974289
|
 | llvm/test/Transforms/SLPVectorizer/X86/extract_with_non_const_index.ll |
Commit
3285c7a4364eb88fd6753f362d74ee008d5479de
by Louis Dionne[libcxx] Remove the locale fallback for NuttX
Since these functions can handled by NuttX's libc now
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D108895
|
 | libcxx/include/__support/nuttx/xlocale.h |
 | libcxx/include/CMakeLists.txt |
 | libcxx/include/__locale |
Commit
22efb9d364b4b7be27a1a02100d9b35d719906be
by llvmgnsyncbot[gn build] Port 3285c7a4364e
|
 | llvm/utils/gn/secondary/libcxx/include/BUILD.gn |
Commit
5d7d689edf01e41d908ced188efcc6405627fd2b
by spatel[InstCombine] fix propagation of FMF through select-of-fnegs
The existing code was unquestionably wrong - it looked at one fneg and ignored the other 2 instructions.
It was also untested, so it didn't make the list of bugs flagged by Alive2.
This is an unusual propagation, but Alive2 agress that we can intersect the fnegs and union that with the select, then apply the results to both new instructions: https://alive2.llvm.org/ce/z/SF8_dt
|
 | llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp |
 | llvm/test/Transforms/InstCombine/fneg.ll |
Commit
4c066bd08be3591cfbc81df478c8fc8618755ba1
by Kuba Mracek[GlobalDCE] Handle relative pointers in VFE (for Swift vtables)
To support Virtual Function Elimination to Swift, this PR adds support for Swift vtables which contain "relative pointers" instead of direct pointer references. These are in the form of:
@symbol = ... { i32 trunc (i64 sub (i64 ptrtoint (<type> @target to i64), i64 ptrtoint (... @symbol to i64)) to i32) }
The PR extends GlobalDCE's way of looking up a vtable offset into a dependency to be able to see through this expression and find the target symbol.
Differential Revision: https://reviews.llvm.org/D107645
|
 | llvm/test/Transforms/GlobalDCE/virtual-functions-relative-pointers-bad.ll |
 | llvm/lib/Analysis/TypeMetadataUtils.cpp |
 | llvm/test/Transforms/GlobalDCE/virtual-functions-relative-pointers.ll |
 | llvm/lib/Transforms/IPO/GlobalDCE.cpp |
 | llvm/include/llvm/Analysis/TypeMetadataUtils.h |
Commit
84d4ed176114465ce0c35d99d4054327a64ac0d6
by nemanja.i.ibmRevert "[DebugInfo] Emit DW_TAG_namelist and DW_TAG_namelist_item"
This reverts commit 0a6fad754ed8f0812dd57357ce8071b02e962259. It caused failures on a number of PowerPC bots.
|
 | llvm/lib/IR/Verifier.cpp |
 | llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp |
 | llvm/test/DebugInfo/X86/namelist1.ll |
 | llvm/test/DebugInfo/X86/namelist2.ll |
Commit
e79474d337c62de7d3efe7fc2504ade46eda10e8
by Louis Dionne[libc++][NFC] Add missing HIDE_FROM_ABI on implementation detail __launder
|
 | libcxx/include/new |
Commit
524ded7d01a75323f216c49a4ec45c05146e540a
by simon.moll[VP] implementation of sdag support for VP memory intrinsics
Followup to D99355: SDAG support for vector-predicated load/store/gather/scatter.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D105871
|
 | llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp |
 | llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp |
 | llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h |
 | llvm/include/llvm/CodeGen/SelectionDAGNodes.h |
 | llvm/include/llvm/CodeGen/SelectionDAG.h |
 | llvm/include/llvm/IR/VPIntrinsics.def |
Commit
c9948e9254fbb6ea00f66c7b4542311d21e060be
by v.g.vassilev[clang-repl] Install clang-repl
This is essentially what D106813 was supposed to do but did not.
Differential revision: https://reviews.llvm.org/D108919
|
 | clang/tools/clang-repl/CMakeLists.txt |
Commit
71d7fed3bc2ad6c22729d446526a59fcfd99bd03
by gbreynoo[OptTable] Improve error message output for grouped short options
As seen in https://bugs.llvm.org/show_bug.cgi?id=48880 the current implementation for parsing grouped short options can return unclear error messages. This change fixes the example given in the ticket in which a flag is incorrectly given an argument. Also when parsing a group we now keep reading past the first incorrect option and output errors for all incorrect options in the group.
Differential Revision: https://reviews.llvm.org/D108770
|
 | llvm/unittests/Option/OptionParsingTest.cpp |
 | llvm/test/tools/llvm-objcopy/tool-help-message.test |
 | llvm/lib/Option/OptTable.cpp |
Commit
71fbfd4e73b14a7734413b25b3965ff9f73d14ab
by paul.robinsonMake a generic test generic again.
Tests in CodeGen/Generic should not depend on any specific target.
|
 | llvm/test/CodeGen/Generic/dbg-distringtype-uint.ll |
Commit
6600e1759be1626965a26cf1da8d8f8fc73344ca
by listmail[SCEV] If max BTC is zero, then so is the exact BTC [1 of N]
This patch is specifically the howManyLessThan case. There will be a couple of followon patches for other codepaths.
The subtle bit is explaining why the two codepaths have a difference while both are correct. The test case with modifications is a good example, so let's discuss in terms of it. * The previous exact bounds for this example of (-126 + (126 smax %n))<nsw> can evaluate to either 0 or 1. Both are "correct" results, but only one of them results in a well defined loop. If %n were 127 (the only possible value producing a trip count of 1), then the loop must execute undefined behavior. As a result, we can ignore the TC computed when %n is 127. All other values produce 0. * The max taken count computation uses the limit (i.e. the maximum value END can be without resulting in UB) to restrict the bound computation. As a result, it returns 0 which is also correct.
WARNING: The logic above only holds for a single exit loop. The current logic for max trip count would be incorrect for multiple exit loops, except that we never call computeMaxBECountForLT except when we can prove either a) no overflow occurs in this IV before exit, or b) this is the sole exit.
An alternate approach here would be to add the limit logic to the symbolic path. I haven't played with this extensively, but I'm hesitant because a) the term is optional and b) I'm not sure it'll reliably simplify away. As such, the resulting code quality from expansion might actually get worse.
This was noticed while trying to figure out why D108848 wasn't NFC, but is otherwise standalone.
Differential Revision: https://reviews.llvm.org/D108921
|
 | llvm/lib/Analysis/ScalarEvolution.cpp |
 | llvm/test/Analysis/ScalarEvolution/max-trip-count.ll |
Commit
ae206db2d653cfeb1021e4e8f5783de797e521a5
by fanbo.meng[SystemZ][z/OS] Create html report file with text flag
Change OF_None to OF_Text flag in file creation, same reasoning as https://reviews.llvm.org/D97785
Reviewed By: abhina.sreeskantharajan
Differential Revision: https://reviews.llvm.org/D108998
|
 | clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp |
Commit
b8debabb775b6d9eec5aa16f1b0c3428cc076bcb
by kazu[clang] Remove redundant calls to c_str() (NFC)
Identified with readability-redundant-string-cstr.
|
 | clang/lib/Frontend/CompilerInstance.cpp |
 | clang/lib/Driver/ToolChains/CommonArgs.cpp |
 | clang/lib/Driver/Driver.cpp |
 | clang/lib/Driver/ToolChains/NetBSD.cpp |
 | clang/lib/Driver/Compilation.cpp |
 | clang/lib/Driver/ToolChains/AMDGPU.cpp |
 | clang/lib/CodeGen/CGOpenMPRuntime.cpp |
Commit
10d78a06baa217b8a4b853eff962e9ae719a8a45
by yaron.keren[llvm-lit] unbreak clang-only builds by not assuming llvm-lit in build dir
Reviewed By: tstellar
Differential Revision: https://reviews.llvm.org/D109000
|
 | clang/test/utils/update_cc_test_checks/lit.local.cfg |
Commit
6c0181c00f4ea0bcb7e4d05055412083b8270cc8
by spatel[InstCombine] fix typos in comments; NFC
|
 | llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp |
Commit
8442967fe32453ada32913d1e0fdd97b19520df2
by tianshilei1992[OpenMP] Fix task wait doesn't work as expected in serialized team
As discussed in D107121, task wait doesn't work when a regular task T depends on a detached task or a hidden helper task T' in a serialized team. The root cause is, since the team is serialized, the last task will not be tracked by `td_incomplete_child_tasks`. When T' is finished, it first releases its dependences, and then decrements its parent counter. So far so good. For the thread that is running task wait, if at the moment it is still spinning and trying to execute tasks, it is fine because it can detect the new task and execute it. However, if it happends to finish the function `flag.execute_tasks(...)`, it will be broken because `td_incomplete_child_tasks` is 0 now.
In this patch, we update the rule to track children tasks a little bit. If the task team encounters a proxy task or a hidden helper task, all following tasks will be tracked.
Reviewed By: AndreyChurbanov
Differential Revision: https://reviews.llvm.org/D107496
|
 | openmp/runtime/test/tasking/hidden_helper_task/depend.cpp |
 | openmp/runtime/test/tasking/hidden_helper_task/gtid.cpp |
 | openmp/runtime/src/kmp_tasking.cpp |
Commit
9b45fd909ffa754acbb4e927bc2d55c7ab0d4e3f
by listmail[AlignFromAssume] Bailout w/non-constant alignments (pr51680)
This is a bailout for pr51680. This pass appears to assume that the alignment operand to an align tag on an assume bundle is constant. This doesn't appear to be required anywhere, and clang happily generates non-constant alignments for cases such as this case taken from the bug report:
// clang -cc1 -triple powerpc64-- -S -O1 opal_pci-min.c extern int a[]; long *b; long c; void *d(long, int *, int, long, long, long) __attribute__((__alloc_align__(6))); void e() { b = d(c, a, 0, 0, 5, c); b[0] = 0; }
This was exposed by a SCEV change which allowed a non-constant alignment to reach further into the pass' code. We could generalize the pass, but for now, let's fix the crash.
|
 | llvm/test/Transforms/AlignmentFromAssumptions/simple.ll |
 | llvm/lib/Transforms/Scalar/AlignmentFromAssumptions.cpp |
Commit
b604fcb7bc9c4c3bf15479c8406eb69f582fb71b
by listmail[runtime] Move prolog/epilog block to a post-simplify strategy
The runtime unroller will try to produce a non-loop if the unroll count is 2 and thus the prolog/epilog loop would only run at most one iteration. The old implementation did this by avoiding loop construction entirely. This patches instead constructs the trivial loop and then explicitly breaks the backedge and simplifies. This does result in some additional code churn when triggered, but a) results in better quality code and b) removes a codepath which didn't work properly for multiple exit epilogs.
One oddity that I want to draw to reviewer attention is that this somehow changes revisit order. The new order looks equivalent to me, but I don't understand how creating and erasing an extra loop here creates this effect.
Differential Revision: https://reviews.llvm.org/D108521
|
 | llvm/test/Transforms/LoopUnroll/runtime-loop1.ll |
 | llvm/test/Transforms/LoopUnroll/PowerPC/p8-unrolling-legalize-vectors.ll |
 | llvm/test/Transforms/LoopUnroll/runtime-loop-multiple-exits.ll |
 | llvm/test/Transforms/LoopUnroll/runtime-unroll-assume-no-remainder.ll |
 | llvm/test/Transforms/LoopUnroll/PowerPC/p8-unrolling-legalize-vectors-inseltpoison.ll |
 | llvm/test/Transforms/LoopUnroll/revisit.ll |
 | llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp |
Commit
e983a659e51c0ed2a7e0da770be6b3b4f2efcd05
by koraq[libc++][NFC] split <charconv>.
This move the helper types `chars_format`, `to_chars_result` and `from_chars_result` to a separate header. The first two are needed for D70631 the third for consistency.
The header `__charconv/ryu.h` uses these types and it can't depend on the types in `<charconv>` in a modular build. Moving them to the ryu header would be an odd place and doesn't work since the header is included in the middle of `<charconv>`.
Reviewed By: #libc, ldionne, Quuxplusone
Differential Revision: https://reviews.llvm.org/D108927
|
 | libcxx/include/module.modulemap |
 | libcxx/include/CMakeLists.txt |
 | libcxx/test/libcxx/diagnostics/detail.headers/charconv/from_chars_result.module.verify.cpp |
 | libcxx/test/libcxx/diagnostics/detail.headers/charconv/to_chars_result.module.verify.cpp |
 | libcxx/include/__charconv/chars_format.h |
 | libcxx/include/__charconv/from_chars_result.h |
 | libcxx/include/__charconv/to_chars_result.h |
 | libcxx/include/charconv |
 | libcxx/test/libcxx/diagnostics/detail.headers/charconv/chars_format.module.verify.cpp |
Commit
9c37eda6e4c5bda3ae5f6edcadf7c0f52c3aec03
by llvmgnsyncbot[gn build] Port e983a659e51c
|
 | llvm/utils/gn/secondary/libcxx/include/BUILD.gn |
Commit
4f7fb13f87e10bd2cd89ccf2be70b026032237a7
by Raphael Isemann[lldb] Don't save empty expressions in the multiline editor history
Right now running `expr` to start the multiline expression editor and then pressing enter causes an empty history empty to be created for the multiline editor. That doesn't seem very useful for users as pressing the 'up' key will now also bring up these empty expressions.
I don't think there is ever a use case for recalling a completely empty expression from the history, so instead don't save those entries to the history file and make sure we never recall them when navigating over the expression history.
Note: This is actually a Swift downstream patch that got shipped with Apple's LLDB for many years. However, this recently started conflicting with upstream LLDB as D100048 added a test that made sure that empty expression entries don't crash LLDB. Apple's LLDB was never affected by this crash as it never saved empty expressions in the first place.
Reviewed By: augusto2112
Differential Revision: https://reviews.llvm.org/D108983
|
 | lldb/source/Host/common/Editline.cpp |
 | lldb/test/API/commands/expression/multiline-navigation/TestMultilineNavigation.py |
Commit
198259becbcf14fb8dd9abdf246c5e49a253a91e
by david.green[ARM] Test for VMINNM/VMAXNM in tail predicated loops.
|
 | llvm/test/CodeGen/Thumb2/mve-vmaxnma-tailpred.ll |
Commit
22c384129e95f286953c1019ce29704b475c5bec
by david.green[ARM] Add missing validForTailPredication for VMINNM/VMAXNM
Apparently this was missing, preventing the generation of tail predication loops containing VMINNM, VMAXNM, VMINNMA and VMAXNMA.
|
 | llvm/lib/Target/ARM/ARMInstrMVE.td |
 | llvm/unittests/Target/ARM/MachineInstrTest.cpp |
 | llvm/test/CodeGen/Thumb2/mve-vmaxnma-tailpred.ll |
Commit
94d3ff09cfa8d7aecf480e54da9a5334e262e76b
by Jessica Paquette[GlobalISel] Don't use G_FPTOSI in G_ISNAN legalization
As noted in the comments in D108227, using G_FPTOSI produces wrong results for G_ISNAN. Drop the G_FPTOSI and perform the operation on integer types.
Elsewhere in LLVM, a bitcast would be the appropriate choice (as it is in SDAG). GlobalISel does not distinguish between integer and FP types, so a bitcast would be meaningless here.
|
 | llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp |
 | llvm/test/CodeGen/AArch64/GlobalISel/legalize-isnan.mir |
Commit
c96839265a5673d1383c9d82aab76e15f38c0010
by Joseph.Nash[AMDGPU] Enable ds_min/ds_max on more subtargets
Adds patterns for f64 ds_min/ds_max. Shrinks HasLDSFPAtomics scope to enable f32.
Reviewed By: rampitec
Differential Revision: https://reviews.llvm.org/D108994
Change-Id: Id890b677841ee588b20d42b1bb3f4cdbf6e9ba1a
|
 | llvm/lib/Target/AMDGPU/AMDGPU.td |
 | llvm/lib/Target/AMDGPU/SIISelLowering.cpp |
 | llvm/test/CodeGen/AMDGPU/lds-atomic-fadd.ll |
 | llvm/lib/Target/AMDGPU/DSInstructions.td |
 | llvm/test/CodeGen/AMDGPU/lds-atomic-fmin-fmax.ll |
 | llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp |
 | llvm/lib/Target/AMDGPU/GCNSubtarget.h |
 | llvm/test/CodeGen/AMDGPU/lds_atomic_f32.ll |
Commit
6c439a38172bbb3422b91517e69cd091ff34062c
by Vedant Kumar[profile] Specify "-V" to otool to get expected test output
Newer Xcode toolchains ship a new otool implementation that prints out section contents in a slightly different way than otool-classic. Specify "-V" to otool to get the expected test output.
Differential Revision: https://reviews.llvm.org/D108929
|
 | compiler-rt/test/profile/instrprof-darwin-dead-strip.c |
Commit
6726a3d858ac40de32efb9da4af4cd8e44454981
by pklausler[flang] Fold PACK()
Implement compile-time constant folding for the transformational intrinsic function PACK.
Differential Revision: https://reviews.llvm.org/D108956
|
 | flang/lib/Evaluate/fold-implementation.h |
 | flang/test/Evaluate/folding19.f90 |
 | flang/test/Evaluate/folding24.f90 |
Commit
fd87963eee23f6cf2aed97bf182a6b3f5e9450ed
by joker.ephChange dialect `printOperation()` hook to `getOperationPrinter()`
This makes the hook return a printer if available, instead of using LogicalResult to indicate if a printer was available (and invoked). This allows the caller to detect that the dialect has a printer for a given operation without actually invoking the printer. It'll be leveraged in a future revision to move printing the op name itself under control of the ASMPrinter.
Differential Revision: https://reviews.llvm.org/D108803
|
 | mlir/include/mlir/IR/Dialect.h |
 | mlir/test/lib/Dialect/Test/TestDialect.cpp |
 | mlir/lib/IR/Dialect.cpp |
 | mlir/test/lib/Dialect/Test/TestOps.td |
 | mlir/lib/IR/AsmPrinter.cpp |
Commit
c41b16c26bdb52fa8beb447e7c8eec8c8924874a
by joker.ephChange ASM Op printer to print the operation name in the framework instead of leaving it up to each individual operation
This aligns the printer with the parser contract: the operation isn't part of the user-controllable part of the syntax.
Differential Revision: https://reviews.llvm.org/D108804
|
 | flang/include/flang/Optimizer/Dialect/FIROps.td |
 | mlir/examples/toy/Ch7/mlir/Dialect.cpp |
 | mlir/examples/toy/Ch6/mlir/Dialect.cpp |
 | mlir/lib/Dialect/LLVMIR/IR/NVVMDialect.cpp |
 | mlir/lib/IR/FunctionImplementation.cpp |
 | mlir/test/IR/invalid-ops.mlir |
 | mlir/include/mlir/IR/OpDefinition.h |
 | mlir/lib/Dialect/Async/IR/Async.cpp |
 | mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td |
 | mlir/lib/IR/Operation.cpp |
 | mlir/lib/Dialect/EmitC/IR/EmitC.cpp |
 | mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp |
 | mlir/lib/Dialect/StandardOps/IR/Ops.cpp |
 | mlir/test/Dialect/Standard/expand-ops.mlir |
 | mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp |
 | mlir/include/mlir/Dialect/GPU/GPUOps.td |
 | mlir/include/mlir/Dialect/Utils/ReshapeOpsUtils.h |
 | mlir/lib/Dialect/GPU/IR/GPUDialect.cpp |
 | mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp |
 | mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp |
 | mlir/lib/IR/AsmPrinter.cpp |
 | mlir/include/mlir/IR/OpImplementation.h |
 | mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td |
 | mlir/lib/Dialect/Affine/IR/AffineOps.cpp |
 | mlir/examples/toy/Ch5/mlir/Dialect.cpp |
 | mlir/lib/Dialect/SCF/SCF.cpp |
 | mlir/examples/toy/Ch4/mlir/Dialect.cpp |
 | mlir/lib/Dialect/Shape/IR/Shape.cpp |
 | mlir/lib/Dialect/Vector/VectorOps.cpp |
 | mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp |
 | flang/lib/Optimizer/Dialect/FIROps.cpp |
 | mlir/tools/mlir-tblgen/OpFormatGen.cpp |
 | mlir/examples/toy/Ch2/mlir/Dialect.cpp |
 | mlir/examples/toy/Ch3/mlir/Dialect.cpp |
 | mlir/test/lib/Dialect/Test/TestDialect.cpp |
 | mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp |
Commit
387f95541bdc575f75bba95d323b51198d3b9e2b
by joker.ephAdd a new interface allowing to set a default dialect to be used for printing/parsing regions
Currently the builtin dialect is the default namespace used for parsing and printing. As such module and func don't need to be prefixed. In the case of some dialects that defines new regions for their own purpose (like SpirV modules for example), it can be beneficial to change the default dialect in order to improve readability.
Differential Revision: https://reviews.llvm.org/D107236
|
 | mlir/test/IR/invalid-module-op.mlir |
 | mlir/lib/Parser/Parser.cpp |
 | mlir/test/Dialect/Builtin/canonicalize.mlir |
 | mlir/test/Transforms/canonicalize.mlir |
 | mlir/test/Transforms/cse.mlir |
 | mlir/include/mlir/IR/BuiltinOps.h |
 | mlir/lib/IR/AsmPrinter.cpp |
 | mlir/include/mlir/IR/OpAsmInterface.td |
 | mlir/test/Transforms/test-legalizer-full.mlir |
 | mlir/include/mlir/IR/OperationSupport.h |
 | mlir/test/Conversion/VectorToROCDL/vector-to-rocdl.mlir |
 | mlir/test/IR/invalid-ops.mlir |
 | mlir/include/mlir/Dialect/SPIRV/IR/SPIRVStructureOps.td |
 | mlir/test/Conversion/GPUToNVVM/wmma-ops-to-nvvm.mlir |
 | mlir/test/Transforms/canonicalize-dce.mlir |
 | mlir/lib/IR/Operation.cpp |
 | mlir/test/Analysis/test-shape-fn-report.mlir |
 | mlir/test/Dialect/Linalg/reshape_control_fusion.mlir |
 | mlir/test/Conversion/GPUToNVVM/gpu-to-nvvm.mlir |
 | mlir/include/mlir/IR/OpDefinition.h |
 | mlir/test/IR/traits.mlir |
 | mlir/include/mlir/Dialect/Shape/IR/ShapeOps.td |
 | mlir/test/Dialect/SparseTensor/sparse_perm.mlir |
 | mlir/include/mlir/IR/BuiltinOps.td |
 | mlir/test/IR/parser.mlir |
 | mlir/test/lib/Dialect/Test/TestOps.td |
 | mlir/test/Dialect/Linalg/drop-unit-extent-dims.mlir |
 | mlir/test/IR/invalid-func-op.mlir |
 | mlir/include/mlir/Dialect/StandardOps/IR/Ops.td |
 | mlir/test/Conversion/GPUToROCDL/gpu-to-rocdl.mlir |
 | mlir/test/Transforms/constant-fold.mlir |
 | mlir/test/Dialect/SparseTensor/sparse_perm_lower.mlir |
 | mlir/test/Dialect/Shape/invalid.mlir |
 | mlir/test/IR/invalid.mlir |
 | mlir/lib/Parser/ParserState.h |
Commit
167b2dbde4cd9da17980a5dce0dd1654cae3fff5
by joeloser93[libcxx][docs] Mark LWG3153 as complete
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D108967
|
 | libcxx/docs/Status/Cxx20Issues.csv |
Commit
4bb5f44c701402462cb93ef00d46d52382f39f11
by i[CMake] Remove unneeded -Wnon-virtual-dtor availability check
For Clang, 3.5 is the minimum requirement which has fixed the bug. GCC 5 is good as well.
|
 | llvm/cmake/modules/HandleLLVMOptions.cmake |
Commit
c49503a76db5f91b2dbae28f4154df5b3891f7a1
by listmail[SCEV] Add a testcase for zero max btc with non-constant exact btc
Reduced from the ArchiveCommandLine.ll case seen in D108848.
|
 | llvm/test/Analysis/ScalarEvolution/max-trip-count.ll |
Commit
d8b6ae072d7734e2abadd54ecddfd6cb77b7e4c0
by ndesaulniers[PPCISelLowering] avoid emitting libcalls to __mulodi4()
Similar to D108842, D108844, and D108926.
__has_builtin(builtin_mul_overflow) returns true for 32b PPC targets, but Clang is deferring to compiler RT when encountering long long types. This breaks ppc44x_defconfig + CONFIG_BLK_DEV_NBD=y builds of the Linux kernel that are using builtin_mul_overflow with these types for these targets.
If the semantics of __has_builtin mean "the compiler resolves these, always" then we shouldn't conditionally emit a libcall.
This will still need to be worked around in the Linux kernel in order to continue to support these builds of the Linux kernel for this target with older releases of clang.
Link: https://bugs.llvm.org/show_bug.cgi?id=28629 Link: https://github.com/ClangBuiltLinux/linux/issues/1438
Reviewed By: nemanjai
Differential Revision: https://reviews.llvm.org/D108936
|
 | llvm/lib/Target/PowerPC/PPCISelLowering.cpp |
 | llvm/test/CodeGen/PowerPC/overflow-intrinsic-optimizations.ll |
Commit
b686fdbf92ea5b495804afdf1c7c4d4aab30ef33
by ravishankarm[mlir][Linalg] Drop output tensor from `linalg.pad_tensor` op.
The output tensor was added for tiling purposes. With use of `TilingInterface` for tiling pad operations, there is no need for an explicit operand for the shape of result of `linalg.pad_tensor` op. The interface allows the tiling pattern to query the value that can be used for the "init" needed for tiling dynamically.
Differential Revision: https://reviews.llvm.org/D108613
|
 | mlir/test/Dialect/Linalg/invalid.mlir |
 | mlir/test/Dialect/Linalg/canonicalize.mlir |
 | mlir/include/mlir/Dialect/Linalg/IR/LinalgOps.td |
 | mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp |
 | mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp |
 | mlir/test/Dialect/Linalg/roundtrip.mlir |
 | mlir/test/Dialect/Linalg/tile-pad-tensor-op.mlir |
Commit
a26b09cb982753d1ce3b086341ba9e9c585bb5e6
by i[CMake] Remove unneeded -Wdelete-non-virtual-dtor availability check
Available and good in Clang 3.5/GCC 5.
|
 | llvm/cmake/modules/HandleLLVMOptions.cmake |
Commit
bf8b69bb3ad3e62e936f4a02c7115538a0879bf6
by nikita.ppv[SLPVectorizer] Add test for inaccessiblememonly call (NFC)
|
 | llvm/test/Transforms/SLPVectorizer/int_sideeffect.ll |
Commit
e9b3f2573090a2fb9494975e4615f77b898e36a3
by ndesaulniers[RISCVISelLowering] avoid emitting libcalls to __mulodi4() and __multi3()
Similar to D108842, D108844, D108926, D108928, and D108936.
__has_builtin(builtin_mul_overflow) returns true for 32b RISCV targets, but Clang is deferring to compiler RT when encountering long long types.
If the semantics of __has_builtin mean "the compiler resolves these, always" then we shouldn't conditionally emit a libcall.
Link: https://bugs.llvm.org/show_bug.cgi?id=28629
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D108939
|
 | llvm/test/CodeGen/RISCV/umulo-128-legalisation-lowering.ll |
 | llvm/lib/Target/RISCV/RISCVISelLowering.cpp |
 | llvm/test/CodeGen/RISCV/overflow-intrinsic-optimizations.ll |
 | llvm/test/CodeGen/RISCV/xaluo.ll |
 | llvm/test/CodeGen/RISCV/mul.ll |
Commit
b4c86525fdc33c9220a0234cb022d408749fe61c
by pklausler[flang] Downgrade inappropriate error message to a warning
It may not be great practice to pass a procedure (or procedure pointer) with an implicit interface as an actual argument to correspond with a dummy procedure (pointer), but it's not an error. Change to a warning, and modify tests accordingly.
Differential Revision: https://reviews.llvm.org/D108932
|
 | flang/test/Semantics/call09.f90 |
 | flang/test/Semantics/call21.f90 |
 | flang/lib/Semantics/check-call.cpp |
Commit
c5e7981aec37dd0bc5c893158c1a703b1b1de6d1
by arthur.j.odwyer[libc++] Add missing space in (__map_value_compare&__y) etc. NFCI.
|
 | libcxx/include/unordered_map |
 | libcxx/include/map |
 | libcxx/include/__memory/pointer_traits.h |
Commit
1d36988394a5f37f6d79ad45a272700bb0556c05
by chih-ping.chenMoved the test to X86 as it's x86 specific.
|
 | llvm/test/CodeGen/X86/dbg-distringtype-uint.ll |
 | llvm/test/CodeGen/Generic/dbg-distringtype-uint.ll |
Commit
c7515a49b1ddf1eae3c3d2e52c56e3fa02305351
by joker.ephFix MLIR python binding test after changes in ASM printer
|
 | mlir/test/python/ir/operation.py |
Commit
84f99ef2b196565d4a8b340d4eb9c923a5781697
by mgorny[lldb] [test] Mark fork-follow-parent-softbp.test as darwin-unsupported
|
 | lldb/test/Shell/Subprocess/fork-follow-parent-softbp.test |
Commit
c28473fe4aded9649f4b552d8259c22a43f0d68e
by sylvestreFix some typos in the llvm docs
|
 | llvm/docs/Passes.rst |
 | llvm/docs/CommandGuide/FileCheck.rst |
 | llvm/docs/DependenceGraphs/index.rst |
 | llvm/docs/JITLink.rst |
 | llvm/docs/UserGuides.rst |
 | llvm/docs/GettingStartedVS.rst |
 | llvm/docs/TableGen/ProgRef.rst |
Commit
e781e03e40337fba4ed57fcfb257d1d4a5e00e2b
by Louis Dionne[libc++] Remove workaround for broken __is_trivially_copyable on old GCC
All supported versions of GCC now do the right thing.
Differential Revision: https://reviews.llvm.org/D108997
|
 | libcxx/include/type_traits |
 | libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp |
Commit
928cad59c783e96626d12bdd91bc6b744e7ee3b0
by Louis Dionne[libc++][NFC] Rename _LIBCPP_NODISCARD_ATTRIBUTE to _LIBCPP_NODISCARD
Differential Revision: https://reviews.llvm.org/D108940
|
 | libcxx/include/type_traits |
 | libcxx/include/__config |
Commit
f9277caffc0a1f311aaba784678c50c6c6b90d75
by i[ELF][test] Fix R_AARCH64_ADR_PREL_PG_HI21 typo
Found by redfast00
|
 | lld/test/ELF/aarch64-relocs.s |
Commit
dc37f5374cd350a732e8009ed2d319c810b24ab1
by nikita.ppv[LoadStoreVectorizer] Add test for inaccessiblememonly call (NFC)
|
 | llvm/test/Transforms/LoadStoreVectorizer/int_sideeffect.ll |
Commit
83ddfa0d2247a9b6b512cfcedfa529b8bb573028
by jdenny.ornl[OpenMP][OpenACC] Implement `ompx_hold` map type modifier extension in Clang (1/2)
This patch implements Clang support for an original OpenMP extension we have developed to support OpenACC: the `ompx_hold` map type modifier. The next patch in this series, D106510, implements OpenMP runtime support.
Consider the following example:
``` #pragma omp target data map(ompx_hold, tofrom: x) // holds onto mapping of x { foo(); // might have map(delete: x) #pragma omp target map(present, alloc: x) // x is guaranteed to be present printf("%d\n", x); } ```
The `ompx_hold` map type modifier above specifies that the `target data` directive holds onto the mapping for `x` throughout the associated region regardless of any `target exit data` directives executed during the call to `foo`. Thus, the presence assertion for `x` at the enclosed `target` construct cannot fail. (As usual, the standard OpenMP reference count for `x` must also reach zero before the data is unmapped.)
Justification for inclusion in Clang and LLVM's OpenMP runtime:
* The `ompx_hold` modifier supports OpenACC functionality (structured reference count) that cannot be achieved in standard OpenMP, as of 5.1. * The runtime implementation for `ompx_hold` (next patch) will thus be used by Flang's OpenACC support. * The Clang implementation for `ompx_hold` (this patch) as well as the runtime implementation are required for the Clang OpenACC support being developed as part of the ECP Clacc project, which translates OpenACC to OpenMP at the directive AST level. These patches are the first step in upstreaming OpenACC functionality from Clacc. * The Clang implementation for `ompx_hold` is also used by the tests in the runtime implementation. That syntactic support makes the tests more readable than low-level runtime calls can. Moreover, upstream Flang and Clang do not yet support OpenACC syntax sufficiently for writing the tests. * More generally, the Clang implementation enables a clean separation of concerns between OpenACC and OpenMP development in LLVM. That is, LLVM's OpenMP developers can discuss, modify, and debug LLVM's extended OpenMP implementation and test suite without directly considering OpenACC's language and execution model, which can be handled by LLVM's OpenACC developers. * OpenMP users might find the `ompx_hold` modifier useful, as in the above example.
See new documentation introduced by this patch in `openmp/docs` for more detail on the functionality of this extension and its relationship with OpenACC. For example, it explains how the runtime must support two reference counts, as specified by OpenACC.
Clang recognizes `ompx_hold` unless `-fno-openmp-extensions`, a new command-line option introduced by this patch, is specified.
Reviewed By: ABataev, jdoerfert, protze.joachim, grokos
Differential Revision: https://reviews.llvm.org/D106509
|
 | openmp/docs/openacc/Overview.rst |
 | clang/test/OpenMP/target_map_codegen_hold.cpp |
 | clang/test/OpenMP/target_data_ast_print.cpp |
 | clang/docs/ClangCommandLineReference.rst |
 | clang/lib/Basic/OpenMPKinds.cpp |
 | clang/test/OpenMP/target_parallel_for_simd_map_messages.cpp |
 | clang/test/OpenMP/target_data_map_codegen_hold.cpp |
 | clang/test/OpenMP/target_parallel_for_map_messages.cpp |
 | openmp/docs/index.rst |
 | clang/include/clang/Driver/Options.td |
 | clang/test/OpenMP/target_teams_distribute_map_messages.cpp |
 | clang/test/OpenMP/target_teams_distribute_parallel_for_simd_map_messages.cpp |
 | clang/include/clang/Basic/OpenMPKinds.h |
 | clang/include/clang/AST/OpenMPClause.h |
 | clang/lib/Parse/ParseOpenMP.cpp |
 | clang/test/OpenMP/target_ast_print.cpp |
 | clang/test/OpenMP/target_simd_map_messages.cpp |
 | clang/include/clang/Basic/LangOptions.def |
 | clang/test/OpenMP/target_map_messages.cpp |
 | clang/test/OpenMP/target_teams_map_messages.cpp |
 | clang/lib/Driver/ToolChains/Clang.cpp |
 | clang/docs/OpenMPSupport.rst |
 | clang/include/clang/Basic/OpenMPKinds.def |
 | clang/lib/Sema/SemaOpenMP.cpp |
 | clang/test/OpenMP/target_enter_data_map_messages.c |
 | clang/test/OpenMP/driver-fopenmp-extensions.c |
 | clang/include/clang/Basic/DiagnosticParseKinds.td |
 | clang/lib/CodeGen/CGOpenMPRuntime.cpp |
 | clang/test/OpenMP/target_teams_distribute_simd_map_messages.cpp |
 | openmp/docs/openacc/OpenMPExtensions.rst |
 | clang/test/OpenMP/target_exit_data_map_messages.c |
 | clang/include/clang/Basic/DiagnosticSemaKinds.td |
 | clang/test/OpenMP/target_teams_distribute_parallel_for_map_messages.cpp |
 | clang/test/OpenMP/target_parallel_map_messages.cpp |
Commit
ec1ebcd30258329666dc89e6e745bb9de2e8fd13
by jdenny.ornl[OpenMP][OpenACC] Implement `ompx_hold` map type modifier extension in runtime (2/2)
This patch implements OpenMP runtime support for an original OpenMP extension we have developed to support OpenACC: the `ompx_hold` map type modifier. The previous patch in this series, D106509, implements Clang support and documents the new functionality in detail.
Reviewed By: grokos
Differential Revision: https://reviews.llvm.org/D106510
|
 | openmp/libomptarget/test/mapping/ompx_hold/omp_target_disassociate_ptr.c |
 | openmp/libomptarget/src/api.cpp |
 | openmp/libomptarget/test/offloading/info.c |
 | openmp/libomptarget/src/device.cpp |
 | openmp/libomptarget/test/mapping/ompx_hold/struct.c |
 | openmp/libomptarget/include/omptarget.h |
 | openmp/libomptarget/test/mapping/ompx_hold/target.c |
 | openmp/libomptarget/src/omptarget.cpp |
 | openmp/libomptarget/src/private.h |
 | openmp/libomptarget/test/mapping/ompx_hold/target-data.c |
 | openmp/libomptarget/src/device.h |
Commit
9ab1efc77ab1ba104c6dce48e5d3e34d1174bb5d
by pklausler[flang] Fold UNPACK and TRANSPOSE
Implement constant folding for the transformational intrinsic functions UNPACK and TRANSPOSE.
Differential Revision: https://reviews.llvm.org/D109010
|
 | flang/test/Evaluate/folding26.f90 |
 | flang/lib/Evaluate/fold-implementation.h |
 | flang/test/Evaluate/folding19.f90 |
 | flang/test/Evaluate/folding25.f90 |
Commit
964053d56f9b4aeca8950c0835c9e52be0f1d007
by wlei[llvm-profgen] Support LBR only perf script
This change aims at supporting LBR only sample perf script which is used for regular(Non-CS) profile generation. A LBR perf script includes a batch of LBR sample which starts with a frame pointer and a group of 32 LBR entries is followed. The FROM/TO LBR pair and the range between two consecutive entries (the former entry's TO and the latter entry's FROM) will be used to infer function profile info.
An example of LBR perf script(created by `perf script -F ip,brstack -i perf.data`) ``` 40062f 0x40062f/0x4005b0/P/-/-/9 0x400645/0x4005ff/P/-/-/1 0x400637/0x400645/P/-/-/1 ... 4005d7 0x4005d7/0x4005e5/P/-/-/8 0x40062f/0x4005b0/P/-/-/6 0x400645/0x4005ff/P/-/-/1 ... ... ```
For implementation: - Extended a new child class `LBRPerfReader` for the sample parsing, reused all the functionalities in `extractLBRStack` except for an extension to parsing leading instruction pointer. - `HybridSample` is reused(just leave the call stack empty) and the parsed samples is still aggregated in `AggregatedSamples`. After that, range samples, branch sample, address samples are computed and recorded. - Reused `ContextSampleCounterMap` to store the raw profile, since it's no need to aggregation by context, here it just registered one sample counter with a fake context key. - Unified to use `show-raw-profile` instead of `show-unwinder-output` to dump the intermediate raw profile, see the comments of the format of the raw profile. For CS profile, it remains to output the unwinder output.
Profile generation part will come soon.
Differential Revision: https://reviews.llvm.org/D108153
|
 | llvm/test/tools/llvm-profgen/Inputs/noprobe.perfbin |
 | llvm/test/tools/llvm-profgen/Inputs/noprobe.perfscript |
 | llvm/tools/llvm-profgen/ProfiledBinary.h |
 | llvm/test/tools/llvm-profgen/inline-cs-noprobe.test |
 | llvm/test/tools/llvm-profgen/noprobe.test |
 | llvm/test/tools/llvm-profgen/recursion-compression-pseudoprobe.test |
 | llvm/tools/llvm-profgen/ProfileGenerator.cpp |
 | llvm/tools/llvm-profgen/llvm-profgen.cpp |
 | llvm/tools/llvm-profgen/PerfReader.h |
 | llvm/tools/llvm-profgen/ProfiledBinary.cpp |
 | llvm/test/tools/llvm-profgen/Inputs/noprobe.aggperfscript |
 | llvm/test/tools/llvm-profgen/cs-interrupt.test |
 | llvm/test/tools/llvm-profgen/inline-cs-pseudoprobe.test |
 | llvm/test/tools/llvm-profgen/noinline-cs-pseudoprobe.test |
 | llvm/tools/llvm-profgen/PerfReader.cpp |
 | llvm/test/tools/llvm-profgen/noinline-cs-noprobe.test |
 | llvm/test/tools/llvm-profgen/Inputs/noprobe.mmap.perfscript |
Commit
48ebe427c9c516c406f6fc1e4883bafaf5f4f992
by nikita.ppv[SLPVectorizer] Make aliasing check more precise
SLPVectorizer currently uses AA::isNoAlias() to determine whether two locations alias. This does not work if one of the instructions is a call. Instead, we should check getModRefInfo(), which determines whether an arbitrary instruction modifies or references a given location.
Among other things, this prevents @llvm.experimental.noalias.scope.decl() and other inaccessiblmemonly intrinsics from interfering with SLP vectorization.
Differential Revision: https://reviews.llvm.org/D109012
|
 | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp |
 | llvm/test/Transforms/SLPVectorizer/int_sideeffect.ll |
Commit
d170945bb2b3a0855cea115d31d688b85ddf3dc5
by Stanislav.Mekhanoshin[RegAlloc] Immediately delete dead instructions with live uses
When RA eliminated a dead def it can either immediately delete the instruction itself or replace it with KILL to defer the actual removal. If this instruction has a virtual register use killing the register it will shrink the LI of the use. However, if the LI covers the instruction and extends beyond it the shrink will not happen. In fact that is impossible to shrink such use because of the KILL still using it.
If later the LI of the use will be split at the KILL and the KILL itself is eliminated after that point the new live segment ends up at an invalid slot index.
This extremely rare condition was hit after D106408 which has enabled rematerialization of such instructions. The replacement with KILL is only done for rematerialized defs which became dead and such rematerialization did not generally happen before.
The patch deletes an instruction immediately if it is a result of rematerialization and has such use. An alternative would be to prohibit a split at a KILL instruction, but it looks like it is better to split a live range rather then keeping a killed instruction just in case it can be rematerialized further.
Fixes PR51655.
Differential Revision: https://reviews.llvm.org/D108951
|
 | llvm/lib/CodeGen/LiveRangeEdit.cpp |
 | llvm/test/CodeGen/X86/delete-dead-instrs-with-live-uses.mir |
Commit
1c9b7d0eccf98b1268c87c3ef3726b0def8e7788
by Louis Dionne[libc++][NFC] Remove redundant friend declaration for operator==
This must have been meant to be friend-declaring operator!=, but it turns out that it's not even necessary to make it a friend since it does not access any private state.
rdar://82568613
|
 | libcxx/include/__iterator/istream_iterator.h |
Commit
3e2bd82f02c6cbbfb0544897c7645867f04b3a7e
by kdaRevert "[OptTable] Improve error message output for grouped short options"
This reverts commit 71d7fed3bc2ad6c22729d446526a59fcfd99bd03.
Reason: broke sanitizer bots more info: https://reviews.llvm.org/D108770
|
 | llvm/unittests/Option/OptionParsingTest.cpp |
 | llvm/test/tools/llvm-objcopy/tool-help-message.test |
 | llvm/lib/Option/OptTable.cpp |
Commit
3afa2151f8e6f435c094a7cf37ec6a4ca8c080e2
by vyng[llvm-ar][nfc] Reword help message to be less ambiguous on what p and t do.
The current help msg isn't super clear on whether t prints the content of the files or just the list of files. (I'd certainly thought it'd print the list of files, and accidentally had a bunch of "gargabe" printed to my terminal). Similarly, t sounded like it'd do what p actually did.
Differential Revision: https://reviews.llvm.org/D109018
|
 | llvm/tools/llvm-ar/llvm-ar.cpp |
Commit
befb384484310fed34e145bb220b331334d4db28
by browneee[DFSan][NFC] Fix comment formatting.
|
 | compiler-rt/lib/dfsan/dfsan_thread.h |
Commit
b04b757a8efcb194f2a3838819e9c370f71199c8
by 2998727+wrengr[mlir][sparse] Rename the public SparseTensorStorage::asCOO to toCOO
Trying to reduce confusion by having the name of the public method match that of the private method for handling the recursion. Also adding some comments to SparseTensorStorage::fromCOO to help clarify what the recursive calls are doing in the dense case.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D108954
|
 | mlir/lib/ExecutionEngine/SparseUtils.cpp |
Commit
862a311301f51214d405eefd5bc4aa7289241f86
by apl[lldb] Tighten lock in Language::ForEach
It is easy to accidentally introduce a deadlock by having the callback passed to Language::ForEach also attempt to acquire the same lock. It is easy enough to disallow the callback from calling anything in Language directly, but it may happen through a series of other function/method calls.
The solution I am proposing is to tighten the lock in Language::ForEach so that it is only held as we gather the currently loaded language plugins. We store them in a vector and then iterate through them with the callback so that the callback can't introduce a deadlock.
Differential Revision: https://reviews.llvm.org/D109013
|
 | lldb/source/Target/Language.cpp |
Commit
29a74a39150ad0a041922431cda68f1afba830c9
by jhuber6[OpenMP] Add an option to always inline OpenMP device functions.
Performance on GPU targets can be highly variable, sometimes inlining everything hurts performance and sometimes it greatly improves it. Add an option to toggle this behaviour to better investigate it.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D109014
|
 | llvm/lib/Transforms/IPO/OpenMPOpt.cpp |
 | llvm/test/Transforms/OpenMP/always_inline_device.ll |
Commit
7f0664f1936a75ce939e4b3f3d6e72da5fcc6a60
by alexandre.ganea[LLD][COFF] Clean paths in PDB even when /pdbsourcepath is omitted
Differential Revision: https://reviews.llvm.org/D109030
|
 | lld/test/COFF/pdb-relative-source-lines.test |
 | lld/COFF/PDB.cpp |
Commit
c2162e4d89d6f99bbbe96beaa9156dbb2dba8344
by spatel[InstCombine] add tests for min/max intrinsics with not ops; NFC
|
 | llvm/test/Transforms/InstCombine/minmax-intrinsics.ll |
Commit
92f54e1c752253b5a17eb9ec7942f580d878f64d
by phosek[Linker] Support weak symbols in nodeduplicate COMDAT group
When a nodeduplicate COMDAT group contains a weak symbol, choose a non-weak symbol (or one of the weak ones) rather than reporting an error. This should address issue PR51394.
With the current IR representation, a generic comdat nodeduplicate semantics is not representable for LTO. In the linker, sections and symbols are separate concepts. A dropped weak symbol does not force the defining input section to be dropped as well (though it can be collected by GC). In the IR, when a weak linkage symbol is dropped, its associate section content is dropped as well.
For InstrProfiling, which is where ran into this issue in PR51394, the deduplication semantic is a sufficient workaround.
Differential Revision: https://reviews.llvm.org/D108689
|
 | llvm/test/Linker/comdat-nodeduplicate.ll |
 | llvm/lib/Linker/LinkModules.cpp |
Commit
74043caef2eec37600570706d6bb5515bff9436f
by pengfei.wang[X86] Enable half type support in inline assembly constraints
Reviewed By: LuoYuanke
Differential Revision: https://reviews.llvm.org/D105799
|
 | llvm/lib/Target/X86/X86ISelLowering.cpp |
 | llvm/test/CodeGen/X86/inline-asm-avx512f-x-constraint.ll |
Commit
c6913905d198bf1da34cd717742cec62ea9c3b72
by llvm-project[Polly] Mention correct flag in debug output. NFCI.
|
 | polly/lib/Analysis/ScopDetection.cpp |
Commit
c62d9a5ca09e22c9d08a6e2076572afc6e12a43f
by llvm-project[Polly] Use subtyped isl::schedule_nodes for ScheduleTreeVisitor. NFC.
Change pass-by-const-ref to pass-by-value as objects are recreated due to custom up-/down-casting anwyway.
|
 | polly/lib/Transform/ManualOptimizer.cpp |
 | polly/lib/Transform/ScheduleTreeTransform.cpp |
 | polly/include/polly/ScheduleTreeTransform.h |
Commit
1688b4cf8ec3f87efdd0f2d0227588f549558dea
by jdenny.ornl[OpenMP][AMDGPU] XFAIL test where kernels call printf
|
 | openmp/libomptarget/test/mapping/ompx_hold/struct.c |
Commit
89424a829f3c194177411c922c7050946891fff4
by yhs[DWARF] Support new TAG DW_TAG_LLVM_annotation
A new LLVM specific TAG DW_TAG_LLVM_annotation is added. The name is suggested by Paul Robinson ([1]). Currently, this tag is used to output __attribute__((btf_tag("string"))) annotations in dwarf. The following is an example for a global variable with two btf_tag attributes: 0x0000002a: DW_TAG_variable DW_AT_name ("g1") DW_AT_type (0x00000052 "int") DW_AT_external (true) DW_AT_decl_file ("/tmp/home/yhs/work/tests/llvm/btf_tag/t.c") DW_AT_decl_line (8) DW_AT_location (DW_OP_addr 0x0)
0x0000003f: DW_TAG_LLVM_annotation DW_AT_name ("btf_tag") DW_AT_const_value ("tag1")
0x00000048: DW_TAG_LLVM_annotation DW_AT_name ("btf_tag") DW_AT_const_value ("tag2")
0x00000051: NULL
In the future, DW_TAG_LLVM_annotation may encode other type of non-string const value.
[1] https://lists.llvm.org/pipermail/llvm-dev/2021-June/151250.html
Differential Revision: https://reviews.llvm.org/D106621
|
 | llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp |
 | llvm/test/DebugInfo/attr-btf_tag.ll |
 | llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp |
 | llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h |
 | llvm/include/llvm/BinaryFormat/Dwarf.def |
Commit
6a75041a1614af1ca787af5a18ea9ddbe4dd5c16
by Christudasan.Devadasan[TableGen] Allow target specific flags for RegisterClass
Analogous to the TSFlags for machine instructions, this patch introduces a bit vector for register classes to have target specific flags that become a tablegened value in TargetRegisterClass.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D108767
|
 | llvm/utils/TableGen/RegisterInfoEmitter.cpp |
 | llvm/include/llvm/CodeGen/TargetRegisterInfo.h |
 | llvm/test/TableGen/RegisterInfoEmitter-tsflags.td |
 | llvm/include/llvm/Target/Target.td |
 | llvm/utils/TableGen/CodeGenRegisters.cpp |
 | llvm/utils/TableGen/CodeGenRegisters.h |
Commit
98f47131228cc73b5308e3cc6fd70375808594e3
by mahesha.comp[AMDGPU] Split entry basic block after alloca instructions.
While initializing the LDS pointers within entry basic block of kernel(s), make sure that the entry basic block is split after alloca instructions.
Reviewed By: rampitec
Differential Revision: https://reviews.llvm.org/D108971
|
 | llvm/test/CodeGen/AMDGPU/replace-lds-by-ptr-split-entry-bb-after-alloca.ll |
 | llvm/lib/Target/AMDGPU/AMDGPUReplaceLDSUseWithPointer.cpp |
Commit
319ce98011742141dad8dd95a2f9de9c0449be5c
by v.g.vassilev[clang-repl] Re-implement clang-interpreter as a test case.
The current infrastructure in lib/Interpreter has a tool, clang-repl, very similar to clang-interpreter which also allows incremental compilation.
This patch moves clang-interpreter as a test case and drops it as conditionally built example as we already have clang-repl in place.
Differential revision: https://reviews.llvm.org/D107049
|
 | clang/lib/Interpreter/Interpreter.cpp |
 | clang/test/CMakeLists.txt |
 | clang/examples/CMakeLists.txt |
 | clang/include/clang/Interpreter/Interpreter.h |
 | clang/docs/ClangFormattedStatus.rst |
 | clang/unittests/Interpreter/ExceptionTests/CMakeLists.txt |
 | clang/examples/clang-interpreter/CMakeLists.txt |
 | clang/examples/clang-interpreter/Test.cxx |
 | clang/test/Misc/interpreter.c |
 | clang/unittests/Interpreter/InterpreterTest.cpp |
 | clang/lib/Interpreter/IncrementalExecutor.cpp |
 | clang/test/lit.cfg.py |
 | clang/unittests/Interpreter/CMakeLists.txt |
 | clang/unittests/Interpreter/ExceptionTests/InterpreterExceptionTest.cpp |
 | clang/examples/clang-interpreter/README.txt |
 | clang/lib/Interpreter/IncrementalExecutor.h |
Commit
01152626ab87c6a9e76207a4a77b86a8a4ce6bbd
by i[Linker] Handle comdat nodeduplicate
For a variable in a comdat nodeduplicate, its initializer may be significant. E.g. its content may be implicitly referenced by another comdat member (or required to parallel to another comdat member by the runtime when explicit section is used). We can clone it into an unnamed private linkage variable to preserve its content.
This partially fixes PR51394 (Sony's proprietary linker using LTO): no error will be reported. This is partial because we do not guarantee the global variable order if the runtime has parallel section requirement.
---
There is a similar issue for regular LTO, but unrelated to PR51394:
with lib/LTO (using either ld.lld or LLVMgold.so), linking two modules with a weak function of the same name, can leave one weak profc and two private profd, due to lib/LTO's current deficiency that it mixes the two concepts together: comdat selection and symbol resolution. If the issue is considered important, we should suppress private profd for the weak+ regular LTO case.
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D108879
|
 | llvm/lib/Linker/LinkModules.cpp |
 | llvm/test/Linker/comdat-nodeduplicate.ll |