Changes

Summary

  1. [LV] Move recurrence backedge fixup code to VPlan::execute (NFC). (details)
  2. [LTO][Legacy] Add new API to check presence of ctor/dtor functions. (details)
  3. [clang-tidy] Fix crash on "reference-to-array" parameters in 'bugprone-easily-swappable-parameters' (details)
  4. [SLP]Improve graph reordering. (details)
  5. [X86][AVX] Move VPERM2F128 defs above VINSERTF128 defs. NFC. (details)
  6. [lldb] Add "memory tag write" --end-addr option (details)
  7. sanitizers: switch BlockingMutex(LINKER_INITIALIZED) to Mutex (details)
  8. sanitizer_common: prohibit Mutex(LINKER_INITIALIZED) (details)
  9. sanitizer_common: replace RWMutex/BlockingMutex with Mutex (details)
  10. [x86] improve CMOV codegen by pushing add into operands, part 3 (details)
  11. [SLP]Fix build on MacOS, NFC. (details)
  12. [InstSimplify] Simplify llvm.vscale when vscale_range attribute exists (details)
  13. [AsmParser] Remove unused declaration parseOptionalCommaInAlloca (NFC) (details)
  14. [mlir][spirv] Fix a few issues in ModuleCombiner (details)
  15. [CLANG][PATCH][FPEnv] Add support for option -ffp-eval-method and extend #pragma float_control similarly (details)
  16. [DebugInfo][InstrRef] Don't break up ret-sequences on debug-info instrs (details)
  17. [Utils] Support class template specializations in update_cc_test_checks (details)
  18. [Clang interpreter] Avoid storing pointers at unaligned locations (details)
  19. [libc] Simplify implementation of benchmarks (details)
  20. [DivRemPairs] make sure we have a valid CFG for hoisting division (details)
  21. [DebugInfo][LoopStrengthReduction] SCEV-based salvaging for LSR (details)
  22. tsan: fix warnings in tests (details)
  23. tsan: extend signal_malloc test (details)
  24. tsan: increase max number of threads supported by test-only barrier (details)
  25. tsan: improve lots_of_threads test (details)
  26. Revert "[DebugInfo][LoopStrengthReduction] SCEV-based salvaging for LSR" (details)
  27. [libc++][nfc] Improve error diagnostics. (details)
Commit c07dd2b885c3096694ac607794b62f7d60032c22 by flo
[LV] Move recurrence backedge fixup code to VPlan::execute (NFC).

As suggested in D105008, move the code that fixes up the backedge value
for first order recurrences to VPlan::execute.

Now all that remains in fixFirstOrderRecurrences is the code responsible
for creating the exit values in the middle block.

Reviewed By: Ayal

Differential Revision: https://reviews.llvm.org/D106244
The file was modifiedllvm/lib/Transforms/Vectorize/LoopVectorize.cpp
The file was modifiedllvm/lib/Transforms/Vectorize/VPlan.cpp
Commit 9559bd19908bf6421f2abed1578219dacdc49169 by wyehia
[LTO][Legacy] Add new API to check presence of ctor/dtor functions.

On AIX, the linker needs to check whether a given lto_module_t contains
any constructor/destructor functions, in order to implement the behavior
of the -bcdtors:all flag. See
https://www.ibm.com/docs/en/aix/7.2?topic=l-ld-command for the flag's
documentation.
In llvm IR, constructor (destructor) functions are added to a special
global array @llvm.global_ctors (@llvm.global_dtors).
However, because these two symbols are artificial, they are not visited
during the symbol traversal (using the
lto_module_get_[num_symbols|symbol_name|symbol_attribute] API).

This patch adds a new function to the libLTO interface that checks the
presence of one or both of these two symbols.

Reviewed By: steven_wu

Differential Revision: https://reviews.llvm.org/D106887
The file was modifiedllvm/tools/lto/lto.exports
The file was modifiedllvm/lib/LTO/LTOModule.cpp
The file was addedllvm/test/tools/llvm-lto/ltomodule.ll
The file was modifiedllvm/tools/lto/lto.cpp
The file was modifiedllvm/tools/llvm-lto/llvm-lto.cpp
The file was modifiedllvm/include/llvm-c/lto.h
The file was modifiedllvm/include/llvm/LTO/legacy/LTOModule.h
Commit 21832121e112d97f1e197b35959867f3a99226ee by whisperity
[clang-tidy] Fix crash on "reference-to-array" parameters in 'bugprone-easily-swappable-parameters'

An otherwise unexercised code path related to trying to model
"array-to-pointer decay" resulted in a null pointer dereference crash
when parameters of type "reference to array" were encountered.

Fixes crash report http://bugs.llvm.org/show_bug.cgi?id=50995.

Reviewed By: aaron.ballman

Differential Revision: http://reviews.llvm.org/D106946
The file was modifiedclang-tools-extra/test/clang-tidy/checkers/bugprone-easily-swappable-parameters-len2.cpp
The file was modifiedclang-tools-extra/test/clang-tidy/checkers/bugprone-easily-swappable-parameters-implicits.cpp
The file was modifiedclang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
Commit e408d1dfab42b27d0aa51b221e50fa6390fb5ed1 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
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/jumbled-load-multiuse.ll
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/jumbled_store_crash.ll
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
The file was modifiedllvm/test/Transforms/SLPVectorizer/AArch64/transpose.ll
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/addsub.ll
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/jumbled-load.ll
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/reorder_repeated_ops.ll
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/crash_cmpop.ll
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/extract.ll
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/vectorize-reorder-reuse.ll
The file was modifiedllvm/test/Transforms/SLPVectorizer/AArch64/transpose-inseltpoison.ll
Commit 124d58638275d1b98b2c3162ae292810b23cbee9 by llvm-dev
[X86][AVX] Move VPERM2F128 defs above VINSERTF128 defs. NFC.

This will be necessary for a future patch to lower VINSERTF128 custom folds to VPERM2F128
The file was modifiedllvm/lib/Target/X86/X86InstrSSE.td
Commit 6eded00e0c6b4e06225df74292c078030556b8ce by david.spickett
[lldb] Add "memory tag write" --end-addr option

The default mode of "memory tag write" is to calculate the
range from the start address and the number of tags given.
(just like "memory write" does)

(lldb) memory tag write mte_buf 1 2
(lldb) memory tag read mte_buf mte_buf+48
Logical tag: 0x0
Allocation tags:
[0xfffff7ff9000, 0xfffff7ff9010): 0x1
[0xfffff7ff9010, 0xfffff7ff9020): 0x2
[0xfffff7ff9020, 0xfffff7ff9030): 0x0

This new option allows you to set an end address and have
the tags repeat until that point.

(lldb) memory tag write mte_buf 1 2 --end-addr mte_buf+64
(lldb) memory tag read mte_buf mte_buf+80
Logical tag: 0x0
Allocation tags:
[0xfffff7ff9000, 0xfffff7ff9010): 0x1
[0xfffff7ff9010, 0xfffff7ff9020): 0x2
[0xfffff7ff9020, 0xfffff7ff9030): 0x1
[0xfffff7ff9030, 0xfffff7ff9040): 0x2
[0xfffff7ff9040, 0xfffff7ff9050): 0x0

This is implemented using the QMemTags packet previously
added. We skip validating the number of tags in lldb and send
them on to lldb-server, which repeats them as needed.

Apart from the number of tags, all the other client side checks
remain. Tag values, memory range must be tagged, etc.

Reviewed By: omjavaid

Differential Revision: https://reviews.llvm.org/D105183
The file was modifiedlldb/source/Commands/Options.td
The file was modifiedlldb/test/API/linux/aarch64/mte_tag_access/TestAArch64LinuxMTEMemoryTagAccess.py
The file was modifiedlldb/source/Commands/CommandObjectMemoryTag.cpp
Commit 56debbf52ed31e0ea83265e0f87e15c3ac15de05 by dvyukov
sanitizers: switch BlockingMutex(LINKER_INITIALIZED) to Mutex

Mutex does not support LINKER_INITIALIZED support.
As preparation to switching BlockingMutex to Mutex,
proactively replace all BlockingMutex(LINKER_INITIALIZED) to Mutex.
All of these are objects with static storage duration and Mutex ctor
is constexpr, so it should be equivalent.

Reviewed By: melver

Differential Revision: https://reviews.llvm.org/D106944
The file was modifiedcompiler-rt/lib/asan/asan_report.cpp
The file was modifiedcompiler-rt/lib/asan/asan_thread.cpp
The file was modifiedcompiler-rt/lib/asan/asan_globals.cpp
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_coverage_fuchsia.cpp
The file was modifiedcompiler-rt/lib/cfi/cfi.cpp
The file was modifiedcompiler-rt/lib/memprof/memprof_stats.cpp
The file was modifiedcompiler-rt/lib/sanitizer_common/tests/sanitizer_thread_registry_test.cpp
The file was modifiedcompiler-rt/lib/memprof/memprof_thread.cpp
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_mac.cpp
The file was modifiedcompiler-rt/lib/asan/asan_stats.cpp
The file was modifiedcompiler-rt/lib/lsan/lsan_common.cpp
Commit 48cbcb909d9b539680da6b3b8997e3620d085f4e by dvyukov
sanitizer_common: prohibit Mutex(LINKER_INITIALIZED)

Mutex does not support LINKER_INITIALIZED ctor.
But we used to support it with BlockingMutex.
To prevent potential bugs delete LINKER_INITIALIZED Mutex ctor.
Also mark existing ctor as explicit.

Depends on D106944.

Reviewed By: melver

Differential Revision: https://reviews.llvm.org/D106945
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_mutex.h
Commit 960cb490dd16961c61b541efbcc95eb085464ad8 by dvyukov
sanitizer_common: replace RWMutex/BlockingMutex with Mutex

Mutex supports reader access, OS blocking, spinning,
portable and smaller than BlockingMutex.
Overall it's supposed to be better than RWMutex/BlockingMutex.
Replace RWMutex/BlockingMutex with Mutex.

Reviewed By: melver

Differential Revision: https://reviews.llvm.org/D106936
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_mac.cpp
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_mutex.h
The file was modifiedcompiler-rt/lib/sanitizer_common/tests/sanitizer_mutex_test.cpp
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_win.cpp
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_fuchsia.cpp
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_solaris.cpp
Commit 4c41caa2871095cf1e936b0eea10079c60f864dc by spatel
[x86] improve CMOV codegen by pushing add into operands, part 3

In this episode, we are trying to avoid an x86 micro-arch quirk where complex
(3 operand) LEA potentially costs significantly more than simple LEA. So we
simultaneously push and pull the math around the CMOV to balance the operations.

I looked at the debug spew during instruction selection and decided against
trying a later DAGToDAG transform -- it seems very difficult to match if the
trailing memops are already selected and managing the creation of extra
instructions at that level is always tricky.

Differential Revision: https://reviews.llvm.org/D106918
The file was modifiedllvm/test/CodeGen/X86/add-cmov.ll
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp
Commit 3ad6437fcced9122d8b0ef24b2cb6af5925e626e by a.bataev
[SLP]Fix build on MacOS, NFC.
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
Commit ca0fe3447fb85762838468537d93d4ef82c5a1af by JunMa
[InstSimplify] Simplify llvm.vscale when vscale_range attribute exists

Reduce llvm.vscale to constant based on vscale_range attribute.

Differential Revision: https://reviews.llvm.org/D106850
The file was modifiedllvm/lib/Analysis/InstructionSimplify.cpp
The file was addedllvm/test/Transforms/InstSimplify/fold-vscale.ll
Commit aa6340cf87d7e1bbb894cf6357f859e5afb8a335 by kazu
[AsmParser] Remove unused declaration parseOptionalCommaInAlloca (NFC)
The file was modifiedllvm/include/llvm/AsmParser/LLParser.h
Commit 23326b9f1723a398681def87c80e608fa94485f2 by antiagainst
[mlir][spirv] Fix a few issues in ModuleCombiner

- Fixed symbol insertion into `symNameToModuleMap`. Insertion
  needs to happen whether symbols are renamed or not.
- Added check for the VCE triple and avoid dropping it.
- Disabled function deduplication. It requires more careful
  rules. Right now it can remove different functions.
- Added tests for symbol rename listener.
- And some other code/comment cleanups.

Reviewed By: ergawy

Differential Revision: https://reviews.llvm.org/D106886
The file was modifiedmlir/include/mlir/Dialect/SPIRV/IR/SPIRVStructureOps.td
The file was modifiedmlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
The file was modifiedmlir/test/Dialect/SPIRV/Linking/ModuleCombiner/conflict-resolution.mlir
The file was modifiedmlir/test/lib/Dialect/SPIRV/TestModuleCombiner.cpp
The file was modifiedmlir/test/Dialect/SPIRV/Linking/ModuleCombiner/basic.mlir
The file was modifiedmlir/include/mlir/Dialect/SPIRV/IR/SPIRVOps.h
The file was modifiedmlir/include/mlir/Dialect/SPIRV/Linking/ModuleCombiner.h
The file was modifiedmlir/lib/Conversion/GPUToSPIRV/GPUToSPIRV.cpp
The file was modifiedmlir/test/Dialect/SPIRV/Linking/ModuleCombiner/deduplication.mlir
The file was addedmlir/test/Dialect/SPIRV/Linking/ModuleCombiner/symbol-rename-listener.mlir
The file was modifiedmlir/lib/Dialect/SPIRV/Linking/ModuleCombiner/ModuleCombiner.cpp
Commit 66ddac22e2a7f268e91c26d694112970dfa607ae by melanie.blower
[CLANG][PATCH][FPEnv] Add support for option -ffp-eval-method and extend #pragma float_control similarly

The Intel compiler ICC supports the option "-fp-model=(source|double|extended)"
which causes the compiler to use a wider type for intermediate floating point
calculations. Also supported is a way to embed this effect in the source
program with #pragma float_control(source|double|extended).
This patch extends pragma float_control syntax, and also adds support
for a new floating point option "-ffp-eval-method=(source|double|extended)".
source: intermediate results use source precision
double: intermediate results use double precision
extended: intermediate results use extended precision

Reviewed By: Aaron Ballman

Differential Revision: https://reviews.llvm.org/D93769
The file was modifiedclang/lib/Frontend/InitPreprocessor.cpp
The file was modifiedclang/include/clang/Lex/PreprocessorOptions.h
The file was modifiedclang/test/Preprocessor/init-ppc.c
The file was modifiedclang/include/clang/Basic/LangOptions.def
The file was modifiedclang/include/clang/Lex/Preprocessor.h
The file was modifiedclang/test/Preprocessor/init-v7k-compat.c
The file was modifiedclang/lib/Basic/Targets/OSTargets.h
The file was modifiedclang/include/clang/Basic/FPOptions.def
The file was modifiedclang/include/clang/Sema/Sema.h
The file was modifiedclang/lib/Basic/Targets/X86.h
The file was modifiedclang/lib/Sema/Sema.cpp
The file was modifiedclang/docs/LanguageExtensions.rst
The file was modifiedclang/docs/UsersManual.rst
The file was modifiedclang/test/Preprocessor/init-x86.c
The file was modifiedclang/test/Preprocessor/init.c
The file was modifiedclang/include/clang/Basic/LangOptions.h
The file was modifiedclang/test/Preprocessor/init-mips.c
The file was modifiedclang/lib/Lex/PPMacroExpansion.cpp
The file was modifiedclang/lib/Frontend/CompilerInvocation.cpp
The file was modifiedclang/test/Preprocessor/init-ppc64.c
The file was modifiedclang/test/CodeGen/fp-floatcontrol-pragma.cpp
The file was modifiedclang/test/Preprocessor/init-aarch64.c
The file was modifiedclang/include/clang/Basic/TargetInfo.h
The file was modifiedclang/include/clang/Basic/PragmaKinds.h
The file was modifiedclang/test/Preprocessor/init-s390x.c
The file was modifiedclang/test/Preprocessor/init-arm.c
The file was modifiedclang/lib/Parse/ParsePragma.cpp
The file was modifiedclang/lib/Sema/SemaExpr.cpp
The file was modifiedclang/lib/Driver/ToolChains/Clang.cpp
The file was modifiedclang/include/clang/Driver/Options.td
The file was modifiedclang/lib/Sema/SemaAttr.cpp
Commit 8612417e5a54cfef941ab45de55e48b4a0c4e8b4 by jeremy.morse
[DebugInfo][InstrRef] Don't break up ret-sequences on debug-info instrs

When we have a terminator sequence (i.e. a tailcall or return),
MIIsInTerminatorSequence is used to work out where the preceding ABI-setup
instructions end, i.e. the parts that were glued to the terminator
instruction. This allows LLVM to split blocks safely without having to
worry about ABI stuff.

The function only ignores DBG_VALUE instructions, meaning that the two
debug instructions I recently added can end terminator sequences early,
causing various MachineVerifier errors. This patch promotes the test for
debug instructions from "isDebugValue" to "isDebugInstr", thus avoiding any
debug-info interfering with this function.

Differential Revision: https://reviews.llvm.org/D106660
The file was addedllvm/test/DebugInfo/ARM/instr-ref-tcreturn.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
Commit 0e79a94836d7127a87c36fdca43ffaf6a17d8964 by jrtc27
[Utils] Support class template specializations in update_cc_test_checks

ClassTemplateSpecializationDecl not within a ClassTemplateDecl
represents an explicit instatiation of a template and so should be
handled as if it were a normal CXXRecordDecl. Unfortunately, having an
equivalent for FunctionTemplateDecl remains a TODO in ASTDumper's
VisitFunctionTemplateDecl, with all the explicit instantiations just
being emitted inside the FunctionTemplateDecl along with all the other
specializations, meaning we can't easily support explicit function
instantiations in update_cc_test_checks.

Reviewed By: arichardson

Differential Revision: https://reviews.llvm.org/D106243
The file was addedclang/test/utils/update_cc_test_checks/Inputs/explicit-template-instantiation.cpp.expected
The file was addedclang/test/utils/update_cc_test_checks/Inputs/explicit-template-instantiation.cpp
The file was addedclang/test/utils/update_cc_test_checks/explicit-template-instantiation.test
The file was modifiedllvm/utils/update_cc_test_checks.py
Commit 40080e7e7f42857c8edac4a53e476a68563f1a98 by jrtc27
[Clang interpreter] Avoid storing pointers at unaligned locations

The Clang interpreter's bytecode uses a packed stream of bytes
representation, but also wants to have some opcodes take pointers as
arguments, which are currently embedded in the bytecode directly.

However, CHERI, and thus Arm's upcoming experimental Morello prototype,
provide spatial memory safety for C/C++ by implementing language-level
(and sub-language-level) pointers as capabilities, which track bounds,
permissions and validity in hardware. This uses tagged memory with a
single tag bit at every capability-aligned address, and so storing
pointers to unaligned addresses results in the tag being stripped,
leading to a tag fault when the pointer is ultimately dereferenced at a
later point.

In order to support a stricter C/C++ implementation like CHERI, we no
longer store pointers directly in the bytecode, instead storing them in
a table and embedding the index in the bytecode.

Reviewed By: nand

Differential Revision: https://reviews.llvm.org/D97606
The file was modifiedclang/lib/AST/Interp/Source.h
The file was modifiedclang/lib/AST/Interp/Program.cpp
The file was modifiedclang/lib/AST/Interp/Disasm.cpp
The file was modifiedclang/lib/AST/Interp/ByteCodeEmitter.cpp
The file was modifiedclang/utils/TableGen/ClangOpcodesEmitter.cpp
The file was modifiedclang/lib/AST/Interp/Interp.h
The file was modifiedclang/lib/AST/Interp/Program.h
Commit d3c70d9f7765f8e731c0b892aea74b21d330d230 by gchatelet
[libc] Simplify implementation of benchmarks

This also allows to run the distribution benchmarks in other frameworks
like the Google Benchmark facility.
The file was modifiedlibc/benchmarks/MemorySizeDistributions.h
The file was modifiedlibc/benchmarks/MemorySizeDistributions.cpp
The file was modifiedlibc/benchmarks/CMakeLists.txt
The file was modifiedlibc/benchmarks/LibcMemoryBenchmark.h
The file was modifiedlibc/benchmarks/LibcMemoryBenchmarkMain.cpp
The file was modifiedlibc/benchmarks/LibcMemoryBenchmark.cpp
Commit 5b83261c1518a39636abe094123f1704bbfd972f by spatel
[DivRemPairs] make sure we have a valid CFG for hoisting division

This transform was added with e38b7e894808ec2
and as shown in:
https://llvm.org/PR51241
...it could crash without an extra check of the blocks.

There might be a more compact way to write this constraint,
but we can't just count the successors/predecessors without
affecting a test that includes a switch instruction.
The file was modifiedllvm/lib/Transforms/Scalar/DivRemPairs.cpp
The file was modifiedllvm/test/Transforms/DivRemPairs/X86/div-expanded-rem-pair.ll
Commit d675b594f4f1e1f6a195fb9a4fd02cf3de92292d by chris.jackson
[DebugInfo][LoopStrengthReduction] SCEV-based salvaging for LSR

Reapply commit 796b84d26f4d461fb50e7b4e84e15a10eaca88fc that was
reverted due to reports of crashes. A minor change now guards against
getVariableLocationOperand() returning a nullptr.

Differential Revision: https://reviews.llvm.org/D106659
The file was modifiedllvm/test/Transforms/LoopStrengthReduce/dbg-preserve-0.ll
The file was modifiedllvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
The file was modifiedllvm/test/Transforms/LoopStrengthReduce/dbg-preserve-2.ll
The file was modifiedllvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
The file was addedllvm/test/Transforms/LoopStrengthReduce/debuginfo-scev-salvage-0.ll
The file was modifiedllvm/include/llvm/Transforms/Utils/ScalarEvolutionExpander.h
The file was addedllvm/test/Transforms/LoopStrengthReduce/debuginfo-scev-salvage-1.ll
The file was addedllvm/test/Transforms/LoopStrengthReduce/debuginfo-scev-salvage-3.ll
The file was addedllvm/test/Transforms/LoopStrengthReduce/debuginfo-scev-salvage-2.ll
The file was addedllvm/test/Transforms/LoopStrengthReduce/debuginfo-scev-salvage-4.ll
Commit 89edd1e95f5cc274c0e33cf45ffc85c37b3214f0 by dvyukov
tsan: fix warnings in tests

Compilers don't like attributes in this position:

warning: GCC does not allow 'noinline' attribute in this position on a function definition
error: attributes are not allowed on a function-definition

Reviewed By: melver

Differential Revision: https://reviews.llvm.org/D106951
The file was modifiedcompiler-rt/test/tsan/race_top_suppression.cpp
The file was modifiedcompiler-rt/test/tsan/longjmp3.cpp
The file was modifiedcompiler-rt/test/tsan/ignorelist2.cpp
The file was modifiedcompiler-rt/test/tsan/longjmp4.cpp
The file was modifiedcompiler-rt/test/tsan/race_on_heap.cpp
Commit 9ef9d01a5046f4f58b51b59d658e4c05f41344a1 by dvyukov
tsan: extend signal_malloc test

Test that we report the warning for free()
and ensure the test finishes as we usually do with "DONE".

Depends on D106951.

Reviewed By: melver

Differential Revision: https://reviews.llvm.org/D106952
The file was modifiedcompiler-rt/test/tsan/signal_malloc.cpp
Commit acbb4fcd5e664ddfb515785f1839afc8f2570035 by dvyukov
tsan: increase max number of threads supported by test-only barrier

Currently the barrier supports only 256 threads,
this does not allow to write reliable tests that use more threads.
Bump max number of threads to 1024 to support writing
good stress tests.
Also replace sched_yield() with usleep(100) on the wait path.
If we write tests that create hundreds of threads (and dozens
of tests can run in parallel), yield would consume massive
amounts of CPU time for spinning.

Depends on D106952.

Reviewed By: melver

Differential Revision: https://reviews.llvm.org/D106953
The file was modifiedcompiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
Commit bfb597b24c311f8a03ad9530adef3b3c1e5ff853 by dvyukov
tsan: improve lots_of_threads test

The current 10 threads is not particularly "lots" and not stressful.
Create 10x300 threads and ensure they all are running at the same time.

Depends on D106953.

Reviewed By: melver

Differential Revision: https://reviews.llvm.org/D106954
The file was modifiedcompiler-rt/test/tsan/lots_of_threads.c
Commit 399289604348e2194120890e0632e2cbc35077f5 by chris.jackson
Revert "[DebugInfo][LoopStrengthReduction] SCEV-based salvaging for LSR"
Reverted due to buildbot failures.
This reverts commit d675b594f4f1e1f6a195fb9a4fd02cf3de92292d.
The file was removedllvm/test/Transforms/LoopStrengthReduce/debuginfo-scev-salvage-3.ll
The file was modifiedllvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
The file was removedllvm/test/Transforms/LoopStrengthReduce/debuginfo-scev-salvage-1.ll
The file was modifiedllvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
The file was modifiedllvm/test/Transforms/LoopStrengthReduce/dbg-preserve-0.ll
The file was removedllvm/test/Transforms/LoopStrengthReduce/debuginfo-scev-salvage-4.ll
The file was modifiedllvm/include/llvm/Transforms/Utils/ScalarEvolutionExpander.h
The file was removedllvm/test/Transforms/LoopStrengthReduce/debuginfo-scev-salvage-0.ll
The file was removedllvm/test/Transforms/LoopStrengthReduce/debuginfo-scev-salvage-2.ll
The file was modifiedllvm/test/Transforms/LoopStrengthReduce/dbg-preserve-2.ll
Commit 4e65688571221565cf1a5c1e4bb58ee2ab7c9c83 by koraq
[libc++][nfc] Improve error diagnostics.

The error message for disabled filesystem and locale support is now done
in the same fashion as ranges and format in D106763.

Reviewed By: #libc, ldionne

Differential Revision: https://reviews.llvm.org/D106935
The file was modifiedlibcxx/include/locale.h
The file was modifiedlibcxx/include/filesystem