]> granicus.if.org Git - llvm/log
llvm
5 years ago[AArch64] autogenerate some tests. NFC
Amaury Sechet [Thu, 22 Aug 2019 18:53:41 +0000 (18:53 +0000)]
[AArch64] autogenerate some tests. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369685 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r369680
Nico Weber [Thu, 22 Aug 2019 18:22:05 +0000 (18:22 +0000)]
gn build: Merge r369680

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369682 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r369677
Nico Weber [Thu, 22 Aug 2019 17:53:18 +0000 (17:53 +0000)]
gn build: Merge r369677

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369678 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRetire llvm::less_ptr. llvm::deref is much more flexible.
Benjamin Kramer [Thu, 22 Aug 2019 17:32:16 +0000 (17:32 +0000)]
Retire llvm::less_ptr. llvm::deref is much more flexible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369675 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRetire llvm::less/equal in favor of C++14 std::less<>/equal_to<>.
Benjamin Kramer [Thu, 22 Aug 2019 17:31:59 +0000 (17:31 +0000)]
Retire llvm::less/equal in favor of C++14 std::less<>/equal_to<>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369674 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoGlobalISel: Don't create G_UADDE with constant false carry in
Matt Arsenault [Thu, 22 Aug 2019 17:29:17 +0000 (17:29 +0000)]
GlobalISel: Don't create G_UADDE with constant false carry in

The x86 tests are now broken (in paticular add-scalar.ll now hits the
DAG fallback) due to not handling G_UADDO. The DAG x86 backend has a
custom lowering for this, so that will need to be implemented.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369673 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MachO][TLOF] Use hasLocalLinkage to determine if indirect symbol is local
Francis Visoiu Mistrih [Thu, 22 Aug 2019 16:59:00 +0000 (16:59 +0000)]
[MachO][TLOF] Use hasLocalLinkage to determine if indirect symbol is local

Local symbols in the indirect symbol table contain the value
`INDIRECT_SYMBOL_LOCAL` and the corresponding __pointers entry must
contain the address of the target.

In r349060, I added support for local symbols in the indirect symbol
table, which was checking if the symbol `isDefined` && `!isExternal` to
determine if the symbol is local or not.

It turns out that `isDefined` will return false if the user of the
symbol comes before its definition, and we'll again generate .long 0
which will be the symbol at the adress 0x0.

Instead of doing that, use GlobalValue::hasLocalLinkage() to check if
the symbol is local.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369671 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC][InstCombine] New tests: unrecognized_three-way-comparison.ll is ignorant about...
Roman Lebedev [Thu, 22 Aug 2019 16:46:16 +0000 (16:46 +0000)]
[NFC][InstCombine] New tests: unrecognized_three-way-comparison.ll is ignorant about commutative variants

D66232 "exposes" the problem.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369667 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Remove MCInstLower code that drops operands from some CALL and TAILJMP instruct...
Craig Topper [Thu, 22 Aug 2019 16:23:35 +0000 (16:23 +0000)]
[X86] Remove MCInstLower code that drops operands from some CALL and TAILJMP instructions. Add asserts to verify operand count

It appears the FIXME here was handled at some point. r159728 from 2012 seems to be at least aportion of fixing it.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369665 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MBP] Disable aggressive loop rotate in plain mode
Guozhi Wei [Thu, 22 Aug 2019 16:21:32 +0000 (16:21 +0000)]
[MBP] Disable aggressive loop rotate in plain mode

Patch https://reviews.llvm.org/D43256 introduced more aggressive loop layout optimization which depends on profile information. If profile information is not available, the statically estimated profile information(generated by BranchProbabilityInfo.cpp) is used. If user program doesn't behave as BranchProbabilityInfo.cpp expected, the layout may be worse.

To be conservative this patch restores the original layout algorithm in plain mode. But user can still try the aggressive layout optimization with -force-precise-rotation-cost=true.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369664 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DAGCombiner] Remove explicit call to AddToWorklist in sqrt and reciprocal computations
Amaury Sechet [Thu, 22 Aug 2019 15:35:45 +0000 (15:35 +0000)]
[DAGCombiner] Remove explicit call to AddToWorklist in sqrt and reciprocal computations

Summary: These nodes end up being processed regardless due to DAGCombiner ensuring arguments are processed. This changes the order in which nodes are processed, which fixes an issue on PowerPC.

Reviewers: craig.topper, efriedma, RKSimon, lebedev.ri, mcberg2017, stefanp, hfinkel

Subscribers: nemanjai, MaskRay, jsji, steven.zhang, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369662 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86][BtVer2] Fix latency/throughput of scalar integer MUL instructions.
Andrea Di Biagio [Thu, 22 Aug 2019 15:20:16 +0000 (15:20 +0000)]
[X86][BtVer2] Fix latency/throughput of scalar integer MUL instructions.

Single operand MUL instructions that implicitly set EAX have the following
latency/throughput profile (see below):

imul %cl              # latency: 3cy - uOPs: 1 - 1 JMul
imul %cx              # latency: 3cy - uOPs: 3 - 3 JMul
imul %ecx             # latency: 3cy - uOPs: 2 - 2 JMul
imul %rcx             # latency: 6cy - uOPs: 2 - 4 JMul

mul %cl               # latency: 3cy - uOPs: 1 - 1 JMul
mul %cx               # latency: 3cy - uOPs: 3 - 3 JMul
mul %ecx              # latency: 3cy - uOPs: 2 - 2 JMul
mul %rcx              # latency: 6cy - uOPs: 2 - 4 JMul

Excluding the 64bit variant, which has a latency of 6cy, every other instruction
has a latency of 3cy. However, the number of decoded macro-opcodes (as well as
the resource cyles) depend on the MUL size.

The two operand MULs have a more predictable profile (see below):

imul %dx, %dx         # latency: 3cy - uOPs: 1 - 1 JMul
imul %edx, %edx       # latency: 3cy - uOPs: 1 - 1 JMul
imul %rdx, %rdx       # latency: 6cy - uOPs: 1 - 4 JMul

imul $3, %dx, %dx     # latency: 4cy - uOPs: 2 - 2 JMul
imul $3, %ecx, %ecx   # latency: 3cy - uOPs: 1 - 1 JMul
imul $3, %rdx, %rdx   # latency: 6cy - uOPs: 1 - 4 JMul

This patch updates the values in the Jaguar scheduling model and regenerates
llvm-mca tests.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369661 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[PowerPC] Regenerate reciprocal tests, as discussed on D66548
Simon Pilgrim [Thu, 22 Aug 2019 15:14:52 +0000 (15:14 +0000)]
[PowerPC] Regenerate reciprocal tests, as discussed on D66548

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369659 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[PowerPC] Add combined ELF ABI and 32/64 bit queries to the subtarget. [NFC]
Sean Fertile [Thu, 22 Aug 2019 15:11:28 +0000 (15:11 +0000)]
[PowerPC] Add combined ELF ABI and 32/64 bit queries to the subtarget. [NFC]

A lot of places in the code combine checks for both ABI (SVR4/Darwin/AIX) and
addressing mode (64-bit vs 32-bit). In an attempt to make some of the code more
readable I've added a couple functions that combine checking for the ELF abi and
64-bit/32-bit code at once. As we add more AIX support I intend to add similar
functions for the AIX ABI.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369658 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[PowerPC][XCOFF][MC] Explicitly set containing csect on symbols. [NFC]
Sean Fertile [Thu, 22 Aug 2019 15:11:23 +0000 (15:11 +0000)]
[PowerPC][XCOFF][MC] Explicitly set containing csect on symbols. [NFC]

Previously we would get the csect a symbol was contained in through its
fragment. This works only if we are writing an object file, and only for
defined symbols. To fix this we set the contating csect explicitly on the
MCSymbolXCOFF object.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369657 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Attributor][NFC] Move DerefState to header and use StateWrapper
Hideto Ueno [Thu, 22 Aug 2019 14:18:29 +0000 (14:18 +0000)]
[Attributor][NFC] Move DerefState to header and use StateWrapper

Summary: In D65402, I want to get DerefState from AADereferenceable but it was not allowed. This patch moves DerefState definition into Attributor.h and makes AADerefenceable inherit StateWrapper.

Reviewers: jdoerfert, sstefan1

Reviewed By: jdoerfert

Subscribers: hiraditya, jfb, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369653 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[SlotIndexes] Add print-slotindexes to disable printing slotindexes
Jinsong Ji [Thu, 22 Aug 2019 13:44:47 +0000 (13:44 +0000)]
[SlotIndexes] Add print-slotindexes to disable printing slotindexes

Summary:
When we print the IR with --print-after/before-*,
SlotIndexes will be printed whenever available (We haven't freed it).

This introduces some noises when we try to compare the IR
among different optimizations.

eg:
-print-before=machine-cp will print SlotIndexes for 1st machine-cp
pass, but NOT for 2nd machine-cp;
-print-after=machine-cp will NOT print SlotIndexes for both
machine-cp passes.
So SlotIndexes in 1st pass introduce noises when differing these IRs.

This patch introduces an option to hide indexes.

Reviewers: stoklund, thegameg, qcolombet

Reviewed By: thegameg

Subscribers: hiraditya, arphaman, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369650 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MCA] consistently use MCPhysReg instead of unsigned as register type. NFCI
Andrea Di Biagio [Thu, 22 Aug 2019 13:32:17 +0000 (13:32 +0000)]
[MCA] consistently use MCPhysReg instead of unsigned as register type. NFCI

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369648 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[yaml2obj] - Lookup relocation symbols in dynamic symbol when .dynsym referenced.
George Rimar [Thu, 22 Aug 2019 12:39:56 +0000 (12:39 +0000)]
[yaml2obj] - Lookup relocation symbols in dynamic symbol when .dynsym referenced.

This fixes https://bugs.llvm.org/show_bug.cgi?id=40337.

Previously, it was always assumed that relocations referenced symbols in the static symbol table.
Now, if the Link field references a section called ".dynsym" it will look up these symbols
in the dynamic symbol table.

This patch is heavily based on D59097 by James Henderson

Differential revision: https://reviews.llvm.org/D66532

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369645 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix some regressions caused by r369553 on old versions of Debian and Ubuntu
Sylvestre Ledru [Thu, 22 Aug 2019 12:16:08 +0000 (12:16 +0000)]
Fix some regressions caused by r369553 on old versions of Debian and Ubuntu
It was causing some errors like:

Encoding error:
'ascii' codec can't decode byte 0xe2 in position 341: ordinal not in range(128)
The full traceback has been saved in /tmp/sphinx-err-y2fq4dtb.log, if you want to report the issue to the developers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369644 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86][BtVer2] Fix latency and throughput of XCHG and XADD.
Andrea Di Biagio [Thu, 22 Aug 2019 11:32:47 +0000 (11:32 +0000)]
[X86][BtVer2] Fix latency and throughput of XCHG and XADD.

On Jaguar, XCHG has a latency of 1cy and decodes to 2 macro-opcodes. Maximum
throughput for XCHG is 1 IPC. The byte exchange has worse latency and decodes to
1 extra uOP; maximum observed throughput is 0.5 IPC.

```
xchgb %cl, %dl           # Latency: 2cy  -  uOPs: 3  -  2 ALU
xchgw %cx, %dx           # Latency: 1cy  -  uOPs: 2  -  2 ALU
xchgl %ecx, %edx         # Latency: 1cy  -  uOPs: 2  -  2 ALU
xchgq %rcx, %rdx         # Latency: 1cy  -  uOPs: 2  -  2 ALU
```

The reg-mem forms of XCHG are atomic operations with an observed latency of
16cy.  The resource usage is similar to the XCHGrr variants. The biggest
difference is obviously the bus-locking, which prevents the LS to issue other
memory uOPs in parallel until the unlocking store uOP is executed.

```
xchgb %cl, (%rsp)        # Latency: 16cy  -  uOPs: 3 - ECX latency: 11cy
xchgw %cx, (%rsp)        # Latency: 16cy  -  uOPs: 3 - ECX latency: 11cy
xchgl %ecx, (%rsp)       # Latency: 16cy  -  uOPs: 3 - ECX latency: 11cy
xchgq %rcx, (%rsp)       # Latency: 16cy  -  uOPs: 3 - ECX latency: 11cy
```

The exchanged in/out register operand becomes available after 11cy from the
start of execution. Added test xchg.s to verify that we correctly see that
register write committed in 11cy (and not 16cy).

Reg-reg XADD instructions have the same latency/throughput than the byte
exchange (register-register variant).

```
xaddb %cl, %dl           # latency: 2cy  -  uOPs: 3  -  3 ALU
xaddw %cx, %dx           # latency: 2cy  -  uOPs: 3  -  3 ALU
xaddl %ecx, %edx         # latency: 2cy  -  uOPs: 3  -  3 ALU
xaddq %rcx, %rdx         # latency: 2cy  -  uOPs: 3  -  3 ALU
```

The non-atomic RM variants have a latency of 11cy, and decode to 4
macro-opcodes. They still consume 2 ALU pipes, and the exchange in/out register
operand becomes available in 3cy (it matches the 'load-to-use latency').

```
xaddb %cl, (%rsp)        # latency: 11cy  -  uOPs: 4  -  3 ALU
xaddw %cx, (%rsp)        # latency: 11cy  -  uOPs: 4  -  3 ALU
xaddl %ecx, (%rsp)       # latency: 11cy  -  uOPs: 4  -  3 ALU
xaddq %rcx, (%rsp)       # latency: 11cy  -  uOPs: 4  -  3 ALU
```

The atomic XADD variants execute in 16cy. The in/out register operand is
available after 11cy from the start of execution.

```
lock xaddb %cl, (%rsp)   # latency: 16cy - uOPs: 4 - 3 ALU -- ECX latency: 11cy
lock xaddw %cx, (%rsp)   # latency: 16cy - uOPs: 4 - 3 ALU -- ECX latency: 11cy
lock xaddl %ecx, (%rsp)  # latency: 16cy - uOPs: 4 - 3 ALU -- ECX latency: 11cy
lock xaddq %rcx, (%rsp)  # latency: 16cy - uOPs: 4 - 3 ALU -- ECX latency: 11cy
```

Added test xadd.s to verify those latencies as well as read-advance values.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369642 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MVT] Add MVT equivalent to EVT::getHalfNumVectorElementsVT() helper. NFCI.
Simon Pilgrim [Thu, 22 Aug 2019 11:14:30 +0000 (11:14 +0000)]
[MVT] Add MVT equivalent to EVT::getHalfNumVectorElementsVT() helper. NFCI.

Allows for some cleanup in a lot of SSE/AVX vector splitting code

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369640 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoReapply: [ARM] Fix lsrl with a 128/256 bit shift amount or a shift of 32
Sam Tebbs [Thu, 22 Aug 2019 10:29:20 +0000 (10:29 +0000)]
Reapply: [ARM] Fix lsrl with a 128/256 bit shift amount or a shift of 32

The CodeGen/Thumb2/mve-vaddv.ll test needed to be amended to reflect the
changes from the above patch.

This reverts commit cd53ff6, reapplying 7c6b229.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369638 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Loop Peeling] Fix silly bug in metadata update.
Serguei Katkov [Thu, 22 Aug 2019 10:06:46 +0000 (10:06 +0000)]
[Loop Peeling] Fix silly bug in metadata update.

We must update loop metedata before we moved to parent loop if
it is present.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369637 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert r369626 "[ARM] Fix lsrl with a 128/256 bit shift amount or a shift of 32"
Hans Wennborg [Thu, 22 Aug 2019 09:16:53 +0000 (09:16 +0000)]
Revert r369626 "[ARM] Fix lsrl with a 128/256 bit shift amount or a shift of 32"

It broke the bots, see e.g. http://lab.llvm.org:8011/builders/clang-cuda-build/builds/36275/

> This patch fixes shifts by a 128/256 bit shift amount. It also fixes
> codegen for shifts of 32 by delegating to LLVM's default optimisation
> instead of emitting a long shift.
>
> Tests that used to generate long shifts of 32 are updated to check for the
> more optimised codegen.
>
> Differential revision: https://reviews.llvm.org/D66519
>
> llvm-svn: 369626

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369636 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-objdump] - Remove an outdated "FIXME". NFC.
George Rimar [Thu, 22 Aug 2019 09:10:17 +0000 (09:10 +0000)]
[llvm-objdump] - Remove an outdated "FIXME". NFC.

The bug mentioned in this test case was fixed in D63779 (r364955),
which also provides a test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369634 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-readobj] - Remove `reportError(std::error_code EC, StringRef Input)` helper.
George Rimar [Thu, 22 Aug 2019 08:56:24 +0000 (08:56 +0000)]
[llvm-readobj] - Remove `reportError(std::error_code EC, StringRef Input)` helper.

We do not need it, std::error_code is used mostly for COFF and
this patch rewrites the calls to use a different overload.

Having reportError(std::error_code EC, ... is excessive by itself,
because API that use error codes actually needs refactoring to
use Error/Expected<> instead.

DIfferential revision: https://reviews.llvm.org/D66521

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369630 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Lower the cost of v2i32->v2f64 sint_to_fp under vector widening legalization.
Craig Topper [Thu, 22 Aug 2019 08:18:45 +0000 (08:18 +0000)]
[X86] Lower the cost of v2i32->v2f64 sint_to_fp under vector widening legalization.

I don't really understand the costs we're using for fp_to_sint,
but prior to widening legalization we used 20 as the cost for this
via the v2i64->v2f64 entry. That number seems better than the 40
we got with widening legalization. So now we need either a
v2i32->v2f64 entry or a v4i32->v2f64 entry depending on whether
AVX is enabled or not since we skip the first SSE2 table look up
under AVX.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369628 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Support] Improve readNativeFile(Slice) interface
Pavel Labath [Thu, 22 Aug 2019 08:13:30 +0000 (08:13 +0000)]
[Support] Improve readNativeFile(Slice) interface

Summary:
There was a subtle, but pretty important difference between the Slice
and regular versions of this function. The Slice function was
zero-initializing the rest of the buffer when the read syscall returned
less bytes than expected, while the regular function did not.

This patch removes the inconsistency by making both functions *not*
zero-initialize the buffer. The zeroing code is moved to the
MemoryBuffer class, which is currently the only user of this code. This
makes the API more consistent, and the code shorter.

While in there, I also refactor the functions to return the number of
bytes through the regular return value (via Expected<size_t>) instead of
a separate by-ref argument.

Reviewers: aganea, rnk

Subscribers: kristina, Bigcheese, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369627 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ARM] Fix lsrl with a 128/256 bit shift amount or a shift of 32
Sam Tebbs [Thu, 22 Aug 2019 08:12:06 +0000 (08:12 +0000)]
[ARM] Fix lsrl with a 128/256 bit shift amount or a shift of 32

This patch fixes shifts by a 128/256 bit shift amount. It also fixes
codegen for shifts of 32 by delegating to LLVM's default optimisation
instead of emitting a long shift.

Tests that used to generate long shifts of 32 are updated to check for the
more optimised codegen.

Differential revision: https://reviews.llvm.org/D66519

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369626 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[TargetLowering] Remove optional arguments passing to makeLibCall
Shiva Chen [Thu, 22 Aug 2019 04:59:43 +0000 (04:59 +0000)]
[TargetLowering] Remove optional arguments passing to makeLibCall

The patch introduces MakeLibCallOptions struct as suggested by @efriedma on D65497.
The struct contain argument flags which will pass to makeLibCall function.
The patch should not has any functionality changes.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369622 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[lit] Diagnose insufficient args to internal env
Joel E. Denny [Thu, 22 Aug 2019 03:42:01 +0000 (03:42 +0000)]
[lit] Diagnose insufficient args to internal env

Without this patch, failing to provide a subcommand to lit's internal
`env` results in either a python `IndexError` or an attempt to execute
the final `env` argument, such as `FOO=1`, as a command.  This patch
diagnoses those cases with a more helpful message.

Reviewed By: stella.stamenova

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369620 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Making X86OptimizeLEAs pass public. NFC
Pengfei Wang [Thu, 22 Aug 2019 02:29:27 +0000 (02:29 +0000)]
[X86] Making X86OptimizeLEAs pass public. NFC

Reviewers: wxiao3, LuoYuanke, andrew.w.kaylor, craig.topper, annita.zhang, liutianle, pengfei, xiangzhangllvm, RKSimon, spatel, andreadb

Reviewed By: RKSimon

Subscribers: andreadb, hiraditya, llvm-commits

Tags: #llvm

Patch by Gen Pei (gpei)

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369612 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[COFF] Fix section name for constants larger than 64 bits on Windows
Fangrui Song [Thu, 22 Aug 2019 01:48:34 +0000 (01:48 +0000)]
[COFF] Fix section name for constants larger than 64 bits on Windows

APIntToHexString returns wrong value ("0000000000000000ffffffffffffffff")
for integer larger than 64 bits, and thus
TargetLoweringObjectFileCOFF::getSectionForConstant returns same section name
for all numbers larger than 64 bits. This patch tries to fix it.

Differential Revision: https://reviews.llvm.org/D66458
Patch by Senran Zhang

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369610 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r369605
Nico Weber [Thu, 22 Aug 2019 00:40:55 +0000 (00:40 +0000)]
gn build: Merge r369605

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369608 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r369600
Nico Weber [Thu, 22 Aug 2019 00:01:59 +0000 (00:01 +0000)]
gn build: Merge r369600

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369603 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Object] FIX: update PlatformKind name in TapiFile
Cyndy Ishida [Wed, 21 Aug 2019 23:57:57 +0000 (23:57 +0000)]
[Object] FIX: update PlatformKind name in TapiFile

Buildbots that use GCC failed to compile because overwritten
namespace with variable name

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369602 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Object] Add tapi files to object
Cyndy Ishida [Wed, 21 Aug 2019 23:30:53 +0000 (23:30 +0000)]
[Object] Add tapi files to object

Summary:
The intention for this is to allow reading and printing symbols out from
llvm-nm. Tapi file, and Tapi universal follow a similiar format to
their respective MachO Object format.

The tests are dependent on llvm-nm processing tbd files which is why its in D66160

Reviewers: ributzka, steven_wu, lhames

Reviewed By: ributzka, lhames

Subscribers: mgorny, hiraditya, dexonsmith, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369600 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Correct the scheduler classes for TAILJMP and TCRETURN CodeGenOnly instructions.
Craig Topper [Wed, 21 Aug 2019 23:17:52 +0000 (23:17 +0000)]
[X86] Correct the scheduler classes for TAILJMP and TCRETURN CodeGenOnly instructions.

We had an odd combination of WriteJump applied to some memory
instructions and WriteJumpLd applied to register and immediate
instructions.

Thsi should hopefully assign them all correctly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369599 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Replace a couple hardcoded '5's with X86::AddrNumOperands for readability. NFC
Craig Topper [Wed, 21 Aug 2019 22:40:07 +0000 (22:40 +0000)]
[X86] Replace a couple hardcoded '5's with X86::AddrNumOperands for readability. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369598 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r369591
Nico Weber [Wed, 21 Aug 2019 22:26:02 +0000 (22:26 +0000)]
gn build: Merge r369591

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369594 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r369587
Nico Weber [Wed, 21 Aug 2019 22:25:57 +0000 (22:25 +0000)]
gn build: Merge r369587

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369593 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Attributor] FIX: Try to make bots happy
Johannes Doerfert [Wed, 21 Aug 2019 22:21:13 +0000 (22:21 +0000)]
[Attributor] FIX: Try to make bots happy

Locally the tight iterations bounds work fine but the bots seem unhappy.
Try to get green bots and some time to determine the underlying problem.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369592 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[RISCV] Remove fix introduced by r369573, superseded by r369580
Luis Marques [Wed, 21 Aug 2019 22:02:56 +0000 (22:02 +0000)]
[RISCV] Remove fix introduced by r369573, superseded by r369580

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369590 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Attributor] Fix: Gracefully handle non-instruction users
Johannes Doerfert [Wed, 21 Aug 2019 21:48:56 +0000 (21:48 +0000)]
[Attributor] Fix: Gracefully handle non-instruction users

Function can have users that are not instructions, e.g., bitcasts. For
now, we simply give up when we see them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369588 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAdd FileWriter to GSYM and encode/decode functions to AddressRange and AddressRanges
Greg Clayton [Wed, 21 Aug 2019 21:48:11 +0000 (21:48 +0000)]
Add FileWriter to GSYM and encode/decode functions to AddressRange and AddressRanges

The full GSYM patch started with: https://reviews.llvm.org/D53379

This patch add the ability to encode data using the new llvm::gsym::FileWriter class.

FileWriter is a simplified binary data writer class that doesn't require targets, target definitions, architectures, or require any other optional compile time libraries to be enabled via the build process. This class needs the ability to seek to different spots in the binary data that it produces to fix up offsets and sizes in GSYM data. It currently uses std::ostream over llvm::raw_ostream because llvm::raw_ostream doesn't support seeking which is required when encoding and decoding GSYM data.

AddressRange objects are encoded and decoded to be relative to a base address. This will be the FunctionInfo's start address if the AddressRange is directly contained in a FunctionInfo, or a base address of the containing parent AddressRange or AddressRanges. This allows address ranges to be efficiently encoded using ULEB128 encodings as we encode the offset and size of each range instead of full addresses. This also makes encoded addresses easy to relocate as we just need to relocate one base address.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369587 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Attributor][NFCI] Introduce tight iteration bounds in the tests
Johannes Doerfert [Wed, 21 Aug 2019 21:42:46 +0000 (21:42 +0000)]
[Attributor][NFCI] Introduce tight iteration bounds in the tests

Summary:
To be able to track how many iterations we need to manifest all
information we check for we now make the maximum iteration count
explicit. The count is set tightly now and should be kept that way.

Reviewers: uenoku, sstefan1

Subscribers: bollu, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369586 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoUse C++14 heteregenous lookup for a couple of std::map<std::string, ...>
Benjamin Kramer [Wed, 21 Aug 2019 21:17:34 +0000 (21:17 +0000)]
Use C++14 heteregenous lookup for a couple of std::map<std::string, ...>

These call find with a StringRef, heterogenous lookup saves a temporary
std::string there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369581 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[RISCV] Fix use of side-effects in asserts in decoder functions
Luis Marques [Wed, 21 Aug 2019 21:11:37 +0000 (21:11 +0000)]
[RISCV] Fix use of side-effects in asserts in decoder functions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369580 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[BinaryFormat] Teach identify_magic about Tapi files.
Cyndy Ishida [Wed, 21 Aug 2019 21:00:16 +0000 (21:00 +0000)]
[BinaryFormat] Teach identify_magic about Tapi files.

Summary:
Tapi files are YAML files that start with the !tapi tag. The only execption are
TBD v1 files, which don't have a tag. In that case we have to scan a little
further and check if the first key "archs" exists.

This is the first patch in a series of patches to add libObject support for
text-based dynamic library (.tbd) files.

This patch is practically exactly the same as D37820, that was never pushed to master,
and is needed for future commits related to reading tbd files for llvm-nm

Reviewers: ributzka, steven_wu, bollu, espindola, jfb, shafik, jdoerfert

Reviewed By: steven_wu

Subscribers: dexonsmith, llvm-commits

Tags: #llvm, #clang, #sanitizers, #lldb, #libc, #openmp

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369579 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Attributor][NFC] Fix copy & paste error
Johannes Doerfert [Wed, 21 Aug 2019 20:57:20 +0000 (20:57 +0000)]
[Attributor][NFC] Fix copy & paste error

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369577 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Attributor][NFC] Remove leftover semicolon
Johannes Doerfert [Wed, 21 Aug 2019 20:56:56 +0000 (20:56 +0000)]
[Attributor][NFC] Remove leftover semicolon

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369576 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Attributor] Use existing unreachable instead of introducing new ones
Johannes Doerfert [Wed, 21 Aug 2019 20:56:41 +0000 (20:56 +0000)]
[Attributor] Use existing unreachable instead of introducing new ones

So far we split the unreachable off and placed a new one, this is not
necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369575 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix -Werror=unused-variable error after r369528.
Richard Smith [Wed, 21 Aug 2019 20:42:37 +0000 (20:42 +0000)]
Fix -Werror=unused-variable error after r369528.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369573 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r369568
Nico Weber [Wed, 21 Aug 2019 20:20:36 +0000 (20:20 +0000)]
gn build: Merge r369568

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369572 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Make sync script not exit 1 if it writes changes
Nico Weber [Wed, 21 Aug 2019 20:13:00 +0000 (20:13 +0000)]
gn build: Make sync script not exit 1 if it writes changes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369571 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[GVN] Do PHI translations across all edges between the load and the unavailable pred.
Florian Hahn [Wed, 21 Aug 2019 20:06:50 +0000 (20:06 +0000)]
[GVN] Do PHI translations across all edges between the load and the unavailable pred.

Currently we do not properly translate addresses with PHIs if LoadBB !=
LI->getParent(), because PHITranslateAddr expects a direct predecessor as argument,
because it considers all instructions outside of the current block to
not requiring translation.

The amount of cases that trigger this should be very low, as most single
predecessor blocks should be folded into their predecessor by GVN before
we actually start with value numbering. It is still not guaranteed to
happen, so we should do PHI translation along all edges between the
loads' block and the predecessor where we have to place a load.

There are a few test cases showing current limits of the PHI translation, which
could be improved later.

Reviewers: spatel, reames, efriedma, john.brawn

Reviewed By: efriedma

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369570 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert r369549 as it broke the bots.
Aaron Ballman [Wed, 21 Aug 2019 20:00:41 +0000 (20:00 +0000)]
Revert r369549 as it broke the bots.

http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/13605/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369569 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert r367389 (and follow-up r368404); it caused PR43073.
Nico Weber [Wed, 21 Aug 2019 19:53:42 +0000 (19:53 +0000)]
Revert r367389 (and follow-up r368404); it caused PR43073.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369567 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[WebAssembly] Handle aliases in WebAssemblyFixFunctionBitcasts
Sam Clegg [Wed, 21 Aug 2019 19:52:33 +0000 (19:52 +0000)]
[WebAssembly] Handle aliases in WebAssemblyFixFunctionBitcasts

Fixes: https://github.com/emscripten-core/emscripten/issues/8770
Differential Revision: https://reviews.llvm.org/D66508

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369566 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MVT] Add v16f16 and v32f16 vectors.
Craig Topper [Wed, 21 Aug 2019 19:14:48 +0000 (19:14 +0000)]
[MVT] Add v16f16 and v32f16 vectors.

I might look at improving PR43065 which will require being
able to mark a 256 and 512 bit vector of f16 as Legal.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369565 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[TableGen] Include ValueTypes.td directly into the intrinsic-varargs.td test.
Craig Topper [Wed, 21 Aug 2019 19:14:38 +0000 (19:14 +0000)]
[TableGen] Include ValueTypes.td directly into the intrinsic-varargs.td test.

This prevents needing to keep the test in sync with ValueTypes.td

This is not the only test that includes ValueTypes.td.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369564 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[mips] Replace call `expandLoadAddress` by `loadAndAddSymbolAddress`. NFC
Simon Atanasyan [Wed, 21 Aug 2019 18:54:51 +0000 (18:54 +0000)]
[mips] Replace call `expandLoadAddress` by `loadAndAddSymbolAddress`. NFC

In case of expanding `lw/sw $reg, symbol($reg)` instruction for PIC it's
enough to call the `loadAndAddSymbolAddress` method. Additional work
performed by the `expandLoadAddress` is not required here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369563 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[mips] Remove duplicated case from the `StringSwitch`. NFC
Simon Atanasyan [Wed, 21 Aug 2019 18:54:41 +0000 (18:54 +0000)]
[mips] Remove duplicated case from the `StringSwitch`. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369562 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DAGCombiner] Remove mostly redundant calls to AddToWorklist
Amaury Sechet [Wed, 21 Aug 2019 18:51:08 +0000 (18:51 +0000)]
[DAGCombiner] Remove mostly redundant calls to AddToWorklist

Summary:
These calls change the order in which some nodes are processed and so have an effect on codegen.

The change in fixup-bw-copy.ll is due to (and (load anyext)) gets transformed into (load zext) while previously the and was removed by SimplifyDemandedBits, so the (load anyext) remained.

Reviewers: craig.topper, efriedma, RKSimon, lebedev.ri

Subscribers: llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369561 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[docs] Add GwpAsan to toctree.
Mitch Phillips [Wed, 21 Aug 2019 18:31:03 +0000 (18:31 +0000)]
[docs] Add GwpAsan to toctree.

Reverts rL369556 in the process, as it's no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369560 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[BitcodeReader] Check if we can create a null constant for type.
Florian Hahn [Wed, 21 Aug 2019 18:20:11 +0000 (18:20 +0000)]
[BitcodeReader] Check if we can create a null constant for type.

We cannot create null constants for certain types, e.g. VoidTy,
FunctionTy or LabelTy. getNullValue asserts if we pass in an
unsupported type. We should also check for opaque types, but I'm not
sure how.

This fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14795.

Reviewers: t.p.northover, jfb, vsk

Reviewed By: vsk

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369557 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[docs] Fix GwpAsan.rst
Jordan Rupprecht [Wed, 21 Aug 2019 18:09:31 +0000 (18:09 +0000)]
[docs] Fix GwpAsan.rst

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369556 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAdd newline to GWP-ASan sphinx document.
Mitch Phillips [Wed, 21 Aug 2019 18:03:11 +0000 (18:03 +0000)]
Add newline to GWP-ASan sphinx document.
Should fix the document builder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369554 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[docs] Convert remaining command guide entries from md to rst.
Jordan Rupprecht [Wed, 21 Aug 2019 18:00:17 +0000 (18:00 +0000)]
[docs] Convert remaining command guide entries from md to rst.

Summary:
Linking between markdown and rst files is currently not supported very well, e.g. the current llvm-addr2line docs [1] link to "llvm-symbolizer" instead of "llvm-symbolizer.html". This is weirdly broken in different ways depending on which versions of sphinx and recommonmark are being used, so workaround the bug by using rst everywhere.

[1] http://llvm.org/docs/CommandGuide/llvm-addr2line.html

Reviewers: jhenderson

Reviewed By: jhenderson

Subscribers: lebedev.ri, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369553 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[GWP-ASan] Add public-facing documentation [6].
Mitch Phillips [Wed, 21 Aug 2019 17:53:51 +0000 (17:53 +0000)]
[GWP-ASan] Add public-facing documentation [6].

Summary:
Note: Do not submit this documentation until Scudo support is reviewed and submitted (should be #[5]).

See D60593 for further information.

This patch introduces the public-facing documentation for GWP-ASan, as well as updating the definition of one of the options, which wasn't properly merged. The document describes the design and features of GWP-ASan, as well as how to use GWP-ASan from both a user's standpoint, and development documentation for supporting allocators.

Reviewers: jfb, morehouse, vlad.tsyrklevich

Reviewed By: morehouse, vlad.tsyrklevich

Subscribers: kcc, dexonsmith, kubamracek, cryptoad, jfb, #sanitizers, llvm-commits, vlad.tsyrklevich, morehouse

Tags: #sanitizers, #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369552 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix -Wimplicit-fallthrough warnings in regcomp.c
Nathan Huckleberry [Wed, 21 Aug 2019 17:07:43 +0000 (17:07 +0000)]
Fix -Wimplicit-fallthrough warnings in regcomp.c

Summary:
Since clang does not support comment style fallthrough annotations
these should be switched.

Reviewers: aaron.ballman, nickdesaulniers, xbolva00

Reviewed By: aaron.ballman, nickdesaulniers, xbolva00

Subscribers: xbolva00, nickdesaulniers, hiraditya, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369549 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[LoopPassManager + MemorySSA] Only enable use of MemorySSA for LPMs known to preserve it.
Alina Sbirlea [Wed, 21 Aug 2019 17:00:57 +0000 (17:00 +0000)]
[LoopPassManager + MemorySSA] Only enable use of MemorySSA for LPMs known to preserve it.

Summary:
Add a flag to the FunctionToLoopAdaptor that allows enabling MemorySSA only for the loop pass managers that are known to preserve it.

If an LPM is known to have only loop transforms that *all* preserve MemorySSA, then use MemorySSA if `EnableMSSALoopDependency` is set.
If an LPM has loop passes that do not preserve MemorySSA, then the flag passed is `false`, regardless of the value of `EnableMSSALoopDependency`.

When using a custom loop pass pipeline via `passes=...`, use keyword `loop` vs `loop-mssa` to use MemorySSA in that LPM. If a loop that does not preserve MemorySSA is added while using the `loop-mssa` keyword, that's an error.

Add the new `loop-mssa` keyword to a few tests where a difference occurs when enabling MemorySSA.

Reviewers: chandlerc

Subscribers: mehdi_amini, Prazek, george.burgess.iv, sanjoy.google, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369548 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoGlobalISel: Implement moreElementsVector for G_UNMERGE_VALUES sources
Matt Arsenault [Wed, 21 Aug 2019 16:59:10 +0000 (16:59 +0000)]
GlobalISel: Implement moreElementsVector for G_UNMERGE_VALUES sources

This is necessary for handling <3 x s16> on AMDGPU, assuming this
should be handled as 2 separate legalization actions. The alternative
would be for fewerElementsVector to handle 3->2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369547 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAdd a couple of extra test noticed in post-commit discussion of rL369541
Philip Reames [Wed, 21 Aug 2019 16:57:53 +0000 (16:57 +0000)]
Add a couple of extra test noticed in post-commit discussion of rL369541

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369546 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ARM] Formatting for ARMInstrMVE.td. NFC
David Green [Wed, 21 Aug 2019 16:20:35 +0000 (16:20 +0000)]
[ARM] Formatting for ARMInstrMVE.td. NFC

This is just some formatting cleanup, prior to the masked load and store patch
in D66534.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369545 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogit-llvm: Make push --force suppress error on nothing to commit as well
Nico Weber [Wed, 21 Aug 2019 16:03:34 +0000 (16:03 +0000)]
git-llvm: Make push --force suppress error on nothing to commit as well

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369544 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[instcombine] icmp eq/ne (sub C, Y), C -> icmp eq/ne Y, 0
Philip Reames [Wed, 21 Aug 2019 15:51:57 +0000 (15:51 +0000)]
[instcombine] icmp eq/ne (sub C, Y), C -> icmp eq/ne Y, 0

Noticed while looking at pr43028.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369541 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogit-llvm: Give "push" a --force flag to disable confirm prompt on multiple commits
Nico Weber [Wed, 21 Aug 2019 15:41:20 +0000 (15:41 +0000)]
git-llvm: Give "push" a --force flag to disable confirm prompt on multiple commits

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369538 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoImproving CodeView debug info type record's inline comments
Nilanjana Basu [Wed, 21 Aug 2019 15:19:58 +0000 (15:19 +0000)]
Improving CodeView debug info type record's inline comments

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369533 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AMDGPU] Prevent VGPR copies from moving across the EXEC mask definitions
Alexander Timofeev [Wed, 21 Aug 2019 15:15:04 +0000 (15:15 +0000)]
[AMDGPU] Prevent VGPR copies from moving across the EXEC mask definitions
Differential Revision: https://reviews.llvm.org/D63731
Reviewers: qcolombet, rampitec

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369532 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[LLVM][Alignment] Introduce Alignment In MachineFrameInfo
Guillaume Chatelet [Wed, 21 Aug 2019 14:29:30 +0000 (14:29 +0000)]
[LLVM][Alignment] Introduce Alignment In MachineFrameInfo

Summary:
This is patch is part of a serie to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790

Reviewers: jfb

Subscribers: hiraditya, dexonsmith, llvm-commits, courbet

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369531 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DWARF] Adjust return type of DWARFUnit::getLength().
Igor Kudrin [Wed, 21 Aug 2019 14:10:57 +0000 (14:10 +0000)]
[DWARF] Adjust return type of DWARFUnit::getLength().

DWARFUnitHeader::getLength() returns uint64_t.
DWARFUnit::getLength() should do the same.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369529 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[RISCV] Add support for RVC HINT instructions
Luis Marques [Wed, 21 Aug 2019 14:00:58 +0000 (14:00 +0000)]
[RISCV] Add support for RVC HINT instructions

The hint instructions are enabled by default (if the standard C extension is
enabled). To disable them pass -mattr=-rvc-hints.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369528 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoreland [gtest] Fix printing of StringRef and SmallString in assert messages.
Sam McCall [Wed, 21 Aug 2019 13:56:29 +0000 (13:56 +0000)]
reland [gtest] Fix printing of StringRef and SmallString in assert messages.

Renames GTEST_NO_LLVM_RAW_OSTREAM -> GTEST_NO_LLVM_SUPPORT and guards
the new features behind it.

This reverts commit a063bcf3ef5a879adbe9639a3c187d876eee0e66.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369527 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAdd 9.0 release bug to merge request script
Simon Atanasyan [Wed, 21 Aug 2019 13:42:10 +0000 (13:42 +0000)]
Add 9.0 release bug to merge request script

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369526 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert "[gtest] Fix printing of StringRef and SmallString in assert messages."
Sam McCall [Wed, 21 Aug 2019 13:31:44 +0000 (13:31 +0000)]
Revert "[gtest] Fix printing of StringRef and SmallString in assert messages."

This reverts commit 4becb2ab4e9f52ce98272d1f5930d6942af5172b.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369525 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DAGCombiner] Various nits. NFC
Amaury Sechet [Wed, 21 Aug 2019 12:01:37 +0000 (12:01 +0000)]
[DAGCombiner] Various nits. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369520 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] narrow icmp with extended operands of different widths
Sanjay Patel [Wed, 21 Aug 2019 11:56:08 +0000 (11:56 +0000)]
[InstCombine] narrow icmp with extended operands of different widths

An intermediate extend is used to widen the narrow operand to the width of
the other (wider) operand. At that point, we have the same logic as the
existing transform that was restricted to folds of equal width zext/sext.

This mostly solves PR42700:
https://bugs.llvm.org/show_bug.cgi?id=42700

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369519 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[gtest] Fix printing of StringRef and SmallString in assert messages.
Sam McCall [Wed, 21 Aug 2019 11:37:06 +0000 (11:37 +0000)]
[gtest] Fix printing of StringRef and SmallString in assert messages.

Summary:
These are detected by gtest as containers, and so previously printed as e.g.
  { '.' (46, 0x2E), 's' (115, 0x73), 'e' (101, 0x65), 'c' (99, 0x63), '0' (48, 0x30) },

gtest itself overloads PrintTo for std::string and friends, we use the same mechanism.

Reviewers: labath

Subscribers: dexonsmith, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369518 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoMinidumpYAML: move serialization code to MinidumpEmitter.cpp
Pavel Labath [Wed, 21 Aug 2019 11:30:48 +0000 (11:30 +0000)]
MinidumpYAML: move serialization code to MinidumpEmitter.cpp

Summary:
The code for serializing minidumps was living in MinidumpYAML.cpp
so that it would be accessible from unit tests. While this had its
advantages, it was also unfortunate because it broke symmetry with all
other yaml2obj serializers.

Fortunately, nowadays all of yaml2obj is a library, so we don't need to
do anything special. This patch improves the code consistency by moving
the serialization code to MinidumpEmitter.cpp to match the style used in
other backends. It also removes the writeAsBinary entry point in favor
of the more general convertYAML interface.

This patch is just massaging the code a bit. There shouldn't be any
functional change here.

Reviewers: jhenderson, abrachet

Subscribers: llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369517 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-objdump] - Cleanup the error reporting.
George Rimar [Wed, 21 Aug 2019 11:07:31 +0000 (11:07 +0000)]
[llvm-objdump] - Cleanup the error reporting.

The error reporting function are not consistent.

Before this change:

* They had inconsistent naming (e.g. 'error' vs 'report_error').
* Some of them reported the object name, others - dont.
* Some of them accepted the case when there was no error. (i.e. error code or Error had a success value).

This patch tries to cleanup it a bit.

It also renames report_error -> reportError, report_warning -> reportWarning
and removes a full stop from messages.

Differential revision: https://reviews.llvm.org/D66418

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369515 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MIPS GlobalISel] NarrowScalar G_ZEXTLOAD and G_SEXTLOAD
Petar Avramovic [Wed, 21 Aug 2019 09:43:20 +0000 (09:43 +0000)]
[MIPS GlobalISel] NarrowScalar G_ZEXTLOAD and G_SEXTLOAD

NarrowScalar G_ZEXTLOAD and G_SEXTLOAD to s32 for MIPS32.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369512 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MIPS GlobalISel] NarrowScalar G_ZEXT and G_SEXT
Petar Avramovic [Wed, 21 Aug 2019 09:35:02 +0000 (09:35 +0000)]
[MIPS GlobalISel] NarrowScalar G_ZEXT and G_SEXT

NarrowScalar G_ZEXT and G_SEXT to s32 for MIPS32.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369511 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MIPS GlobalISel] Consider type1 when legalizing shifts after r351882
Petar Avramovic [Wed, 21 Aug 2019 09:31:29 +0000 (09:31 +0000)]
[MIPS GlobalISel] Consider type1 when legalizing shifts after r351882

r351882 allows different type for shift amount then result and value
being shifted. Fix MIPS Legalizer rules to take r351882 into account.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369510 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MIPS GlobalISel] NarrowScalar G_TRUNC
Petar Avramovic [Wed, 21 Aug 2019 09:26:39 +0000 (09:26 +0000)]
[MIPS GlobalISel] NarrowScalar G_TRUNC

Add NarrowScalar for G_TRUNC when NarrowTy is half the size of source.
NarrowScalar G_TRUNC to s32 for MIPS32.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369509 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DebugInfo] Avoid dropping location info across block boundaries
Jeremy Morse [Wed, 21 Aug 2019 09:22:31 +0000 (09:22 +0000)]
[DebugInfo] Avoid dropping location info across block boundaries

LiveDebugValues propagates variable locations between blocks by creating
new DBG_VALUE insts in the successors, then interpreting them when it
passes back through the block at a later time. However, this flushes out
any extra information about the location that LiveDebugValues holds: for
example, connections between variable locations such as discussed in
D65368. And as reported in PR42772 this causes us to lose track of the
fact that a spill-location is actually a spill, not a register location.

This patch fixes that by deferring the creation of propagated DBG_VALUEs
until after propagation has completed: instead location propagation occurs
only by sharing location ID numbers between blocks.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369508 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AArch64] Update MTE system register encodings
Luke Cheeseman [Wed, 21 Aug 2019 09:09:56 +0000 (09:09 +0000)]
[AArch64] Update MTE system register encodings

The encodings for the system registers TFSRE0_EL1, TFSR_EL1 TFSR_EL2, TFSR_EL3
and TFSR_EL12 have been changed so that they consistently have CRn=5 and CRm=6
as per https://developer.arm.com/docs/ddi0487/latest.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369505 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoBe explicit about Windows coff name trailing character policy
Serge Guelton [Wed, 21 Aug 2019 07:54:42 +0000 (07:54 +0000)]
Be explicit about Windows coff name trailing character policy

It's okay to *not* copy the trailing zero of a windows section/symbol name.
This is compatible with strncpy behavior but gcc doesn't know that and
throws an invalid warning. Encode this behavior in a proper function.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369501 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC] Mark CallTargetComparator() as const to fix libc++ warnings
Raphael Isemann [Wed, 21 Aug 2019 07:39:17 +0000 (07:39 +0000)]
[NFC] Mark CallTargetComparator() as const to fix libc++ warnings

We currently get this warning when compiling with libc++:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/set:454:26: warning: the specified comparator type does not provide a const call operator [-Wuser-defined-warnings]
    static_assert(sizeof(__diagnose_non_const_comparator<_Key, _Compare>()), "");
                         ^
llvm-project/llvm/include/llvm/ProfileData/SampleProf.h:193:29: note: in instantiation of template class 'std::__1::set<std::__1::pair<llvm::StringRef, unsigned long long>, llvm::sampleprof::SampleRecord::CallTargetComparator, std::__1::allocator<std::__1::pair<llvm::StringRef, unsigned long long> > >' requested here
  const SortedCallTargetSet getSortedCallTargets() const {
                            ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree:967:5: note: from 'diagnose_if' attribute on '__diagnose_non_const_comparator<std::__1::pair<llvm::StringRef, unsigned long long>, llvm::sampleprof::SampleRecord::CallTargetComparator>':
    _LIBCPP_DIAGNOSE_WARNING(!std::__invokable<_Compare const&, _Tp const&, _Tp const&>::value,
    ^                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config:1320:21: note: expanded from macro '_LIBCPP_DIAGNOSE_WARNING'
     __attribute__((diagnose_if(__VA_ARGS__, "warning")))
                    ^           ~~~~~~~~~~~
1 warning generated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369500 91177308-0d34-0410-b5e6-96231b3b80d8