SuccessChanges

Summary

  1. Revert "[AST][FPEnv] Keep FP options in trailing storage of CastExpr" (details)
  2. [gn build] Port 19531a81f1d (details)
  3. [X86][SSE] lowerShuffleAsDecomposedShuffleBlend - support decomposed unpacks for some vXi8/vXi16 cases (details)
  4. [InstCombine] Fix incorrect SimplifyWithOpReplaced transform (PR47322) (details)
  5. [ARM] Recognize "double extend" reduction patterns (details)
  6. [InstCombine][X86] getNegativeIsTrueBoolVec - use ConstantExpr evaluators. NFCI. (details)
  7. [Intrinsics] define semantics for experimental fmax/fmin vector reductions (details)
  8. [ARM] Fixup single source mla reductions. (details)
  9. [InstCombine][X86] Add tests for masked load/stores with comparisons. (details)
  10. Reland [AssumeBundles] Use operand bundles to encode alignment assumptions (details)
  11. [MachineScheduler] Fix operand scheduling for pre/post-increment loads (details)
  12. [Clang] Add option to allow marking pass-by-value args as noalias. (details)
  13. [InstCombine][X86] Covert masked load/stores with (sign extended) bool vector masks to generic intrinsics. (details)
  14. TableGen: change a couple of member names to clarify their use. (details)
  15. [LV][ARM] Add preferInloopReduction target hook. (details)
  16. [DSE] Precommit test case with loop carried dependence. (details)
  17. [DSE] Bail out on MemoryPhis when deleting stores at end of function. (details)
  18. [DSE] Adjust coroutines test after e082dee2b588. (details)
  19. [SelectionDAG][X86][ARM][AArch64] Add ISD opcode for __builtin_parity. Expand it to shifts and xors. (details)
  20. [MinGW] Use lib prefix for libraries (details)
  21. [MinGW][clang-shlib] Build by default on MinGW (details)
  22. [MinGW][libclang] Allow simultaneous shared and static lib (details)
  23. [InstCombine] Add extra use tests for abs canonicalization (NFC) (details)
  24. [gcov] Clean up by getting llvm.dbg.cu earlier (details)
  25. [gcov] emitProfileArcs: iterate over GCOVFunction's instead of Function's to avoid duplicated filtering (details)
  26. Revert "[gcov] emitProfileArcs: iterate over GCOVFunction's instead of Function's to avoid duplicated filtering" (details)
Commit de044f756286edebf86044d5172016d87f49fda0 by sepavloff
Revert "[AST][FPEnv] Keep FP options in trailing storage of CastExpr"

This reverts commit 6c8041aa0ffed827636935e59c489b1e390c8542.
It caused some fails on buildbots.
The file was modifiedclang/lib/Frontend/Rewrite/RewriteObjC.cpp
The file was modifiedclang/lib/Sema/SemaInit.cpp
The file was modifiedclang/lib/Analysis/BodyFarm.cpp
The file was modifiedclang/lib/Sema/SemaDeclCXX.cpp
The file was modifiedclang/include/clang/AST/Expr.h
The file was modifiedclang/lib/Sema/SemaDecl.cpp
The file was modifiedclang/include/clang/AST/ExprCXX.h
The file was modifiedclang/lib/Sema/SemaStmt.cpp
The file was modifiedclang/test/AST/ast-dump-fpfeatures.cpp
The file was modifiedclang/lib/CodeGen/CGObjC.cpp
The file was modifiedclang/include/clang/AST/ExprObjC.h
The file was modifiedclang/lib/AST/ASTImporter.cpp
The file was modifiedclang/lib/Serialization/ASTWriterStmt.cpp
The file was modifiedclang/include/clang/Basic/LangOptions.h
The file was modifiedclang/lib/AST/Expr.cpp
The file was modifiedclang/lib/Sema/SemaTemplate.cpp
The file was modifiedclang/lib/Sema/SemaExprCXX.cpp
The file was modifiedclang/lib/Sema/SemaExprObjC.cpp
The file was modifiedclang/lib/Sema/SemaLambda.cpp
The file was modifiedclang/lib/Sema/SemaCast.cpp
The file was modifiedclang/lib/AST/TextNodeDumper.cpp
The file was modifiedclang/lib/AST/ExprCXX.cpp
The file was modifiedclang/lib/Serialization/ASTWriterDecl.cpp
The file was modifiedclang/include/clang/AST/Stmt.h
The file was modifiedclang/lib/Sema/SemaObjCProperty.cpp
The file was modifiedclang/lib/CodeGen/CGStmtOpenMP.cpp
The file was modifiedclang/lib/Sema/SemaOverload.cpp
The file was modifiedclang/lib/Sema/SemaOpenMP.cpp
The file was modifiedclang/lib/Serialization/ASTReaderStmt.cpp
The file was modifiedclang/lib/Sema/SemaExpr.cpp
The file was modifiedclang/lib/CodeGen/CGBlocks.cpp
The file was modifiedclang/lib/Frontend/Rewrite/RewriteModernObjC.cpp
The file was modifiedclang/include/clang/AST/TextNodeDumper.h
The file was modifiedclang/lib/Sema/Sema.cpp
Commit 4ede83c06831adf5bf5e4a2abffd752615f643d0 by llvmgnsyncbot
[gn build] Port 19531a81f1d
The file was modifiedllvm/utils/gn/secondary/llvm/unittests/Support/BUILD.gn
Commit 35dc91aee2013ce1a57dfee965fa5fdee1987ee0 by llvm-dev
[X86][SSE] lowerShuffleAsDecomposedShuffleBlend - support decomposed unpacks for some vXi8/vXi16 cases

Follow up to D86429 to handle the remaining regressions.

This patch generalizes lowerShuffleAsDecomposedShuffleBlend to lowerShuffleAsDecomposedShuffleMerge, and attempts to use an UNPCKL shuffle mask instead of a blend for the cases where the inputs are coming from alternating vXi8/vXi16 sources. Technically they don't have to be alternating (just as long as they can fit into a lower lane half for the unpack) but I didn't find as many general cases and it needed a lot more of the function to be altered.

For vXi32/vXi64 cases this could still be beneficial but in most cases the existing permute+blend approach was better.

Differential Revision: https://reviews.llvm.org/D87405
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp
The file was modifiedllvm/test/CodeGen/X86/vector-shuffle-256-v32.ll
The file was modifiedllvm/test/CodeGen/X86/vector-shuffle-128-v16.ll
The file was modifiedllvm/test/CodeGen/X86/vector-shuffle-256-v16.ll
The file was modifiedllvm/test/CodeGen/X86/vector-shuffle-512-v32.ll
Commit 36e2e2e12efb6b02ad07f502d61b9a95937edb08 by nikita.ppv
[InstCombine] Fix incorrect SimplifyWithOpReplaced transform (PR47322)

This is a followup to D86834, which partially fixed this issue in
InstSimplify. However, InstCombine repeats the same transform while
dropping poison flags -- which does not cover cases where poison is
introduced in some other way.

The fix here is a bit more comprehensive, because things are quite
entangled, and it's hard to only partially address it without
regressing optimization. There are really two changes here:

* Export the SimplifyWithOpReplaced API from InstSimplify, with an
   added AllowRefinement flag. For replacements inside the TrueVal
   we don't actually care whether refinement occurs or not, the
   replacement is always legal. This part of the transform is now
   done in InstSimplify only. (It should be noted that the current
   AllowRefinement check is not sufficient -- that's an issue we
   need to address separately.)
* Change the InstCombine fold to work by temporarily dropping
   poison generating flags, running the fold and then restoring the
   flags if it didn't work out. This will ensure that the InstCombine
   fold is correct as long as the InstSimplify fold is correct.

Differential Revision: https://reviews.llvm.org/D87445
The file was modifiedllvm/test/Transforms/InstCombine/select.ll
The file was modifiedllvm/lib/Analysis/InstructionSimplify.cpp
The file was modifiedllvm/include/llvm/Analysis/InstructionSimplify.h
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
Commit c437446d90be17c3fe8a216a90ee442222f2fe9d by david.green
[ARM] Recognize "double extend" reduction patterns

We can sometimes get code that does:
  xe = zext i16 x to i32
  ye = zext i16 y to i32
  m = mul i32 xe, ye
  me = zext i32 m to i64
  r = vecreduce.add(me)
This "double extend" can trip up the reduction identification, but
should give identical results.

This extends the pattern matching to handle them.

Differential Revision: https://reviews.llvm.org/D87276
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vecreduce-mla.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vecreduce-mlapred.ll
The file was modifiedllvm/lib/Target/ARM/ARMISelLowering.cpp
Commit 50ee0b99ec2902f5cf7a62a5e9b4a4f882b17031 by llvm-dev
[InstCombine][X86] getNegativeIsTrueBoolVec - use ConstantExpr evaluators. NFCI.

Don't do this manually, we can just use the ConstantExpr evaluators to do it more tidily for us.
The file was modifiedllvm/lib/Target/X86/X86InstCombineIntrinsic.cpp
Commit 3a8ea8609b82b7e5401698b7c63df6680e1257a8 by spatel
[Intrinsics] define semantics for experimental fmax/fmin vector reductions

As discussed on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2020-April/140729.html

This is hopefully the final remaining showstopper before we can remove
the 'experimental' from the reduction intrinsics.

No behavior was specified for the FP min/max reductions, so we have a
mess of different interpretations.

There are a few potential options for the semantics of these max/min ops.
I think this is the simplest based on current behavior/implementation:
make the reductions inherit from the existing llvm.maxnum/minnum intrinsics.
These correspond to libm fmax/fmin, and those are similar to the (now
deprecated?) IEEE-754 maxNum/minNum functions (NaNs are treated as missing
data). So the default expansion creates calls to libm functions.

Another option would be to inherit from llvm.maximum/minimum (NaNs propagate),
but most targets just crash in codegen when given those nodes because no
default expansion was ever implemented AFAICT.

We could also just assume 'nnan' semantics by default (we are already
assuming 'nsz' semantics in the maxnum/minnum intrinsics), but some targets
(AArch64, PowerPC) support the more defined behavior, so it doesn't make much
sense to not allow a tighter spec. Fast-math-flags (nnan) can be used to
loosen the semantics.

(Note that D67507 was proposed to update the LangRef to acknowledge the more
recent IEEE-754 2019 standard, but that patch seems to have stalled. If we do
update based on the new standard, the reduction instructions can seamlessly
inherit from whatever updates are made to the max/min intrinsics.)

x86 sees a regression here on 'nnan' tests because we have underlying,
longstanding bugs in FMF creation/propagation. Those need to be fixed apart
from this change (for example: https://llvm.org/PR35538). The expansion
sequence before this patch may not have been correct.

Differential Revision: https://reviews.llvm.org/D87391
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
The file was modifiedllvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
The file was modifiedllvm/docs/LangRef.rst
The file was modifiedllvm/test/CodeGen/Generic/expand-experimental-reductions.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vecreduce-fminmax.ll
The file was modifiedllvm/include/llvm/CodeGen/BasicTTIImpl.h
The file was modifiedllvm/test/CodeGen/X86/vector-reduce-fmax.ll
The file was modifiedllvm/lib/Target/AArch64/AArch64TargetTransformInfo.h
The file was modifiedllvm/lib/Target/ARM/ARMTargetTransformInfo.h
The file was modifiedllvm/lib/CodeGen/ExpandReductions.cpp
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vecreduce-loops.ll
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.cpp
The file was modifiedllvm/test/CodeGen/X86/vector-reduce-fmin.ll
The file was modifiedllvm/test/CodeGen/AArch64/vecreduce-fmax-legalization-nan.ll
The file was modifiedllvm/test/CodeGen/X86/vector-reduce-fmax-nnan.ll
The file was modifiedllvm/test/CodeGen/X86/vector-reduce-fmin-nnan.ll
The file was modifiedllvm/test/CodeGen/AArch64/vecreduce-fmax-legalization.ll
Commit 6cfd38d03d5fc3cde929ebf82529415595e8ef8e by david.green
[ARM] Fixup single source mla reductions.

This fixes a complication on top of D87276. If we are sign extending
around a mul with the two operands that are the same, instcombine will
helpfully convert one of the sext to a zext. Reverse that so that we
again generate a reduction.

Differnetial Revision: https://reviews.llvm.org/D87287
The file was modifiedllvm/lib/Target/ARM/ARMISelLowering.cpp
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vecreduce-mla.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vecreduce-mlapred.ll
Commit d030aad7893a8cf7a68877b8b55eed1cd632411a by llvm-dev
[InstCombine][X86] Add tests for masked load/stores with comparisons.

As detailed on PR11210, if the mask is known to come from a (sign extended) bool vector (e.g. comparisons) then we can represent with a generic masked load/store without losing anything.
The file was modifiedllvm/test/Transforms/InstCombine/X86/x86-masked-memops.ll
Commit 78de7297abe2e8fa782682168989c70e3cb34a5c by tyker
Reland [AssumeBundles] Use operand bundles to encode alignment assumptions

NOTE: There is a mailing list discussion on this: http://lists.llvm.org/pipermail/llvm-dev/2019-December/137632.html

Complemantary to the assumption outliner prototype in D71692, this patch
shows how we could simplify the code emitted for an alignemnt
assumption. The generated code is smaller, less fragile, and it makes it
easier to recognize the additional use as a "assumption use".

As mentioned in D71692 and on the mailing list, we could adopt this
scheme, and similar schemes for other patterns, without adopting the
assumption outlining.
The file was modifiedclang/lib/CodeGen/CodeGenFunction.cpp
The file was modifiedllvm/lib/Transforms/Scalar/AlignmentFromAssumptions.cpp
The file was modifiedclang/test/OpenMP/simd_metadata.c
The file was modifiedllvm/test/Transforms/Inline/byref-align.ll
The file was modifiedllvm/test/Transforms/InstCombine/assume.ll
The file was modifiedclang/test/CodeGen/catch-alignment-assumption-attribute-align_value-on-lvalue.cpp
The file was modifiedclang/test/CodeGen/non-power-of-2-alignment-assumptions.c
The file was modifiedclang/test/OpenMP/simd_codegen.cpp
The file was modifiedclang/test/CodeGen/catch-alignment-assumption-openmp.cpp
The file was modifiedllvm/test/Transforms/AlignmentFromAssumptions/simple32.ll
The file was modifiedclang/test/CodeGen/catch-alignment-assumption-attribute-alloc_align-on-function-variable.cpp
The file was modifiedclang/test/CodeGen/catch-alignment-assumption-attribute-align_value-on-paramvar.cpp
The file was modifiedllvm/lib/IR/Verifier.cpp
The file was modifiedllvm/test/Transforms/AlignmentFromAssumptions/simple.ll
The file was modifiedclang/test/CodeGen/catch-alignment-assumption-attribute-assume_aligned-on-function.cpp
The file was modifiedclang/test/CodeGen/builtin-align-array.c
The file was modifiedllvm/include/llvm/IR/IRBuilder.h
The file was modifiedclang/test/CodeGen/align_value.cpp
The file was modifiedclang/test/CodeGen/builtin-assume-aligned.c
The file was modifiedclang/test/CodeGen/catch-alignment-assumption-builtin_assume_aligned-two-params.cpp
The file was modifiedclang/test/CodeGen/assume-aligned-and-alloc-align-attributes.c
The file was modifiedclang/test/CodeGen/alloc-align-attr.c
The file was modifiedllvm/lib/Analysis/AssumeBundleQueries.cpp
The file was modifiedclang/test/CodeGen/catch-alignment-assumption-builtin_assume_aligned-three-params.cpp
The file was modifiedllvm/test/Transforms/PhaseOrdering/inlining-alignment-assumptions.ll
The file was modifiedclang/test/CodeGen/catch-alignment-assumption-builtin_assume_aligned-three-params-variable.cpp
The file was modifiedllvm/include/llvm/Transforms/Scalar/AlignmentFromAssumptions.h
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_simd_codegen.cpp
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
The file was modifiedllvm/test/Verifier/assume-bundles.ll
The file was modifiedclang/test/CodeGen/catch-alignment-assumption-attribute-alloc_align-on-function.cpp
The file was modifiedllvm/lib/IR/IRBuilder.cpp
The file was modifiedllvm/unittests/Analysis/AssumeBundleQueriesTest.cpp
The file was modifiedclang/test/CodeGen/catch-alignment-assumption-attribute-assume_aligned-on-function-two-params.cpp
The file was modifiedllvm/test/Transforms/Inline/align.ll
The file was modifiedclang/test/CodeGen/builtin-align.c
Commit 2e61cd1295e0031b2379af2b65373e2798a551cb by eleviant
[MachineScheduler] Fix operand scheduling for pre/post-increment loads

Differential revision: https://reviews.llvm.org/D87557
The file was modifiedllvm/lib/Target/AArch64/AArch64InstrFormats.td
The file was modifiedllvm/test/tools/llvm-mca/AArch64/Exynos/load.s
Commit a874d63344093752c912d01de60211f65745ea6f by flo
[Clang] Add option to allow marking pass-by-value args as noalias.

After the recent discussion on cfe-dev 'Can indirect class parameters be
noalias?' [1], it seems like using using noalias is problematic for
current C++, but should be allowed for C-only code.

This patch introduces a new option to let the user indicate that it is
safe to mark indirect class parameters as noalias. Note that this also
applies to external callers, e.g. it might not be safe to use this flag
for C functions that are called by C++ functions.

In targets that allocate indirect arguments in the called function, this
enables more agressive optimizations with respect to memory operations
and brings a ~1% - 2% codesize reduction for some programs.

[1] : http://lists.llvm.org/pipermail/cfe-dev/2020-July/066353.html

Reviewed By: rjmccall

Differential Revision: https://reviews.llvm.org/D85473
The file was addedclang/test/CodeGenObjC/pass-by-value-noalias.m
The file was modifiedclang/include/clang/Basic/CodeGenOptions.def
The file was modifiedclang/lib/CodeGen/CGCall.cpp
The file was addedclang/test/CodeGenCXX/pass-by-value-noalias.cpp
The file was addedclang/test/CodeGen/pass-by-value-noalias.c
The file was modifiedclang/lib/Frontend/CompilerInvocation.cpp
The file was modifiedclang/include/clang/Driver/Options.td
Commit 3170d54842655d6d936aae32b7d0bc92fce7f22e by llvm-dev
[InstCombine][X86] Covert masked load/stores with (sign extended) bool vector masks to generic intrinsics.

As detailed on PR11210, if the mask is known to come from a (sign extended) bool vector (e.g. comparisons) then we can represent with a generic masked load/store without losing anything.

We already do something similar for BLENDV -> SELECT conversion.
The file was modifiedllvm/test/Transforms/InstCombine/X86/x86-masked-memops.ll
The file was modifiedllvm/lib/Target/X86/X86InstCombineIntrinsic.cpp
Commit 8ce75e2778daf0492421fb524986756ef7e84b2b by paul
TableGen: change a couple of member names to clarify their use.
The file was modifiedllvm/include/llvm/TableGen/Record.h
The file was modifiedllvm/lib/TableGen/Record.cpp
Commit 74760bb00fb9b78a2fe12242716bd6976b8c3566 by david.green
[LV][ARM] Add preferInloopReduction target hook.

This allows the backend to tell the vectorizer to produce inloop
reductions through a TTI hook.

For the moment on ARM under MVE this means allowing integer add
reductions of the correct size. In the future this can include integer
min/max too, under -Os.

Differential Revision: https://reviews.llvm.org/D75512
The file was modifiedllvm/include/llvm/Analysis/TargetTransformInfoImpl.h
The file was modifiedllvm/lib/Analysis/TargetTransformInfo.cpp
The file was modifiedllvm/lib/Transforms/Vectorize/LoopVectorize.cpp
The file was modifiedllvm/lib/Target/ARM/ARMTargetTransformInfo.h
The file was modifiedllvm/test/Transforms/LoopVectorize/ARM/mve-reduction-types.ll
The file was modifiedllvm/test/Transforms/LoopVectorize/ARM/mve-reductions.ll
The file was modifiedllvm/include/llvm/Analysis/TargetTransformInfo.h
The file was modifiedllvm/lib/Target/ARM/ARMTargetTransformInfo.cpp
Commit 3de9e3e493baed93e1aa0e99b04a0b11f370a939 by flo
[DSE] Precommit test case with loop carried dependence.
The file was addedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-loop-carried-dependence.ll
Commit e082dee2b5885bba65e20b22b088bcaca5546984 by flo
[DSE] Bail out on MemoryPhis when deleting stores at end of function.

When deleting stores at the end of a function, we have to do PHI
translation, otherwise we might miss reads in different iterations of a
loop. See multiblock-loop-carried-dependence.ll for details.

This fixes a mis-compile and surprisingly also increases the number of
eliminated stores from 26047 to 26572 for MultiSource/SPEC2000/SPEC2006
on X86 with -O3 -flto. This is most likely because we save budget by not
exploring through MemoryPhis, which are less likely to result in valid
candidates for elimination.

The issue was reported post-commit for fb109c42d91c.
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-memintrinsics.ll
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-loop-carried-dependence.ll
The file was modifiedllvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-malloc-free.ll
Commit d85ac6d577ac5d4a7812e6cd3b0171f5e356c805 by flo
[DSE] Adjust coroutines test after e082dee2b588.
The file was modifiedllvm/test/Transforms/Coroutines/ArgAddr.ll
Commit ad3d6f993d9f7ff3a54c5a716ccc918026fa0252 by craig.topper
[SelectionDAG][X86][ARM][AArch64] Add ISD opcode for __builtin_parity. Expand it to shifts and xors.

Clang emits (and (ctpop X), 1) for __builtin_parity. If ctpop
isn't natively supported by the target, this leads to poor codegen
due to the expansion of ctpop being more complex than what is needed
for parity.

This adds a DAG combine to convert the pattern to ISD::PARITY
before operation legalization. Type legalization is updated
to handled Expanding and Promoting this operation. If after type
legalization, CTPOP is supported for this type, LegalizeDAG will
turn it back into CTPOP+AND. Otherwise LegalizeDAG will emit a
series of shifts and xors followed by an AND with 1.

I've avoided vectors in this patch to avoid more legalization
complexity for this patch.

X86 previously had a custom DAG combiner for this. This is now
moved to Custom lowering for the new opcode. There is a minor
regression in vector-reduce-xor-bool.ll, but a follow up patch
can easily fix that.

Fixes PR47433

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D87209
The file was addedllvm/test/CodeGen/ARM/parity.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp
The file was addedllvm/test/CodeGen/AArch64/parity.ll
The file was modifiedllvm/lib/CodeGen/TargetLoweringBase.cpp
The file was modifiedllvm/include/llvm/CodeGen/ISDOpcodes.h
The file was modifiedllvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
The file was modifiedllvm/test/CodeGen/X86/vector-reduce-xor-bool.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
The file was modifiedllvm/test/CodeGen/X86/parity.ll
Commit cc76965b19085519278bff1052059e03769b71e8 by martin
[MinGW] Use lib prefix for libraries

In MinGW world, UNIX like lib prefix is preferred for the libraries.
This patch adjusts CMake files to do that.

Differential Revision: https://reviews.llvm.org/D87517
The file was modifiedclang/tools/libclang/CMakeLists.txt
The file was modifiedllvm/tools/llvm-config/llvm-config.cpp
The file was modifiedllvm/cmake/modules/AddLLVM.cmake
The file was modifiedlldb/source/API/CMakeLists.txt
Commit bb613044b6800b8ccc238232677f905bda423819 by martin
[MinGW][clang-shlib] Build by default on MinGW

It builds without errors and makes possible to use
CLANG_LINK_CLANG_DYLIB=1.

Differential Revision: https://reviews.llvm.org/D87547
The file was modifiedclang/tools/CMakeLists.txt
Commit 7da941939902768af25ffa45149695a0a5f15951 by martin
[MinGW][libclang] Allow simultaneous shared and static lib

It builds fine for MinGW on Windows.

Differential Revision: https://reviews.llvm.org/D87539
The file was modifiedclang/tools/libclang/CMakeLists.txt
Commit c34a99fe589b870354c9a7863b79d882c74f7d50 by nikita.ppv
[InstCombine] Add extra use tests for abs canonicalization (NFC)
The file was modifiedllvm/test/Transforms/InstCombine/abs-1.ll
Commit c55c14837e148b817de989106560328219df342b by i
[gcov] Clean up by getting llvm.dbg.cu earlier
The file was modifiedllvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
Commit 412c9c0bf2a8ccbda2d925575891a51ef5df846e by i
[gcov] emitProfileArcs: iterate over GCOVFunction's instead of Function's to avoid duplicated filtering
The file was modifiedllvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
Commit 7d3825ed954aa1578790b96a8a544d034ea112f6 by i
Revert "[gcov] emitProfileArcs: iterate over GCOVFunction's instead of Function's to avoid duplicated filtering"

This reverts commit 412c9c0bf2a8ccbda2d925575891a51ef5df846e.
The file was modifiedllvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp