OSDN Git Service
Justin Bogner [Wed, 18 Jan 2017 17:29:54 +0000 (17:29 +0000)]
GlobalISel: Implement narrowing for G_STORE
Legalize stores of types that are too wide by breaking them up into
sequences of smaller stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292412
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Wed, 18 Jan 2017 17:28:41 +0000 (17:28 +0000)]
GlobalISel: Correct copy-pasted comment. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292411
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Wed, 18 Jan 2017 16:58:43 +0000 (16:58 +0000)]
Don't create a comdat group for a dropped def with initializer
Non-prevailing weak/linkonce odr symbols will be dropped by ThinLTO to
available_externally when possible. If they had an initializer in the
global_ctors list, a comdat group was being created. This code
already had logic to skip available_externally defs, but now the
EliminateAvailableExternally pass will drop these symbols to
declarations earlier. Change the check to skip all declarations for
linker (which includes available_externally along with declarations).
Reviewers: mehdi_amini
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28737
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292408
91177308-0d34-0410-b5e6-
96231b3b80d8
Kirill Bobyrev [Wed, 18 Jan 2017 16:34:25 +0000 (16:34 +0000)]
Revert 292404 due to buildbot failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292407
91177308-0d34-0410-b5e6-
96231b3b80d8
Kirill Bobyrev [Wed, 18 Jan 2017 16:15:47 +0000 (16:15 +0000)]
[X86] Minor code cleanup to fix several clang-tidy warnings. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292404
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Wed, 18 Jan 2017 15:52:11 +0000 (15:52 +0000)]
[ARM] Create SubtargetFeatures from build attrs
An ELFObjectFile can now create SubtargetFeatures from the available
ARM build attributes, in a similar manner to MIPS. I've moved the
MIPS code into its own function and the ARM handler also has a
separate function.
Differential Revision: https://reviews.llvm.org/D28291
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292403
91177308-0d34-0410-b5e6-
96231b3b80d8
Pavel Labath [Wed, 18 Jan 2017 15:46:50 +0000 (15:46 +0000)]
raw_fd_ostream: Make file handles non-inheritable by default
Summary:
This makes the file descriptors on unix platform non-inheritable (O_CLOEXEC).
There is no change in behavior on windows, as the handles were already
non-inheritable there.
Reviewers: rnk, rafael
Subscribers: llvm-commits, mgorny
Differential Revision: https://reviews.llvm.org/D28854
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292401
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Wed, 18 Jan 2017 15:02:54 +0000 (15:02 +0000)]
[Assembler] Fix crash when assembling .quad for AArch32.
A 64-bit relocation does not exist in 32-bit ARMELF. Report an error
instead of crashing.
PR23870
Patch by Sanne Wouda (sanwou01).
Differential Revision: https://reviews.llvm.org/D28851
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292373
91177308-0d34-0410-b5e6-
96231b3b80d8
Florian Hahn [Wed, 18 Jan 2017 15:01:22 +0000 (15:01 +0000)]
[thumb,framelowering] Reset NoVRegs in Thumb1FrameLowering::emitPrologue.
Summary:
In this function, virtual registers can be introduced (for example
through calls to emitThumbRegPlusImmInReg). doScavengeFrameVirtualRegs
will replace those virtual registers with concrete registers later on
in PrologEpilogInserter, which sets NoVRegs again.
This patch fixes the Codegen/Thumb/segmented-stacks.ll test case which
failed with expensive checks.
https://llvm.org/bugs/show_bug.cgi?id=27484
Reviewers: rnk, bkramer, olista01
Reviewed By: olista01
Subscribers: llvm-commits, rengolin
Differential Revision: https://reviews.llvm.org/D28829
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292372
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 18 Jan 2017 14:47:49 +0000 (14:47 +0000)]
[InstCombine][AVX2] Add DemandedElts support for VPERMD/VPERMPS shuffles
Simplify a vpermv shuffle mask based on the elements of the mask that are actually demanded.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292371
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Wed, 18 Jan 2017 14:26:12 +0000 (14:26 +0000)]
Re-revert: [globalisel] Tablegen-erate current Register Bank Information
More missing guards. My build didn't notice it due to a stale file left over
from a Global ISel build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292369
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 18 Jan 2017 14:23:06 +0000 (14:23 +0000)]
[InstCombine][AVX2] Tests showing missed opportunities to pass demanded elts through a vpermd/vpermps shuffle
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292368
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Wed, 18 Jan 2017 14:17:50 +0000 (14:17 +0000)]
Re-commit: [globalisel] Tablegen-erate current Register Bank Information
Summary:
Adds a RegisterBank tablegen class that can be used to declare the register
banks and an associated tablegen pass to generate the necessary code.
Changes since last commit:
The new tablegen pass is now correctly guarded by LLVM_BUILD_GLOBAL_ISEL and
this should fix the buildbots however it may not be the whole fix. The previous
buildbot failures suggest there may be a memory bug lurking that I'm unable to
reproduce (including when using asan) or spot in the source. If they re-occur
on this commit then I'll need assistance from the bot owners to track it down.
Reviewers: t.p.northover, ab, rovka, qcolombet
Reviewed By: qcolombet
Subscribers: aditya_nandakumar, rengolin, kristof.beyls, vkalintiris, mgorny, dberris, llvm-commits, rovka
Differential Revision: https://reviews.llvm.org/D27338
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292367
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Wed, 18 Jan 2017 13:52:12 +0000 (13:52 +0000)]
[ARM] Create objdump subtarget from build attrs
Enable an ELFObjectFile to read the its arm build attributes to
produce a target triple with a specific ARM architecture.
llvm-objdump now uses this functionality to automatically produce
a more accurate target.
Differential Revision: https://reviews.llvm.org/D28769
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292366
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 18 Jan 2017 13:44:04 +0000 (13:44 +0000)]
[InstCombine] Remove unnecessary intrinsics demanded elts handling
As discussed on D28777 - we don't need to handle 'all element' shuffles inside InstCombiner::visitCallInst as InstCombiner::SimplifyDemandedVectorElts will do everything we need.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292365
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 18 Jan 2017 11:40:28 +0000 (11:40 +0000)]
Fixed parser error on windows shell evaluation of RUN script line
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292363
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 18 Jan 2017 11:20:31 +0000 (11:20 +0000)]
[X86][SSE] Simplify umax knownbits test
combineSRA doesn't detect sign bits splats that it does itself so just use -1 as the demanded input so that its already splatted
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292361
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zuckerman [Wed, 18 Jan 2017 09:31:13 +0000 (09:31 +0000)]
[X86] Improve mul combine for negative multiplayer (2^c - 1)
This patch improves the mul instruction combine function (combineMul)
by adding new layer of logic.
In this patch, we are adding the ability to fold (mul x, -((1 << c) -1))
or (mul x, -((1 << c) +1)) into (neg(X << c) -x) or (neg((x << c) + x) respective.
Differential Revision: https://reviews.llvm.org/D28232
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292358
91177308-0d34-0410-b5e6-
96231b3b80d8
Renato Golin [Wed, 18 Jan 2017 09:08:43 +0000 (09:08 +0000)]
Revert "[XRay][Arm] Repair XRay table emission on Arm32 and add tests to identify such problem earlier"
This reverts commit r292210, as it broke the Thumb buldbot with:
clang-5.0: error: the clang compiler does not support '-fxray-instrument
on thumbv7-unknown-linux-gnueabihf'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292357
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Wed, 18 Jan 2017 08:32:54 +0000 (08:32 +0000)]
[SystemZ] Proper handling of undef flag while expanding pseudo.
During post-RA pseudo expansion, an 'undef' flag of the source operand should
be propagated by emitGRX32Move().
Review: Ulrich Weigand
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292353
91177308-0d34-0410-b5e6-
96231b3b80d8
Marina Yatsina [Wed, 18 Jan 2017 08:07:51 +0000 (08:07 +0000)]
[X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix
This patch fixes bugzilla 31576 (https://llvm.org/bugs/show_bug.cgi?id=31576).
"data32" instruction prefix was not defined in the llvm.
An exception had to be added to the X86 tablegen and AsmPrinter because both "data16" and "data32" are encoded to 0x66 (but in different modes).
Differential Revision: https://reviews.llvm.org/D28468
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292352
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 18 Jan 2017 02:43:01 +0000 (02:43 +0000)]
[LoopDeletion] (cleanup, NFC) Fix one more local variable that didn't
follow LLVM's naming conventions while I'm here.
Again, sorry I didn't spot this earlier to coalesce with other cleanup
changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292333
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 18 Jan 2017 02:41:26 +0000 (02:41 +0000)]
[PM] Teach LoopDeletion to correctly update the LPM when loops are
deleted.
I've expanded its test coverage a bit including adding one test that
will crash clearly without this change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292332
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 18 Jan 2017 02:29:35 +0000 (02:29 +0000)]
[LoopDeletion] (cleanup, NFC) Make this test actually test what it
claims to test.
LoopSimplify was unifying the multiple exits in this test case, making
it never even test the multiple exit handling of LoopDeletion. Doh.
Now it works (thanks to a great idea from mkuper) and will fail if we
ever change something to make it stop working.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292331
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 18 Jan 2017 02:10:08 +0000 (02:10 +0000)]
DAG: Consider nnan in isKnownNeverNaN
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292328
91177308-0d34-0410-b5e6-
96231b3b80d8
Wei Mi [Wed, 18 Jan 2017 01:53:53 +0000 (01:53 +0000)]
Revert rL292292 since it causes a SEGV on sanitizer-x86_64-linux-fuzzer build bot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292327
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 18 Jan 2017 01:10:18 +0000 (01:10 +0000)]
[libFuzzer] remove stale code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292325
91177308-0d34-0410-b5e6-
96231b3b80d8
Pengxuan Zheng [Wed, 18 Jan 2017 01:03:29 +0000 (01:03 +0000)]
[test-release.sh] Add Polly to the list of projects
Reviewers: zinob, hans, grosser
Reviewed By: hans, grosser
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28712
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292323
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 18 Jan 2017 01:02:45 +0000 (01:02 +0000)]
[WebAssembly] Update grow_memory's return type.
The grow_memory instruction now returns the previous memory size. Add the
return type to the LLVM intrinsic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292322
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Wed, 18 Jan 2017 00:59:19 +0000 (00:59 +0000)]
MIRParser: Allow regclass specification on operand
You can now define the register class of a virtual register on the
operand itself avoiding the need to use a "registers:" block.
Example: "%0:gr64 = COPY %rax"
Differential Revision: https://reviews.llvm.org/D22398
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292321
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Wed, 18 Jan 2017 00:57:48 +0000 (00:57 +0000)]
[Target, Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292320
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 18 Jan 2017 00:55:29 +0000 (00:55 +0000)]
[libFuzzer] exit(1) on failed merge
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292319
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 18 Jan 2017 00:45:02 +0000 (00:45 +0000)]
[libFuzzer] better link for trophies
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292318
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:29:53 +0000 (00:29 +0000)]
[NVPTX] Support global variables of integer type larger than i64.
Reviewers: tra, majnemer
Subscribers: llvm-commits, jholewinski
Differential Revision: https://reviews.llvm.org/D28825
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292316
91177308-0d34-0410-b5e6-
96231b3b80d8
Xin Tong [Wed, 18 Jan 2017 00:26:17 +0000 (00:26 +0000)]
2 returns next to each other =). NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292315
91177308-0d34-0410-b5e6-
96231b3b80d8
Xin Tong [Wed, 18 Jan 2017 00:15:11 +0000 (00:15 +0000)]
Skip loop header while we can when computing loop safety info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292310
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Fiselier [Wed, 18 Jan 2017 00:12:41 +0000 (00:12 +0000)]
[LIT] Make util.executeCommand python3 friendly
Summary: The parameter `input` to `subprocess.Popen.communicate(...)` must be an object of type `bytes` . This is strictly enforced in python3. This patch (1) allows `to_bytes` to be safely called redundantly. (2) Explicitly convert `input` within `executeCommand`. This allows for usages like `executeCommand(['clang++', '-'], input='int main() {}\n')`.
Reviewers: ddunbar, BinaryKhaos, modocache, dim, EricWF
Reviewed By: EricWF
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28736
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292308
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:09:36 +0000 (00:09 +0000)]
[NVPTX] Standardize asm printer on "foo \tbar".
Some instructions were printed as "foo\tbar", but most are printed as
"foo \bar". Standardize on the latter form.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292306
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:09:19 +0000 (00:09 +0000)]
[NVPTX] Clean up nested !strconcat calls.
!strconcat is a variadic function; it will concatenate an arbitrary
number of strings. There's no need to nest it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292305
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:09:01 +0000 (00:09 +0000)]
[NVPTX] Implement min/max in tablegen, rather than with custom DAGComine logic.
Summary:
This change also lets us use max.{s,u}16. There's a vague warning in a
test about this maybe being less efficient, but I could not come up with
a case where the resulting SASS (sm_35 or sm_60) was different with or
without max.{s,u}16. It's true that nvcc seems to emit only
max.{s,u}32, but even ptxas 7.0 seems to have no problem generating
efficient SASS from max.{s,u}16 (the casts up to i32 and back down to
i16 seem to be implicit and nops, happening via register aliasing).
In the absence of evidence, better to have fewer special cases, emit
more straightforward code, etc. In particular, if a new GPU has 16-bit
min/max instructions, we want to be able to use them.
Reviewers: tra
Subscribers: jholewinski, llvm-commits
Differential Revision: https://reviews.llvm.org/D28732
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292304
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:08:44 +0000 (00:08 +0000)]
[NVPTX] Lower integer absolute value idiom to abs instruction.
Summary: Previously we lowered it literally, to shifts and xors.
Reviewers: tra
Subscribers: jholewinski, llvm-commits
Differential Revision: https://reviews.llvm.org/D28722
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292303
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:08:27 +0000 (00:08 +0000)]
[NVPTX] Improve lowering of llvm.ctpop.
Summary:
Avoid an unnecessary conversion operation when using the result of
ctpop.i32 or ctpop.i16 as an i32, as in both cases the ptx instruction
we run returns an i32.
(Previously if we used the value as an i32, we'd do an unnecessary
zext+trunc.)
Reviewers: tra
Subscribers: jholewinski, llvm-commits
Differential Revision: https://reviews.llvm.org/D28721
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292302
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:08:10 +0000 (00:08 +0000)]
[NVPTX] Add lowering for llvm.bitreverse.
Reviewers: tra
Subscribers: llvm-commits, jholewinski
Differential Revision: https://reviews.llvm.org/D28720
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292301
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:07:52 +0000 (00:07 +0000)]
[NVPTX] Fix function names in ctlz.ll test. Test-only change.
Looks like a copy/paste mistake, all the functions in ctlz.ll were named
"ctpop".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292300
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:07:35 +0000 (00:07 +0000)]
[NVPTX] Improve lowering of llvm.ctlz.
Summary:
* Disable "ctlz speculation", which inserts a branch on every ctlz(x) which
has defined behavior on x == 0 to check whether x is, in fact zero.
* Add DAG patterns that avoid re-truncating or re-expanding the result
of the 16- and 64-bit ctz instructions.
Reviewers: tra
Subscribers: llvm-commits, jholewinski
Differential Revision: https://reviews.llvm.org/D28719
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292299
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:07:18 +0000 (00:07 +0000)]
[IR] Grammar police: "intact" is one word. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292298
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 18 Jan 2017 00:03:23 +0000 (00:03 +0000)]
[InstCombine] add tests to show missed shrinkage; NFC
A patch to partially solve this:
https://reviews.llvm.org/D28625
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292296
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Tue, 17 Jan 2017 23:50:21 +0000 (23:50 +0000)]
[libFuzzer] add ATTRIBUTE_NO_SANITIZE_MEMORY to sanitizer hooks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292295
91177308-0d34-0410-b5e6-
96231b3b80d8
Dehao Chen [Tue, 17 Jan 2017 23:39:33 +0000 (23:39 +0000)]
Introduce -unroll-partial-threshold to separate PartialThreshold from Threshold in loop unorller.
Summary: Partial unrolling should have separate threshold with full unrolling.
Reviewers: efriedma, mzolotukhin
Reviewed By: efriedma, mzolotukhin
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28831
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292293
91177308-0d34-0410-b5e6-
96231b3b80d8
Wei Mi [Tue, 17 Jan 2017 23:39:07 +0000 (23:39 +0000)]
[RegisterCoalescing] Remove partial redundent copy.
The patch is to solve the performance problem described in PR27827.
Register coalescing sometimes cannot remove a copy because of interference.
But if we can find a reverse copy in one of the predecessor block of the copy,
the copy is partially redundent and we may remove the copy partially by moving
it to the predecessor block without the reverse copy.
Differential Revision: https://reviews.llvm.org/D28585
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292292
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Tue, 17 Jan 2017 23:23:08 +0000 (23:23 +0000)]
Fix GettingStarted doc so that the example build command for cmake LLVM_ENABLE_PROJECTS works on linux
I tested the previous one on macOS, however building libc++ on Linux
requires libcxxabi as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292290
91177308-0d34-0410-b5e6-
96231b3b80d8
Mike Aizatsky [Tue, 17 Jan 2017 23:11:32 +0000 (23:11 +0000)]
[libfuzzer] fixing collected pc addresses for coverage
Summary: The causes google/ossfuzz#84
Reviewers: kcc
Subscribers: mgorny
Differential Revision: https://reviews.llvm.org/D28827
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292289
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 17 Jan 2017 23:09:21 +0000 (23:09 +0000)]
[ADT] Add SparseBitVector::find_last().
Differential Revision: https://reviews.llvm.org/D28817
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292288
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Tue, 17 Jan 2017 23:09:05 +0000 (23:09 +0000)]
[libFuzzer] use table of recent compares for memcmp/strcmp (to unify the code between cmp and memcmp handling)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292287
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Tue, 17 Jan 2017 23:05:07 +0000 (23:05 +0000)]
[libFuzzer] copy the options inside MutationDispatcher to avoid use-after-scope in mutator tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292286
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Tue, 17 Jan 2017 23:04:01 +0000 (23:04 +0000)]
GlobalISel: fix comparison order for G_FCMP
As with G_ICMP we'd written the CSET instructions backwards.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292285
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Tue, 17 Jan 2017 22:43:34 +0000 (22:43 +0000)]
GlobalISel: add callseq instructions to record stack usage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292284
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Tue, 17 Jan 2017 22:30:10 +0000 (22:30 +0000)]
GlobalISel: correctly handle varargs
Some platforms (notably iOS) use a different calling convention for unnamed vs
named parameters in varargs functions, so we need to keep track of this
information when translating calls.
Since not many platforms are involved, the guts of the special handling is in
the ValueHandler class (with a generic implementation that should work for most
targets).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292283
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 17 Jan 2017 22:28:52 +0000 (22:28 +0000)]
[LoopDeletion] (cleanup, NFC) Use the dedicated helper to get a single
unique exit block if available rather than rolling it ourselves.
This is a little disappointing because that helper doesn't do anything
clever to short-circuit the (surprisingly expensive) computation of all
exit blocks. What's worse is that the way we compute this is hopelessly,
hilariously inefficient. We're literally computing the same information
two different ways and multiple times each way:
- hasDedicatedExits computes the exit block set and then looks at the
predecessors of each
- getExitingBlocks computes the set of loop blocks which have exiting
successors
- getUniqueExitBlock(s) computes the set of non-loop blocks reached from
loop blocks (sound familiar?)
Anyways, at some point we should clean all of this up in the LoopInfo
API, but for now just simplifying the user I'm about to touch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292282
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Tue, 17 Jan 2017 22:21:33 +0000 (22:21 +0000)]
[LV] Add requires asserts to test case
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292280
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 17 Jan 2017 22:19:56 +0000 (22:19 +0000)]
[LoopDeletion] (cleanup, NFC) Fix another variable name to match LLVM
conventions, missed this one in a previous cleanup patch (sorry).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292279
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Tue, 17 Jan 2017 22:13:50 +0000 (22:13 +0000)]
[GlobalISel] track predecessor mapping during switch lowering.
Correctly populating Machine PHIs relies on knowing exactly how the IR level
CFG was lowered to MachineIR. This needs to be tracked by any translation
phases that meddle (currently only SwitchInst handling).
This reapplies r291973 which was reverted because of testing failures. Fixes:
+ Don't return an ArrayRef to a local temporary.
+ Incorporate Kristof's suggested comment improvements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292278
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 17 Jan 2017 22:12:25 +0000 (22:12 +0000)]
[X86][SSE] Split UMIN and UMAX known bits tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292277
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 17 Jan 2017 22:09:28 +0000 (22:09 +0000)]
[LoopDeletion] (cleanup, NFC) Remove a pointless comment.
I hope that for any code, it is changed only with good reason and only
when the author knows what they are doing...
There is of course good reason to comment here about the subtlety of the
process, and I've left that comment in tact.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292275
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 17 Jan 2017 22:07:26 +0000 (22:07 +0000)]
[LoopDeletion] (cleanup, NFC) Make simple helper functions static
instead of members.
No state was being provided by the object so this seems strictly
simpler.
I've also tried to improve the name and comments for the functions to
more thoroughly document what they are doing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292274
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 17 Jan 2017 22:00:52 +0000 (22:00 +0000)]
[LoopDeletion] (cleanup, NFC) Stop passing around reference to a vector
that we know has exactly one element when all we are going to do is get
that one element out of it.
Instead, pass around that one element.
There are more simplifications to come in this code...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292273
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 17 Jan 2017 21:51:39 +0000 (21:51 +0000)]
[PM] Clean up variable and parameter names to match modern LLVM naming
conventions more conistently before hacking on this code to integrate
nicely with new PM's loop pass infrastructure. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292272
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Tue, 17 Jan 2017 21:48:31 +0000 (21:48 +0000)]
Silence some Sphinx diagnostics in an attempt to get the documentation builder back to green (lab.llvm.org:8011/builders/llvm-sphinx-docs/builds/1895).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292271
91177308-0d34-0410-b5e6-
96231b3b80d8
Xin Tong [Tue, 17 Jan 2017 21:26:36 +0000 (21:26 +0000)]
Add a test case for LICM when promoting locals that may be read after the throw within the loop. NFCI.
Summary: Add a test case for LICM when promoting locals that may be read after the throw within the loop.
Reviewers: eli.friedman, hfinkel, sanjoy
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28822
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292261
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 17 Jan 2017 21:25:16 +0000 (21:25 +0000)]
[InstCombine] refactor foldICmpShlConstant(); NFCI
This reduces the size of and increases the symmetry with the planned functional change in:
https://reviews.llvm.org/D28406
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292260
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexei Starovoitov [Tue, 17 Jan 2017 21:14:00 +0000 (21:14 +0000)]
[bpf] fix stack-use-after-scope
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292258
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Tue, 17 Jan 2017 21:04:23 +0000 (21:04 +0000)]
Enabled -fsanitize-address-use-after-scope for -DLLVM_USE_SANITIZER=Address
Subscribers: mgorny, llvm-commits
Differential Revision: https://reviews.llvm.org/D28823
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292256
91177308-0d34-0410-b5e6-
96231b3b80d8
Michal Gorny [Tue, 17 Jan 2017 21:04:19 +0000 (21:04 +0000)]
[cmake] Update SOVERSION for the new versioning scheme
Update SOVERSION to use just the major version number rather than
major+minor, to match the new versioning scheme where only major is used
to indicate API/ABI version.
Since two-digit SOVERSIONs were introduced post 3.9 branching, this
change does not risk any SOVERSION collisions. In the past,
two-component X.Y SOVERSIONs were shortly used but those will not
interfere with the new ones since the new versions start at 4.
Differential Revision: https://reviews.llvm.org/D28730
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292255
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Tue, 17 Jan 2017 20:51:39 +0000 (20:51 +0000)]
[LV] Mark non-consecutive-like pointers non-uniform
If a memory instruction will be vectorized, but it's pointer operand is
non-consecutive-like, the instruction is a gather or scatter operation. Its
pointer operand will be non-uniform. This should fix PR31671.
Reference: https://llvm.org/bugs/show_bug.cgi?id=31671
Differential Revision: https://reviews.llvm.org/D28819
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292254
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 17 Jan 2017 20:34:09 +0000 (20:34 +0000)]
[WebAssembly] Add triple support for the new wasm object format
Differential Revision: https://reviews.llvm.org/D26701
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292252
91177308-0d34-0410-b5e6-
96231b3b80d8
Xin Tong [Tue, 17 Jan 2017 20:28:36 +0000 (20:28 +0000)]
Rename scalar_promote.ll to scalar-promote.ll and scalar_promote-unwind.ll to scalar-promote-unwind.ll. NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292251
91177308-0d34-0410-b5e6-
96231b3b80d8
Xin Tong [Tue, 17 Jan 2017 20:24:39 +0000 (20:24 +0000)]
Refactor out LoopInfo computation so that it can be used by
other test cases.
Summary: Refactor out LoopInfo computation so that it can be
used by other test cases.
So i am changing this test proactively for later commit, which will use
this function.
Reviewers: sanjoy, hfinkel
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28778
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292250
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Tue, 17 Jan 2017 20:15:47 +0000 (20:15 +0000)]
[EarlyCSE] Don't DSE across readnone functions that may throw
Summary: Depends on D28740
Reviewers: dberlin, chandlerc, hfinkel, majnemer
Subscribers: mcrosier, llvm-commits
Differential Revision: https://reviews.llvm.org/D28741
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292249
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 17 Jan 2017 20:15:26 +0000 (20:15 +0000)]
[InstCombine] add tests for shl nsw + icmp sle; NFC
We want to handle these cases similarly to icmp sgt, so add the tests for it.
See: https://reviews.llvm.org/D28406
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292248
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Tue, 17 Jan 2017 19:54:18 +0000 (19:54 +0000)]
[TLI] Appease spurious MSVC warning using llvm_unreachable. NFC.
r292188 confused MSVC because of the combined lack of a default
case and return statement.
Move the unreachable outside of the NumLibFuncs case, to make it
obvious that all cases should be handled.
llvm_unreachable is __declspec(noreturn), so I'm assuming this
does appease MSVC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292246
91177308-0d34-0410-b5e6-
96231b3b80d8
Joerg Sonnenberger [Tue, 17 Jan 2017 19:29:15 +0000 (19:29 +0000)]
Remove an overeager assert from r288844.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292244
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Tue, 17 Jan 2017 19:18:57 +0000 (19:18 +0000)]
Revert r291640 change to fold X86 comparison with atomic_load_add.
Even with the fix from r291630, this still causes problems. I get
widespread assertion failures in the Swift runtime's WeakRefCount::increment()
function. I sent a reduced testcase in reply to the commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292242
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 17 Jan 2017 19:18:12 +0000 (19:18 +0000)]
[PM] Teach the LoopPassManager to automatically canonicalize loops by
runnig LCSSA over them prior to running the loop pipeline.
This also teaches the loop PM to verify that LCSSA form is preserved
throughout the pipeline's run across the loop nest.
Most of the test updates just leverage this new functionality. One has to be
relaxed with the new PM as IVUsers is less powerful when it sees LCSSA input.
Differential Revision: https://reviews.llvm.org/D28743
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292241
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 17 Jan 2017 18:15:49 +0000 (18:15 +0000)]
[ValueTracking] recognize a 'not' of an assumed condition as false
Also, add the corresponding match to the AssumptionCache's 'Affected Values' list.
Differential Revision: https://reviews.llvm.org/D28485
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292239
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 17 Jan 2017 18:08:06 +0000 (18:08 +0000)]
[InstCombine] Fold ((C1 OP zext(X)) & C2) -> zext((C1 OP X) & C2)
This further extends r292179 to support additional binary operators
beyond subtraction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292238
91177308-0d34-0410-b5e6-
96231b3b80d8
Kuba Mracek [Tue, 17 Jan 2017 18:06:38 +0000 (18:06 +0000)]
Revert r292231.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292237
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 17 Jan 2017 17:33:18 +0000 (17:33 +0000)]
[X86][AVX512] Add all_of/any_of avx512vl tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292235
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Tue, 17 Jan 2017 17:23:51 +0000 (17:23 +0000)]
[ValueTracking] Extend known bits to understand @llvm.bitreverse.
Differential Revision: https://reviews.llvm.org/D28780
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292233
91177308-0d34-0410-b5e6-
96231b3b80d8
Kuba Mracek [Tue, 17 Jan 2017 17:15:02 +0000 (17:15 +0000)]
[lit] Limit parallelism of sanitizer tests on Darwin [llvm part]
Running lit tests and unit tests of ASan and TSan on macOS has very bad performance when running with a high number of threads. This is caused by xnu (the macOS kernel), which currently doesn't handle mapping and unmapping of sanitizer shadow regions (reserved VM which are several terabytes large) very well. The situation is so bad that increasing the number of threads actually makes the total testing time larger. The macOS buildbots are affected by this. Note that we can't easily limit the number of sanitizer testing threads without affecting the rest of the tests.
This patch adds a special "group" into lit, and limits the number of concurrently running tests in this group. This helps solve the contention problem, while still allowing other tests to run in full, that means running lit with -j8 will still with 8 threads, and parallelism is only limited in sanitizer tests.
Differential Revision: https://reviews.llvm.org/D28420
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292231
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 17 Jan 2017 16:59:09 +0000 (16:59 +0000)]
[InstCombine] reduce indent; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292230
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 17 Jan 2017 15:45:07 +0000 (15:45 +0000)]
Recommit r292214 "[Support/Compression] - Change zlib API to return Error instead of custom status"
No any changes, will follow up with D28807 commit containing APLi change for clang
to fix build issues happened.
Original commit message:
[Support/Compression] - Change zlib API to return Error instead of custom status.
Previously API returned custom enum values.
Patch changes it to return Error with string description.
That should help users to report errors in universal way.
Differential revision: https://reviews.llvm.org/D28684
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292226
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Kolton [Tue, 17 Jan 2017 15:26:02 +0000 (15:26 +0000)]
[AMDGPU] Assembler: fix v_mac_f16 immediates
Reviewers: vpykhtin, artem.tamazov, tstellarAMD
Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye
Differential Revision: https://reviews.llvm.org/D28802
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292224
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 17 Jan 2017 15:02:01 +0000 (15:02 +0000)]
[X86][SSE] Tests showing horizontal all_of/any_of of vector comparison results
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292223
91177308-0d34-0410-b5e6-
96231b3b80d8
Krasimir Georgiev [Tue, 17 Jan 2017 14:22:29 +0000 (14:22 +0000)]
[llvm-objdump tests] Copy the inputs of tests closer to tests.
Summary:
Tests under tools/llvm-objdump should not use inputs from Object. Copied the
required inputs and aligned the new tests to be more consistent with the existing
tests in this respect.
Reviewers: ioeric
Reviewed By: ioeric
Subscribers: davide, djasper, cfe-commits
Differential Revision: https://reviews.llvm.org/D28799
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292222
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 17 Jan 2017 13:27:58 +0000 (13:27 +0000)]
Revert r292214 "[Support/Compression] - Change zlib API to return Error instead of custom status."
It broked clang:
http://lab.llvm.org:8080/green//job/clang-stage1-cmake-RA-incremental_build/34218/consoleFull#
46141505449ba4694-19c4-4d7e-bec5-
911270d8a58c
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292217
91177308-0d34-0410-b5e6-
96231b3b80d8
Boris Ulasevich [Tue, 17 Jan 2017 13:27:28 +0000 (13:27 +0000)]
BrainF example: fixing output buffering issue
Differential Revision: https://reviews.llvm.org/D27824
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292216
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 17 Jan 2017 13:20:17 +0000 (13:20 +0000)]
[Support/Compression] - Change zlib API to return Error instead of custom status.
Previously API returned custom enum values.
Patch changes it to return Error with string description.
That should help users to report errors in universal way.
Differential revision: https://reviews.llvm.org/D28684
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292214
91177308-0d34-0410-b5e6-
96231b3b80d8
Serge Rogatch [Tue, 17 Jan 2017 11:52:10 +0000 (11:52 +0000)]
[XRay][Arm] Repair XRay table emission on Arm32 and add tests to identify such problem earlier
Summary:
Emission of XRay table was occasionally disabled for Arm32, but this bug was not then detected because earlier (also by mistake) testing of XRay was occasionally disabled on 32-bit Arm targets. This patch should fix that problem and detect such problems in the future.
This patch is one of a series, see also
- https://reviews.llvm.org/D28623
Reviewers: rengolin, dberris
Reviewed By: dberris
Subscribers: llvm-commits, aemerson, rengolin, dberris, iid_iunknown
Differential Revision: https://reviews.llvm.org/D28624
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292210
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 17 Jan 2017 11:35:03 +0000 (11:35 +0000)]
[InstCombine][X86][AVX] Add DemandedElts support for VPERMILPD/VPERMILPS instructions
Simplify a vpermilvar shuffle mask based on the elements of the mask that are actually demanded.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292209
91177308-0d34-0410-b5e6-
96231b3b80d8
Vasileios Kalintiris [Tue, 17 Jan 2017 11:00:28 +0000 (11:00 +0000)]
Update the release tester for MIPS. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292208
91177308-0d34-0410-b5e6-
96231b3b80d8