OSDN Git Service
Dan Gohman [Mon, 24 Oct 2016 20:32:04 +0000 (20:32 +0000)]
[WebAssembly] Define the `end` opcode value.
CFGStackify differentiates between END_LOOP and END_BLOCK, but wasm
itself doesn't. For now, just use the same opcode for both.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285016
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 24 Oct 2016 20:21:49 +0000 (20:21 +0000)]
[WebAssembly] Update opcode values according to recent spec changes.
This corresponds to the "0xd" opcode renumbering.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285014
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 24 Oct 2016 19:49:43 +0000 (19:49 +0000)]
[WebAssembly] Add an option to make get_local/set_local explicit.
This patch adds a pass, controlled by an option and off by default for
now, for making implicit get_local/set_local explicit. This simplifies
emitting wasm with MC.
Differential Revision: https://reviews.llvm.org/D25836
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285009
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Mon, 24 Oct 2016 19:41:47 +0000 (19:41 +0000)]
Merge two if conditions into one. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285008
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Mon, 24 Oct 2016 19:23:39 +0000 (19:23 +0000)]
Target: Change various section classifiers in TargetLoweringObjectFile to take a GlobalObject.
These functions are about classifying a global which will actually be
emitted, so it does not make sense for them to take a GlobalValue which may
for example be an alias.
Change the Mach-O object writer and the Hexagon, Lanai and MIPS backends to
look through aliases before using TargetLoweringObjectFile interfaces. These
are functional changes but all appear to be bug fixes.
Differential Revision: https://reviews.llvm.org/D25917
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285006
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 24 Oct 2016 19:13:29 +0000 (19:13 +0000)]
[x86] add tests for {-1,0,1} select of constants
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285005
91177308-0d34-0410-b5e6-
96231b3b80d8
Mandeep Singh Grang [Mon, 24 Oct 2016 18:57:55 +0000 (18:57 +0000)]
[llvm] Remove redundant --check-prefix=CHECK from tests
Reviewers: MatzeB, mcrosier, rengolin
Differential Revision: https://reviews.llvm.org/D25894
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285003
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Mon, 24 Oct 2016 18:56:09 +0000 (18:56 +0000)]
CodeGen: Do not add a global's address space to the folding set profile.
It is already part of the type (which is part of the global, which is already
being added), so there's no need to do it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285002
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Mon, 24 Oct 2016 18:23:51 +0000 (18:23 +0000)]
add-discriminators: Fix handling of lexical scopes.
This fixes a bug in the handling of lexical scopes, when more than one
scope is defined on the same line or functions are inlined into call
sites that are on the same line as the function definition. This
situation can easily happen in macro expansions.
The problem is solved by introducing a SmallDenseMap<DIScope *,
DILexicalBlockFile *, 1> that keeps track of all the different lexical
scopes that share a line/file location.
Fixes PR30681.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284998
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 24 Oct 2016 18:11:05 +0000 (18:11 +0000)]
Clarify that MSVC is not the issue here anymore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284997
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Mon, 24 Oct 2016 17:40:46 +0000 (17:40 +0000)]
Revert r284972 and remove other defaulted copy/move constructors/=
David Blaikie pointed out that we get them for free without having to
write anything.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284996
91177308-0d34-0410-b5e6-
96231b3b80d8
Ehsan Amiri [Mon, 24 Oct 2016 17:31:09 +0000 (17:31 +0000)]
[PPC] Generate positive FP zero using xor insn instead of loading from constant area
https://reviews.llvm.org/D23614
Currently we load +0.0 from constant area. That can change to be generated using
XOR instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284995
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Mon, 24 Oct 2016 17:29:52 +0000 (17:29 +0000)]
ReleaseNotes: mention new compiler requirements
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284994
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Mon, 24 Oct 2016 17:20:50 +0000 (17:20 +0000)]
Revert r284580+r284917. ("Synthesize TBB/TBH instructions")
The optimization has correctness issues, so reverting for now to fix tests
on thumb1 targets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284993
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 24 Oct 2016 17:15:05 +0000 (17:15 +0000)]
Removed FIXME from include ordering comment
Nothing to fix, it's just the way it has to be.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284991
91177308-0d34-0410-b5e6-
96231b3b80d8
Rong Xu [Mon, 24 Oct 2016 16:50:12 +0000 (16:50 +0000)]
Check the number of Args in LibCallsShrinkWrap.
Some library fucntions can have no argument.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284989
91177308-0d34-0410-b5e6-
96231b3b80d8
Evandro Menezes [Mon, 24 Oct 2016 16:14:58 +0000 (16:14 +0000)]
[AArch64] Optionally use the Newton series for reciprocal estimation
Add support for estimating the square root or its reciprocal and division or
reciprocal using the combiner generic Newton series.
Differential revision: https://reviews.llvm.org/D25291
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284986
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Mon, 24 Oct 2016 16:06:53 +0000 (16:06 +0000)]
[ADT] static_assert that SmallDenseMap is instantiated with a power-of-two number of inline buckets.
Summary:
If you try to instantiate it with a non-power-of-two buckets, DenseMap
will assert at runtime (!) if we ever outgrow our inline storage.
I believe using a constexpr function inside of a static_assert is safe
now that we've unsupported MSVC 2013 and GCC < 4.8.
Reviewers: bkramer, qcolombet, escha
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25900
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284985
91177308-0d34-0410-b5e6-
96231b3b80d8
Geoff Berry [Mon, 24 Oct 2016 15:54:00 +0000 (15:54 +0000)]
[EarlyCSE] Optimize MemoryPhis and reduce memory clobber queries w/ MemorySSA
Summary:
When using MemorySSA, re-optimize MemoryPhis when removing a store since
this may create MemoryPhis with all identical arguments.
Also, when using MemorySSA to check if two MemoryUses are reading from
the same version of the heap, use the defining access instead of calling
getClobberingAccess, since the latter can currently result in many more
AA calls. Once the MemorySSA use optimization tracking changes are
done, we can remove this limitation, which should result in more loads
being CSE'd.
Reviewers: dberlin
Subscribers: mcrosier, llvm-commits
Differential Revision: https://reviews.llvm.org/D25881
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284984
91177308-0d34-0410-b5e6-
96231b3b80d8
Ehsan Amiri [Mon, 24 Oct 2016 15:46:58 +0000 (15:46 +0000)]
[PPC] Better codegen for AND, ANY_EXT, SRL sequence
https://reviews.llvm.org/D24924
This improves the code generated for a sequence of AND, ANY_EXT, SRL instructions. This is a targetted fix for this special pattern. The pattern is generated by target independet dag combiner and so a more general fix may not be necessary. If we come across other similar cases, some ideas for handling it are discussed on the code review.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284983
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 24 Oct 2016 15:43:40 +0000 (15:43 +0000)]
[x86] regenerate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284982
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolai Haehnle [Mon, 24 Oct 2016 14:56:02 +0000 (14:56 +0000)]
AMDGPU: Fix Two Address problems with v_movreld
Summary:
The v_movreld machine instruction is used with three operands that are
in a sense tied to each other (the explicit VGPR_32 def and the implicit
VGPR_NN def and use). There is no way to express that using the currently
available operand bits, and indeed there are cases where the Two Address
instructions pass does the wrong thing.
This patch introduces a new set of pseudo instructions that are identical
in intended semantics as v_movreld, but they only have two tied operands.
Having to add a new set of pseudo instructions is admittedly annoying, but
it's a fairly straightforward and solid approach. The only alternative I
see is to try to teach the Two Address instructions pass about Three Address
instructions, and I'm afraid that's trickier and is going to end up more
fragile.
Note that v_movrels does not suffer from this problem, and so this patch
does not touch it.
This fixes several GL45-CTS.shaders.indexing.* tests.
Reviewers: tstellarAMD, arsenm
Subscribers: kzhuravl, wdng, yaxunl, llvm-commits, tony-tye
Differential Revision: https://reviews.llvm.org/D25633
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284980
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Mon, 24 Oct 2016 14:52:04 +0000 (14:52 +0000)]
Revert 284971.
It seems to break selfhost on some bots, see e.g.
http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/21
http://lab.llvm.org:8011/builders/clang-ppc64be-linux-multistage/builds/20
http://lab.llvm.org:8011/builders/clang-ppc64be-linux-lnt/builds/22
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284979
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Mon, 24 Oct 2016 14:35:29 +0000 (14:35 +0000)]
[MC] Fix Various End Of Line Comment checkings
Fix AsmParser lines to correctly handle end-of-line pre-processor
comments parsing when '#' is not the assembly line comment prefix.
Reviewers: rnk
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25567
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284978
91177308-0d34-0410-b5e6-
96231b3b80d8
Pavel Labath [Mon, 24 Oct 2016 14:19:28 +0000 (14:19 +0000)]
[Chrono] Fix !HAVE_FUTIMENS build
If we don't have futimens(), we fall back to futimes(), which only supports
microsecond timestamps. In that case, we need to explicitly cast away the extra
precision in setLastModificationAndAccessTime().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284977
91177308-0d34-0410-b5e6-
96231b3b80d8
Pavel Labath [Mon, 24 Oct 2016 14:00:26 +0000 (14:00 +0000)]
Remove unused #includes of TimeValue.h. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284975
91177308-0d34-0410-b5e6-
96231b3b80d8
Pavel Labath [Mon, 24 Oct 2016 13:38:27 +0000 (13:38 +0000)]
[Object] Replace TimeValue with std::chrono
Summary:
Most of the changes are very straight-forward. The only choice I had to make was
to use second-precision time points in the Archive classes. I did this because
the archive files use that precision in the on-disk representation anyway.
Reviewers: rafael, zturner
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25773
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284974
91177308-0d34-0410-b5e6-
96231b3b80d8
Joel Jones [Mon, 24 Oct 2016 13:37:13 +0000 (13:37 +0000)]
AArch64 ILP32 relocations for assembly and ELF
Summary:
Add relocations for AArch64 ILP32. Includes:
- Addition of definitions for R_AARCH32_*
- Definition of new -target-abi: ilp32
- Definition of data layout string
- Tests for added relocations. Not comprehensive, but matches
existing tests for 64-bit. Renames "CHECK-OBJ" to "CHECK-OBJ-LP64".
- Tests for llvm-readobj
Reviewers: zatrazz, peter.smith, echristo, t.p.northover
Subscribers: aemerson, rengolin, mehdi_amini
Differential Revision: https://reviews.llvm.org/D25159
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284973
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Mon, 24 Oct 2016 13:15:20 +0000 (13:15 +0000)]
[RDF] Add default move constructors/assignment operators
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284972
91177308-0d34-0410-b5e6-
96231b3b80d8
Pablo Barrio [Mon, 24 Oct 2016 13:04:45 +0000 (13:04 +0000)]
[JumpThreading] Unfold selects that depend on the same condition
Summary:
These are good candidates for jump threading. This enables later opts
(such as InstCombine) to combine instructions from the selects with
instructions out of the selects. SimplifyCFG will fold the select
again if unfolding wasn't worth it.
Patch by James Molloy and Pablo Barrio.
Reviewers: reames, bkramer, mcrosier, gberry, haicheng, jmolloy, sebpop
Subscribers: jojo, rengolin, llvm-commits
Differential Revision: https://reviews.llvm.org/D25477
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284971
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 24 Oct 2016 12:39:23 +0000 (12:39 +0000)]
Fix windows builds by swapping windows.h and wincrypt.h ordering.
We need to include windows.h first even though it breaks default include ordering rules
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284968
91177308-0d34-0410-b5e6-
96231b3b80d8
Pavel Labath [Mon, 24 Oct 2016 10:59:17 +0000 (10:59 +0000)]
Remove TimeValue usage from llvm/Support
Summary:
This is a follow-up to D25416. It removes all usages of TimeValue from
llvm/Support library (except for the actual TimeValue declaration), and replaces
them with appropriate usages of std::chrono. To facilitate this, I have added
small utility functions for converting time points and durations into appropriate
OS-specific types (FILETIME, struct timespec, ...).
Reviewers: zturner, mehdi_amini
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25730
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284966
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Dardis [Mon, 24 Oct 2016 10:23:59 +0000 (10:23 +0000)]
[mips] synci microMIPS instruction definition.
Add synci to the microMIPS instruction definitions, mark the MIPS sync & synci
as not being part of microMIPS. This does not cover the sync instruction alias,
as that will be handled with a different patch. Add sync to the valid tests for
microMIPS.
Reviewers: vkalintiris
Differential Revision: https://reviews.llvm.org/D25795
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284962
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Mon, 24 Oct 2016 05:07:18 +0000 (05:07 +0000)]
[llvm-opt-report] Fix unroll-count reporting
Fix the implementation of OptReportLocationInfo's operator < so that contexts
with different unroll counts are reported separately.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284957
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 24 Oct 2016 04:04:16 +0000 (04:04 +0000)]
[AVX-512] Remove masked pmin/pmax intrinsics and autoupgrade to native IR.
Clang patch to replace 512-bit vector and 64-bit element versions with native IR will follow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284955
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 23 Oct 2016 23:13:31 +0000 (23:13 +0000)]
[DAG] enhance computeKnownBits to handle SRL/SRA with vector splat constant
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284953
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 23 Oct 2016 20:17:21 +0000 (20:17 +0000)]
Use SDValue::getConstantOperandVal() helper. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284949
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Sun, 23 Oct 2016 19:39:16 +0000 (19:39 +0000)]
Remove LLVM_CONSTEXPR.
Summary: With MSVC 2013 and GCC < 4.8 gone, we can use the "constexpr" keyword.
Reviewers: bkramer, mehdi_amini
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25901
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284947
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 23 Oct 2016 18:35:02 +0000 (18:35 +0000)]
[CostModel][X86] Added tests for current integer signed/unsigned remainder costs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284940
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 23 Oct 2016 16:49:04 +0000 (16:49 +0000)]
[X86][SSE] Add SSE41/AVX1 costs for vector shifts.
We were defaulting to SSE2 costs which weren't taking into account the availability of PBLENDW/PBLENDVB to improve merging of per-element shift results.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284939
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 23 Oct 2016 15:17:52 +0000 (15:17 +0000)]
[CostModel][X86] Added tests for current integer trunc costs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284938
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 23 Oct 2016 15:09:44 +0000 (15:09 +0000)]
Use APInt::isAllOnesValue instead of popcnt. NFCI.
More obvious implementation and faster too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284937
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Sat, 22 Oct 2016 23:57:59 +0000 (23:57 +0000)]
[AVR] Add the machine code disassembler
This adds a super basic implementation of a machine code disassembler.
It doesn't support any operands with custom encoding.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284930
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 22 Oct 2016 20:15:39 +0000 (20:15 +0000)]
[X86][AVX512VL] Added support for combining target 256-bit shuffles to AVX512VL VPERMV3
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284922
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 22 Oct 2016 19:53:59 +0000 (19:53 +0000)]
[X86][AVX512] Added support for combining target shuffles to AVX512 VPERMV3
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284921
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gesiak [Sat, 22 Oct 2016 17:27:31 +0000 (17:27 +0000)]
[lit] Add more testing instructions to README
Summary:
r283710 introduced two regressions, one to llvm-lit, and the other to
lit executables that were installed via setuptools. Add instructions on
how to test for these regressions in the future.
Reviewers: ddunbar, delcypher, beanz, chapuni, cmatthews, echristo
Subscribers: llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D25459
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284919
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Sat, 22 Oct 2016 09:58:37 +0000 (09:58 +0000)]
[ARM] Fix crash in ConstantIslands
tPCRelJT may not be the first instruction in a block. Check that instead of dereferencing a broken iterator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284917
91177308-0d34-0410-b5e6-
96231b3b80d8
Zvi Rackover [Sat, 22 Oct 2016 07:15:00 +0000 (07:15 +0000)]
[X86] Apply the Update LLC Test Checks tool on the mmx-bitcast test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284916
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 22 Oct 2016 06:51:56 +0000 (06:51 +0000)]
[X86] Add support for printing shuffle comments for VALIGN instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284915
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 22 Oct 2016 06:51:52 +0000 (06:51 +0000)]
[X86] Add support for lowering v4i64 and v8i64 shuffles directly to PALIGNR. I think shuffle combine can figure it out later, but we should try to get it right up front.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284914
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 22 Oct 2016 06:51:49 +0000 (06:51 +0000)]
[X86] Remove unnecessary AVX2 check that was already covered by an assertion earlier in the function. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284913
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 22 Oct 2016 06:51:44 +0000 (06:51 +0000)]
[X86] Remove 128-bit lane handling from the main loop of matchVectorShuffleAsByteRotate. Instead check for is128LaneRepeatedSuffleMask before the loop and just loop over the repeated mask.
I plan to use the loop to support VALIGND/Q shuffles so this makes it easier to reuse.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284912
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 22 Oct 2016 06:18:36 +0000 (06:18 +0000)]
[X86][SSE] Use getConstVector helper for VPERMV mask generation. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284911
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Sat, 22 Oct 2016 04:15:41 +0000 (04:15 +0000)]
Now that VS2013 is gone, make a memoryssa structure an anonymous union again
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284910
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Sat, 22 Oct 2016 03:48:53 +0000 (03:48 +0000)]
[libFuzzer] mutation: insert the size of the input in bytes as one of the ways to mutate a binary integer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284909
91177308-0d34-0410-b5e6-
96231b3b80d8
Gerolf Hoflehner [Sat, 22 Oct 2016 02:41:39 +0000 (02:41 +0000)]
[BasicAA] Fix - missed alias in GEP expressions
In BasicAA GEP operand values get adjusted ("wrap-around") based on the
pointersize. Otherwise, in non-64b modes, AA could report false negatives.
However, a wrap-around is valid only for a fully evaluated expression.
It had been introduced to fix an alias problem in
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-
20160118/326163.html.
This commit restricts the wrap-around to constant gep operands only where the
value is known at compile-time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284908
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sat, 22 Oct 2016 01:21:24 +0000 (01:21 +0000)]
[CtorUtils] Modernize. No functional changes intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284904
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Sat, 22 Oct 2016 01:07:38 +0000 (01:07 +0000)]
[libFuzzer] typo in a test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284903
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Sat, 22 Oct 2016 00:05:44 +0000 (00:05 +0000)]
[libFuzzer] add a test for asan's strict_string_checks=1
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284902
91177308-0d34-0410-b5e6-
96231b3b80d8
David L. Jones [Fri, 21 Oct 2016 23:30:39 +0000 (23:30 +0000)]
Fix map insertion that is elided in release build.
The assert() macro doesn't actually execute its body in Release builds, so using
it to check cache invariants requires that the insertion be outside of the
assert() statement. This change does that, and also makes sure to return the
actual map contents.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284898
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 21 Oct 2016 23:02:31 +0000 (23:02 +0000)]
[x86] add test for missing vector SRA combine via computeKnownBits
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284896
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Fri, 21 Oct 2016 22:10:23 +0000 (22:10 +0000)]
[ADT] Don't rely on string literals not being convertible to non-const char* in CachedHashString.
The build was breaking on some platforms because we assumed that
CachedHashString("foo") would match the CachedHashString(StringRef)
constructor rather than the CachedHashString(char*) constructor.
To fix this, provide a CachedHashString(const char*) constructor, and
add a dummy argument to the old CachedHashString(char*) constructor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284892
91177308-0d34-0410-b5e6-
96231b3b80d8
Konstantin Zhuravlyov [Fri, 21 Oct 2016 22:10:03 +0000 (22:10 +0000)]
[AMDGPU] Perform uchar to float combine for ISD::SINT_TO_FP
This will prevent following regression when enabling i16 support (D18049):
test/CodeGen/AMDGPU/cvt_f32_ubyte.ll
Differential Revision: https://reviews.llvm.org/D25805
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284891
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Fri, 21 Oct 2016 21:45:01 +0000 (21:45 +0000)]
Switch SmallSetVector to use DenseSet when it overflows its inline space.
Summary:
SetVector already used DenseSet, but SmallSetVector used std::set. This
leads to surprising performance differences. Moreover, it means that
the set of key types accepted by SetVector and SmallSetVector are
quite different!
In order to make this change, we had to convert some callsites that used
SmallSetVector<std::string, N> to use SmallSetVector<CachedHashString, N>
instead.
Reviewers: timshen
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25648
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284887
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Fri, 21 Oct 2016 21:01:12 +0000 (21:01 +0000)]
Support: Annotate Error and Expected<> with LLVM_NODISCARD
It's always a mistake to ignore return values with Error or Expected
types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284884
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Haarman [Fri, 21 Oct 2016 20:38:37 +0000 (20:38 +0000)]
fixed typo in InstrProf.h; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284880
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Fri, 21 Oct 2016 20:28:00 +0000 (20:28 +0000)]
[ADT] Get rid of use of LLVM_NOEXCEPT in CachedHashString.h.
LLVM_NOEXCEPT is no longer necessary (yay).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284876
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Fri, 21 Oct 2016 20:25:11 +0000 (20:25 +0000)]
AMDGPU/SI: Fix crash caused by r284267
Reviewers: arsenm, nhaehnle
Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, tony-tye, llvm-commits
Differential Revision: https://reviews.llvm.org/D25782
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284875
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 21 Oct 2016 20:16:27 +0000 (20:16 +0000)]
[DAG] enhance computeKnownBits to handle SHL with vector splat constant
Also, use APInt to avoid crashing on types larger than vNi64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284874
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Fri, 21 Oct 2016 20:10:51 +0000 (20:10 +0000)]
[ADT] Compare strings' hashes first before comparing their values.
Summary:
We already have the hashes in hand, and comparing hashes should be much
more discriminatory than comparing the StringRefs' sizes.
Reviewers: rafael
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25705
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284872
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Fri, 21 Oct 2016 20:10:48 +0000 (20:10 +0000)]
[ADT] Add CachedHashString.
Summary:
This is like CachedHashStringRef, but owns its data.
This lets us use strings inside of DenseMaps.
Reviewers: timshen
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25645
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284871
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Fri, 21 Oct 2016 20:10:44 +0000 (20:10 +0000)]
[IR] Add DenseMapInfo<CallSite>.
Summary:
A CallSite is basically an Instruction*, and you can put Instruction*s
into DenseMaps, so you should be able to do the same with CallSites.
This is used in a later patch.
Reviewers: timshen
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25643
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284870
91177308-0d34-0410-b5e6-
96231b3b80d8
Li Huang [Fri, 21 Oct 2016 20:05:21 +0000 (20:05 +0000)]
[SCEV] Memoize visitMulExpr results in SCEVRewriteVisitor.
Summary:
When SCEVRewriteVisitor traverses the SCEV DAG, it may visit the same SCEV
multiple times if this SCEV is referenced by multiple other SCEVs. This has
exponential time complexity in the worst case. Memoizing the results will
avoid re-visiting the same SCEV. Add a map to save the results, and override
the visit function of SCEVVisitor. Now SCEVRewriteVisitor only visit each
SCEV once and thus returns the same result for the same input SCEV.
This patch fixes PR18606, PR18607.
Reviewers: Sanjoy Das, Mehdi Amini, Michael Zolotukhin
Differential Revision: https://reviews.llvm.org/D25810
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284868
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Fri, 21 Oct 2016 20:03:14 +0000 (20:03 +0000)]
Fix a bug in the code of llvm-cxxdump in dumpArchive() when
iterating over an archive with object and non-object members that
would cause an Abort because to was not calling consumeError()
when the code was wanting to ignore a non-object file.
Found by Justin Bogner!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284867
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Fri, 21 Oct 2016 20:01:45 +0000 (20:01 +0000)]
[libFuzzer] mention one more trophie
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284866
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Fri, 21 Oct 2016 19:59:26 +0000 (19:59 +0000)]
Analysis: Move llvm::getConstantRangeFromMetadata to IR library.
We're about to start using it there.
Differential Revision: https://reviews.llvm.org/D25877
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284865
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Fri, 21 Oct 2016 19:57:55 +0000 (19:57 +0000)]
X86: Improve BT instruction selection for 64-bit values.
If a 64-bit value is tested against a bit which is known to be in the range
[0..31) (modulo 64), we can use the 32-bit BT instruction, which has a slightly
shorter encoding.
Differential Revision: https://reviews.llvm.org/D25862
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284864
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 21 Oct 2016 19:54:38 +0000 (19:54 +0000)]
[X86][AVX512BWVL] Added support for lowering v16i16 shuffles to AVX512BWVL vpermw
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284863
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Haarman [Fri, 21 Oct 2016 19:43:19 +0000 (19:43 +0000)]
[pdb] added support for dumping globals stream
Summary: This adds support for dumping the globals stream from PDB files using llvm-pdbdump, similar to the support we have for the publics stream.
Reviewers: ruiu, zturner
Subscribers: beanz, mgorny, modocache
Differential Revision: https://reviews.llvm.org/D25801
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284861
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 21 Oct 2016 19:40:29 +0000 (19:40 +0000)]
[X86][AVX512BWVL] Added support for combining target v16i16 shuffles to AVX512BWVL vpermw
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284860
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 21 Oct 2016 19:18:09 +0000 (19:18 +0000)]
[X86][AVX512] Added support for combining target shuffles to AVX512 vpermpd/vpermq/vpermps/vpermd/vpermw
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284858
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 21 Oct 2016 19:12:13 +0000 (19:12 +0000)]
[RDF] Use RegisterId typedef more consistently, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284857
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Thomas [Fri, 21 Oct 2016 18:43:16 +0000 (18:43 +0000)]
[StripGCRelocates] New pass to remove gc.relocates added by RS4GC
Summary:
Utility pass to remove gc.relocates created by rewrite statepoints for GC.
With respect to safepoint verification, the IR generated would be incorrect, and cannot run
as such.
This would be a single transformation on the final optimized IR.
The benefit of the pass is for easy analysis when the IRs are 'polluted' by too
many gc.relocates.
Added tests.
test run: All RS4GC tests with -verify option. Local downstream tests on large
IR files. This also works when the pointer being gc.relocated is another
gc.relocate.
Reviewers: sanjoy, reames
Subscribers: beanz, mgorny, llvm-commits
Differential Revision: https://reviews.llvm.org/D25096
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284855
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Fri, 21 Oct 2016 18:22:35 +0000 (18:22 +0000)]
For llvm-objdump for Mach-O files add printing of
the ARM_THREAD_STATE in the same format as
otool-classic(1) on darwin.
Also remove an extra space in printing the initprot to make
the output match otool-classic(1) on darwin.
rdar://
28851457
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284852
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 21 Oct 2016 17:24:26 +0000 (17:24 +0000)]
[DAG] fold negation of sign-bit
0 - X --> 0, if the sub is NUW
0 - X --> 0, if X is 0 or the minimum signed value and the sub is NSW
0 - X --> X, if X is 0 or the minimum signed value
This is the DAG equivalent of:
https://reviews.llvm.org/rL284649
plus the fold for the NUW case which already existed in InstSimplify.
Note that we miss a vector fold because of a deficiency in the DAG version of
computeKnownBits().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284844
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 21 Oct 2016 16:56:29 +0000 (16:56 +0000)]
[x86] add tests for potential negation folds
These are the backend equivalents for the tests added in r284627.
The patterns may emerge late, so we should have folds for these in the DAG too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284842
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 21 Oct 2016 16:38:29 +0000 (16:38 +0000)]
[Hexagon] Handle spills of partially defined double vector registers
After register allocation it is possible to have a spill of a register
that is only partially defined. That in itself it fine, but creates a
problem for double vector registers. Stores of such registers are pseudo
instructions that are expanded into pairs of individual vector stores,
and in case of a partially defined source, one of the stores may use
an entirely undefined register. To avoid this, track the defined parts
and only generate actual stores for those.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284841
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Fri, 21 Oct 2016 16:38:07 +0000 (16:38 +0000)]
[WebAssembly] Fix for 0xc call_indirect changes
Summary:
Need to reorder the operands to have the callee as the last argument.
Adds a pseudo-instruction, and a pass to lower it into a real
call_indirect.
This is the first of two options for how to fix the problem.
Reviewers: dschuff, sunfish
Subscribers: jfb, beanz, mgorny, llvm-commits
Differential Revision: https://reviews.llvm.org/D25708
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284840
91177308-0d34-0410-b5e6-
96231b3b80d8
Abderrazek Zaafrani [Fri, 21 Oct 2016 16:28:27 +0000 (16:28 +0000)]
Set the vectorizer MaxInterleaveFactor for Exynos.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284839
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 21 Oct 2016 16:26:27 +0000 (16:26 +0000)]
Fix -Wunused-variable warning in libFuzzer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284838
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 21 Oct 2016 16:22:16 +0000 (16:22 +0000)]
[X86][SSE] Regenerated sext/zext constant folding tests and added i686 tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284837
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 21 Oct 2016 16:07:51 +0000 (16:07 +0000)]
[X86] Use DAG::getBuildVector helper wrapper where possible. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284835
91177308-0d34-0410-b5e6-
96231b3b80d8
Konstantin Zhuravlyov [Fri, 21 Oct 2016 16:02:35 +0000 (16:02 +0000)]
[MachineMemOperand][AtomicSDNode] Remove getSuccessOrdering()
Differential Revision: https://reviews.llvm.org/D25786
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284834
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 21 Oct 2016 15:51:24 +0000 (15:51 +0000)]
[X86][SSE] Regenerated chained pmovsx store tests and added i686 tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284833
91177308-0d34-0410-b5e6-
96231b3b80d8
Abderrazek Zaafrani [Fri, 21 Oct 2016 15:24:08 +0000 (15:24 +0000)]
Test commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284832
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Fri, 21 Oct 2016 15:02:21 +0000 (15:02 +0000)]
[LVI] Fix a bug with a guard being the very first instruction in a BB not taken into account
While looking for guards use reverse iterator and scan up to rend() not to begin()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284827
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 21 Oct 2016 14:58:30 +0000 (14:58 +0000)]
fix variable names; NFCI
Because we're just 'or-ing' these 2 variables later in the code, I
don't think there's a logical bug here, but of course the string with
"no size" is the one that should have the size suffix stripped off.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284826
91177308-0d34-0410-b5e6-
96231b3b80d8
Artem Tamazov [Fri, 21 Oct 2016 14:49:22 +0000 (14:49 +0000)]
[AMDGPU][mc] Fix ds_min/max[_rtn]_f32 - extra source operand removed.
Fixes Bug 28215. Lit tests updated.
Differential Revision: https://reviews.llvm.org/D25837
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284825
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 21 Oct 2016 14:36:58 +0000 (14:36 +0000)]
[DAG] use SDNode flags 'nsz' to enable fadd/fsub with zero folds
As discussed in D24815, let's start the process of killing off the broken fast-math global
state housed in TargetOptions and eliminate the need for function-level fast-math attributes.
Here we enable two similar folds that are possible when we don't care about signed-zero:
fadd nsz x, 0 --> x
fsub nsz 0, x --> -x
Note that although the test cases include a 'sin' function call, I'm side-stepping the
FMF-on-calls question (and lack of support in the DAG) for now. It's not needed for these
tests - isNegatibleForFree/GetNegatedExpression just look through a ISD::FSIN node.
Also, when we create an FNEG node and propagate the Flags of the FSUB to it, this doesn't
actually do anything today because Flags are silently dropped for any node that is not a
binary operator.
Differential Revision: https://reviews.llvm.org/D25297
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284824
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 21 Oct 2016 13:00:47 +0000 (13:00 +0000)]
[X86][AVX2] Begun generalizing lowering to VPERMD/VPERMPS in preparation for AVX512 support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284823
91177308-0d34-0410-b5e6-
96231b3b80d8