OSDN Git Service
David Carlier [Tue, 18 Sep 2018 10:31:10 +0000 (10:31 +0000)]
[Xray] llvm-xray fix possible segfault
top argument when superior to the instrumentated code list capacity can lead to a segfault.
Reviewers: dberris
Reviewed By: dberris
Differential Revision: https://reviews.llvm.org/D52224
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342461
91177308-0d34-0410-b5e6-
96231b3b80d8
Yury Gribov [Tue, 18 Sep 2018 09:53:42 +0000 (09:53 +0000)]
Fixes removal of dead elements from PressureDiff (PR37252).
Reviewed By: MatzeB
Differential Revision: https://reviews.llvm.org/D51495
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342457
91177308-0d34-0410-b5e6-
96231b3b80d8
David Green [Tue, 18 Sep 2018 09:44:53 +0000 (09:44 +0000)]
[AArch64] Attempt to parse more operands as expressions
This tries to make use of evaluateAsRelocatable in AArch64AsmParser::classifySymbolRef
to parse more complex expressions as relocatable operands. It is hopefully better than
the existing code which only handles Symbol +- Constant.
This allows us to parse more complex adr/adrp, mov, ldr/str and add operands. It also
loosens the requirements on parsing addends in ld/st and mov's and adds a number of
tests.
Differential Revision: https://reviews.llvm.org/D51792
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342455
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Storsjo [Tue, 18 Sep 2018 08:44:57 +0000 (08:44 +0000)]
[benchmark] Lowercase windows specific includes
The windows SDK headers don't have self-consistent casing anyway,
so we consistently use lowercase for these in other places, in order
to fix crosscompilation with mingw headers.
This applies an upstream commit:
https://github.com/google/benchmark/commit/
52613079824ac58d06c070aa9fbbb186a5859e2c
Differential Revision: https://reviews.llvm.org/D52181
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342450
91177308-0d34-0410-b5e6-
96231b3b80d8
Max Kazantsev [Tue, 18 Sep 2018 04:57:18 +0000 (04:57 +0000)]
[IndVars] Remove unreasonable checks in rewriteLoopExitValues
A piece of logic in rewriteLoopExitValues has a weird check on number of
users which allowed an unprofitable transform in case if an instruction has
more than 6 users.
Differential Revision: https://reviews.llvm.org/D51404
Reviewed By: etherzhhb
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342444
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 18 Sep 2018 02:34:54 +0000 (02:34 +0000)]
AMDGPU: Don't form fmed3 if it will require materialization
If there is a single use constant, it can be folded into the
min/max, but not into med3.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342443
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 18 Sep 2018 02:05:44 +0000 (02:05 +0000)]
LSV: Fix adjust alloca alignment trick for AMDGPU
This was checking the hardcoded address space 0 for the stack.
Additionally, this should be checking for legality with
the adjusted alignment, so defer the alignment check.
Also try to split if the unaligned access isn't allowed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342442
91177308-0d34-0410-b5e6-
96231b3b80d8
QingShan Zhang [Tue, 18 Sep 2018 02:05:18 +0000 (02:05 +0000)]
[PowerPC] Add Itineraries of IIC_IntMulHD for P7/P8
When doing some instruction scheduling work, we noticed some missing itineraries.
Before we switch to machine scheduler, those missing itineraries might not have impact to actually scheduling,
because we can still get same latency due to default values.
With machine scheduler, however, itineraries will have impact to scheduling.
eg: NumMicroOps will default to be 0 if there is NO itineraries for specific instruction class.
And most of the instruction class with itineraries will have NumMicroOps default to 1.
This will has impact on the count of RetiredMOps, affects the Pending/Available Queue,
then causing different scheduling or suboptimal scheduling further.
Patch By: jsji (Jinsong Ji)
Differential Revision: https://reviews.llvm.org/D52040
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342441
91177308-0d34-0410-b5e6-
96231b3b80d8
QingShan Zhang [Tue, 18 Sep 2018 01:59:22 +0000 (01:59 +0000)]
[PowerPC][NFC] Add a mulld testcase for scheduling check.
This patch add a mulld testcase for scheduling check.
Patch By: jsji (Jinsong Ji)
Differential Revision: https://reviews.llvm.org/D52039
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342440
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 18 Sep 2018 01:51:33 +0000 (01:51 +0000)]
AMDGPU: Expand vector canonicalizes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342439
91177308-0d34-0410-b5e6-
96231b3b80d8
whitequark [Tue, 18 Sep 2018 01:48:01 +0000 (01:48 +0000)]
[OCaml] Add OCaml API for LLVMIsCleanup
Summary: Expose test for whether or not a landingpad is a cleanup.
Reviewers: whitequark
Reviewed By: whitequark
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D52205
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342438
91177308-0d34-0410-b5e6-
96231b3b80d8
whitequark [Tue, 18 Sep 2018 01:47:53 +0000 (01:47 +0000)]
[NFC][OCaml] Fix copy paste error in file header
Summary: Just copypasta resulting in the wrong file name in the header.
Reviewers: whitequark
Reviewed By: whitequark
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D52215
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342437
91177308-0d34-0410-b5e6-
96231b3b80d8
whitequark [Tue, 18 Sep 2018 01:47:44 +0000 (01:47 +0000)]
[NFC][OCaml] Fix implicit declaration compilation warnings
Summary:
2dd4f35c7fc75639920ebc473a4a57ea91864c10 moved LLVMAddLowerSwitchPass
and LLVMAddPromoteMemoryToRegisterPass declarations from
llvm-c/Transforms/Scalar.h to llvm-c/Transforms/Utils.h
Reviewers: whitequark
Reviewed By: whitequark
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D52214
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342436
91177308-0d34-0410-b5e6-
96231b3b80d8
whitequark [Tue, 18 Sep 2018 01:47:37 +0000 (01:47 +0000)]
[LLVM-C][OCaml] Add C and OCaml APIs for llvm::StructType::isLiteral
Summary:
This patch adds LLVMIsLiteralStruct to the C API to expose
StructType::isLiteral. This is then used to implement the analogous
addition to the OCaml API.
Reviewers: whitequark, deadalnix
Reviewed By: whitequark
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D52209
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342435
91177308-0d34-0410-b5e6-
96231b3b80d8
whitequark [Tue, 18 Sep 2018 01:47:25 +0000 (01:47 +0000)]
[LLVM-C] Add support for ConstantExpr in LLVMGetNumIndices and LLVMGetIndices
Summary:
ConstantExpr supports getIndices, but prior to this patch
LLVMGetNumIndices and LLVMGetIndices would error on them.
Reviewers: whitequark
Reviewed By: whitequark
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D52206
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342434
91177308-0d34-0410-b5e6-
96231b3b80d8
whitequark [Tue, 18 Sep 2018 01:47:18 +0000 (01:47 +0000)]
[OCaml] Add OCaml APIs for Invoke arguments and destinations
Summary:
This patch adds OCaml APIs for LLVMGetNormalDest and LLVMGetUnwindDest
on InvokeInsts, as well as LLVMGetNumArgOperands on CallInsts and
InvokeInsts.
Reviewers: whitequark
Reviewed By: whitequark
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D52204
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342433
91177308-0d34-0410-b5e6-
96231b3b80d8
Volodymyr Sapsai [Tue, 18 Sep 2018 00:11:55 +0000 (00:11 +0000)]
Revert "[ARM] Cleanup ARM CGP isSupportedValue"
This reverts r342395 as it caused error
> Argument value type does not match pointer operand type!
> %0 = atomicrmw volatile xchg i8* %_Value1, i32 1 monotonic, !dbg !25
> i8in function atomic_flag_test_and_set
> fatal error: error in backend: Broken function found, compilation aborted!
on bot http://green.lab.llvm.org/green/job/clang-stage1-configure-RA/
More details are available at https://reviews.llvm.org/D52080
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342431
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Tue, 18 Sep 2018 00:04:29 +0000 (00:04 +0000)]
Work around grep vs. CRLF issue in Thumb2 test by matching excess whitespace
There seems to be a separate command line tokenization issue that
prevents just ':\s*$' from working, since then the pattern argument
isn't quoted, and grep.exe misinterprets the backslash somehow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342430
91177308-0d34-0410-b5e6-
96231b3b80d8
whitequark [Tue, 18 Sep 2018 00:01:12 +0000 (00:01 +0000)]
[OCaml] Add GlobalIFunc value kind to OCaml API
Summary:
The GlobalIFunc value kind has not yet been added to the OCaml
API. This patch only extends the enum, so that e.g. classify_value
will not crash. No support for manipulating or building GlobalIFuncs
is added at this point.
Reviewers: whitequark, deadalnix
Reviewed By: whitequark
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D52198
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342429
91177308-0d34-0410-b5e6-
96231b3b80d8
whitequark [Tue, 18 Sep 2018 00:01:01 +0000 (00:01 +0000)]
[OCaml] Add Token type to kind enum in OCaml API
Summary:
The token type has not yet been added to the OCaml API. This
patch only extends the enum, so that e.g. classify_type will not
crash. No support for manipulating or building tokens is added at this
point.
Reviewers: whitequark
Reviewed By: whitequark
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D52197
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342428
91177308-0d34-0410-b5e6-
96231b3b80d8
whitequark [Tue, 18 Sep 2018 00:00:53 +0000 (00:00 +0000)]
[OCaml] Add missing instruction opcodes to OCaml API
Summary:
The OCaml bindings have become out of date and several opcodes have
been added to the C API without corresponding additions to the OCaml
API.
Reviewers: whitequark, mgorny
Reviewed By: whitequark
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D52196
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342427
91177308-0d34-0410-b5e6-
96231b3b80d8
Alina Sbirlea [Mon, 17 Sep 2018 22:35:21 +0000 (22:35 +0000)]
[EarlyCSEwMemorySSA] Add MSSA verification and tests to make EarlyCSE failures easier to track.
Summary:
EarlyCSE can make IR changes that will leave MemorySSA with accesses claiming to be optimized, but for which a subsequent MemorySSA run will yield a different optimized result.
Due to relying on AA queries, we can't fix this in general, unless we recompute MemorySSA.
Adding some tests to track this and a basic verify for future potential failures.
Reviewers: george.burgess.iv, gberry
Subscribers: sanjoy, jlebar, Prazek, llvm-commits
Differential Revision: https://reviews.llvm.org/D51960
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342422
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 17 Sep 2018 22:04:56 +0000 (22:04 +0000)]
Add #include <cassert>
This should fix the broken builds on some bots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342420
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Mon, 17 Sep 2018 21:21:57 +0000 (21:21 +0000)]
[mips] Fix MIPS N32 ABI triples support
Add support mips64(el)-linux-gnuabin32 triples, and set them to N32.
Debian architecture name mipsn32/mipsn32el are also added. Set
UseIntegratedAssembler for N32 if we can detect it.
Patch by YunQiang Su.
Differential revision: https://reviews.llvm.org/D51408
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342416
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 17 Sep 2018 21:08:11 +0000 (21:08 +0000)]
[PDB] Make the native reader support enumerators.
Previously we would dump the names of enum types, but not their
enumerator values. This adds support for enumerator values. In
doing so, we have to introduce a general purpose mechanism for
caching symbol indices of field list members. Unlike global
types, FieldList members do not have a TypeIndex. So instead,
we identify them by the pair {TypeIndexOfFieldList, IndexInFieldList}.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342415
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 17 Sep 2018 21:07:48 +0000 (21:07 +0000)]
[PDB] Make the native reader support modified types.
Previously for cv-qualified types, we would just ignore them
and they would never get printed. Now we can enumerate them
and cache them like any other symbol type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342414
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Mon, 17 Sep 2018 20:34:26 +0000 (20:34 +0000)]
[MC] Avoid inlining constant symbols with variants.
Summary:
Defer unnecessary early inlining of constants to symbol
variants. Fixes PR38945.
Reviewers: nickdesaulniers, rnk
Subscribers: nemanjai, hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D52188
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342412
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kruse [Mon, 17 Sep 2018 18:40:29 +0000 (18:40 +0000)]
[Loopinfo] Remove one latch-case in getLoopID. NFC.
getLoopID has different control flow for two cases: If there is a
single loop latch and for any other number of loop latches (0 and more
than one). The latter case should return the same result if there is
only a single latch. We can save the preceding redundant search for a
latch by handling both cases with the same code.
Differential Revision: https://reviews.llvm.org/D52118
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342406
91177308-0d34-0410-b5e6-
96231b3b80d8
Jessica Paquette [Mon, 17 Sep 2018 18:40:21 +0000 (18:40 +0000)]
[MachineOutliner][NFC] Don't map more illegal instrs than you have to
We were mapping an instruction every time we saw something we couldn't map
before this. Since each illegal mapping is unique, we only have to do this once.
This makes it so that we don't map illegal instructions when the previous
mapped instruction was illegal.
In CTMark (AArch64), this results in 240 fewer instruction mappings on
average over 619 files in total. The largest improvement is 12576 fewer
mappings in one file, and the smallest is 0. The median improvement is 101
fewer mappings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342405
91177308-0d34-0410-b5e6-
96231b3b80d8
Keno Fischer [Mon, 17 Sep 2018 17:37:14 +0000 (17:37 +0000)]
[X86ISel] Implement byval lowering for Win64 calling convention
Summary:
The IR reference for the `byval` attribute states:
```
This indicates that the pointer parameter should really be passed by value
to the function. The attribute implies that a hidden copy of the pointee is
made between the caller and the callee, so the callee is unable to modify
the value in the caller. This attribute is only valid on LLVM pointer arguments.
```
However, on Win64, this attribute is unimplemented and the raw pointer is
passed to the callee instead. This is problematic, because frontend authors
relying on the implicit hidden copy (as happens for every other calling
convention) will see the passed value silently (if mutable memory) or
loudly (by means of a crash) modified because the callee treats the
location as scratch memory space it is allowed to mutate.
At this point, it's worth taking a step back to understand the context.
In most calling conventions, aggregates that are too large to be passed
in registers, instead get *copied* to the stack at a fixed (computable
from the signature) offset of the stack pointer. At the LLVM, we hide
this hidden copy behind the byval attribute. The caller passes a pointer
to the desired data and the callee receives a pointer, but these pointers
are not the same. In particular, the pointer that the callee receives
points to temporary stack memory allocated as part of the call lowering.
In most calling conventions, this pointer is never realized in registers
or memory. The temporary memory is simply defined by an implicit
offset from the stack pointer at function entry.
Win64, uniquely, works differently. The structure is still passed in
memory, but instead of being stored at an implicit memory offset, the
caller computes a pointer to the temporary memory and passes it to
the callee as a regular pointer (taking up a register, or if all
registers are taken up, an additional stack slot). Presumably, this
was done to allow eliding the copy when passing aggregates through
several functions on the stack.
This explains why ignoring the `byval` attribute mostly works on Win64.
The argument simply gets passed as a pointer and as long as we're ok
with the callee trampling all over that memory, there are no ill effects.
However, it does contradict the documentation of the `byval` attribute
which specifies that there is to be an implicit copy.
Frontends can of course work around this by never emitting the `byval`
attribute for Win64 and creating `alloca`s for the requisite temporary
stack slots (and that does appear to be what frontends are doing).
However, the presence of the `byval` attribute is not a trap for
frontend authors, since it seems to work, but silently modifies the
passed memory contrary to documentation.
I see two solutions:
- Disallow the `byval` attribute in the verifier if using the Win64
calling convention.
- Make it work by simply emitting a temporary stack copy as we would
with any other calling convention (frontends can of course always
not use the attribute if they want to elide the copy).
This patch implements the second option (make it work), though I would
be fine with the first also.
Ref: https://github.com/JuliaLang/julia/issues/28338
Reviewers: rnk
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D51842
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342402
91177308-0d34-0410-b5e6-
96231b3b80d8
Stanislav Mekhanoshin [Mon, 17 Sep 2018 16:04:32 +0000 (16:04 +0000)]
[AMDGPU] Initialize instruction itinerary from GCNSubtarget
I need to use it in the GCN codegen.
Differential Revision: https://reviews.llvm.org/D52123
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342400
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexander Kornienko [Mon, 17 Sep 2018 15:40:01 +0000 (15:40 +0000)]
Revert "[DWARF] reposting r342048, which was reverted in r342056 due to buildbot errors. Adjusted 2 test cases for ARM and darwin and fixed a bug with the original change in dsymutil."
This reverts commit r342218. Due to a number of failures under TSAN. An isolated
test case is being worked on.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342399
91177308-0d34-0410-b5e6-
96231b3b80d8
Xin Tong [Mon, 17 Sep 2018 15:28:01 +0000 (15:28 +0000)]
[CVP] Handle instructions with no user. No need to create CVPLattice state. This handles terminator instructions and more.
Summary:
I tested this patch by compiling sqlite3.ll (clang -O3 -mllvm -disable-llvm-optzns sqlite3.c.)
opt -called-value-propagation sqlite3.ll -time-passes -f -o out.ll
I get 10+% speedup for the pass. I expect some of the gain come from skipping terminator instructions.
=== BEFORE THE PATCH ===
===-------------------------------------------------------------------------===
... Pass execution timing report ...
===-------------------------------------------------------------------------===
Total Execution Time: 0.5562 seconds (0.5582 wall clock)
---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Name ---
0.2485 ( 46.4%) 0.0120 ( 57.7%) 0.2605 ( 46.8%) 0.2615 ( 46.8%) Bitcode Writer
0.1607 ( 30.0%) 0.0079 ( 37.7%) 0.1685 ( 30.3%) 0.1693 ( 30.3%) Called Value Propagation
0.1262 ( 23.6%) 0.0009 ( 4.5%) 0.1271 ( 22.9%) 0.1275 ( 22.8%) Module Verifier
0.5353 (100.0%) 0.0209 (100.0%) 0.5562 (100.0%) 0.5582 (100.0%) Total
=== AFTER THE PATCH ===
===-------------------------------------------------------------------------===
... Pass execution timing report ...
===-------------------------------------------------------------------------===
Total Execution Time: 0.5338 seconds (0.5355 wall clock)
---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Name ---
0.2498 ( 48.6%) 0.0118 ( 59.3%) 0.2615 ( 49.0%) 0.2629 ( 49.1%) Bitcode Writer
0.1377 ( 26.8%) 0.0075 ( 37.8%) 0.1452 ( 27.2%) 0.1455 ( 27.2%) Called Value Propagation
0.1264 ( 24.6%) 0.0006 ( 3.0%) 0.1270 ( 23.8%) 0.1271 ( 23.7%) Module Verifier
0.5139 (100.0%) 0.0199 (100.0%) 0.5338 (100.0%) 0.5355 (100.0%) Total
Reviewers: davide, mssimpso
Reviewed By: davide
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D49108
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342398
91177308-0d34-0410-b5e6-
96231b3b80d8
Amara Emerson [Mon, 17 Sep 2018 14:40:13 +0000 (14:40 +0000)]
Revert "Revert r342183 "[DAGCombine] Fix crash when store merging created an extract_subvector with invalid index.""
Fixed the assertion failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342397
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Devlieghere [Mon, 17 Sep 2018 14:23:47 +0000 (14:23 +0000)]
[DebugInfo] Remove redundant argument. [NFC]
Removes the redundant UnitType parameter from verifyUnitContents. I also
fixed some formatting issues as I was touching the file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342396
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Mon, 17 Sep 2018 13:57:39 +0000 (13:57 +0000)]
[ARM] Cleanup ARM CGP isSupportedValue
isSupportedValue explicitly checked and accepted many types of value,
primarily for debugging reasons. Remove most of these checks and do a
bit of refactoring now that the pass is more stable. This also enables
ZExts to be sources, but this has very little practical benefit at the
moment extend instructions will still be introduced.
Differential Revision: https://reviews.llvm.org/D52080
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342395
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 17 Sep 2018 13:56:42 +0000 (13:56 +0000)]
Fix "not all control paths return a value" MSVC warning. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342394
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Mon, 17 Sep 2018 13:48:25 +0000 (13:48 +0000)]
[ARM] Disallow icmp with negative imm and overflow
We allow overflowing instructions if they're decreasing and only used
by an unsigned compare. Add the extra condition that the icmp cannot
be using a negative immediate.
Differential Revision: https://reviews.llvm.org/D52102
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342392
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 17 Sep 2018 13:24:30 +0000 (13:24 +0000)]
Fix vectorization of canonicalize
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342390
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexandros Lamprineas [Mon, 17 Sep 2018 12:24:55 +0000 (12:24 +0000)]
[GVNHoist] Re-enable GVNHoist by default
Rebase rL341954 since https://bugs.llvm.org/show_bug.cgi?id=38912
has been fixed by rL342055.
Precommit testing performed:
* Overnight runs of csmith comparing the output between programs
compiled with gvn-hoist enabled/disabled.
* Bootstrap builds of clang with UbSan/ASan configurations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342387
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexander Kornienko [Mon, 17 Sep 2018 12:11:01 +0000 (12:11 +0000)]
Use createTemporaryFile in SampleProfTest
Create a temporary file in the system temporary directory instead of creating a
file in the current directory, which may be not writable. (Fix for an issue
introduced in r342283.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342386
91177308-0d34-0410-b5e6-
96231b3b80d8
Guillaume Chatelet [Mon, 17 Sep 2018 11:09:32 +0000 (11:09 +0000)]
[llvm-exegesis] Add predefined floating point values so we can test impact of special values on latency.
Summary: This will be useful to generate many configurations and test instruction regimes (NaN, Inf, subnormal, normal).
Reviewers: courbet
Subscribers: mgorny, tschuett, llvm-commits
Differential Revision: https://reviews.llvm.org/D51858
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342369
91177308-0d34-0410-b5e6-
96231b3b80d8
Strahinja Petrovic [Mon, 17 Sep 2018 11:03:40 +0000 (11:03 +0000)]
[PowerPC] Fix label address calculation for ppc64
This patch fixes calculating address of label for non-pic ppc64.
Differential Revision: https://reviews.llvm.org/D50965
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342368
91177308-0d34-0410-b5e6-
96231b3b80d8
James Henderson [Mon, 17 Sep 2018 10:21:26 +0000 (10:21 +0000)]
Reland r342233: [ThinLTO] Allow setting of maximum cache size with 64-bit number
The original was reverted due to an apparent build-bot test failure,
but it looks like this is just a flaky test.
Also added a C-interface function for large values, and updated
llvm-lto's --thinlto-cache-max-size-bytes switch to take a type larger
than int.
The maximum cache size in terms of bytes is a 64-bit number. However,
the methods to set it only took unsigned previously, which meant that
the maximum cache size could not be specified above 4GB. That's quite
small compared to the output of some projects, so it makes sense to
provide the ability to set larger values in that field.
We also needed a C-interface function that provides a greater range
than the existing thinlto_codegen_set_cache_size_bytes, which also only
takes an unsigned, so this change also adds
hinlto_codegen_set_cache_size_megabytes.
Reviewed by: mehdi_amini, tejohnson, steven_wu
Differential Revision: https://reviews.llvm.org/D52023
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342366
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexander Shaposhnikov [Mon, 17 Sep 2018 09:45:12 +0000 (09:45 +0000)]
[llvm-objcopy] Add missing alias for --strip-all-gnu
This diff adds -S as an alias for --strip-all-gnu
(for compatibility with binutils' objcopy).
Patch by Dmitry Golovin!
Test plan: make check-all
Differential revision: https://reviews.llvm.org/D52163
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342364
91177308-0d34-0410-b5e6-
96231b3b80d8
Max Kazantsev [Mon, 17 Sep 2018 06:33:29 +0000 (06:33 +0000)]
[NFC] Turn unsigned counters into boolean flags
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342360
91177308-0d34-0410-b5e6-
96231b3b80d8
Kristina Brooks [Sun, 16 Sep 2018 22:21:59 +0000 (22:21 +0000)]
[DebugInfo] Fix build when std::vector::iterator is a pointer
std::vector::iterator type may be a pointer, then
iterator::value_type fails to compile since iterator is not a class,
namespace, or enumeration.
Patch by orivej (Orivej Desh)
Differential Revision: https://reviews.llvm.org/D52142
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342354
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 16 Sep 2018 20:28:38 +0000 (20:28 +0000)]
[X86][SSE] Always enable ISD::SRL -> ISD::MULHU for v8i16
For constant non-uniform cases we'll never introduce more and/andn/or selects than already occur in generic pre-SSE41 ISD::SRL lowering.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342352
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 16 Sep 2018 19:20:47 +0000 (19:20 +0000)]
[X86][AVX] Enable ISD::SRL -> ISD::MULHU for v16i16
Now that rL340913 has landed with improved v16i16 selects as shuffles.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342349
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 16 Sep 2018 16:50:26 +0000 (16:50 +0000)]
[DAGCombiner] try to convert pow(x, 1/3) to cbrt(x)
This is a follow-up suggested in D51630 and originally proposed as an IR transform in D49040.
Copying the motivational statement by @evandro from that patch:
"This transformation helps some benchmarks in SPEC CPU2000 and CPU2006, such as 188.ammp,
447.dealII, 453.povray, and especially 300.twolf, as well as some proprietary benchmarks.
Otherwise, no regressions on x86-64 or A64."
I'm proposing to add only the minimum support for a DAG node here. Since we don't have an
LLVM IR intrinsic for cbrt, and there are no other DAG ways to create a FCBRT node yet, I
don't think we need to worry about DAG builder, legalization, a strict variant, etc. We
should be able to expand as needed when adding more functionality/transforms. For reference,
these are transform suggestions currently listed in SimplifyLibCalls.cpp:
// * cbrt(expN(X)) -> expN(x/3)
// * cbrt(sqrt(x)) -> pow(x,1/6)
// * cbrt(cbrt(x)) -> pow(x,1/9)
Also, given that we bail out on long double for now, there should not be any logical
differences between platforms (unless there's some platform out there that has pow()
but not cbrt()).
Differential Revision: https://reviews.llvm.org/D51753
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342348
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 16 Sep 2018 15:41:56 +0000 (15:41 +0000)]
[x86] fix uses check in broadcast transform (PR38949)
https://bugs.llvm.org/show_bug.cgi?id=38949
It's not clear to me that we even need a one-use check in this fold.
Ie, 2 independent loads might be better than a load+dependent shuffle.
Note that the existing re-use tests are not affected. We actually do form a
broadcast node in those tests now because there's no extra use of the
insert_subvector node in those cases. But something later in isel pattern
matching decides that it is not worth using a broadcast for the full load in
those tests:
Legalized selection DAG: %bb.0 'test_broadcast_2f64_4f64_reuse:'
t7: v2f64,ch = load<(load 16 from %ir.p0)> t0, t2, undef:i64
t4: i64,ch = CopyFromReg t0, Register:i64 %1
t10: ch = store<(store 16 into %ir.p1)> t7:1, t7, t4, undef:i64
t18: v4f64 = insert_subvector undef:v4f64, t7, Constant:i64<0>
t20: v4f64 = insert_subvector t18, t7, Constant:i64<2>
Becomes:
t7: v2f64,ch = load<(load 16 from %ir.p0)> t0, t2, undef:i64
t4: i64,ch = CopyFromReg t0, Register:i64 %1
t10: ch = store<(store 16 into %ir.p1)> t7:1, t7, t4, undef:i64
t21: v4f64 = X86ISD::SUBV_BROADCAST t7
ISEL: Starting selection on root node: t21: v4f64 = X86ISD::SUBV_BROADCAST t7
...
Created node: t27: v4f64 = INSERT_SUBREG IMPLICIT_DEF:v4f64, t7, TargetConstant:i32<7>
Morphed node: t21: v4f64 = VINSERTF128rr t27, t7, TargetConstant:i8<1>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342347
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 16 Sep 2018 14:59:04 +0000 (14:59 +0000)]
[x86] add failure to splat test (PR38949); NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342346
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Lebedev [Sun, 16 Sep 2018 12:51:09 +0000 (12:51 +0000)]
[NFC][InstCombine] One more test pattern for comparisons with low-bit-mask.
https://rise4fun.com/Alive/UGzE <- non-canonical, but has extra uses.
https://bugs.llvm.org/show_bug.cgi?id=38123
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342345
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 16 Sep 2018 12:30:41 +0000 (12:30 +0000)]
Fix -Wdangling-else gcc warning. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342344
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Lebedev [Sun, 16 Sep 2018 08:05:06 +0000 (08:05 +0000)]
[NFC][InstCombine] Some more tests for comparisons with low-bit-mask.
https://bugs.llvm.org/show_bug.cgi?id=38123
https://bugs.llvm.org/show_bug.cgi?id=38708
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342343
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sat, 15 Sep 2018 21:27:46 +0000 (21:27 +0000)]
[llvm-readobj] Make some commonly used short options visibile in -help
For people who use llvm-readelf as a replacement of GNU readelf, they would like to see -d -r ... listed in llvm-readelf -help. It also helps understanding the confusing -s (which is unfortunately different in semantics).
Reviewers: phosek, ruiu, echristo
Reviewed By: ruiu, echristo
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D52129
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342339
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Sat, 15 Sep 2018 19:04:27 +0000 (19:04 +0000)]
Revert r342148 (and follow-on fix attempts r342154, r342180, r342182, r342193)
Many bots buildling with make have been broken for several days, e.g.
http://lab.llvm.org:8011/builders/lld-x86_64-darwin13
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342336
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 15 Sep 2018 18:54:10 +0000 (18:54 +0000)]
[InstCombine] Support (sub (sext x), (sext y)) --> (sext (sub x, y)) and (sub (zext x), (zext y)) --> (zext (sub x, y))
Summary:
If the sub doesn't overflow in the original type we can move it above the sext/zext.
This is similar to what we do for add. The overflow checking for sub is currently weaker than add, so the test cases are constructed for what is supported.
Reviewers: spatel
Reviewed By: spatel
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D52075
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342335
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Sat, 15 Sep 2018 18:35:51 +0000 (18:35 +0000)]
Give InfoStreamBuilder an opt-in method to write a hash of the PDB as GUID.
Naively computing the hash after the PDB data has been generated is in practice
as fast as other approaches I tried. I also tried online-computing the hash as
parts of the PDB were written out (https://reviews.llvm.org/D51887; that's also
where all the measuring data is) and computing the hash in parallel
(https://reviews.llvm.org/D51957). This approach here is simplest, without
being slower.
Differential Revision: https://reviews.llvm.org/D51956
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342333
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Sat, 15 Sep 2018 18:24:20 +0000 (18:24 +0000)]
Update microsoftDemangle() to work more like itaniumDemangle().
* Use same method of initializing the output stream and its buffer
* Allow a nullptr Status pointer
* Don't print the mangled name on demangling error
* Write to N (if it is non-nullptr)
Differential Revision: https://reviews.llvm.org/D52104
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342330
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 15 Sep 2018 16:57:04 +0000 (16:57 +0000)]
[X86][SSE] Fix insertps load combine test name
The existing test was called extract_lane_insertps_5123 but it was in fact doing a <6,1,2,3> shuffle. I've fixed the name and added the <5,1,2,3> test case as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342328
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 15 Sep 2018 16:23:35 +0000 (16:23 +0000)]
[X86] Remove an fp->int->fp domain crossing in LowerUINT_TO_FP_i64.
Summary: This unfortunately adds a move, but isn't that better than going to the int domain and back?
Reviewers: RKSimon
Reviewed By: RKSimon
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D52134
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342327
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 15 Sep 2018 16:23:33 +0000 (16:23 +0000)]
[X86] Fold (movmsk (setne (and X, (1 << C)), 0)) -> (movmsk (X << C))
Summary:
MOVMSK only care about the sign bit so we don't need the setcc to fill the whole element with 0s/1s. We can just shift the bit we're looking for into the sign bit. This saves a constant pool load.
Inspired by PR38840.
Reviewers: RKSimon, spatel
Reviewed By: RKSimon
Subscribers: lebedev.ri, llvm-commits
Differential Revision: https://reviews.llvm.org/D52121
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342326
91177308-0d34-0410-b5e6-
96231b3b80d8
Fedor Sergeev [Sat, 15 Sep 2018 14:56:12 +0000 (14:56 +0000)]
[NFC] minor cleanup in PassManagerInternal.h
A few changes found necessary for upcoming PassInstrumentation patch:
- name() methods made const
- properly forward arguments in AnalysisPassModel::run
Separated out of the main D47858 patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342325
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sat, 15 Sep 2018 14:25:44 +0000 (14:25 +0000)]
[InstCombine][x86] try harder to convert blendv intrinsic to generic IR (PR38814)
Missing optimizations with blendv are shown in:
https://bugs.llvm.org/show_bug.cgi?id=38814
If this works, it's an easier and more powerful solution than adding pattern matching
for a few special cases in the backend. The potential danger with this transform in IR
is that the condition value can get separated from the select, and the backend might
not be able to make a blendv out of it again. I don't think that's too likely, but
I've kept this patch minimal with a 'TODO', so we can test that theory in the wild
before expanding the transform.
Differential Revision: https://reviews.llvm.org/D52059
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342324
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 15 Sep 2018 14:20:53 +0000 (14:20 +0000)]
Fix line endings. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342323
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Lebedev [Sat, 15 Sep 2018 12:04:13 +0000 (12:04 +0000)]
[InstCombine] Inefficient pattern for high-bits checking 3 (PR38708)
Summary:
It is sometimes important to check that some newly-computed value
is non-negative and only n bits wide (where n is a variable.)
There are many ways to check that:
https://godbolt.org/z/o4RB8D
The last variant seems best?
(I'm sure there are some other variations i haven't thought of..)
The last (as far i know?) pattern, non-canonical due to the extra use.
https://godbolt.org/z/aCMsPk
https://rise4fun.com/Alive/I6f
https://bugs.llvm.org/show_bug.cgi?id=38708
Reviewers: spatel, craig.topper, RKSimon
Reviewed By: spatel
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D52062
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342321
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Sat, 15 Sep 2018 04:08:52 +0000 (04:08 +0000)]
[CodeGenPrepare] Preserve debug locs in OptimizeExtractBits
CodeGenPrepare has a transform that sinks {lshr, trunc} pairs to make it
easier for the backend to emit fancy extract-bits instructions (e.g UBFX).
Teach it to preserve debug locations and salvage debug values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342319
91177308-0d34-0410-b5e6-
96231b3b80d8
Thomas Lively [Sat, 15 Sep 2018 01:12:48 +0000 (01:12 +0000)]
[WebAssembly][NFC] Generalize operand numbers in SIMD tests
Reviewers: aheejin, dschuff
Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D52130
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342303
91177308-0d34-0410-b5e6-
96231b3b80d8
Thomas Lively [Sat, 15 Sep 2018 00:45:31 +0000 (00:45 +0000)]
[WebAssembly] SIMD shifts
Summary:
Implement shifts of vectors by i32. Since LLVM defines shifts as
binary operations between two vectors, this involves pattern matching
on splatted shift operands. For v2i64 shifts any i32 shift operands
have to be zero extended in the input and any i64 shift operands have
to be wrapped in the output. Depends on D52007.
Reviewers: aheejin, dschuff
Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D51906
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342302
91177308-0d34-0410-b5e6-
96231b3b80d8
Wei Mi [Sat, 15 Sep 2018 00:04:15 +0000 (00:04 +0000)]
Fix filesystem race issue in SampleProfTest introduced in rL342283.
Before this fix, multiple invocations of testRoundTrip will create multiple
writers which share the same file as output destination. That could introduce
filesystem race issue when multiple subtests are executed concurrently. This
patch assign writers with different files as their output destinations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342301
91177308-0d34-0410-b5e6-
96231b3b80d8
Thomas Lively [Fri, 14 Sep 2018 22:35:12 +0000 (22:35 +0000)]
[WebAssembly] SIMD neg
Summary: Depends on D52007.
Reviewers: aheejin, dschuff
Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D52009
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342296
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 14 Sep 2018 22:29:19 +0000 (22:29 +0000)]
[PDB] Make the pretty dumper output modified types.
Currently if we got something like `const Foo` we'd ignore it and
just rely on printing the unmodified `Foo` later on. However,
for testing the native reading code we really would like to be able
to see these so that we can verify that the native reader can
actually handle them. Instead of printing out the full type though,
just print out the header.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342295
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 14 Sep 2018 22:26:09 +0000 (22:26 +0000)]
[BreakFalseDeps] Fix bad formatting. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342293
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 14 Sep 2018 22:23:35 +0000 (22:23 +0000)]
[InstCombine] refactor mul narrowing folds; NFCI
Similar to rL342278:
The test diffs are all cosmetic due to the change in
value naming, but I'm including that to show that the
new code does perform these folds rather than something
else in instcombine.
D52075 should be able to use this code too rather than
duplicating all of the logic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342292
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Fri, 14 Sep 2018 21:43:45 +0000 (21:43 +0000)]
Attempt to unbreak the build after r342286.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342291
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 14 Sep 2018 21:30:07 +0000 (21:30 +0000)]
[InstCombine] add/use overflowing math helper functions; NFC
The mul case can already be refactored to use this similar to
rL342278.
The sub case is proposed in D52075.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342289
91177308-0d34-0410-b5e6-
96231b3b80d8
Lion Yang [Fri, 14 Sep 2018 21:26:05 +0000 (21:26 +0000)]
[PowerPC] Fix the calling convention for i1 arguments on PPC32
Summary:
Integer types smaller than i32 must be extended to i32 by default.
The feature "crbits" introduced at r202451 handles i1 as a special case,
but it did not extend properly.
The caller was, therefore, passing i1 stack arguments by writing 0/1 to
the first byte of the 4-byte stack object and callee was
reading the first byte for the value.
"crbits" is enabled if the optimization level is greater than 1,
which is very common in "release builds".
Such discrepancies with ABI specification also introduces
potential incompatibility with programs or libraries
built with other compilers e.g. GCC.
Fixes PR38661
Reviewers: hfinkel, cuviper
Subscribers: sylvestre.ledru, glaubitz, nagisa, nemanjai, kbarton, llvm-commits
Differential Revision: https://reviews.llvm.org/D51108
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342288
91177308-0d34-0410-b5e6-
96231b3b80d8
Thomas Lively [Fri, 14 Sep 2018 21:21:42 +0000 (21:21 +0000)]
[WebAssembly][NFC] Move SIMD encoding tests to dedicated file
Summary:
This change makes the tests more focused and avoids problematic
interactions between the testing modes and instruction encoding. This
change also allows the other tests to use less verbose output and
stricter checks.
Reviewers: aheejin, dschuff, aardappel
Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D52007
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342287
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 14 Sep 2018 21:19:52 +0000 (21:19 +0000)]
Add missing include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342286
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 14 Sep 2018 21:14:08 +0000 (21:14 +0000)]
[codeview] Remove dead code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342285
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 14 Sep 2018 21:03:57 +0000 (21:03 +0000)]
[PDB] Refactor a little of the Symbol creation code.
Eventually we need to be able to support nested types, which don't
have an associated CVType record. To handle this, remove the
CVType from all of the record classes, and instead store the
deserialized record. Then move the deserialization up to the thing
that creates the type. This actually makes error handling better
anyway as we can return an invalid symbol instead of asserting false.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342284
91177308-0d34-0410-b5e6-
96231b3b80d8
Wei Mi [Fri, 14 Sep 2018 20:52:59 +0000 (20:52 +0000)]
[SampleFDO] Add FunctionOffsetTable in compact binary format profile.
The patch saves a function offset table which maps function name index to the
offset of its function profile to the start of the binary profile. By using
the function offset table, for those function profiles which will not be used
when compiling a module, the profile reader does't have to read them. For
profile size around 10~20M, it saves ~10% compile time.
Differential Revision: https://reviews.llvm.org/D51863
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342283
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Fri, 14 Sep 2018 20:41:42 +0000 (20:41 +0000)]
test/Other/can-execute.txt: delete %t after the test
This test constructs a non-readable file of mode 0111, which lingers in the test output directory and will cause EACCES to various tools (rg, rsync, ...)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342279
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 14 Sep 2018 20:40:46 +0000 (20:40 +0000)]
[InstCombine] refactor add narrowing folds; NFCI
The test diffs are all cosmetic due to the change in
value naming, but I'm including that to show that the
new code does perform these folds rather than something
else in instcombine.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342278
91177308-0d34-0410-b5e6-
96231b3b80d8
Sebastian Pop [Fri, 14 Sep 2018 20:36:19 +0000 (20:36 +0000)]
HotColdSplit: fix invalid SSA due to outlining
The test used to fail with an invalid phi node: the two predecessors were outlined
and the SSA representation was left invalid. The patch adds the exit block to the
cold region.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342277
91177308-0d34-0410-b5e6-
96231b3b80d8
Sebastian Pop [Fri, 14 Sep 2018 20:36:14 +0000 (20:36 +0000)]
HotColdSplit: fix isSingleEntrySingleExit
remove duplicate entries from isSingleEntrySingleExit: the Entry block is
already added by the loop over the dominance frontier.
Remove the heuristic from isOutlineCandidate that a region is too small when it
only contains a basic block. With this change we now grow regions starting from
a block and we continue adding to the ValidColdRegion. Check the heuristic just
before code generation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342276
91177308-0d34-0410-b5e6-
96231b3b80d8
Sebastian Pop [Fri, 14 Sep 2018 20:36:10 +0000 (20:36 +0000)]
HotColdSplit: add back propagation to extend cold regions
Also fix a problem in forward propagation:
const TerminatorInst *TI = It->getTerminator();
was set outside the while loop that iterates over It.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342275
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 14 Sep 2018 20:33:40 +0000 (20:33 +0000)]
[InstCombine] add more tests for add narrowing folds; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342274
91177308-0d34-0410-b5e6-
96231b3b80d8
Thomas Lively [Fri, 14 Sep 2018 20:22:45 +0000 (20:22 +0000)]
[WebAssembly][NFC] Fix unconventional test names
Reviewers: aheejin, dschuff
Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D52110
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342273
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 14 Sep 2018 20:16:31 +0000 (20:16 +0000)]
Remove unused DIASession field
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342272
91177308-0d34-0410-b5e6-
96231b3b80d8
Konstantin Zhuravlyov [Fri, 14 Sep 2018 20:00:36 +0000 (20:00 +0000)]
AMDGPU: Clear the bits before they are being set in program resource registers
Change by Tony Tye
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342270
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Langford [Fri, 14 Sep 2018 19:44:09 +0000 (19:44 +0000)]
Fix lit/example/many-tests pickling issue
Summary:
The multiprocess module uses pickling to transfer
information between processes and does not know how to pickle
the class created in the lit.cfg file and thus the example
fails.
Implement ManyTests in a separate file and import for the
example test passes
Patch by Nathan Lanza <nathan@lanza.io>
Differential Revision: https://reviews.llvm.org/D51328
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342269
91177308-0d34-0410-b5e6-
96231b3b80d8
Lion Yang [Fri, 14 Sep 2018 19:43:11 +0000 (19:43 +0000)]
Test commit access
Remove trailing spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342268
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 14 Sep 2018 19:39:40 +0000 (19:39 +0000)]
Revert r342183 "[DAGCombine] Fix crash when store merging created an extract_subvector with invalid index."
Causes 'isVector() && "Invalid vector type!"' assertion when building
Skia in Chrome.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342265
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Fri, 14 Sep 2018 19:38:45 +0000 (19:38 +0000)]
Fix debug info for SelectionDAG legalization of DAG nodes with two results.
This patch fixes the debug info handling for SelectionDAG legalization
of DAG nodes with two results. When an replaced SDNode has more than
one result, transferDbgValues was always copying the SDDbgValue from
the first result and attaching them to all members. In reality
SelectionDAG::ReplaceAllUsesWith() is given an array of SDNodes
(though the type signature doesn't make this obvious (cf. the call
site code in ReplaceNode()).
rdar://problem/
44162227
Differential Revision: https://reviews.llvm.org/D52112
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342264
91177308-0d34-0410-b5e6-
96231b3b80d8
Steven Wu [Fri, 14 Sep 2018 19:38:21 +0000 (19:38 +0000)]
[ThinLTOCodeGenerator] Avoid Rehash StringMap in ThreadPool
Summary:
During threaded thinLTO, it is possible that the entry for current
module doesn't exist in StringMaps (like ExportLists, ResolvedODR,
etc.). Using operator[] might trigger a rehash for the StringMap, which
might happen on multiple threads at the same time.
rdar://problem/
43846199
Reviewers: tejohnson, mehdi_amini, kromanova, pcc
Reviewed By: tejohnson
Subscribers: dang, inglorion, eraman, dexonsmith, llvm-commits
Differential Revision: https://reviews.llvm.org/D52049
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342263
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 14 Sep 2018 18:44:37 +0000 (18:44 +0000)]
Revert r342210 "[ARM] bottom-top mul support in ARMParallelDSP"
It causes assertion failures while building Skia for Android in
Chromium:
https://ci.chromium.org/buildbot/chromium.clang/ToTAndroid/4550
Reduction forthcoming.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342260
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 14 Sep 2018 18:35:21 +0000 (18:35 +0000)]
Revert a line-endings change that somehow got included with rL342257
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342258
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 14 Sep 2018 18:33:31 +0000 (18:33 +0000)]
[X86][SSE] Lower shuffles to permute(unpack(x,y)) (PR31151)
Attempt to lower a shuffle as an unpack of elements from two inputs followed by a single-input (wider) permutation.
As long as the permutation is wider this is a win - there may be some circumstances where same size permutations would also be useful but I've left that for future work.
Differential Revision: https://reviews.llvm.org/D52043
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342257
91177308-0d34-0410-b5e6-
96231b3b80d8