platform/upstream/llvm.git
3 years ago[RISCV] Remove an extra map lookup from RISCVCompressInstEmitter. NFC
Craig Topper [Sun, 17 Jan 2021 05:18:52 +0000 (21:18 -0800)]
[RISCV] Remove an extra map lookup from RISCVCompressInstEmitter. NFC

When we looked up the map to see if the entry already existed,
this created the new entry for us. So save a reference to it so
we can use it to update the entry instead of looking it up again.

Also remove unnecessary StringRef constructors around string
literals on calls to this function.

3 years ago[RISCV] Few more minor cleanups to RISCVCompressInstEmitter. NFC
Craig Topper [Sun, 17 Jan 2021 05:09:37 +0000 (21:09 -0800)]
[RISCV] Few more minor cleanups to RISCVCompressInstEmitter. NFC

-Use StringRef instead of std::string.
-Const correct a parameter.
-Don't call StringRef::data() before printing. Just pass the StringRef.

3 years ago[RISCV] Simplify mergeCondAndCode in RISCVCompressInstEmitter.cpp. NFC
Craig Topper [Sun, 17 Jan 2021 04:59:48 +0000 (20:59 -0800)]
[RISCV] Simplify mergeCondAndCode in RISCVCompressInstEmitter.cpp. NFC

Instead forming a std::string and returning it to pass into another
raw_ostream, just pass the raw_ostream as a parameter.

Take StringRef as arguments instead raw_string_ostream references
making the caller responsible for converting to strings. Use
StringRef operations instead of std::string::substr.a

3 years ago[RISC] Replace dyn_casts that are only checked by an assert with a cast. NFC
Craig Topper [Sun, 17 Jan 2021 04:23:41 +0000 (20:23 -0800)]
[RISC] Replace dyn_casts that are only checked by an assert with a cast. NFC

3 years ago[RISCV] Remove unneeded StringRef to std::string conversions in RISCVCompressInstEmit...
Craig Topper [Sat, 16 Jan 2021 08:03:35 +0000 (00:03 -0800)]
[RISCV] Remove unneeded StringRef to std::string conversions in RISCVCompressInstEmitter. NFC

Stop concatenating std::string before streaming into a raw_ostream.
Just stream the pieces.

Remove some new lines from asserts. Remove std::string concatenation
from an assert. assert strings aren't really evaluated like this at
runtime. An assertion failure will just print exactly what's between
the parentheses in the source.

3 years ago[X86] Default to -x86-pad-for-align=false to drop assembler difference with or w...
Fangrui Song [Sun, 17 Jan 2021 00:39:54 +0000 (16:39 -0800)]
[X86] Default to -x86-pad-for-align=false to drop assembler difference with or w/o -g

Fix PR48742: the D75203 assembler optimization locates MCRelaxableFragment's
within two MCSymbol's and relaxes some MCRelaxableFragment's to reduce the size
of a MCAlignFragment.  A -g build has more MCSymbol's and therefore may have
different assembler output (e.g. a MCRelaxableFragment (jmp) may have 5 bytes
with -O1 while 2 bytes with -O1 -g).

`.p2align 4, 0x90` is common due to loops. For a larger program, with a
lot of temporary labels, the assembly output difference is somewhat
destined. The cost seems to overweigh the benefits so we default to
-x86-pad-for-align=false until the heuristic is improved.

Reviewed By: skan

Differential Revision: https://reviews.llvm.org/D94542

3 years ago[InstCombine] Replace one-use select operand based on condition
Nikita Popov [Sat, 16 Jan 2021 11:41:35 +0000 (12:41 +0100)]
[InstCombine] Replace one-use select operand based on condition

InstCombine already performs a fold where X == Y ? f(X) : Z is
transformed to X == Y ? f(Y) : Z if f(Y) simplifies. However,
if f(X) only has one use, then we can always directly replace the
use inside the instruction. To actually be profitable, limit it to
the case where Y is a non-expr constant.

This could be further extended to replace uses further up a one-use
instruction chain, but for now this only looks one level up.

Among other things, this also subsumes D94860.

Differential Revision: https://reviews.llvm.org/D94862

3 years ago[SimplifyCFG] markAliveBlocks(): catchswitch: preserve PostDomTree
Roman Lebedev [Sat, 16 Jan 2021 18:42:40 +0000 (21:42 +0300)]
[SimplifyCFG] markAliveBlocks(): catchswitch: preserve PostDomTree

When removing catchpad's from catchswitch, if that removes a successor,
we need to record that in DomTreeUpdater.

This fixes PostDomTree preservation failure in an existing test.
This appears to be the single issue that i see in my current test coverage.

3 years ago[ARM] Align blocks that are not fallthough targets
David Green [Sat, 16 Jan 2021 22:19:35 +0000 (22:19 +0000)]
[ARM] Align blocks that are not fallthough targets

If the previous block in a function does not fallthough, adding nop's to
align it will never be executed. This means we can freely (except for
codesize) align more branches. This happens in constantislandspass (as
it cannot happen later) and only happens at aggressive optimization
levels as it does increase codesize.

Differential Revision: https://reviews.llvm.org/D94394

3 years ago[ARM] Test for aligned blocks. NFC
David Green [Sat, 16 Jan 2021 18:41:11 +0000 (18:41 +0000)]
[ARM] Test for aligned blocks. NFC

3 years ago[NFC] Removed extra text in comments
Dávid Bolvanský [Sat, 16 Jan 2021 21:48:23 +0000 (22:48 +0100)]
[NFC] Removed extra text in comments

3 years ago[mlir][sparse] improved sparse runtime support library
Aart Bik [Sat, 16 Jan 2021 03:49:01 +0000 (19:49 -0800)]
[mlir][sparse] improved sparse runtime support library

Added the ability to read (an extended version of) the FROSTT
file format, so that we can now read in sparse tensors of arbitrary
rank. Generalized the API to deal with more than two dimensions.

Also added the ability to sort the indices of sparse tensors
lexicographically. This is an important step towards supporting
auto gen of initialization code, since sparse storage formats
are easier to initialize if the indices are sorted. Since most
external formats don't enforce such properties, it is convenient
to have this ability in our runtime support library.

Lastly, the re-entrant problem of the original implementation
is fixed by passing an opaque object around (rather than having
a single static variable, ugh!).

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D94852

3 years ago[OpenMP] Added the support for hidden helper task in RTL
Shilei Tian [Sat, 16 Jan 2021 19:12:38 +0000 (14:12 -0500)]
[OpenMP] Added the support for hidden helper task in RTL

The basic design is to create an outer-most parallel team. It is not a regular team because it is only created when the first hidden helper task is encountered, and is only responsible for the execution of hidden helper tasks.  We first use `pthread_create` to create a new thread, let's call it the initial and also the main thread of the hidden helper team. This initial thread then initializes a new root, just like what RTL does in initialization. After that, it directly calls `__kmpc_fork_call`. It is like the initial thread encounters a parallel region. The wrapped function for this team is, for main thread, which is the initial thread that we create via `pthread_create` on Linux, waits on a condition variable. The condition variable can only be signaled when RTL is being destroyed. For other work threads, they just do nothing. The reason that main thread needs to wait there is, in current implementation, once the main thread finishes the wrapped function of this team, it starts to free the team which is not what we want.

Two environment variables, `LIBOMP_NUM_HIDDEN_HELPER_THREADS` and `LIBOMP_USE_HIDDEN_HELPER_TASK`, are also set to configure the number of threads and enable/disable this feature. By default, the number of hidden helper threads is 8.

Here are some open issues to be discussed:
1. The main thread goes to sleeping when the initialization is finished. As Andrey mentioned, we might need it to be awaken from time to time to do some stuffs. What kind of update/check should be put here?

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D77609

3 years ago[SLP] remove opcode field from reduction data class
Sanjay Patel [Sat, 16 Jan 2021 18:51:55 +0000 (13:51 -0500)]
[SLP] remove opcode field from reduction data class

This is NFC-intended and another step towards supporting
intrinsics as reduction candidates.

The remaining bits of the OperationData class do not make
much sense as-is, so I will try to improve that, but I'm
trying to take minimal steps because it's still not clear
how this was intended to work.

3 years ago[SLP] fix typos; NFC
Sanjay Patel [Sat, 16 Jan 2021 18:18:05 +0000 (13:18 -0500)]
[SLP] fix typos; NFC

3 years ago[SLP] remove unnecessary use of 'OperationData'
Sanjay Patel [Sat, 16 Jan 2021 16:56:36 +0000 (11:56 -0500)]
[SLP] remove unnecessary use of 'OperationData'

This is another NFC-intended patch to allow matching
intrinsics (example: maxnum) as candidates for reductions.

It's possible that the loop/if logic can be reduced now,
but it's still difficult to understand how this all works.

3 years ago[InstSimplify] Handle commutativity for 'and' and 'outer or' for (~A & B) | ~(A ...
Dávid Bolvanský [Sat, 16 Jan 2021 18:40:29 +0000 (19:40 +0100)]
[InstSimplify] Handle commutativity for 'and' and 'outer or' for (~A & B) | ~(A | B) --> ~A

Reviewed By: lebedev.ri

Differential Revision: https://reviews.llvm.org/D94870

3 years ago[ARM] Add low overhead loops terminators to AnalyzeBranch
David Green [Sat, 16 Jan 2021 18:30:21 +0000 (18:30 +0000)]
[ARM] Add low overhead loops terminators to AnalyzeBranch

This treats low overhead loop branches the same as jump tables and
indirect branches in analyzeBranch - they cannot be analyzed but the
direct branches on the end of the block may be removed. This helps
remove the unnecessary branches earlier, which can help produce better
codegen (and change block layout in a number of cases).

Differential Revision: https://reviews.llvm.org/D94392

3 years ago[ARM] Remove LLC tests from transform/hardware loop tests.
David Green [Sat, 16 Jan 2021 18:01:30 +0000 (18:01 +0000)]
[ARM] Remove LLC tests from transform/hardware loop tests.

We now have a lot of llc tests for hardware loops in CodeGen, which test
a larger variety of loops and are easier to maintain. This removes the
llc from mixed llc/opt tests.

3 years ago[InstSimplify] Precommit new testcases; NFC
Dávid Bolvanský [Sat, 16 Jan 2021 17:52:51 +0000 (18:52 +0100)]
[InstSimplify] Precommit new testcases; NFC

3 years ago[llvm] Use *::empty (NFC)
Kazu Hirata [Sat, 16 Jan 2021 17:40:54 +0000 (09:40 -0800)]
[llvm] Use *::empty (NFC)

3 years ago[llvm] Construct SmallVector with iterator ranges (NFC)
Kazu Hirata [Sat, 16 Jan 2021 17:40:53 +0000 (09:40 -0800)]
[llvm] Construct SmallVector with iterator ranges (NFC)

3 years ago[StringExtras] Fix comment typos (NFC)
Kazu Hirata [Sat, 16 Jan 2021 17:40:51 +0000 (09:40 -0800)]
[StringExtras] Fix comment typos (NFC)

3 years ago[LTO] Remove options to disable inlining, vectorization & GVNLoadPRE.
Florian Hahn [Sat, 16 Jan 2021 16:28:05 +0000 (16:28 +0000)]
[LTO] Remove options to disable inlining, vectorization & GVNLoadPRE.

This patch removes some ancient options as a clean-up before moving
code-gen to use LTOBackend in D94487.

I think it would preferable to remove those ancient options, because

  1. There are no corresponding options in LTOBackend based tools,
  2. There are no unit tests for them,
  3. They are not passed through by Clang,
  4. At least for GNVLoadPRE, users could just use GVN's `enable-load-pre`.

Alternatively we could add support for those options to lto::Config &
co, but I think it would be better to remove them, unless they are
actually used in practice.

Reviewed By: steven_wu, tejohnson

Differential Revision: https://reviews.llvm.org/D94783

3 years ago[InstSimplify] Update comments, remove redundant tests
Dávid Bolvanský [Sat, 16 Jan 2021 15:31:02 +0000 (16:31 +0100)]
[InstSimplify] Update comments, remove redundant tests

3 years ago[RISCV] Correct alignment settings for vector registers.
Hsiangkai Wang [Fri, 15 Jan 2021 03:27:11 +0000 (11:27 +0800)]
[RISCV] Correct alignment settings for vector registers.

According to "9. Vector Memory Alignment Constraints" in V
specification, the alignment of vector memory access is aligned to the
size of the element. In our current implementation, we support ELEN up
to 64. We could assume the alignment of vector registers is 64 under the
assumption.

Differential Revision: https://reviews.llvm.org/D94751

3 years ago[InstSimplify] Add (~A & B) | ~(A | B) --> ~A
Dávid Bolvanský [Sat, 16 Jan 2021 14:43:07 +0000 (15:43 +0100)]
[InstSimplify] Add (~A & B) | ~(A | B) --> ~A

3 years ago[Tests] Added tests for new instcombine or simplification; NFC
Dávid Bolvanský [Sat, 16 Jan 2021 14:04:54 +0000 (15:04 +0100)]
[Tests] Added tests for new instcombine or simplification; NFC

3 years agoFix llvm::Optional build breaks in MSVC using std::is_trivially_copyable
James Player [Sat, 16 Jan 2021 14:34:20 +0000 (09:34 -0500)]
Fix llvm::Optional build breaks in MSVC using std::is_trivially_copyable

Current code breaks this version of MSVC due to a mismatch between `std::is_trivially_copyable` and `llvm::is_trivially_copyable` for `std::pair` instantiations.  Hence I was attempting to use `std::is_trivially_copyable` to set `llvm::is_trivially_copyable<T>::value`.

I spent some time root causing an `llvm::Optional` build error on MSVC 16.8.3 related to the change described above:

```
62>C:\src\ocg_llvm\llvm-project\llvm\include\llvm/ADT/BreadthFirstIterator.h(96,12): error C2280: 'llvm::Optional<std::pair<std::pair<unsigned int,llvm::Graph<4>::NodeSubset> *,llvm::Optional<llvm::Graph<4>::ChildIterator>>> &llvm::Optional<std::pair<std::pair<unsigned int,llvm::Graph<4>::NodeSubset> *,llvm::Optional<llvm::Graph<4>::ChildIterator>>>::operator =(const llvm::Optional<std::pair<std::pair<unsigned int,llvm::Graph<4>::NodeSubset> *,llvm::Optional<llvm::Graph<4>::ChildIterator>>> &)': attempting to reference a deleted function (compiling source file C:\src\ocg_llvm\llvm-project\llvm\unittests\ADT\BreadthFirstIteratorTest.cpp)
...
```
The "trivial" specialization of `optional_detail::OptionalStorage` assumes that the value type is trivially copy constructible and trivially copy assignable. The specialization is invoked based on a check of `is_trivially_copyable` alone, which does not imply both `is_trivially_copy_assignable` and `is_trivially_copy_constructible` are true.

[[ https://en.cppreference.com/w/cpp/named_req/TriviallyCopyable | According to the spec ]], a deleted assignment operator does not make `is_trivially_copyable` false. So I think all these properties need to be checked explicitly in order to specialize `OptionalStorage` to the "trivial" version:
```
/// Storage for any type.
template <typename T, bool = std::is_trivially_copy_constructible<T>::value
                          && std::is_trivially_copy_assignable<T>::value>
class OptionalStorage {
```
Above fixed my build break in MSVC, but I think we need to explicitly check `is_trivially_copy_constructible` too since it might be possible the copy constructor is deleted.  Also would be ideal to move over to `std::is_trivially_copyable` instead of the `llvm` namespace verson.

Reviewed By: dblaikie

Differential Revision: https://reviews.llvm.org/D93510

3 years ago[ASTMatchers] Add support for CXXRewrittenBinaryOperator
Stephen Kelly [Tue, 5 Jan 2021 23:04:31 +0000 (23:04 +0000)]
[ASTMatchers] Add support for CXXRewrittenBinaryOperator

Differential Revision: https://reviews.llvm.org/D94130

3 years ago[ASTMatchers] Add binaryOperation matcher
Stephen Kelly [Tue, 5 Jan 2021 01:33:13 +0000 (01:33 +0000)]
[ASTMatchers] Add binaryOperation matcher

This is a simple utility which allows matching on binaryOperator and
cxxOperatorCallExpr. It can also be extended to support
cxxRewrittenBinaryOperator.

Add generic support for MapAnyOfMatchers to auto-marshalling functions.

Differential Revision: https://reviews.llvm.org/D94129

3 years ago[LegalizeDAG] Handle NeedInvert when expanding BR_CC
Bjorn Pettersson [Fri, 15 Jan 2021 09:35:56 +0000 (10:35 +0100)]
[LegalizeDAG] Handle NeedInvert when expanding BR_CC

This is a follow-up fix to commit 03c8d6a0c4bd0016bdfd1e5.
Seems like we now end up with NeedInvert being set in the result
from LegalizeSetCCCondCode more often than in the past, so we
need to handle NeedInvert when expanding BR_CC.

Not sure how to deal with the "Tmp4.getNode()" case properly,
but current assumption is that that code path isn't impacted
by the changes in 03c8d6a0c4bd0016bdfd1e5 so we can simply move
the old assert into the if-branch and only handle NeedInvert in the
else-branch.

I think that the test case added here, for PowerPC, might have
failed also before commit 03c8d6a0c4bd0016bdfd1e5. But we started
to hit the assert more often downstream when having merged that
commit.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D94762

3 years ago[ASTMatchers] Make cxxOperatorCallExpr matchers API-compatible with n-ary operators
Stephen Kelly [Sat, 2 Jan 2021 00:01:03 +0000 (00:01 +0000)]
[ASTMatchers] Make cxxOperatorCallExpr matchers API-compatible with n-ary operators

This makes them composable with mapAnyOf().

Differential Revision: https://reviews.llvm.org/D94128

3 years ago[ASTMatchers] Add mapAnyOf matcher
Stephen Kelly [Fri, 1 Jan 2021 23:18:43 +0000 (23:18 +0000)]
[ASTMatchers] Add mapAnyOf matcher

Make it possible to compose a matcher for different base nodes.

This accepts one or more node matcher functors and zero or more
matchers, composing the latter into the former.

This allows composing of matchers where the same inner matcher name is
used for the same concept, but with a different node functor. Currently,
there is a limitation that the nodes must be in the same "clade", so
while

  mapAnyOf(ifStmt, forStmt).with(hasBody(stmt()))

can be used, functionDecl can not be added to the tuple.

It is possible to use this in clang-query, but it will require changes
to the QueryParser, so is deferred to a future review.

Differential Revision: https://reviews.llvm.org/D94127

3 years ago[InstCombine] Add more tests for select operand replacement (NFC)
Nikita Popov [Sat, 16 Jan 2021 12:10:09 +0000 (13:10 +0100)]
[InstCombine] Add more tests for select operand replacement (NFC)

3 years ago[InstCombine] Add more tests to select-safe-transforms.ll (NFC)
Juneyoung Lee [Sat, 16 Jan 2021 10:49:12 +0000 (19:49 +0900)]
[InstCombine] Add more tests to select-safe-transforms.ll (NFC)

3 years ago[InstCombine] Add a test file that contains safe select transforms (NFC)
Juneyoung Lee [Sat, 16 Jan 2021 10:27:43 +0000 (19:27 +0900)]
[InstCombine] Add a test file that contains safe select transforms (NFC)

3 years agoIntroduce llvm.noalias.decl intrinsic
Jeroen Dobbelaere [Sat, 16 Jan 2021 08:14:18 +0000 (09:14 +0100)]
Introduce llvm.noalias.decl intrinsic

The ``llvm.experimental.noalias.scope.decl`` intrinsic identifies where a noalias
scope is declared. When the intrinsic is duplicated, a decision must
also be made about the scope: depending on the reason of the duplication,
the scope might need to be duplicated as well.

Reviewed By: nikic, jdoerfert

Differential Revision: https://reviews.llvm.org/D93039

3 years agoAArch64: fix regression introduced by fcmp immediate selection.
Amara Emerson [Sat, 16 Jan 2021 06:51:54 +0000 (22:51 -0800)]
AArch64: fix regression introduced by fcmp immediate selection.

Forgot to check if the predicate is safe to commutate operands.

3 years ago[NPM][Inliner] Temporarily remove inline_stats test case for always
Mircea Trofin [Sat, 16 Jan 2021 05:55:58 +0000 (21:55 -0800)]
[NPM][Inliner] Temporarily remove inline_stats test case for always
inline

The stats are printed at InlinePass destruction. When we have 2 of them,
it appears the destruction order of the Passes std::vector of the pass
manager differs in msan builds - example:
http://lab.llvm.org:8011/#/builders/74/builds/2135.

This reproes locally, too.

Temporarily removing the sub-test case, to green the build, and will
follow up with a stat dumping alternative that does not depend on vector
element dtor order.

3 years ago[NFC] Add -std=c11 to attr-availability.c
Douglas Yung [Sat, 16 Jan 2021 05:02:26 +0000 (21:02 -0800)]
[NFC] Add -std=c11 to attr-availability.c

This test will fail with any toolchains that don't default to C11.

Adding this switch to the clang invocation in the test fixes the issue.

Patch by Justice Adams!

Reviewed By: dyung

Differential Revision: https://reviews.llvm.org/D94829

3 years ago[StringExtras] Rename SubsequentDelim to ListSeparator
Kazu Hirata [Sat, 16 Jan 2021 05:00:55 +0000 (21:00 -0800)]
[StringExtras] Rename SubsequentDelim to ListSeparator

This patch renames SubsequentDelim to ListSeparator to clarify the
purpose of the class.

Differential Revision: https://reviews.llvm.org/D94649

3 years ago[AMDGPU] Use llvm::is_contained (NFC)
Kazu Hirata [Sat, 16 Jan 2021 05:00:54 +0000 (21:00 -0800)]
[AMDGPU] Use llvm::is_contained (NFC)

3 years ago[utils] Use llvm::sort (NFC)
Kazu Hirata [Sat, 16 Jan 2021 05:00:52 +0000 (21:00 -0800)]
[utils] Use llvm::sort (NFC)

3 years ago[Inline] Fix a missing character in inline_stats.ll
Mircea Trofin [Sat, 16 Jan 2021 04:28:15 +0000 (20:28 -0800)]
[Inline] Fix a missing character in inline_stats.ll

3 years ago[NewPM][Inliner] Move the 'always inliner' case in the same CGSCC pass as 'regular...
Mircea Trofin [Fri, 15 Jan 2021 21:56:57 +0000 (13:56 -0800)]
[NewPM][Inliner] Move the 'always inliner' case in the same CGSCC pass as 'regular' inliner

Expanding from D94808 - we ensure the same InlineAdvisor is used by both
InlinerPass instances. The notion of mandatory inlining is moved into
the core InlineAdvisor: advisors anyway have to handle that case, so
this change also factors out that a bit better.

Differential Revision: https://reviews.llvm.org/D94825

3 years ago[debugserver] Fix inverted if block that resulted in us using the private entitlements
Jonas Devlieghere [Sat, 16 Jan 2021 01:40:41 +0000 (17:40 -0800)]
[debugserver] Fix inverted if block that resulted in us using the private entitlements

3 years ago[mlir] Fixing potential build break in my previous commit
Thomas Raoux [Sat, 16 Jan 2021 01:32:30 +0000 (17:32 -0800)]
[mlir] Fixing potential build break in my previous commit

3 years ago[mlir][AsmPrinter] Properly escape strings when printing locations
River Riddle [Sat, 16 Jan 2021 00:55:32 +0000 (16:55 -0800)]
[mlir][AsmPrinter] Properly escape strings when printing locations

This fixes errors when location strings contains newlines, or other non-ascii characters.

Differential Revision: https://reviews.llvm.org/D94847

3 years ago[mlir][NFC] Move helper substWithMin into Affine utils
Thomas Raoux [Fri, 15 Jan 2021 22:03:57 +0000 (14:03 -0800)]
[mlir][NFC] Move helper substWithMin into Affine utils

This allow using this helper outside of the linalg canonicalization.

Differential Revision: https://reviews.llvm.org/D94826

3 years ago[flang] Create names to allow access to inaccessible specifics
peter klausler [Fri, 15 Jan 2021 19:52:10 +0000 (11:52 -0800)]
[flang] Create names to allow access to inaccessible specifics

When a reference to a generic interface occurs in a specification
expression that must be emitted to a module file, we have a problem
when the generic resolves to a function whose name is inaccessible
due to being PRIVATE or due to a conflict with another use of the
same name in the scope.  In these cases, construct a new name for
the specific procedure and emit a renaming USE to the module file.
Also, relax enforcement of PRIVATE when analyzing module files.

Differential Revision: https://reviews.llvm.org/D94815

3 years ago[NFC] Disallow unused prefixes under MC/RISCV
Mircea Trofin [Fri, 15 Jan 2021 16:50:59 +0000 (08:50 -0800)]
[NFC] Disallow unused prefixes under MC/RISCV

Differential Revision: https://reviews.llvm.org/D94836

3 years agohwasan: Update register-dump-read.c test to reserve x23 instead of x20.
Peter Collingbourne [Sat, 16 Jan 2021 00:07:21 +0000 (16:07 -0800)]
hwasan: Update register-dump-read.c test to reserve x23 instead of x20.

D90422 changed this test to write a fixed value into register x23
instead of x20, but it did not update the list of reserved registers.
This meant that x23 may have been live across the register write,
although this happens to not be the case with the current compiler.
Fix the problem by updating the reserved register list.

3 years agoRevert "[WebAssembly] Add support for table linking to wasm-ld"
Derek Schuff [Fri, 15 Jan 2021 23:50:41 +0000 (15:50 -0800)]
Revert "[WebAssembly] Add support for table linking to wasm-ld"

This reverts commit 38dfce706f796dc109ea495dd69a8cb4c8fa819d.
CI discovered a bug where the table is exported twice: see
D91870

3 years agoRevert "[WebAssembly] MC layer writes table symbols to object files"
Derek Schuff [Fri, 15 Jan 2021 23:50:22 +0000 (15:50 -0800)]
Revert "[WebAssembly] MC layer writes table symbols to object files"

This reverts commit e9f1ed2306b1b3aedcb1acef2b50e252a77a04b9.

Reverting because it depends on 38dfce706f

3 years ago[SimplifyCFG] Optimize CFG when null is passed to a function with nonnull argument
Dávid Bolvanský [Fri, 15 Jan 2021 22:07:29 +0000 (23:07 +0100)]
[SimplifyCFG] Optimize CFG when null is passed to a function with nonnull argument

Example:

```
__attribute__((nonnull,noinline)) char * pinc(char *p)  {
  return ++p;
}

char * foo(bool b, char *a) {
       return pinc(b ? 0 : a);

}
```

optimize to

```
char * foo(bool b, char *a) {
       return pinc(a);

}
```

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D94180

3 years ago[ADT][Support] Fix C4146 error from MSVC
Vladislav Vinogradov [Fri, 15 Jan 2021 22:32:38 +0000 (14:32 -0800)]
[ADT][Support] Fix C4146 error from MSVC

Unary minus operator applied to unsigned type, result still unsigned.

Use `~0U` instead of `-1U` and `1 + ~VAL` instead of `-VAL`.

Reviewed By: dblaikie

Differential Revision: https://reviews.llvm.org/D94417

3 years ago[AArch64][GlobalISel] Select immediate fcmp if the zero is on the LHS.
Amara Emerson [Fri, 15 Jan 2021 22:31:03 +0000 (14:31 -0800)]
[AArch64][GlobalISel] Select immediate fcmp if the zero is on the LHS.

3 years agoRevert "Revert "ADT: Fix reference invalidation in SmallVector...""
Duncan P. N. Exon Smith [Fri, 15 Jan 2021 21:53:02 +0000 (13:53 -0800)]
Revert "Revert "ADT: Fix reference invalidation in SmallVector...""

This reverts commit 33be50daa9ce1074c3b423a4ab27c70c0722113a,
effectively reapplying:

260a856c2abcef49c7cb3bdcd999701db3e2af38
3043e5a5c33c4c871f4a1dfd621a8839f9a1f0b3
49142991a685bd427d7e877c29c77371dfb7634c

... with a fix to skip a call to `SmallVector::isReferenceToStorage()`
when we know the parameter had been taken by value for small, POD-like
`T`. See https://reviews.llvm.org/D93779 for the discussion on the
revert.

At a high-level, these commits fix reference invalidation in
SmallVector's push_back, append, insert (one or N), and resize
operations. For more details, please see the original commit messages.

This commit fixes a bug that crept into
`SmallVectorTemplateCommon::reserveForAndGetAddress()` during the review
process after performance analysis was done. That function is now called
`reserveForParamAndGetAddress()`, clarifying that it only works for
parameter values. It uses that knowledge to bypass
`SmallVector::isReferenceToStorage()` when `TakesParamByValue`. This is
`constexpr` and avoids adding overhead for "small enough", trivially
copyable `T`.

Performance could potentially be tuned further by increasing the
threshold for `TakesParamByValue`, which is currently defined as:
```
bool TakesParamByValue = sizeof(T) <= 2 * sizeof(void *);
```
in the POD-like version of SmallVectorTemplateBase (else, `false`).

Differential Revision: https://reviews.llvm.org/D94800

3 years ago[SLP] remove dead code in reduction matching; NFC
Sanjay Patel [Fri, 15 Jan 2021 21:53:15 +0000 (16:53 -0500)]
[SLP] remove dead code in reduction matching; NFC

To get into this block we had: !A || B || C
and we checked C in the first 'if' clause
leaving !A || B. But the 2nd 'if' is checking:
A && !B --> !(!A || B)

3 years agoSkip 'g' packet tests when running on darwin; debugserver doesn't impl
Jason Molenda [Fri, 15 Jan 2021 21:57:59 +0000 (13:57 -0800)]
Skip 'g' packet tests when running on darwin; debugserver doesn't impl

Differential Revision: https://reviews.llvm.org/D94754

3 years ago[mlir][Linalg] Add missing check to canonicalization of GenericOp that are identity...
MaheshRavishankar [Fri, 15 Jan 2021 21:17:30 +0000 (13:17 -0800)]
[mlir][Linalg] Add missing check to canonicalization of GenericOp that are identity ops.

The operantion is an identity if the values yielded by the operation
is the argument of the basic block of that operation. Add this missing check.

Differential Revision: https://reviews.llvm.org/D94819

3 years agoBreakCriticalEdges: do not split the critical edge from a CallBr indirect successor
Nick Desaulniers [Fri, 15 Jan 2021 21:40:20 +0000 (13:40 -0800)]
BreakCriticalEdges: do not split the critical edge from a CallBr indirect successor

Otherwise we'll fail the assertion in SplitBlockPredecessors() related
to splitting the edges from CallBr's.

Fixes: https://github.com/ClangBuiltLinux/linux/issues/1161
Fixes: https://github.com/ClangBuiltLinux/linux/issues/1252

Reviewed By: void, MaskRay, jyknight

Differential Revision: https://reviews.llvm.org/D88438

3 years ago[Sema] turns -Wfree-nonheap-object on by default
Christopher Di Bella [Thu, 7 Jan 2021 23:04:20 +0000 (23:04 +0000)]
[Sema] turns -Wfree-nonheap-object on by default

We'd discussed adding the warning to -Wall in D89988. This patch honours that.

3 years ago[MSVC] Don't add -nostdinc++ -isystem to runtimes builds
Reid Kleckner [Fri, 15 Jan 2021 20:35:42 +0000 (12:35 -0800)]
[MSVC] Don't add -nostdinc++ -isystem to runtimes builds

If the host compiler is MSVC or clang-cl, then the compiler used to
buidl the runtimes will be clang-cl, and it doesn't support either of
those flags.

Worse, because -isystem is a space separated flag, it causes all cmake
try_compile tests to fail, so none of the -Wno-* flags make it to the
compiler in libcxx. I noticed that we weren't passing
-Wno-user-defined-literals to clang-cl and were getting warnings in the
build, and this fixes that for me.

Differential Revision: https://reviews.llvm.org/D94817

3 years ago[GWP-ASan] Add inbuilt options parser.
Mitch Phillips [Fri, 15 Jan 2021 20:57:00 +0000 (12:57 -0800)]
[GWP-ASan] Add inbuilt options parser.

Adds a modified options parser (shamefully pulled from Scudo, which
shamefully pulled it from sanitizer-common) to GWP-ASan. This allows
customers (Android) to parse options strings in a common way.

Depends on D94117.

AOSP side of these patches is staged at:

 - sepolicy (sysprops should only be settable by the shell, in both root and
 unrooted conditions):
 https://android-review.googlesource.com/c/platform/system/sepolicy/+/1517238

 - zygote updates:
 https://android-review.googlesource.com/c/platform/frameworks/base/+/1515009

 - bionic changes to add `gwp_asan.<process_name>` system property, and
 GWP_ASAN_OPTIONS environment variable:
 https://android-review.googlesource.com/c/platform/bionic/+/1514989

Reviewed By: eugenis

Differential Revision: https://reviews.llvm.org/D92696

3 years ago[SimplifyCFG] switchToSelect(): don't forget to insert DomTree edge iff needed
Roman Lebedev [Fri, 15 Jan 2021 17:57:28 +0000 (20:57 +0300)]
[SimplifyCFG] switchToSelect(): don't forget to insert DomTree edge iff needed

DestBB might or might not already be a successor of SelectBB,
and it wasn't we need to ensure that we record the fact in DomTree.

The testcase used to crash in lazy domtree updater mode + non-per-function
domtree validity checks disabled.

3 years ago[SimplifyCFG][BasicBlockUtils] Port SplitBlockPredecessors()/SplitLandingPadPredecess...
Roman Lebedev [Tue, 12 Jan 2021 18:49:56 +0000 (21:49 +0300)]
[SimplifyCFG][BasicBlockUtils] Port SplitBlockPredecessors()/SplitLandingPadPredecessors() to DomTreeUpdater

This is not nice, but it's the best transient solution possible,
and is better than just duplicating the whole function.

The problem is, this function is widely used,
and it is not at all obvious that all the users
could be painlessly switched to operate on DomTreeUpdater,
and somehow i don't feel like porting all those users first.

This function is one of last three that not operate on DomTreeUpdater.

3 years ago[SimplifyCFG] Port SplitBlockAndInsertIfThen() to DomTreeUpdater
Roman Lebedev [Tue, 12 Jan 2021 13:49:32 +0000 (16:49 +0300)]
[SimplifyCFG] Port SplitBlockAndInsertIfThen() to DomTreeUpdater

This is not nice, but it's the best transient solution possible,
and is better than just duplicating the whole function.

The problem is, this function is widely used,
and it is not at all obvious that all the users
could be painlessly switched to operate on DomTreeUpdater,
and somehow i don't feel like porting all those users first.

This function is one of last three that not operate on DomTreeUpdater.

3 years ago[Utils][SimplifyCFG] Port SplitBlock() to DomTreeUpdater
Roman Lebedev [Tue, 12 Jan 2021 17:15:21 +0000 (20:15 +0300)]
[Utils][SimplifyCFG] Port SplitBlock() to DomTreeUpdater

This is not nice, but it's the best transient solution possible,
and is better than just duplicating the whole function.

The problem is, this function is widely used,
and it is not at all obvious that all the users
could be painlessly switched to operate on DomTreeUpdater,
and somehow i don't feel like porting all those users first.

This function is one of last three that not operate on DomTreeUpdater.

3 years ago[Utils] splitBlockBefore() always operates on DomTreeUpdater, so take it, not DomTree
Roman Lebedev [Tue, 12 Jan 2021 16:43:16 +0000 (19:43 +0300)]
[Utils] splitBlockBefore() always operates on DomTreeUpdater, so take it, not DomTree

Even though not all it's users operate on DomTreeUpdater,
it itself internally operates on DomTreeUpdater,
so it must mean everything is fine with that,
so just do that globally.

3 years ago[NFC][SimplifyCFG] Add testcase showing that we fail to preserve DomTree in switchToS...
Roman Lebedev [Fri, 15 Jan 2021 16:44:18 +0000 (19:44 +0300)]
[NFC][SimplifyCFG] Add testcase showing that we fail to preserve DomTree in switchToSelect()

3 years agoRevert "[BasicAA] Handle recursive queries more efficiently"
Reid Kleckner [Fri, 15 Jan 2021 20:27:38 +0000 (12:27 -0800)]
Revert "[BasicAA] Handle recursive queries more efficiently"

This reverts commit a3904cc77f181cff7355357688edfc392a236f5d.
It causes the compiler to crash while building Harfbuzz for ARM in
Chromium, reduced reproducer forthcoming:
https://crbug.com/1167305

3 years ago[CodeView][DebugInfo] Add test case to show that linkage names are not
Amy Huang [Fri, 15 Jan 2021 17:31:10 +0000 (09:31 -0800)]
[CodeView][DebugInfo] Add test case to show that linkage names are not
being added to class types in -gline-tables-only.
Also changed the name of the test file for clarity.
(follow up to D94639)

3 years ago[SLP] remove unused reduction functions; NFC
Sanjay Patel [Fri, 15 Jan 2021 19:34:33 +0000 (14:34 -0500)]
[SLP] remove unused reduction functions; NFC

These were made obsolete by simplifying the code in recent patches.

3 years ago[CodeGen] Removes unwanted optimisation for TargetConstantFP
Craig Topper [Fri, 15 Jan 2021 19:38:51 +0000 (11:38 -0800)]
[CodeGen] Removes unwanted optimisation for TargetConstantFP

This 'FIXME' popped up in the development of an out-of-tree backend.
Quick fix, but first llvm upstream patch, therefore I do not have commit rights, so if approved please commit?

- Test is not included as this came up in an out-of-tree backend (if required, please hint on how to test this).

Patch by simveg (Simon)

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D93219

3 years agoFix libc++ clang-cl build, swap attribute order
Reid Kleckner [Fri, 15 Jan 2021 16:56:34 +0000 (08:56 -0800)]
Fix libc++ clang-cl build, swap attribute order

Clang insists that __attribute__ attributes precede __declspec
attributes. This is a longstanding known issue:
https://llvm.org/pr24559. Re-order the visibility and deprecation macros
to fix the build.

Differential Revision: https://reviews.llvm.org/D94788

3 years agoGetMacosAlignedVersion() fails if sysctl is not setup
Julian Lettner [Wed, 6 Jan 2021 20:41:40 +0000 (12:41 -0800)]
GetMacosAlignedVersion() fails if sysctl is not setup

`GetMacosAlignedVersion()` fails for ASan-ified launchd because the
sanitizer initialization code runs before `sysctl` has been setup by
launchd.  In this situation, `sysctl kern.osproductversion` returns a
non-empty string that does not match our expectations of a
well-formatted version string.

Retrieving the kernel version (via `sysctl kern.osrelease`) still works,
so we can use it to add a fallback for this corner case.

Differential Revision: https://reviews.llvm.org/D94190

3 years ago[RISCV] Add implementation of targetShrinkDemandedConstant to optimize AND immediates.
Craig Topper [Fri, 15 Jan 2021 18:54:26 +0000 (10:54 -0800)]
[RISCV] Add implementation of targetShrinkDemandedConstant to optimize AND immediates.

SimplifyDemandedBits can remove set bits from immediates from instructions
like AND/OR/XOR. This can prevent them from being efficiently
codegened on RISCV.

This adds an initial version that tries to keep or form 12 bit
sign extended immediates for AND operations to enable use of ANDI.
If that doesn't work we'll try to create a 32 bit sign extended immediate
to use LUI+ADDIW.

More optimizations are possible for different size immediates or
different operations. But this is a good starting point that already
has test coverage.

Reviewed By: frasercrmck

Differential Revision: https://reviews.llvm.org/D94628

3 years ago[mlir] Add Complex dialect.
Alexander Belyaev [Fri, 15 Jan 2021 18:53:15 +0000 (19:53 +0100)]
[mlir] Add Complex dialect.

Differential Revision: https://reviews.llvm.org/D94764

3 years ago[MIPatternMatch] Add m_OneNonDBGUse
Jessica Paquette [Thu, 14 Jan 2021 19:09:46 +0000 (11:09 -0800)]
[MIPatternMatch] Add m_OneNonDBGUse

Add a matcher that checks if the given subpattern has only one non-debug use.

Also improve existing m_OneUse testcase.

Differential Revision: https://reviews.llvm.org/D94705

3 years ago[ARM] Tail predication with constant loop bounds
David Green [Fri, 15 Jan 2021 18:17:31 +0000 (18:17 +0000)]
[ARM] Tail predication with constant loop bounds

The TripCount for a predicated vector loop body will be
ceil(ElementCount/Width). This alters the conversion of an
active.lane.mask to a VCPT intrinsics to match.

Differential Revision: https://reviews.llvm.org/D94608

3 years ago[ARM] Constant tripcount tail predication loop tests. NFC
David Green [Fri, 15 Jan 2021 18:02:07 +0000 (18:02 +0000)]
[ARM] Constant tripcount tail predication loop tests. NFC

3 years ago[DebugInfo][CodeView] Change in line tables only mode to emit type information
Amy Huang [Tue, 12 Jan 2021 00:37:29 +0000 (16:37 -0800)]
[DebugInfo][CodeView] Change in line tables only mode to emit type information
for function scopes, rather than using the qualified name.

In line-tables-only mode, we used to emit qualified names as the display name for functions when using CodeView.
This patch changes to emitting the parent scopes instead, with forward declarations for class types.
The total object file size ends up being slightly smaller than if we use the full qualified names.

Differential Revision: https://reviews.llvm.org/D94639

3 years ago[OpenCL][Docs] Fixed cross-section reference in OpenCLSupport
Anastasia Stulova [Fri, 15 Jan 2021 17:19:16 +0000 (17:19 +0000)]
[OpenCL][Docs] Fixed cross-section reference in OpenCLSupport

Tags: #clang

3 years ago[clangd] Update CC Ranking model with better sampling.
Utkarsh Saxena [Thu, 14 Jan 2021 17:01:25 +0000 (18:01 +0100)]
[clangd] Update CC Ranking model with better sampling.

A better sampling strategy was used to generate the dataset for this
model.
New signals introduced in this model:
- NumNameInContext: Number of words in the context that matches the name
of the candidate.
- FractionNameInContext: Fraction of the words in context matching the
name of the candidate.

We remove the signal `IsForbidden` from the model and down rank
forbidden signals aggresively.

Differential Revision: https://reviews.llvm.org/D94697

3 years ago[flang][driver] Copy test file into a temp dir when testing (nfc)
Andrzej Warzynski [Fri, 15 Jan 2021 16:45:01 +0000 (16:45 +0000)]
[flang][driver] Copy test file into a temp dir when testing (nfc)

The following driver invocation will generate an output file
in the same directory as the input file:

```
flang-new -fc1 -test-io test-input.f90
```

This is the desired behaviour. However, when testing we need to make
sure that we don't pollute the source directory. To this end, copy the
input file into a temporary directory before testing.

This is similar to https://reviews.llvm.org/D94243.

3 years ago[TargetLowering] Don't speculatively call ComputeNumSignBits. NFC
Craig Topper [Fri, 15 Jan 2021 17:05:34 +0000 (09:05 -0800)]
[TargetLowering] Don't speculatively call ComputeNumSignBits. NFC

These methods are recursive so a little costly.

We only look at the result in one place in this function and it's
conditional. We also only need the second call if the first had
enough returned enough sign bits.

3 years ago[flang] Disallow INTENT attribute on procedure dummy arguments
Peter Steinfeld [Fri, 15 Jan 2021 15:04:20 +0000 (07:04 -0800)]
[flang] Disallow INTENT attribute on procedure dummy arguments

C843 states that "An entity with the INTENT attribute shall be a dummy
data object or a dummy procedure pointer."  This change enforces that
and fixes some tests that erroneously violated this rule.

Differential Revision: https://reviews.llvm.org/D94781

3 years ago[X86][SSE] Attempt to fold shuffle(binop(),binop()) -> binop(shuffle(),shuffle())
Simon Pilgrim [Fri, 15 Jan 2021 16:25:05 +0000 (16:25 +0000)]
[X86][SSE] Attempt to fold shuffle(binop(),binop()) -> binop(shuffle(),shuffle())

If this will help us fold shuffles together, then push the shuffle through the merged binops.

Ideally this would be performed in DAGCombiner::visitVECTOR_SHUFFLE but getting an efficient+legal merged shuffle can be tricky - on SSE we can be confident that for 32/64-bit elements vectors shuffles should easily fold.

3 years ago[ARM][Block placement] Check the predecessor exists before processing it
Sam Tebbs [Fri, 15 Jan 2021 14:43:10 +0000 (14:43 +0000)]
[ARM][Block placement] Check the predecessor exists before processing it

Not all machine loops will have a predecessor. so the pass needs to
check it before continuing.

Reviewed By: dmgreen

Differential Revision: https://reviews.llvm.org/D94780

3 years ago[clang][cli] NFC: Promote ParseLangArgs and ParseCodeGenArgs to members
Jan Svoboda [Fri, 15 Jan 2021 14:44:09 +0000 (15:44 +0100)]
[clang][cli] NFC: Promote ParseLangArgs and ParseCodeGenArgs to members

This patch promotes `ParseLangArgs` and `ParseCodeGenArgs` to members of `CompilerInvocation`. That will be useful in the following patch D94682, where we need to access protected members of `LangOptions` and `CodeGenOptions`. Both of those classes already have `friend CompilerInvocation`.

This is cleaner than keeping those functions freestanding and having to specify the exact signature of both in extra `friend` declarations.

Reviewed By: Bigcheese

Differential Revision: https://reviews.llvm.org/D94681

3 years ago[clang][cli] NFC: Parse some LangOpts after the defaults are set
Jan Svoboda [Fri, 15 Jan 2021 14:43:18 +0000 (15:43 +0100)]
[clang][cli] NFC: Parse some LangOpts after the defaults are set

This patch ensures we only parse the necessary options before calling `setLangDefaults` (explained in D94678).

Because neither `LangOpts.CFProtectionBranch` nor `LangOpts.SYCLIsDevice` are used in `setLangDefaults`, this is a NFC.

Reviewed By: Bigcheese

Differential Revision: https://reviews.llvm.org/D94680

3 years ago[clang][cli] NFC: Add PIE parsing for precompiled input and IR
Jan Svoboda [Fri, 15 Jan 2021 14:42:29 +0000 (15:42 +0100)]
[clang][cli] NFC: Add PIE parsing for precompiled input and IR

This patch effectively reverts a small part of D83979.

When we stop parsing `LangOpts` unconditionally in `parseSimpleArgs` (above the diff) and move them back to `ParseLangArgs` (called in `else` branch) in D94682, `LangOpts.PIE` would never get parsed in this `if` branch. This patch ensures this doesn't happen.

Right now, this causes `LangOpts.PIE` to be parsed twice, but that will be immediately corrected in D94682.

Reviewed By: Bigcheese

Differential Revision: https://reviews.llvm.org/D94679

3 years ago[RISCV][NFC] Fix order of parameters in cmov ge/le tests
Michael Munday [Fri, 15 Jan 2021 15:32:31 +0000 (15:32 +0000)]
[RISCV][NFC] Fix order of parameters in cmov ge/le tests

The first parameter should be selected if the condition is true and
the last parameter if the condition is false. Prior to this change
it was the other way round which was confusing.

Differential Revision: https://reviews.llvm.org/D94729

3 years ago[libc] CopyAlignedBlocks can now specify alignment on top of block size
Guillaume Chatelet [Fri, 15 Jan 2021 15:32:02 +0000 (15:32 +0000)]
[libc] CopyAlignedBlocks can now specify alignment on top of block size

This has been requested in D92236

Differential Revision: https://reviews.llvm.org/D94770

3 years ago[mlir] Add better support for f80 and f128
Valentin Clement [Fri, 15 Jan 2021 15:29:37 +0000 (10:29 -0500)]
[mlir] Add better support for f80 and f128

Add builtin f80 and f128 following @schweitz proposition
https://llvm.discourse.group/t/rfc-adding-better-support-for-higher-precision-floating-point/2526/5

Reviewed By: ftynse, rriddle

Differential Revision: https://reviews.llvm.org/D94737

3 years ago[DAG] visitVECTOR_SHUFFLE - MergeInnerShuffle - improve shuffle(shuffle(x,y),shuffle...
Simon Pilgrim [Fri, 15 Jan 2021 15:08:17 +0000 (15:08 +0000)]
[DAG] visitVECTOR_SHUFFLE - MergeInnerShuffle - improve shuffle(shuffle(x,y),shuffle(x,y)) merging

MergeInnerShuffle currently attempts to merge shuffle(shuffle(x,y),z) patterns into a single shuffle, using 1 or 2 of the x,y,z ops.

However if we already match 2 ops we might be able to handle the third op if its also a shuffle that references one of the previous ops, allowing us to handle some cases like:

shuffle(shuffle(x,y),shuffle(x,y))
shuffle(shuffle(shuffle(x,z),y),z)
shuffle(shuffle(x,shuffle(x,y)),z)
etc.

This isn't an exhaustive match and is dependent on the order the candidate ops are encountered - if one of the matched ops was a shuffle that was peek-able we don't go back and try to split that, I haven't found much need for that amount of analysis yet.

This is a preliminary patch that will allow us to later improve x86 HADD/HSUB matching - but needs to be reviewed separately as its in generic code and affects existing Thumb2 tests.

Differential Revision: https://reviews.llvm.org/D94671

3 years agoSet option default for enabling memory ssa for new pass manager loop sink pass to...
Jamie Schmeiser [Fri, 15 Jan 2021 14:51:34 +0000 (09:51 -0500)]
Set option default for enabling memory ssa for new pass manager loop sink pass to true.
Summary:
Set the default for the option enabling memory ssa use in the loop sink
pass to true for the new pass manager.
Author: Jamie Schmeiser <schmeise@ca.ibm.com>
Reviewed By: asbirlea (Alina Sbirlea)
Differential Revision: https://reviews.llvm.org/D92486

3 years ago[X86] Add umin knownbits/demandedbits ult test for D94532
Simon Pilgrim [Fri, 15 Jan 2021 14:42:42 +0000 (14:42 +0000)]
[X86] Add umin knownbits/demandedbits ult test for D94532