platform/upstream/llvm.git
3 years agoRemove redundant Begin/End form signpost format strings.
Adrian Prantl [Thu, 3 Jun 2021 18:22:24 +0000 (11:22 -0700)]
Remove redundant Begin/End form signpost format strings.

The os_signpost API already captures the begin/end part and in
Instruments, this just adds visual noise that gets in the way of the
interesting data. By removing the redundant end text, the display in
Instruments gets even less cluttered.

rdar://78636200

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

3 years ago[libcxx][module-map] creates submodules for private headers
Christopher Di Bella [Wed, 2 Jun 2021 19:46:20 +0000 (19:46 +0000)]
[libcxx][module-map] creates submodules for private headers

Most of our private headers need to be treated as submodules so that
Clang modules can export things correctly. Previous commits that split
monolithic headers into smaller chunks were unaware of this requirement,
and so this is being addressed in one fell swoop. Moving forward, most
new headers will need to have their own submodule (anything that's
conditionally included is exempt from this rule, which means `__support`
headers aren't made into submodules).

This hasn't been marked NFC, since I'm not 100% sure that's the case.

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

3 years agoDon't delete the module you're inspecting
Chris Bieneman [Wed, 2 Jun 2021 18:48:58 +0000 (13:48 -0500)]
Don't delete the module you're inspecting

Prior to this patch when you used `clang -module-file-info` clang would
delete the module on completion because the module was treated as an
output file.

This fixes the issue so you don't need to invoke cc1 directly to get
module file information.

Reviewed By: steven_wu, phosek

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

3 years ago[InstCombine] eliminate sext and/or trunc if value has enough signbits
Sanjay Patel [Thu, 3 Jun 2021 17:15:23 +0000 (13:15 -0400)]
[InstCombine] eliminate sext and/or trunc if value has enough signbits

If we have enough signbits in a source value, we can skip an
intermediate cast for a trunc+sext pair:
https://alive2.llvm.org/ce/z/A_mQt-

This is the original problem shown in:
https://llvm.org/PR49543

There's a test that shows we transformed what used to be
a pair of shifts, so that suggests we could add another
ComputeNumSignBits fold starting from a shift.

There does not appear to be any change in compile-time
from the extra analysis:
https://llvm-compile-time-tracker.com/compare.php?from=3d2c9069dcafd0cbb641841aa3dd6e851fb7d760&to=b9513cdf2419704c7bb0c3a02a9ca06aae13d902&stat=instructions

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

3 years agoFully-qualify template args of outer types in getFullyQualifiedType
Victor Kuznetsov [Thu, 3 Jun 2021 17:23:49 +0000 (10:23 -0700)]
Fully-qualify template args of outer types in getFullyQualifiedType

Template args of outer types were not fully-qualified when calling getFullyQualifiedType() for inner types.

For simplicity the patch is a copy-paste of the same call from getFullyQualifiedType().

Reviewed at: https://reviews.llvm.org/D103039

3 years ago[LoopUnroll] Eliminate PreserveOnlyFirst parameter [nfc]
Philip Reames [Thu, 3 Jun 2021 17:28:10 +0000 (10:28 -0700)]
[LoopUnroll] Eliminate PreserveOnlyFirst parameter [nfc]

This is a first step towards simplifying the transform interface to be less error prone. The basic idea is that querying SCEV is cheap (since it's cached) and we can just check for properties related to branch folding in the transform method instead of relying on the heuristic part to pass everything in correctly.

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

3 years ago[SLP]Improve cost estimation/emission of externally used extractelements.
Alexey Bataev [Fri, 21 May 2021 17:09:12 +0000 (10:09 -0700)]
[SLP]Improve cost estimation/emission of externally used extractelements.

No need to recalculate the cost of extractelements, just no need to
compensate the cost of all extractelements, need to check before if this
is actually going to be removed at the vectorization. Also, no need to
 generate new extractelement instruction, we may just regenerate the
 original one. It may improve the final vectorization.

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

3 years ago[LoopUnroll] Reorder code to max dom tree update more obvious [nfc]
Philip Reames [Thu, 3 Jun 2021 17:05:12 +0000 (10:05 -0700)]
[LoopUnroll] Reorder code to max dom tree update more obvious [nfc]

This cleans up the unroll action into two phases. Phase 1 does the mechanical act of unrolling, and leaves all conditional branches in place. Phase 2 optimizes away some of the conditional branches and then simplifies the loop. The primary benefit of the reordering is that we can delete some special cases dom tree update logic.

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

3 years agoadd ppc_fp128 bitcode writer testcase
Jinsong Ji [Thu, 3 Jun 2021 16:43:15 +0000 (16:43 +0000)]
add ppc_fp128 bitcode writer testcase

3 years ago[SLP]Allow to reorder nodes with >2 scalar values.
Alexey Bataev [Thu, 27 May 2021 13:19:32 +0000 (06:19 -0700)]
[SLP]Allow to reorder nodes with >2 scalar values.

tryToVectorizeList function allows to reorder only 2 scalars. Patch
allows to reorder >2 scalars. Also, to avoid possible regressions, it
allows extra vectorization of the remaining parts of the scalars
elements if possible.

Part of D57059.

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

3 years ago[Tests] Add missing include (NFC)
Nikita Popov [Thu, 3 Jun 2021 16:58:29 +0000 (18:58 +0200)]
[Tests] Add missing include (NFC)

Fix one more missing include in a unit test after
983565a6fe4a9f40c7caf82b65c650c20dbcc104.

3 years ago[lld] Add missing includes (NFC)
Nikita Popov [Thu, 3 Jun 2021 16:54:23 +0000 (18:54 +0200)]
[lld] Add missing includes (NFC)

Fix lld build after 983565a6fe4a9f40c7caf82b65c650c20dbcc104.

3 years ago[SLP] Avoid std::stable_sort(properlyDominates()).
Harald van Dijk [Thu, 3 Jun 2021 16:51:52 +0000 (17:51 +0100)]
[SLP] Avoid std::stable_sort(properlyDominates()).

As noticed by NAKAMURA Takumi back in 2017, we cannot use
properlyDominates for std::stable_sort as properlyDominates only
partially orders blocks. That is, for blocks A, B, C, D, where A
dominates B and C dominates D, we have A == C, B == C, but A < B. This
is not a valid comparison function for std::stable_sort and causes
different results between libstdc++ and libc++. This change uses DFS
numbering to give deterministic results for all reachable blocks.
Unreachable blocks are ignored already, so do not need special
consideration.

Reviewed By: RKSimon

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

3 years ago[MC] Add missing include (NFC)
Nikita Popov [Thu, 3 Jun 2021 16:47:51 +0000 (18:47 +0200)]
[MC] Add missing include (NFC)

Try to fix buildbots after 983565a6fe4a9f40c7caf82b65c650c20dbcc104.

3 years ago[mailmap] Add my entry
Fangrui Song [Thu, 3 Jun 2021 16:45:19 +0000 (09:45 -0700)]
[mailmap] Add my entry

3 years ago[ADT] Move DenseMapInfo for ArrayRef/StringRef into respective headers (NFC)
Nikita Popov [Tue, 1 Jun 2021 20:41:08 +0000 (22:41 +0200)]
[ADT] Move DenseMapInfo for ArrayRef/StringRef into respective headers (NFC)

This is a followup to D103422. The DenseMapInfo implementations for
ArrayRef and StringRef are moved into the ArrayRef.h and StringRef.h
headers, which means that these two headers no longer need to be
included by DenseMapInfo.h.

This required adding a few additional includes, as many files were
relying on various things pulled in by ArrayRef.h.

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

3 years ago[libc++][nfc] Add more nasty macros.
Mark de Wever [Wed, 2 Jun 2021 17:54:06 +0000 (19:54 +0200)]
[libc++][nfc] Add more nasty macros.

D101613 added some macros used by Microsofts SAL. D103425 uses `__pre`
and `__post`. They are also used by SAL and cause issues when used on
Windows. Add them to the blacklist making it easier to figure out what
the issue is.

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

3 years agoRevert "[DebugInstrRef][2/3] Track PHI values through register coalescing"
Jeremy Morse [Thu, 3 Jun 2021 16:16:58 +0000 (17:16 +0100)]
Revert "[DebugInstrRef][2/3] Track PHI values through register coalescing"

This reverts commit ae4303b42cfa5c8c14e3fff67d73af2f154aea9a.

Expensive checks buildbot has found a problem with this:

  https://lab.llvm.org/buildbot/#/builders/16/builds/11863

3 years ago[CostModel][AArch64] Add tests for ctlz, ctpop and cttz. NFC.
Rosie Sumpter [Wed, 2 Jun 2021 15:10:27 +0000 (16:10 +0100)]
[CostModel][AArch64] Add tests for ctlz, ctpop and cttz. NFC.

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

3 years ago[DebugInstrRef][2/3] Track PHI values through register coalescing
Jeremy Morse [Thu, 3 Jun 2021 15:43:49 +0000 (16:43 +0100)]
[DebugInstrRef][2/3] Track PHI values through register coalescing

In the instruction referencing variable location model, we store variable
locations that point at PHIs in MachineFunction during register
allocation. Unfortunately, register coalescing can substantially change
the locations of registers, and so that PHI-variable-location side table
needs maintenence during the pass.

This patch builds an index from the side table, and whenever a vreg gets
coalesced into another vreg, update the index to record the new vreg that
the PHI happens in. It also accepts a limited range of subregister
coalescing, for example merging a subregister into a larger class.

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

3 years ago[lld-macho] Parse re-exports of nested TAPI documents
Jez Ng [Thu, 3 Jun 2021 01:53:44 +0000 (21:53 -0400)]
[lld-macho] Parse re-exports of nested TAPI documents

D103423 neglected to call `parseReexports()` for nested TBD
documents, leading to symbol resolution failures when trying to look up
a symbol nested more than one level deep in a TBD file. This fixes the
regression and adds a test.

It also appears that `umbrella` wasn't being set properly when calling
`parseLoadCommands` -- it's supposed to resolve to `this` if `nullptr`
is passed. I didn't write a failing test case for this but I've made
`umbrella` a member so the previous behavior should be preserved.

Reviewed By: #lld-macho, thakis

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

3 years ago[clang-format] Add PPIndentWidth option
Gerhard Gappmeier [Thu, 3 Jun 2021 14:56:56 +0000 (16:56 +0200)]
[clang-format] Add PPIndentWidth option

This allows to set a different indent width for preprocessor statements.

Example:

 #ifdef __linux_
 # define FOO
 #endif

int main(void)
{
    return 0;
}

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

3 years ago[clang-format] Fix PointerAlignmentRight with AlignConsecutiveDeclarations
Gerhard Gappmeier [Thu, 3 Jun 2021 14:52:55 +0000 (16:52 +0200)]
[clang-format] Fix PointerAlignmentRight with AlignConsecutiveDeclarations

This re-applies the old patch D27651, which was never landed, into the
latest "main" branch, without understanding the code. I just applied
the changes "mechanically" and made it compiling again.

This makes the right pointer alignment working as expected.
Fixes https://llvm.org/PR27353

For instance

const char* const* v1;
float const* v2;
SomeVeryLongType const& v3;

was formatted as

const char *const *     v1;
float const *           v2;
SomeVeryLongType const &v3;

This patch keep the *s or &s aligned to the right, next to their variable.
The above example is now formatted as

const char *const      *v1;
float const            *v2;
SomeVeryLongType const &v3;

It is a pity that this still does not work with clang-format in 2021,
even though there was a fix available in 2016. IMHO right pointer alignment
is the default case in C, because syntactically the pointer belongs to the
variable.

See

int* a, b, c; // wrong, just the 1st variable is a pointer

vs.

int *a, *b, *c; // right

Prominent example is the Linux kernel coding style.

Some styles argue the left pointer alignment is better and declaration
lists as shown above should be avoided. That's ok, as different projects
can use different styles, but this important style should work too.

I hope that somebody that has a better understanding about the code,
can take over this patch and land it into main.

For now I must maintain this fork to make it working for our projects.

Cheers,
Gerhard.

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

3 years ago[mlir][sparse] add more type combinations to sparse storage scheme
Aart Bik [Wed, 2 Jun 2021 23:08:16 +0000 (16:08 -0700)]
[mlir][sparse] add more type combinations to sparse storage scheme

Useful for "exhaustively" testing and benchmarking annotation combinations
to verify correctness and perform state space search for best performing.

Reviewed By: penpornk

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

3 years ago[mlir][linalg] Cleanup LinalgOp usage in capi.
Tobias Gysi [Thu, 3 Jun 2021 15:23:14 +0000 (15:23 +0000)]
[mlir][linalg] Cleanup LinalgOp usage in capi.

Replace the uses of deprecated Structured Op Interface methods in Linalg.cpp. This patch is based on https://reviews.llvm.org/D103394.

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

3 years ago[RISCV] Precommit a test case to show overwriting vector frame objects.
Hsiangkai Wang [Thu, 3 Jun 2021 13:24:24 +0000 (21:24 +0800)]
[RISCV] Precommit a test case to show overwriting vector frame objects.

3 years ago[mlir] Fix warnings.
Alexander Belyaev [Thu, 3 Jun 2021 14:27:29 +0000 (16:27 +0200)]
[mlir] Fix warnings.

3 years ago[mlir][linalg] Cleanup LinalgOp usage in scalar inlining.
Tobias Gysi [Thu, 3 Jun 2021 14:19:19 +0000 (14:19 +0000)]
[mlir][linalg] Cleanup LinalgOp usage in scalar inlining.

Replace the uses of deprecated Structured Op Interface methods in InlineScalarOperands.cpp. This patch is based on https://reviews.llvm.org/D103394.

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

3 years ago[flang] Check for duplicate definitions of defined input/output procedures
Peter Steinfeld [Wed, 2 Jun 2021 21:55:41 +0000 (14:55 -0700)]
[flang] Check for duplicate definitions of defined input/output procedures

It's possible to specify defined input/output procedures either as a
type-bound procedure of a derived type or as a defined-io-generic-spec.  This
means that you can specify the same procedure in both mechanisms, which does
not cause problems.  Alternatively, you can specify two different procedures to
be the defined input/output procedure for the same derived type.  This is an
error.  This change catches this error.  The situation is slightly complicated
by parameterized derived types.  Types with the same value for a KIND parameter
are treated as the same type while types with different KIND parameters are
treated as different types.

I implemented this check by adding a vector to keep track of which defined
input/output procedures had been seen for which derived types along with the
kind of procedure (read vs write and formatted vs unformatted).  I also added
tests for non-parameterized types and types parameterized by KIND and LEN type
parameters.

I also removed an erroneous check from the code that creates runtime type
information.

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

3 years ago[Matrix] Preserve existing fast-math flags during lowering
Hamza Mahfooz [Thu, 3 Jun 2021 14:11:00 +0000 (15:11 +0100)]
[Matrix] Preserve existing fast-math flags during lowering

This patch makes it so, floating-point instructions created in
LowerMatrixIntrinsics retain fast-math flags from instructions that are
higher up the chain.

Fixes https://bugs.llvm.org/show_bug.cgi?id=49738

Reviewed By: fhahn

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

3 years ago[analyzer] Add forwarding `addVisitor` method
Valeriy Savchenko [Tue, 1 Jun 2021 13:26:53 +0000 (16:26 +0300)]
[analyzer] Add forwarding `addVisitor` method

The majority of all `addVisitor` callers follow the same pattern:
  addVisitor(std::make_unique<SomeVisitor>(arg1, arg2, ...));

This patches introduces additional overload for `addVisitor` to simplify
that pattern:
  addVisitor<SomeVisitor>(arg1, arg2, ...);

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

3 years ago[mlir][linalg] Cleanup LinalgOp usage in op declarations.
Tobias Gysi [Thu, 3 Jun 2021 13:33:39 +0000 (13:33 +0000)]
[mlir][linalg] Cleanup LinalgOp usage in op declarations.

Replace the uses of deprecated Structured Op Interface methods in LinalgOps.cpp. This patch is based on https://reviews.llvm.org/D103394.

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

3 years ago[libc++] Remove unused variable warnings
Louis Dionne [Wed, 2 Jun 2021 22:24:28 +0000 (18:24 -0400)]
[libc++] Remove unused variable warnings

Since D100581, Clang started flagging this variable which is set but
never read. Based on comparing this function with __match_at_start_posix_nosubs
(which is very similar), I am pretty confident that `__j` was simply left
behind as an oversight in Howard's 6afe8b0a2336.

Also workaround some unused variable warnings in the <random> tests.
It's pretty lame that we're not asserting the skew and kurtosis of
the binomial and negative binomial distributions, but that should be
tackled separately.

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

3 years ago[mlir][linalg] Cleanup LinalgOp usage in loop lowering.
Tobias Gysi [Thu, 3 Jun 2021 12:55:39 +0000 (12:55 +0000)]
[mlir][linalg] Cleanup LinalgOp usage in loop lowering.

Replace the uses of deprecated Structured Op Interface methods in Loops.cpp. This patch is based on https://reviews.llvm.org/D103394.

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

3 years ago[mlir][linalg] Transform PadTensorOp into InitOp, FillOp, GenericOp
Nicolas Agostini [Thu, 3 Jun 2021 13:07:07 +0000 (22:07 +0900)]
[mlir][linalg] Transform PadTensorOp into InitOp, FillOp, GenericOp

Introduces a test pass that rewrites PadTensorOps with static shapes as a sequence of:

```
linalg.init_tensor // to create output
linalg.fill        // to initialize with padding value
linalg.generic     // to copy the original contents to the padded tensor
```

The pass can be triggered with:

- `--test-linalg-transform-patterns="test-transform-pad-tensor"`

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

3 years ago[lit] Fix testing of standalone clang and lld builds
James Henderson [Wed, 26 May 2021 11:53:00 +0000 (12:53 +0100)]
[lit] Fix testing of standalone clang and lld builds

In such cases, the executables are not in the llvm_tools_dir directory, so we need to look in the other search locations. Previously, they were found via the PATH, but this was disabled by default in commit rGa1e6565.

Depends on D103154.

Reviewed By: thopre

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

3 years ago[mlir][linalg] Cleanup LinalgOp usage in drop unit dims.
Tobias Gysi [Thu, 3 Jun 2021 12:24:59 +0000 (12:24 +0000)]
[mlir][linalg] Cleanup LinalgOp usage in drop unit dims.

Replace the uses of deprecated Structured Op Interface methods in DropUnitDims.cpp. This patch is based on https://reviews.llvm.org/D103394.

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

3 years ago[LLD] [COFF] Fix autoexport from LTO objects with comdat symbols
Martin Storsjö [Mon, 24 May 2021 12:06:56 +0000 (15:06 +0300)]
[LLD] [COFF] Fix autoexport from LTO objects with comdat symbols

Make sure that comdat symbols also have a non-null dummy
SectionChunk associated.

This requires moving around an existing FIXME regarding comdats in
LTO.

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

3 years ago[mlir][linalg] Cleanup LinalgOp usage in bufferize, detensorize, and interchange.
Tobias Gysi [Thu, 3 Jun 2021 11:32:11 +0000 (11:32 +0000)]
[mlir][linalg] Cleanup LinalgOp usage in bufferize, detensorize, and interchange.

Replace the uses of deprecated Structured Op Interface methods in Bufferize.cpp, Detensorize.cpp, and Interchange.cpp. The patch is based on https://reviews.llvm.org/D103394.

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

3 years ago[mlir][linalg] Cleanup LinalgOp usage in test passes.
Tobias Gysi [Thu, 3 Jun 2021 11:33:30 +0000 (11:33 +0000)]
[mlir][linalg] Cleanup LinalgOp usage in test passes.

Replace the uses of deprecated Structured Op Interface methods in TestLinalgElementwiseFusion.cpp, TestLinalgFusionTransforms.cpp, and Transforms.cpp. The patch is based on https://reviews.llvm.org/D103394.

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

3 years ago[ARM] Prettify gather/scatter debug comments. NFC
David Green [Thu, 3 Jun 2021 11:33:03 +0000 (12:33 +0100)]
[ARM] Prettify gather/scatter debug comments. NFC

3 years ago[mlir][linalg] Cleanup LinalgOp usage in promotion.
Tobias Gysi [Thu, 3 Jun 2021 11:00:36 +0000 (11:00 +0000)]
[mlir][linalg] Cleanup LinalgOp usage in promotion.

Replace the uses of deprecated Structured Op Interface methods in Promotion.cpp. This patch is based on https://reviews.llvm.org/D103394.

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

3 years ago[LLDB] Skip TestDataFormatterStdUniquePtr.py on arm/linux
Muhammad Omair Javaid [Thu, 3 Jun 2021 09:52:18 +0000 (14:52 +0500)]
[LLDB] Skip TestDataFormatterStdUniquePtr.py on arm/linux

TestDataFormatterStdUniquePtr.py fails on lldb arm/aarch64 linux
buildbot but not reproducible on test machine. Skipping for now.

3 years ago[LLDB] Skip TestDataFormatterStdUniquePtr.py on arm/linux
Muhammad Omair Javaid [Thu, 3 Jun 2021 09:52:18 +0000 (14:52 +0500)]
[LLDB] Skip TestDataFormatterStdUniquePtr.py on arm/linux

TestDataFormatterStdUniquePtr.py fails on lldb arm/aarch64 linux
buildbot but not reproducible on test machine. Skipping for now.

3 years ago[RISCV] Reserve an emergency spill slot for any RVV spills
Fraser Cormack [Wed, 26 May 2021 16:56:26 +0000 (17:56 +0100)]
[RISCV] Reserve an emergency spill slot for any RVV spills

This patch addresses an issue in which fixed-length (VLS) vector RVV
code could fail to reserve an emergency spill slot for their frame index
elimination. This is because we were previously only reserving a spill
slot when there were `scalable-vector` frame indices being used.
However, fixed-length codegen uses regular-type frame indices if it
needs to spill.

This patch does the fairly brute-force method of checking ahead of time
whether the function contains any RVV spill instructions, in which case
it reserves one slot. Note that the second RVV slot is still only
reserved for `scalable-vector` frame indices.

This unfortunately causes quite a bit of churn in existing tests, where
we chop and change stack offsets for spill slots.

Reviewed By: craig.topper

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

3 years ago[mlir][linalg] Cleanup LinalgOp usage in generalization.
Tobias Gysi [Thu, 3 Jun 2021 09:20:32 +0000 (09:20 +0000)]
[mlir][linalg] Cleanup LinalgOp usage in generalization.

Replace the uses of deprecated Structured Op Interface methods in Generalization.cpp. This patch is based on https://reviews.llvm.org/D103394.

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

3 years ago[mlir] Split linalg reshape ops into expand/collapse.
Alexander Belyaev [Thu, 3 Jun 2021 09:33:56 +0000 (11:33 +0200)]
[mlir] Split linalg reshape ops into expand/collapse.

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

3 years ago[CodeGen] Fix a scalable-vector crash in VSELECT legalization
Fraser Cormack [Wed, 2 Jun 2021 16:58:29 +0000 (17:58 +0100)]
[CodeGen] Fix a scalable-vector crash in VSELECT legalization

The `DAGTypeLegalizer::WidenVSELECTMask` function is not (yet) ready for
scalable vector types, and has numerous places in which it tries to grab
either the fixed size or number of elements of its types.

I believe that it should be possible to update this method to properly
account for scalable-vector types, but we don't have test cases for
that; RISC-V bails out early on as it has legal i1 vector masks. As
such, this patch just prevents it from crashing.

Reviewed By: craig.topper

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

3 years ago[lldb][NFC] Remove unused 'using ArrayRef' in RegisterValueTest
Raphael Isemann [Thu, 3 Jun 2021 09:17:36 +0000 (11:17 +0200)]
[lldb][NFC] Remove unused 'using ArrayRef' in RegisterValueTest

3 years agoAdd -fno-visibility-inlines-hidden option
Yi Kong [Wed, 2 Jun 2021 17:05:18 +0000 (01:05 +0800)]
Add -fno-visibility-inlines-hidden option

This allows overriding -fvisibility-inlines-hidden.

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

3 years ago[clang][ARM] Remove arm2/3/6/7m CPU names
David Spickett [Mon, 24 May 2021 14:16:42 +0000 (14:16 +0000)]
[clang][ARM] Remove arm2/3/6/7m CPU names

These legacy CPUs are known to clang but not llvm.
Their use was ignored by llvm and it would print a
warning saying it did not recognise them.

However because some of them are default CPUs for their
architecture, you would get those warnings even if you didn't
choose a cpu explicitly.
(now those architectures will default to a "generic" CPU)

Information is thin on the ground for these older chips
so this is the best I could find:
https://en.wikichip.org/wiki/acorn/microarchitectures/arm2
https://en.wikichip.org/wiki/acorn/microarchitectures/arm3
https://en.wikichip.org/wiki/arm_holdings/microarchitectures/arm6
https://en.wikichip.org/wiki/arm_holdings/microarchitectures/arm7

Final part of fixing https://bugs.llvm.org/show_bug.cgi?id=50454.

Reviewed By: efriedma

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

3 years ago[ValueTypes] Fix scalable-vector changeExtendedVectorTypeToInteger
Fraser Cormack [Wed, 2 Jun 2021 16:26:25 +0000 (17:26 +0100)]
[ValueTypes] Fix scalable-vector changeExtendedVectorTypeToInteger

The attached tests check for the regression in DAGCombiner's
`visitVSELECT`, which may call this method.

Reviewed By: craig.topper

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

3 years ago[clang][clangd] Use reverse header map lookup in suggestPathToFileForDiagnostics
Dmitry Polukhin [Thu, 27 May 2021 08:20:35 +0000 (01:20 -0700)]
[clang][clangd] Use reverse header map lookup in suggestPathToFileForDiagnostics

Summary:
suggestPathToFileForDiagnostics is actively used in clangd for converting
an absolute path to a header file to a header name as it should be spelled
in the sources. Current approach converts absolute path to relative path.
This diff implements missing logic that makes a reverse lookup from the
relative path to the key in the header map that should be used in the sources.

Prerequisite diff: https://reviews.llvm.org/D103229

Test Plan: check-clang

Reviewers: dexonsmith, bruno, rsmith

Subscribers: cfe-commits

Tasks:

Tags: #clang

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

3 years agoRevert "[Fuchsia] Use libc++abi on Windows in Fuchsia toolchain"
Petr Hosek [Thu, 3 Jun 2021 08:17:48 +0000 (01:17 -0700)]
Revert "[Fuchsia] Use libc++abi on Windows in Fuchsia toolchain"

This reverts commit b5dd421a3afa02907777fddf61073274e2a4aa9a which
broke Fuchsia downstream builders.

3 years ago[mlir-reduce] Create MlirReduceLib
Chia-hung Duan [Thu, 3 Jun 2021 07:51:49 +0000 (15:51 +0800)]
[mlir-reduce] Create MlirReduceLib

Move the core reducer algorithm into a library so that it'll be easier
for porting to different projects.

Depends On D101046

Reviewed By: jpienaar, rriddle

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

3 years ago[NFC][scudo] Avoid integer overflow in test
Vitaly Buka [Thu, 3 Jun 2021 07:06:45 +0000 (00:06 -0700)]
[NFC][scudo] Avoid integer overflow in test

releasePagesToOS may shrink RSS below the value stored on start.

3 years ago[DFSan] Properly set argument ABI attributes
Arthur Eubanks [Mon, 31 May 2021 16:18:44 +0000 (09:18 -0700)]
[DFSan] Properly set argument ABI attributes

Calls must properly match argument ABI attributes with the callee.

Found via D103412.

Reviewed By: morehouse

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

3 years ago[clang] Fix fail of OpenMP/tile_codegen_tile_for.cpp.
Michael Kruse [Thu, 3 Jun 2021 01:47:54 +0000 (20:47 -0500)]
[clang] Fix fail of OpenMP/tile_codegen_tile_for.cpp.

Clang's version string can be customized using CLANG_VENDOR which the
test did not consider. Change the test to accept any version string.

3 years agoFix "control reaches end of non-void function" warnings on ppc64le
Zhaomo Yang [Thu, 3 Jun 2021 00:15:41 +0000 (00:15 +0000)]
Fix "control reaches end of non-void function" warnings on ppc64le

Warnings can be found here: https://lab.llvm.org/buildbot/#/builders/76/builds/2640

Reviewed By: ymandel

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

3 years ago[AArch64] Add regression test for missed bfi optimization.
Eli Friedman [Thu, 3 Jun 2021 00:23:58 +0000 (17:23 -0700)]
[AArch64] Add regression test for missed bfi optimization.

(See https://reviews.llvm.org/D60358 for the transform that breaks this
case.)

3 years ago[clangd] Improve resolution of static method calls in HeuristicResolver
Nathan Ridge [Mon, 19 Apr 2021 07:25:57 +0000 (03:25 -0400)]
[clangd] Improve resolution of static method calls in HeuristicResolver

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

3 years agoFix llvm/test/tools/llvm-dwp/X86/type_dedup_v5.test
James Y Knight [Thu, 3 Jun 2021 00:17:49 +0000 (20:17 -0400)]
Fix llvm/test/tools/llvm-dwp/X86/type_dedup_v5.test

It was writing files to the source dir after
316da543af14fb4b40ef0377fe770f430745f5ea.

3 years agoRecommit "Fix tmp files being left on Windows builds." with a fix for
Amy Huang [Wed, 2 Jun 2021 16:49:12 +0000 (09:49 -0700)]
Recommit "Fix tmp files being left on Windows builds." with a fix for
incorrect std::string use. (Also remove redundant call to
RemoveFileOnSignal.)

Clang writes object files by first writing to a .tmp file and then
renaming to the final .obj name. On Windows, if a compile is killed
partway through the .tmp files don't get deleted.

Currently it seems like RemoveFileOnSignal takes care of deleting the
tmp files on Linux, but on Windows we need to call
setDeleteDisposition on tmp files so that they are deleted when
closed.

This patch switches to using TempFile to create the .tmp files we write
when creating object files, since it uses setDeleteDisposition on Windows.
This change applies to both Linux and Windows for consistency.

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

This reverts commit 20797b129f844d4b12ffb2b12cf33baa2d42985c.

3 years ago[InstrProfiling] Delete linkage/visibility toggling for Windows
Fangrui Song [Wed, 2 Jun 2021 23:49:54 +0000 (16:49 -0700)]
[InstrProfiling] Delete linkage/visibility toggling for Windows

The linkage/visibility of `__profn_*` variables are derived
from the profiled functions.

    extern_weak => linkonce
    available_externally => linkonce_odr
    internal => private
    extern => private
    _ => unchanged

The linkage/visibility of `__profc_*`/`__profd_*` variables are derived from
`__profn_*` with linkage/visibility wrestling for Windows.

The changes can be folded to the following without changing semantics.

```
if (TT.isOSBinFormatCOFF() && !NeedComdat) {
  Linkage = GlobalValue::InternalLinkage;
  Visibility = GlobalValue::DefaultVisibility;
}
```

That said, I think we can just delete the code block.

An extern/internal function will now use private `__profc_*`/`__profd_*`
variables, instead of internal ones. This saves some symbol table entries.

A non-comdat {linkonce,weak}_odr function will now use hidden external
`__profc_*`/`__profd_*` variables instead of internal ones.  There is potential
object file size increase because such symbols need `/INCLUDE:` directives.
However such non-comdat functions are rare (note that non-comdat weak
definitions don't prevent duplicate definition error).

The behavior changes match ELF.

Reviewed By: rnk

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

3 years ago[profile] Add -fprofile-instr-generate tests for weak definition and various linkages
Fangrui Song [Wed, 2 Jun 2021 23:12:08 +0000 (16:12 -0700)]
[profile] Add -fprofile-instr-generate tests for weak definition and various linkages

3 years ago[MC] Delete unneeded MCAsmParser &Parser
Fangrui Song [Wed, 2 Jun 2021 23:10:18 +0000 (16:10 -0700)]
[MC] Delete unneeded MCAsmParser &Parser

3 years ago[MC] Change "unexpected tokens" to "expected newline" and remove unneeded "in .xxx...
Fangrui Song [Wed, 2 Jun 2021 23:08:05 +0000 (16:08 -0700)]
[MC] Change "unexpected tokens" to "expected newline" and remove unneeded "in .xxx directive"

3 years ago[coro] Preserve scope line for compiler generated functions
Dave Lee [Thu, 13 May 2021 16:04:29 +0000 (09:04 -0700)]
[coro] Preserve scope line for compiler generated functions

Coro-split functions with an active suspend point have their scope line set to
the line of the suspend point. However for compiler generated functions, this
results in debug info with unconventional results: a file named
`<compiler-generated>` with a non-zero line number. The convention for
`<compiler-generated>` is that the line number is zero.

This change propagates the scope line only for non-compiler generated
functions.

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

3 years ago[PowerPC] [GlobalISel] Implementation of formal arguments lowering in the IRTranslato...
Anshil Gandhi [Wed, 2 Jun 2021 22:46:39 +0000 (16:46 -0600)]
[PowerPC] [GlobalISel] Implementation of formal arguments lowering in the IRTranslator for the PPC backend

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

3 years ago[libc++] Enable tests for the experimental library by default
Louis Dionne [Sat, 8 May 2021 16:03:53 +0000 (12:03 -0400)]
[libc++] Enable tests for the experimental library by default

This matches the fact that we build the experimental library by default.
Otherwise, by default we'd be building the library but not testing it,
which is inconsistent.

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

3 years agoRevert "Differential Revision: https://reviews.llvm.org/D99812"
Anshil Gandhi [Wed, 2 Jun 2021 22:36:00 +0000 (16:36 -0600)]
Revert "Differential Revision: https://reviews.llvm.org/D99812"

This reverts commit c729f2a48a6ef6b20554494c5630082c89c3680c.

3 years ago[Clang][OpenMP] Emit dependent PreInits before directive.
Michael Kruse [Wed, 2 Jun 2021 14:12:32 +0000 (09:12 -0500)]
[Clang][OpenMP] Emit dependent PreInits before directive.

The PreInits of a loop transformation (atm moment only tile) include the computation of the trip count. The trip count is needed by any loop-associated directives that consumes the transformation-generated loop. Hence, we must ensure that the PreInits of consumed loop transformations are emitted with the consuming directive.

This is done by addinging the inner loop transformation's PreInits to the outer loop-directive's PreInits. The outer loop-directive will consume the de-sugared AST such that the inner PreInits are not emitted twice. The PreInits of a loop transformation are still emitted directly if its generated loop(s) are not associated with another loop-associated directive.

Reviewed By: ABataev

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

3 years ago[Fuchsia] Use libc++abi on Windows in Fuchsia toolchain
Petr Hosek [Wed, 2 Jun 2021 21:17:16 +0000 (14:17 -0700)]
[Fuchsia] Use libc++abi on Windows in Fuchsia toolchain

Don't use vcruntime, this makes our toolchain more hermetic and avoids
some compiler errors we've encountered in compiler-rt.

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

3 years ago[NFC] Test commit. Fix typos.
Amy Zhuang [Wed, 2 Jun 2021 20:45:01 +0000 (13:45 -0700)]
[NFC] Test commit. Fix typos.

3 years ago[clangd] Drop optional on ExternalIndexSpec
Kadir Cetinkaya [Mon, 12 Apr 2021 15:21:21 +0000 (17:21 +0200)]
[clangd] Drop optional on ExternalIndexSpec

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

3 years agoAdd a .mailmap entry for my two email addresses
Reid Kleckner [Wed, 2 Jun 2021 21:09:50 +0000 (14:09 -0700)]
Add a .mailmap entry for my two email addresses

I'm using rnk@google.com as the canonical email for now, but I guess I
can always update .mailmap in the future.

3 years ago[NFC][trace][intel-pt] small test fixes
Walter Erquinigo [Wed, 2 Jun 2021 21:05:33 +0000 (14:05 -0700)]
[NFC][trace][intel-pt] small test fixes

These tests started failing after a change in the disassembler. The fix
is pretty simple though.

3 years ago[X86][SSE] combineScalarToVector - only reuse broadcasts for scalar_to_vector if...
Simon Pilgrim [Wed, 2 Jun 2021 21:05:14 +0000 (22:05 +0100)]
[X86][SSE] combineScalarToVector - only reuse broadcasts for scalar_to_vector if the source operands scalar types match

We were hitting an issue when the scalar_to_vector source was being implicitly truncated (in this case to i8 to vXi1) but we were also using the i8 source in a broadcast to a vXi8 value.

Fixes PR50374

3 years ago[clangd][Protocol] Drop optional from WorkspaceEdit::changes
Kadir Cetinkaya [Tue, 1 Jun 2021 11:23:59 +0000 (13:23 +0200)]
[clangd][Protocol] Drop optional from WorkspaceEdit::changes

This is causing weird code patterns in various places and I can't see
any difference between None and empty change list. Neither in the current use
cases nor in the spec.

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

3 years ago[clangd] TUScheduler uses last active file for file-less queries
Kadir Cetinkaya [Tue, 1 Jun 2021 18:00:08 +0000 (20:00 +0200)]
[clangd] TUScheduler uses last active file for file-less queries

This enables requests like workspaceSymbols to be dispatched using the
file user was most recently operating on. A replacement for D103179.

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

3 years ago[SYCL] Fix __builtin_sycl_unique_stable_name to work on windows/spir
Erich Keane [Wed, 2 Jun 2021 19:50:52 +0000 (12:50 -0700)]
[SYCL] Fix __builtin_sycl_unique_stable_name to work on windows/spir

In the case where the device is an itanium target, and the host is a
windows target, we were getting the names wrong, since in the itanium
case we filter by lambda-signature.

The fix is to always filter by the signature rather than just on
non-windows builds. I considered doing the reverse (that is, checking
the aux-triple), but doing so would result in duplicate lambda mangling
numbers (from linux reusing the same number for different signatures).

3 years ago[CodeGen][NFC] Remove unused virtual function
Min-Yih Hsu [Fri, 28 May 2021 16:35:20 +0000 (09:35 -0700)]
[CodeGen][NFC] Remove unused virtual function

`TargetFrameLowering::emitCalleeSavedFrameMoves` with 4 arguments is not
used anywhere in CodeGen. Thus it shouldn't be exposed as a virtual
function. NFC.

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

3 years agoDifferential Revision: https://reviews.llvm.org/D99812
Anshil Gandhi [Wed, 2 Jun 2021 20:05:02 +0000 (14:05 -0600)]
Differential Revision: https://reviews.llvm.org/D99812

3 years agoPR50337, PR50561: Fix determination of whether a template parameter list
Richard Smith [Wed, 2 Jun 2021 19:57:18 +0000 (12:57 -0700)]
PR50337, PR50561: Fix determination of whether a template parameter list
contains constrained parameters.

3 years ago[gn build] Port 05d164b25c40
LLVM GN Syncbot [Wed, 2 Jun 2021 19:59:40 +0000 (19:59 +0000)]
[gn build] Port 05d164b25c40

3 years agoRevert "[libc++] NFC: Move unwrap_iter to its own header"
Louis Dionne [Wed, 2 Jun 2021 19:58:27 +0000 (15:58 -0400)]
Revert "[libc++] NFC: Move unwrap_iter to its own header"

This reverts commit 924ea3bb53 *again*, this time because it broke the
LLDB build with modules. We need to figure out what's up with the libc++
modules build once and for all.

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

3 years ago[mlir][NFC] Split the non-templated bits out of IROperand into a base class
River Riddle [Wed, 2 Jun 2021 19:48:09 +0000 (12:48 -0700)]
[mlir][NFC] Split the non-templated bits out of IROperand into a base class

This removes the need to define the derived Operand class before the derived
Value class. The major benefit of this refactoring is that we no longer need
the OpaqueValue class, as OpOperand can now be defined after Value. As part of
this refactoring the BlockOperand and OpOperand classes are moved out of
UseDefLists.h and to more suitable locations in BlockSupport and Value. After
this change, UseDefLists.h is almost entirely composed of generic use def utilities.

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

3 years ago[llvm-dwp] Add support for rnglists and loclists
Kim-Anh Tran [Wed, 2 Jun 2021 19:31:35 +0000 (12:31 -0700)]
[llvm-dwp] Add support for rnglists and loclists

This patch updates llvm-dwp to include rnglists and loclists
when parsing debug sections.

Reviewed By: dblaikie

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

3 years ago[llvm-dwp] Add support for DWARFv5 type units ...
Kim-Anh Tran [Wed, 2 Jun 2021 19:24:08 +0000 (12:24 -0700)]
[llvm-dwp] Add support for DWARFv5 type units                                                                                                                                                                ...

This patch adds support for DWARFv5 type units: parsing from
the .debug_info section, and writing index to the type unit index.
Previously, the type units were part of the .debug_types section
which is no longer used in DWARFv5.

Reviewed By: dblaikie

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

3 years ago[llvm-dwp] Adding support for v5 index writing
Kim-Anh Tran [Wed, 2 Jun 2021 19:07:53 +0000 (12:07 -0700)]
[llvm-dwp] Adding support for v5 index writing

This patch adds general support for DWARFv5 index writing.
In particular, this means only allowing inputs with one version,
either DWARFv5 or DWARFv4.

This patch adds the .debug_macro section as an example,
but the DWARFv5 type support and loc and rangelists are still
missing (and upcoming).

Reviewed By: dblaikie

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

3 years ago[mlir] Resolve TODO and use the pass argument instead of the TypeID for registration
River Riddle [Wed, 2 Jun 2021 19:06:32 +0000 (12:06 -0700)]
[mlir] Resolve TODO and use the pass argument instead of the TypeID for registration

This simplifies various pieces of code that interact with the pass registry, e.g. this removes the need to register passes to get accurate pass pipelines descriptions when generating crash reproducers.

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

3 years agoRemove unused function from a previous iteration of unique-stable-name
Erich Keane [Wed, 2 Jun 2021 18:40:17 +0000 (11:40 -0700)]
Remove unused function from a previous iteration of unique-stable-name

3 years ago[mlir-lsp] Avoid empty range diagnostic
Jacques Pienaar [Wed, 2 Jun 2021 19:07:19 +0000 (12:07 -0700)]
[mlir-lsp] Avoid empty range diagnostic

3 years ago[mlir] Add support for filtering patterns based on debug names and labels
River Riddle [Wed, 2 Jun 2021 18:43:01 +0000 (11:43 -0700)]
[mlir] Add support for filtering patterns based on debug names and labels

This revision allows for attaching "debug labels" to patterns, and provides to FrozenRewritePatternSet for  filtering patterns based on these labels (in addition to the debug name of the pattern). This will greatly simplify the ability to write tests targeted towards specific patterns (in cases where many patterns may interact),  will also simplify debugging pattern application by observing how application changes when enabling/disabling specific patterns.

To enable better reuse of pattern rewrite options between passes, this revision also adds a new PassUtil.td file to the Rewrite/ library that will allow for passes to easily hook into a common interface for pattern debugging. Two options are used to seed this utility, `disable-patterns` and `enable-patterns`, which are used to enable the filtering behavior indicated above.

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

3 years ago[SDAG] allow cast folding for vector sext-of-setcc with signed compare
Sanjay Patel [Wed, 2 Jun 2021 19:01:04 +0000 (15:01 -0400)]
[SDAG] allow cast folding for vector sext-of-setcc with signed compare

This extends 434c8e013a2c and ede3982792df to handle signed
predicates by sign-extending the setcc operands.

This is not shown directly in https://llvm.org/PR50055 ,
but the pattern is visible by changing the unsigned convert
to signed in the source code.

3 years ago[llvm-dwp] Skip type unit debug info sections
Kim-Anh Tran [Wed, 2 Jun 2021 18:48:02 +0000 (11:48 -0700)]
[llvm-dwp] Skip type unit debug info sections

This patch makes llvm-dwp skip debug info sections that may not be encoding a compile unit.
In DWARF5, debug info sections are also used for type units. As in preparation to support type units,
make llvm-dwp aware of other uses of debug info sections but skip them for now.

The patch first records all .debug_info sections, then goes through them one by one and records
the cu debug info section for writing the index unit, and copies that section to the final dwp output
info section. If it's not a compile unit, skip.

Reviewed By: dblaikie

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

3 years agoFix dfsan handling of musttail calls.
Andrew Browne [Wed, 2 Jun 2021 05:51:46 +0000 (22:51 -0700)]
Fix dfsan handling of musttail calls.

Without this change, a callsite like:
  [[clang::musttail]] return func_call(x);
will cause an error like:
  fatal error: error in backend: failed to perform tail call elimination
  on a call site marked musttail
due to DFSan inserting instrumentation between the musttail call and
the return.

Reviewed By: stephan.yichao.zhao

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

3 years ago[NFC] Remove variable that was set but not used.
Stefan Pintilie [Wed, 2 Jun 2021 18:16:15 +0000 (13:16 -0500)]
[NFC] Remove variable that was set but not used.

The buildbot ppc64le-lld-multistage-test has been failing because the variable
Tag in Waymaking.h is set but not used. This patch removes that varaible.

3 years ago[x86] add signed compare variant test for PR50055; NFC
Sanjay Patel [Wed, 2 Jun 2021 18:14:29 +0000 (14:14 -0400)]
[x86] add signed compare variant test for PR50055; NFC

3 years ago[mlir-lsp] Report range of potential identifier starting at location of diagnostic
Jacques Pienaar [Wed, 2 Jun 2021 17:49:53 +0000 (10:49 -0700)]
[mlir-lsp] Report range of potential identifier starting at location of diagnostic

Currently the diagnostics reports the file:line:col, but some LSP
frontends require a non-empty range. Report either the range of an
identifier that starts at location, or a range of 1. Expose the id
location to range helper and reuse here.

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