127519 Commits

Author SHA1 Message Date
Craig Topper
a78623e3e8 [TableGen] Don't call emitSourceFileHeader a second time in the middle of the output file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260501 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 07:39:27 +00:00
Craig Topper
083ca64734 [TableGen] Whitespace cleanup in output file. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260500 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 07:39:25 +00:00
Craig Topper
269f2734b8 [TableGen] Simplify code slightly. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260499 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 07:39:22 +00:00
Simon Atanasyan
9fab895e0b [MC][ELF] Handle MIPS specific .sdata and .sbss directives
MIPS specific .sdata and .sbss directives create corresponding sections
with proper initialized ELF flags including ELF::SHF_MIPS_GPREL.

Differential Revision: http://reviews.llvm.org/D17001

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260498 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 06:45:54 +00:00
Matt Arsenault
d581c66591 AMDGPU: Fix constant bus use check with subregisters
If the two operands to an instruction were both
subregisters of the same super register, it would incorrectly
think this counted as the same constant bus use.

This fixes the verifier error in fmin_legacy.ll which
was missing -verify-machineinstrs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260495 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 06:15:39 +00:00
Matt Arsenault
33e18796f1 AMDGPU: Fix passes depending on dominator tree for no reason
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260494 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 06:15:34 +00:00
Matt Arsenault
fae18e933b AMDGPU: Remove some old intrinsic uses from tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260493 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 06:02:01 +00:00
Matt Arsenault
5911f21abb AMDGPU: Fix not handling new workitem intrinsics in DivergenceAnalysis
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260491 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 05:32:51 +00:00
Matt Arsenault
b49a0edca2 AMDGPU: Split R600 and SI store lowering
These were only sharing some somewhat incorrect
logic for when to scalarize or split vectors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260490 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 05:32:46 +00:00
Michael J. Spencer
9be04e4c36 [readobj] Dump DT_JMPREL relocations when outputting dynamic relocations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260489 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 04:59:53 +00:00
Michael J. Spencer
f8cdb803c2 [readobj] Handle ELF files with no section table or with no program headers.
This adds support for finding the dynamic table and dynamic symbol table via
the section table or the program header table. If there's no section table an
attempt is made to figure out the length of the dynamic symbol table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260488 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 04:59:45 +00:00
Michael J. Spencer
c2545ee719 [readobj] Move dynamic table parsing to a new function. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260487 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 04:59:37 +00:00
Michael J. Spencer
71498d2261 [readobj] Sort switch by enum value.
Sort by enum value, but keep related entries adjacent. This makes it
easier to compare against documentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260486 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 04:59:32 +00:00
Michael J. Spencer
7341f9694a [readobj] Parse sections before dynamic table.
NFC. This code will be expanded to handle dynamic tables that don't have a
PT_DYNAMIC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260485 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 04:59:26 +00:00
Hemant Kulkarni
8e2d778ca9 Fix const confusion while lambda function usage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260484 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 03:41:34 +00:00
Tom Stellard
4ea8ee7c76 [AMDGPU] Assembler: Fix VOP3 only instructions
Separate methods to convert parsed instructions to MCInst:

  - VOP3 only instructions (always create modifiers as operands in MCInst)
  - VOP2 instrunctions with modifiers (create modifiers as operands
    in MCInst when e64 encoding is forced or modifiers are parsed)
  - VOP2 instructions without modifiers (do not create modifiers
    as operands in MCInst)
  - Add VOP3Only flag. Pass HasMods flag to VOP3Common.
  - Simplify code that deals with modifiers (-1 is now same as
    0). This is no longer needed.
  - Add few tests (more will be added separately).
    Update error message now correct.

Patch By: Nikolay Haustov

Differential Revision: http://reviews.llvm.org/D16778

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260483 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 03:28:15 +00:00
Davide Italiano
e48f9ae77d [llvm-nm] Simplify code logic. Rewrite a single function an inline.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260482 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 02:56:02 +00:00
Quentin Colombet
30335031a5 [GlobalISel][MachineRegisterInfo] Add a method to create generic vregs.
For now, generic virtual registers will not have a register class. We may want
to change that. For instance, if we want to use all the methods from
TargetRegisterInfo with generic virtual registers, we need to either have some
sort of generic register classes that do what we want, or teach those methods
how to deal with nullptr register class.

Although the latter seems easy enough to do, we may still want to differenciate
generic register classes from nullptr to catch cases where nullptr gets
introduced by a bug of some sort.

Anyway, I will file a PR to keep track of that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260474 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 00:19:17 +00:00
Hemant Kulkarni
74be0c550d Fix build failure caused in r260430
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260471 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 00:01:47 +00:00
Davide Italiano
1c4040b68f [llvm-nm] Minor style change. Prefer EXIT_SUCCESS over 0.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260470 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 23:56:18 +00:00
Teresa Johnson
4048cffec2 Fix Windows bot failure in Transforms/FunctionImport/funcimport.ll
Make sure we split ":" from the end of the global function id (which
is <path>:<function> for local functions) instead of the beginning to
avoid splitting at the wrong place for Windows file paths that contain
a ":".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260469 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 23:47:38 +00:00
Quentin Colombet
d3bd0e5e8b [GlobalISel] Remember the size of generic virtual registers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260468 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 23:43:48 +00:00
Mehdi Amini
34b34e0d3e FunctionImport: add a progressive heuristic to limit importing too deep in the callgraph
The current function importer will walk the callgraph, importing
transitively any callee that is below the threshold. This can
lead to import very deep which is costly in compile time and not
necessarily beneficial as most of the inline would happen in
imported function and not necessarilly in user code.

The actual factor has been carefully chosen by flipping a coin ;)
Some tuning need to be done (just at the existing limiting threshold).

Reviewers: tejohnson

Differential Revision: http://reviews.llvm.org/D17082

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260466 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 23:31:45 +00:00
Hemant Kulkarni
156817cf0a Make llvm-nm test consistent with other tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260464 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 23:28:43 +00:00
Mehdi Amini
f1539bbfd8 Use a StringSet in Internalize, and allow to create the pass from an existing one (NFC)
There is not reason to pass an array of "char *" to rebuild a set if
the client already has one.

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260462 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 23:24:31 +00:00
Mehdi Amini
0f2eb3b005 Add the ability to initialize a StringSet from a pair of iterators (NFC)
From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260461 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 23:24:21 +00:00
Davide Italiano
e1244044f3 [llvm-nm] Prefer range-based loop over explicit iterator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260459 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 23:16:17 +00:00
Mehdi Amini
f181d046e0 Add a new insert_as() method to DenseMap and use it for ConstantUniqueMap
Summary:
Just like the existing find_as() method, the new insert_as() accepts
an extra parameter which is used as a key to find the bucket in the
map.
When creating a Constant, we want to check the map before actually
creating the object. In this case we have to perform two queries to
the map, and this extra parameter can save recomputing the hash value
for the second query.

Reviewers: dexonsmith, chandlerc

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D16268

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260458 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 23:07:29 +00:00
Quentin Colombet
de48097969 [CMake] Add a macro definition to detect if we are building GlobalISel:
LLVM_BUILD_GLOBAL_ISEL


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260457 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 23:00:57 +00:00
Quentin Colombet
f62b31051b [GlobalISel] More detailed skeleton for the IRTranslator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260456 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 22:59:27 +00:00
Mehdi Amini
5e9b7afcd9 Bitcode reader: replace DecodeChar6() with a lookup table (NFC)
Summary: Measured to be more performant when reading bitcode.

Reviewers: rafael, dexonsmith

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D16285

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260455 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 22:47:48 +00:00
Mehdi Amini
4c69696279 Simplify handleOperandChangeImpl() removing last argument (NFC)
The Use argument was used to compute the operand number for a fast
path when replacing only one operand. However we always have to go
through all the operands. So the argument number can be recomputed
locally anyway.

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260454 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 22:47:15 +00:00
Philip Reames
18fb862ea7 Follow up to 260439, Speculative fix to clang builders
It looks like clang has a couple of test cases which caught the fact LVI was not slightly more precise after 260439.  When looking at the failures, it struck me as wasteful to be querying nullness of a constant via LVI, so instead of tweaking the clang tests, let's just stop querying constants from this source.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260451 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 22:22:41 +00:00
Rong Xu
2465700839 [PGO] Make the number of records for each value site metada adjustable
The patch adds a parameter in annotateValueSite() to control the max number
of records written to the value profile meta data for each value site. The
default is kept as the current value of 3.

Differential Revision: http://reviews.llvm.org/D17084


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260450 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 22:19:43 +00:00
Matthias Braun
6bf8999e3a APInt: Simplify EqualSlowCase
Previously the code used getActiveBits() to determine the highest set
bit of each APInt first. However doing so requires the same amount of
memory accesses as simply comparing both numbers right away.

Removing all the active bit checks leads to simpler code and is faster
in my benchmark.

Differential Revision: http://reviews.llvm.org/D16620

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260447 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 22:13:10 +00:00
Xinliang David Li
7e57e07d4e Fix buildbot failure (hosts without zlib)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260446 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 22:05:41 +00:00
Teresa Johnson
0060160bcf Restore "[ThinLTO] Use MD5 hash in function index." with fix
This restores commit r260408, along with a fix for a bot failure.

The bot failure was caused by dereferencing a unique_ptr in the same
call instruction parameter list where it was passed via std::move.
Apparently due to luck this was not exposed when I built the compiler
with clang, only with gcc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260442 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 21:55:02 +00:00
Philip Reames
1d9f7a9b38 [LVI] Handle constants defensively
There's nothing preventing callers of LVI from asking for lattice values representing a Constant.  In fact, given that several callers are walking back through PHI nodes and trying to simplify predicates, such queries are actually quite common.  This is mostly harmless today, but we start volatiling assertions if we add new calls to getBlockValue in otherwise reasonable places.

Note that this change is not NFC.  Specifically:
1) The result returned through getValueAt will now be more precise.  In principle, this could trigger any latent infinite optimization loops in callers, but in practice, we're unlikely to see this.
2) The result returned through getBlockValueAt is potentially weakened for non-constants that were previously queried.  With the old code, you had the possibility that a later query might bypass the cache and discover some information the original query did not.  I can't find a scenario which actually causes this to happen, but it was in principle possible.  On the other hand, this may end up reducing compile time when the same value is queried repeatedly.  



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260439 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 21:46:32 +00:00
Derek Schuff
b73ab6b083 [WebAssembly] Re-triage list of compilation failures for torture tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260438 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 21:43:16 +00:00
Reid Kleckner
430dfb18e5 [codeview] Describe int local variables using .cv_def_range
Summary:
Refactor common value, scope, and label tracking logic out of DwarfDebug
into a common base class called DebugHandlerBase.

Update an old LLVM IR test case to avoid an assertion in LexicalScopes.

Reviewers: dblaikie, majnemer

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D16931

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260432 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 20:55:49 +00:00
Hemant Kulkarni
54f4d3a066 [llvm-readobj] Option to emit readelf like output
New option --elf-output-style=LLVM or GNU
Enables -file-headers in readelf style when elf-output-style=GNU

Differential revision: http://reviews.llvm.org/D14128

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260430 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 20:40:55 +00:00
Derek Schuff
ded8212063 [WebAssembly] Address comments left over from r260421
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260429 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 20:14:15 +00:00
Xinliang David Li
feb624a121 [Coverage] add covmap v2 binary format regression test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260428 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 20:14:04 +00:00
Nicolai Haehnle
ac2300f5ed AMDGPU: Release the scavenged offset register during VGPR spill
Summary:
This fixes a crash where subsequent spills would be unable to scavenge
a register. In particular, it fixes a crash in piglit's
spec@glsl-1.50@execution@geometry@max-input-components (the test still
has a shader that fails to compile because of too many SGPR spills, but
at least it doesn't crash any more).

This is a candidate for the release branch.

Reviewers: arsenm, tstellarAMD

Subscribers: qcolombet, arsenm

Differential Revision: http://reviews.llvm.org/D16558

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260427 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 20:13:58 +00:00
Sanjay Patel
76f5f56312 [x86] refactor masked load/store combine logic ; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260426 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 20:02:45 +00:00
Derek Schuff
d239e9c2e5 [WebAssembly] Switch varags calling convention to use a register
Instead of passing varargs directly on the user stack, allocate a buffer in
the caller's stack frame and pass a pointer to it. This simplifies the C
ABI (e.g. non-C callers of C functions do not need to use C's user stack if
they have their own mechanism) and allows further optimizations in the future
(e.g. fewer functions may need to use the stack).

Differential Revision: http://reviews.llvm.org/D17048

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260421 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 19:51:04 +00:00
Chad Rosier
43fe5fc136 [AArch64] Refactor is logic into a helper function. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260419 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 19:45:48 +00:00
Reid Kleckner
3833b9b8d1 Fix a -Wsign-compare in Support Path unittests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260418 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 19:29:01 +00:00
Reid Kleckner
575b993830 Disable MSVC 2015's warning about zero extending after ~ and others
Very often in LLVM we have APIs that take a bitwidth and a uint64_t that
we pass immediates such as ~0U to. Consider APInt, Constant, and
MachineInstrBuilder::addImm. Fixing all uses of these APIs to manually
extend their arguments to uint64_t doesn't seem worth it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260416 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 19:25:51 +00:00
Reid Kleckner
6f306397f3 Silence some MSVC warnings about zero extending unsigned to void*
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260413 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 19:11:15 +00:00