Commit
5b47256fa5402a5f7f06513b0d168746d4c46df2
by pengfei.wang[X86] Add test to show the effect caused by D109607. NFC
|
 | clang/test/CodeGen/X86/va-arg-sse.c |
Commit
227673398c2d93d9db02fe5fdb1af10a74251995
by pengfei.wang[X86] Always check the size of SourceTy before getting the next type
D109607 results in a regression in llvm-test-suite. The reason is we didn't check the size of SourceTy, so that we will return wrong SSE type when SourceTy is overlapped.
Reviewed By: Meinersbur
Differential Revision: https://reviews.llvm.org/D110037
|
 | clang/test/CodeGen/X86/va-arg-sse.c |
 | clang/lib/CodeGen/TargetInfo.cpp |
Commit
5661317f864abf750cf893c6a4cc7a977be0995a
by pklausler[flang] Put intrinsic function table back into order
Some intrinsic functions weren't findable because the table wasn't strictly in order of names.
And complete a missing generalization of the extension DCONJG to accept any kind of complex argument, like DREAL and DIMAG were.
Differential Revision: https://reviews.llvm.org/D110002
|
 | flang/lib/Evaluate/intrinsics.cpp |
 | flang/unittests/Evaluate/intrinsics.cpp |
Commit
bc69dd62c04a70d29943c1c06c7effed150b70e1
by a.bataev[SLP]Improve graph reordering.
Reworked reordering algorithm. Originally, the compiler just tried to detect the most common order in the reordarable nodes (loads, stores, extractelements,extractvalues) and then fully rebuilding the graph in the best order. This was not effecient, since it required an extra memory and time for building/rebuilding tree, double the use of the scheduling budget, which could lead to missing vectorization due to exausted scheduling resources.
Patch provide 2-way approach for graph reodering problem. At first, all reordering is done in-place, it doe not required tree deleting/rebuilding, it just rotates the scalars/orders/reuses masks in the graph node.
The first step (top-to bottom) rotates the whole graph, similarly to the previous implementation. Compiler counts the number of the most used orders of the graph nodes with the same vectorization factor and then rotates the subgraph with the given vectorization factor to the most used order, if it is not empty. Then repeats the same procedure for the subgraphs with the smaller vectorization factor. We can do this because we still need to reshuffle smaller subgraph when buildiong operands for the graph nodes with lasrger vectorization factor, we can rotate just subgraph, not the whole graph.
The second step (bottom-to-top) scans through the leaves and tries to detect the users of the leaves which can be reordered. If the leaves can be reorder in the best fashion, they are reordered and their user too. It allows to remove double shuffles to the same ordering of the operands in many cases and just reorder the user operations instead. Plus, it moves the final shuffles closer to the top of the graph and in many cases allows to remove extra shuffle because the same procedure is repeated again and we can again merge some reordering masks and reorder user nodes instead of the operands.
Also, patch improves cost model for gathering of loads, which improves x264 benchmark in some cases.
Gives about +2% on AVX512 + LTO (more expected for AVX/AVX2) for {625,525}x264, +3% for 508.namd, improves most of other benchmarks. The compile and link time are almost the same, though in some cases it should be better (we're not doing an extra instruction scheduling anymore) + we may vectorize more code for the large basic blocks again because of saving scheduling budget.
Differential Revision: https://reviews.llvm.org/D105020
|
 | llvm/test/Transforms/SLPVectorizer/AArch64/transpose-inseltpoison.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/jumbled-load.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/jumbled-load-multiuse.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/addsub.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/vectorize-reorder-alt-shuffle.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/extract.ll |
 | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp |
 | llvm/test/Transforms/SLPVectorizer/AArch64/transpose.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/jumbled_store_crash.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/split-load8_2-unord.ll |
 | llvm/include/llvm/Transforms/Vectorize/SLPVectorizer.h |
 | llvm/test/Transforms/SLPVectorizer/X86/reorder_repeated_ops.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/crash_cmpop.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/vectorize-reorder-reuse.ll |
Commit
09100c75b52d6729e343964aa690efdd51cf913f
by gysit[mlir][linalg] Fix typo (NFC).
|
 | mlir/lib/Dialect/Linalg/Transforms/FusionOnTensors.cpp |
Commit
644b55d57ec76a18916d30f921781b99795f6e10
by morten_bp[MLIR][SCF] Add for-to-while loop transformation pass
This pass transforms SCF.ForOp operations to SCF.WhileOp. The For loop condition is placed in the 'before' region of the while operation, and indctuion variable incrementation + the loop body in the 'after' region. The loop carried values of the while op are the induction variable (IV) of the for-loop + any iter_args specified for the for-loop. Any 'yield' ops in the for-loop are rewritten to additionally yield the (incremented) induction variable.
This transformation is useful for passes where we want to consider structured control flow solely on the basis of a loop body and the computation of a loop condition. As an example, when doing high-level synthesis in CIRCT, the incrementation of an IV in a for-loop is "just another part" of a circuit datapath, and what we really care about is the distinction between our datapath and our control logic (the condition variable).
Differential Revision: https://reviews.llvm.org/D108454
|
 | mlir/lib/Dialect/SCF/Transforms/ForToWhile.cpp |
 | mlir/lib/Dialect/SCF/Transforms/CMakeLists.txt |
 | mlir/test/Dialect/SCF/for-loop-to-while-loop.mlir |
 | mlir/include/mlir/Dialect/SCF/Passes.h |
 | mlir/include/mlir/Dialect/SCF/Passes.td |
Commit
7be28d82b4ce810ef662239a9dba7a1409c1ad49
by gysit[mlir][linalg] Add IndexOp support to fusion on tensors.
This revision depends on https://reviews.llvm.org/D109761 and https://reviews.llvm.org/D109766.
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D109774
|
 | mlir/lib/Dialect/Linalg/Transforms/FusionOnTensors.cpp |
 | mlir/test/Dialect/Linalg/tile-and-fuse-on-tensors.mlir |
Commit
963d3a22b34de33fc41a9e3e9ac733e9b6d241be
by flo[DSE] Add additional tests to cover review comments.
Adds additional tests following comments from D109844.
Also removes unusued in.ptr arguments and places in the call tests that used loads instead of a getval call.
|
 | llvm/test/Transforms/DeadStoreElimination/captures-before-call.ll |
 | llvm/test/Transforms/DeadStoreElimination/captures-before-load.ll |
Commit
fe4b8467b5dca564b4859256b08ece5fa1eaa574
by Jonas Devlieghere[lldb] Fix whitespace in CommandObjectTarget (NFC)
|
 | lldb/source/Commands/CommandObjectTarget.cpp |
Commit
a89bfc61203d5c2071cddaff26345771716463ec
by Jonas Devlieghere[lldb] Extract adding symbols for UUID/File/Frame (NFC)
This moves the logic for adding symbols based on UUID, file and frame into little helper functions. This is in preparation for D110011.
Differential revision: https://reviews.llvm.org/D110010
|
 | lldb/source/Commands/CommandObjectTarget.cpp |
Commit
8700f2bd36bb9b7d7075ed4dac0aef92b9489237
by nikita.ppv[Verifier] Verify scoped noalias metadata
Verify that !noalias, !alias.scope and llvm.experimental.noalias.scope arguments have the format specified in https://llvm.org/docs/LangRef.html#noalias-and-alias-scope-metadata. I've fixed up a lot of broken metadata used by tests in advance. Especially using a scope instead of the expected scope list is a commonly made mistake.
Differential Revision: https://reviews.llvm.org/D110026
|
 | llvm/test/Verifier/alias-scope-metadata.ll |
 | llvm/lib/IR/Verifier.cpp |
Commit
d001ab82e410d0c6ccf14be9f507c8aca53abc67
by i[ELF] Don't fall back to .text for e_entry
We have the rule to simulate (https://sourceware.org/binutils/docs/ld/Entry-Point.html), but the behavior is questionable (https://sourceware.org/pipermail/binutils/2021-September/117929.html).
gold doesn't fall back to .text. The behavior is unlikely relied by projects (there is even a warning for executable links), so let's just delete this fallback path.
Reviewed By: jhenderson, peter.smith
Differential Revision: https://reviews.llvm.org/D110014
|
 | lld/ELF/Writer.cpp |
 | lld/test/ELF/entry.s |
 | lld/docs/ReleaseNotes.rst |
 | lld/test/ELF/basic-ppc.s |
 | lld/test/ELF/basic-ppc64.s |
Commit
d85e347a28dc9a329d7029987e4e062428985b41
by craig.topper[RISCV] Add a pass to recognize VLS strided loads/store from gather/scatter.
For strided accesses the loop vectorizer seems to prefer creating a vector induction variable with a start value of the form <i32 0, i32 1, i32 2, ...>. This value will be incremented each loop iteration by a splat constant equal to the length of the vector. Within the loop, arithmetic using splat values will be done on this vector induction variable to produce indices for a vector GEP.
This pass attempts to dig through the arithmetic back to the phi to create a new scalar induction variable and a stride. We push all of the arithmetic out of the loop by folding it into the start, step, and stride values. Then we create a scalar GEP to use as the base pointer for a strided load or store using the computed stride. Loop strength reduce will run after this pass and can do some cleanups to the scalar GEP and induction variable.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D107790
|
 | llvm/lib/Target/RISCV/RISCVGatherScatterLowering.cpp |
 | llvm/lib/Target/RISCV/RISCVISelLowering.cpp |
 | llvm/lib/Target/RISCV/RISCV.h |
 | llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h |
 | llvm/test/CodeGen/RISCV/rvv/fixed-vector-strided-load-store-negative.ll |
 | llvm/test/CodeGen/RISCV/rvv/fixed-vector-strided-load-store.ll |
 | llvm/lib/Target/RISCV/CMakeLists.txt |
 | llvm/include/llvm/IR/IntrinsicsRISCV.td |
 | llvm/lib/Target/RISCV/RISCVISelLowering.h |
 | llvm/lib/Target/RISCV/RISCVTargetMachine.cpp |
 | llvm/tools/opt/opt.cpp |
Commit
93604c9711cd0325cf92b23529b55db161143a29
by llvmgnsyncbot[gn build] Port d85e347a28dc
|
 | llvm/utils/gn/secondary/llvm/lib/Target/RISCV/BUILD.gn |
Commit
f3cfec9c9e6d90505baaef8ff25ed709e347b226
by kazu[MCA] Fix a warning
This patch fixes the warning
InstructionTables.cpp:27:56: error: loop variable 'Resource' of type 'const std::pair<const uint64_t, ResourceUsage> &' (aka 'const pair<const unsigned long, llvm::mca::ResourceUsage> &') binds to a temporary constructed from type 'const std::pair<unsigned long, llvm::mca::ResourceUsage> &' [-Werror,-Wrange-loop-construct]
Note that Resource is declared as:
SmallVector<std::pair<uint64_t, ResourceUsage>, 4> Resources;
without "const" for uint64_t.
|
 | llvm/lib/MCA/Stages/InstructionTables.cpp |
Commit
ecd52a5be9a1c9c0efe5a1d92aa2cde807758cac
by nikita.ppv[Verifier] Try to fix MSVC build
Some buildbots fail with:
> C:\a\llvm-clang-x86_64-expensive-checks-win\llvm-project\llvm\lib\IR\Verifier.cpp(4352): error C2678: binary '==': no operator found which takes a left-hand operand of type 'const llvm::MDOperand' (or there is no acceptable conversion)
Possibly the explicit MDOperand to Metadata* conversion will help?
|
 | llvm/lib/IR/Verifier.cpp |
Commit
a954bb18b14363e133217e7f19aa95fbde2c7488
by i[ELF] Add --why-extract= to query why archive members/lazy object files are extracted
Similar to D69607 but for archive member extraction unrelated to GC. This patch adds --why-extract=.
Prior art:
GNU ld -M prints ``` Archive member included to satisfy reference by file (symbol)
a.a(a.o) main.o (a) b.a(b.o) (b()) ```
-M is mainly for input section/symbol assignment <-> output section mapping (often huge output) and the information may appear ad-hoc.
Apple ld64 ``` __Z1bv forced load of b.a(b.o) _a forced load of a.a(a.o) ```
It doesn't say the reference file.
Arm's proprietary linker ``` Selecting member vsnprintf.o(c_wfu.l) to define vsnprintf. ... Loading member vsnprintf.o from c_wfu.l. definition: vsnprintf reference : _printf_a ```
---
--why-extract= gives the user the full data (which is much shorter than GNU ld -Map). It is easy to track a chain of references to one archive member with a one-liner, e.g.
``` % ld.lld main.o a_b.a b_c.a c.a -o /dev/null --why-extract=- | tee stdout reference extracted symbol main.o a_b.a(a_b.o) a a_b.a(a_b.o) b_c.a(b_c.o) b() b_c.a(b_c.o) c.a(c.o) c()
% ruby -ane 'BEGIN{p={}}; p[$F[1]]=[$F[0],$F[2]] if $.>1; END{x="c.a(c.o)"; while y=p[x]; puts "#{y[0]} extracts #{x} to resolve #{y[1]}"; x=y[0] end}' stdout b_c.a(b_c.o) extracts c.a(c.o) to resolve c() a_b.a(a_b.o) extracts b_c.a(b_c.o) to resolve b() main.o extracts a_b.a(a_b.o) to resolve a ```
Archive member extraction happens before --gc-sections, so this may not be a live path under --gc-sections, but I think it is a good approximation in practice.
* Specifying a file avoids output interleaving with --verbose. * Required `=` prevents accidental overwrite of an input if the user forgets `=`. (Most of compiler drivers' long options accept `=` but not ` `)
Differential Revision: https://reviews.llvm.org/D109572
|
 | lld/docs/ReleaseNotes.rst |
 | lld/ELF/Symbols.cpp |
 | lld/docs/ld.lld.1 |
 | lld/test/ELF/why-extract.s |
 | lld/ELF/MapFile.cpp |
 | lld/ELF/Symbols.h |
 | lld/ELF/Driver.cpp |
 | lld/ELF/Config.h |
 | lld/ELF/MapFile.h |
 | lld/ELF/Options.td |
 | lld/ELF/Writer.cpp |
Commit
6e994a833e8bfe616fdf40155eefbee033d427ec
by akhuang[lld] Remove timers.ll because inconsistent timers behavior causes the test to fail sometimes
See https://reviews.llvm.org/D109904
|
 | lld/test/COFF/timers.ll |
Commit
f4b5d597d86abafd61d4de6235f724d4f7b046e6
by gcmnAdd use_default_shell_env = True to ctx.actions.run
When building a tool in a non-standard environment (e.g. custom compiler path -> LD_LIBRARY_PATH set) then `use_default_shell_env = True` is required to run that tool in the same environment or otherwise the build will fail due to missing symbols. See https://github.com/google/jax/issues/7842 for this issue and https://github.com/tensorflow/tensorflow/pull/44549 for related fix in TF.
Reviewed By: GMNGeoffrey
Differential Revision: https://reviews.llvm.org/D109873
|
 | utils/bazel/llvm-project-overlay/mlir/tblgen.bzl |
Commit
f18f1ab4fd8c3b53834f874b2ec666af72bf0fe3
by joker.ephTemporarily XFAIL MLIR test that fails the LLVM verifier after 8700f2bd3
|
 | mlir/test/Target/LLVMIR/llvmir.mlir |
Commit
5edd79fc9725f4456f4bf53bf55633ef5938cdc3
by joker.ephRevert "[MLIR][SCF] Add for-to-while loop transformation pass"
This reverts commit 644b55d57ec76a18916d30f921781b99795f6e10.
The added test is failing the bots.
|
 | mlir/lib/Dialect/SCF/Transforms/ForToWhile.cpp |
 | mlir/include/mlir/Dialect/SCF/Passes.td |
 | mlir/lib/Dialect/SCF/Transforms/CMakeLists.txt |
 | mlir/include/mlir/Dialect/SCF/Passes.h |
 | mlir/test/Dialect/SCF/for-loop-to-while-loop.mlir |
Commit
3679d2001c87f37101e7f20c646b21e97d8a0867
by cchen[NCF][OpenMP] Fix metadirective test on SystemZ
|
 | clang/test/OpenMP/metadirective_ast_print.c |
Commit
e31b2d7d7be98cbbaa665b2702cd0ed2975da4cc
by Vedant Kumar[lldb][crashlog] Avoid specifying arch for image when a UUID is present
When adding an image to a target for crashlog purposes, avoid specifying the architecture of the image.
This has the effect of making SBTarget::AddModule infer the ArchSpec for the image based on the SBTarget's architecture, which LLDB puts serious effort into calculating correctly (in TargetList::CreateTargetInternal).
The status quo is that LLDB randomly guesses the ArchSpec for a module if its architecture is specified, via:
``` SBTarget::AddModule -> Platform::GetAugmentedArchSpec -> Platform::IsCompatibleArchitecture -> GetSupportedArchitectureAtIndex -> {ARM,x86}GetSupportedArchitectureAtIndex ```
... which means that the same crashlog can fail to load on an Apple Silicon Mac (due to the random guess of arm64e-apple-macosx for the module's ArchSpec not being compatible with the SBTarget's (correct) ArchSpec), while loading just fine on an Intel Mac.
I'm not sure how to add a test for this (it doesn't look like there's test coverage of this path in-tree). It seems like it would be pretty complicated to regression test: the host LLDB would need to be built for arm64e, we'd need a hand-crafted arm64e iOS crashlog, and we'd need a binary with an iOS deployment target. I'm open to other / simpler options.
rdar://82679400
Differential Revision: https://reviews.llvm.org/D110013
|
 | lldb/examples/python/symbolication.py |
Commit
890027b31433311515906633518e1295293ac15c
by craig.topper[RISCV] Add test cases showing failure to use .vf vector operations when splat is in another basic block. NFC
We should have CGP copy the splats into the same basic block as the FP operation so that SelectionDAG can fold them.
|
 | llvm/test/CodeGen/RISCV/rvv/sink-splat-operands.ll |
Commit
04ab6c85ef74072c077717ca4b4eaede8db24823
by craig.topper[RISCV] Teach RISCVTargetLowering::shouldSinkOperands to sink splats for FAdd/FSub/FMul/FDiv.
|
 | llvm/test/CodeGen/RISCV/rvv/sink-splat-operands.ll |
 | llvm/lib/Target/RISCV/RISCVISelLowering.cpp |
Commit
d7d7060127b7db8c4cb05edab2d5c0f18ec0d66b
by arthur.j.odwyerEliminate _LIBCPP_EQUAL_DELETE in favor of `=delete`.
All supported compilers have supported `=delete` as an extension in C++03 mode for many years at this point.
Differential Revision: https://reviews.llvm.org/D109942
|
 | libcxx/include/__tree |
 | libcxx/include/__config |
 | libcxx/include/map |
 | libcxx/include/__mutex_base |
Commit
a07727199db0525e9d2df41e466a2a1611b3c8e1
by iRevert code change of D63497 & D74399 for riscv64-*-linux GCC detection
This partially reverts commits 1fc2a47f0b6c415312593e43489cf9ea2507d902 and 9816e726e747d72e0c5ac92aa20e652031a10448.
See D109727. Replacing config.guess in favor of {gcc,clang} -dumpmachine can avoid the riscv64-{redhat,suse}-linux GCC detection.
Acked-by: Luís Marques <luismarques@lowrisc.org>
|
 | clang/lib/Driver/ToolChains/Gnu.cpp |
Commit
6cd382bf2894f87a6a68e2d962bdbfc2f0fb3d85
by iRevert "[CMake] Add debuginfo-tests to LLVM_ALL_PROJECTS after D110016"
This reverts commit 4b80f0125adc876c8ef325f1c0ace4af023f2264.
debuginfo-tests has been renamed to cross-project-tests.
|
 | llvm/CMakeLists.txt |
Commit
0b33890f4553c9255c0f44cee04a0d98843d6a5a
by ravishankarm[mlir][Linalg] Add ConvolutionOpInterface.
Add an interface that allows grouping together all covolution and pooling ops within Linalg named ops. The interface currently - the indexing map used for input/image access is valid - the filter and output are accessed using projected permutations - that all loops are charecterizable as one iterating over - batch dimension, - output image dimensions, - filter convolved dimensions, - output channel dimensions, - input channel dimensions, - depth multiplier (for depthwise convolutions)
Differential Revision: https://reviews.llvm.org/D109793
|
 | mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py |
 | mlir/test/lib/Dialect/Test/TestDialect.h |
 | mlir/test/Dialect/Linalg/invalid.mlir |
 | mlir/include/mlir/Dialect/Linalg/IR/LinalgInterfaces.h |
 | utils/bazel/llvm-project-overlay/mlir/test/BUILD.bazel |
 | mlir/lib/Dialect/Linalg/IR/LinalgInterfaces.cpp |
 | mlir/python/mlir/dialects/linalg/opdsl/lang/comprehension.py |
 | mlir/test/Dialect/Linalg/named-ops.mlir |
 | mlir/test/lib/Dialect/Test/CMakeLists.txt |
 | mlir/test/Dialect/Linalg/conv-interface-invalid.mlir |
 | mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml |
 | mlir/include/mlir/Dialect/Linalg/IR/LinalgInterfaces.td |
 | mlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td |
 | mlir/test/lib/Dialect/Test/TestOps.td |
Commit
63e0d038fc20c894a3d541effa1bc2b1fdea37b9
by Yuanfang ChenDiagnose -Wunused-value based on CFG reachability
While at it, add the diagnosis message "left operand of comma operator has no effect" (used by GCC) for comma operator.
This also makes Clang diagnose in the constant evaluation context which aligns with GCC/MSVC behavior. (https://godbolt.org/z/7zxb8Tx96)
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D103938
|
 | clang/test/CXX/drs/dr20xx.cpp |
 | clang/test/CXX/temp/temp.constr/temp.constr.constr/partial-specializations.cpp |
 | clang/test/Sema/const-eval.c |
 | clang/test/Sema/exprs.c |
 | clang/include/clang/Basic/DiagnosticSemaKinds.td |
 | clang/test/Parser/cxx-ambig-decl-expr.cpp |
 | clang/test/SemaCXX/constant-expression.cpp |
 | clang/test/SemaCXX/builtin-constant-p.cpp |
 | clang/test/SemaCXX/sizeless-1.cpp |
 | clang/test/Parser/objcxx11-attributes.mm |
 | clang/lib/Sema/SemaExprCXX.cpp |
 | clang/lib/Sema/SemaStmt.cpp |
 | clang/test/SemaTemplate/derived.cpp |
 | clang/test/Sema/i-c-e.c |
 | clang/test/CodeCompletion/pragma-macro-token-caching.c |
 | clang/test/Sema/switch-1.c |
 | clang/test/Parser/objc-messaging-1.m |
 | clang/test/SemaCXX/constant-expression-cxx2a.cpp |
 | clang/lib/Sema/SemaExpr.cpp |
 | clang/test/Parser/objc-try-catch-1.m |
 | clang/test/SemaCXX/vector.cpp |
 | clang/test/CXX/basic/basic.link/p8.cpp |
 | clang/test/Sema/warn-unused-value.c |
 | clang/test/SemaCXX/warn-unused-value.cpp |
 | clang/test/Frontend/fixed_point_crash.c |
 | clang/test/Parser/cxx0x-ambig.cpp |
 | clang/test/SemaCXX/warn-comma-operator.cpp |
 | clang/test/Sema/sizeless-1.c |
 | clang/test/Analysis/dead-stores.c |
 | clang/test/Sema/warn-type-safety.c |
 | clang/include/clang/Sema/Sema.h |
 | clang/test/CXX/drs/dr14xx.cpp |
 | clang/test/Sema/vla-2.c |
 | clang/test/SemaCXX/attr-annotate.cpp |
 | clang/test/CXX/drs/dr7xx.cpp |
 | clang/test/SemaCXX/overloaded-operator.cpp |
 | clang/test/PCH/cxx-explicit-specifier.cpp |
 | clang/test/Parser/cxx1z-init-statement.cpp |
 | clang/test/SemaCXX/expression-traits.cpp |
 | clang/test/SemaCXX/matrix-type-operators.cpp |
 | clang/test/SemaTemplate/lambda-capture-pack.cpp |
Commit
01b097afd0eae593b3a11a88a34e8f50e845d3e7
by githubFix bad merge the removed switch case
When https://reviews.llvm.org/D109520 was landed, it reverted the addition of this switch case added in https://reviews.llvm.org/D109293. This caused `-Wswitch` failures (and presumably broke the functionality added in the latter patch).
|
 | llvm/lib/ExecutionEngine/JITLink/ELF_x86_64.cpp |
Commit
1e45cd75dfb1df61892c1a26654c8997d8aeef66
by jonathan.l.peyton[OpenMP][host runtime] Fix indirect lock table race condition
The indirect lock table can exhibit a race condition during initializing and setting/unsetting locks. This occurs if the lock table is resized by one thread (during an omp_init_lock) and accessed (during an omp_set|unset_lock) by another thread.
The test runtime/test/lock/omp_init_lock.c test exposed this issue and will fail if run enough times.
This patch restructures the lock table so pointer/iterator validity is always kept. Instead of reallocating a single table to a larger size, the lock table begins preallocated to accommodate 8K locks. Each row of the table is allocated as needed with each row allowing 1K locks. If the 8K limit is reached for the initial table, then another table, capable of holding double the number of locks, is allocated and linked as the next table. The indices stored in the user's locks take this linked structure into account when finding the lock within the table.
Differential Revision: https://reviews.llvm.org/D109725
|
 | openmp/runtime/src/kmp_lock.cpp |
 | openmp/runtime/src/kmp_lock.h |
Commit
4cf9bf6c9f64cca1111134acc9f84efe8f27e8d1
by ravishankarm[mlir][MemRef] Compute unused dimensions of a rank-reducing subviews using strides as well.
For `memref.subview` operations, when there are more than one unit-dimensions, the strides need to be used to figure out which of the unit-dims are actually dropped.
Differential Revision: https://reviews.llvm.org/D109418
|
 | mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td |
 | mlir/include/mlir/Interfaces/ViewLikeInterface.td |
 | mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp |
 | mlir/test/Dialect/MemRef/fold-subview-ops.mlir |
 | mlir/test/Dialect/Linalg/loops.mlir |
 | mlir/test/Dialect/MemRef/invalid.mlir |
 | mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp |
 | mlir/test/IR/invalid-ops.mlir |
 | mlir/lib/Dialect/MemRef/Transforms/FoldSubViewOps.cpp |
 | mlir/test/Dialect/MemRef/canonicalize.mlir |