OSDN Git Service

android-x86/external-llvm.git
8 years agoCodeGen: Use MachineInstr& in TargetInstrInfo, NFC
Duncan P. N. Exon Smith [Thu, 30 Jun 2016 00:01:54 +0000 (00:01 +0000)]
CodeGen: Use MachineInstr& in TargetInstrInfo, NFC

This is mostly a mechanical change to make TargetInstrInfo API take
MachineInstr& (instead of MachineInstr* or MachineBasicBlock::iterator)
when the argument is expected to be a valid MachineInstr.  This is a
general API improvement.

Although it would be possible to do this one function at a time, that
would demand a quadratic amount of churn since many of these functions
call each other.  Instead I've done everything as a block and just
updated what was necessary.

This is mostly mechanical fixes: adding and removing `*` and `&`
operators.  The only non-mechanical change is to split
ARMBaseInstrInfo::getOperandLatencyImpl out from
ARMBaseInstrInfo::getOperandLatency.  Previously, the latter took a
`MachineInstr*` which it updated to the instruction bundle leader; now,
the latter calls the former either with the same `MachineInstr&` or the
bundle leader.

As a side effect, this removes a bunch of MachineInstr* to
MachineBasicBlock::iterator implicit conversions, a necessary step
toward fixing PR26753.

Note: I updated WebAssembly, Lanai, and AVR (despite being
off-by-default) since it turned out to be easy.  I couldn't run tests
for AVR since llc doesn't link with it turned on.

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

8 years agoregenerate checks
Sanjay Patel [Wed, 29 Jun 2016 23:58:39 +0000 (23:58 +0000)]
regenerate checks

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

8 years agoPrologEpilogInserter: Some code cleanup; NFC
Matthias Braun [Wed, 29 Jun 2016 23:54:42 +0000 (23:54 +0000)]
PrologEpilogInserter: Some code cleanup; NFC

- Use range based for
- Use the more common variable names MBB and MF for
  MachineBasicBlock/MachineFunction variables.
- Add a few const modifiers

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

8 years agoAdd move constructor and move assignment to fix MSVC build.
Peter Collingbourne [Wed, 29 Jun 2016 23:54:10 +0000 (23:54 +0000)]
Add move constructor and move assignment to fix MSVC build.

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

8 years agoObject: Replace NewArchiveIterator with a simpler NewArchiveMember class. NFCI.
Peter Collingbourne [Wed, 29 Jun 2016 22:27:42 +0000 (22:27 +0000)]
Object: Replace NewArchiveIterator with a simpler NewArchiveMember class. NFCI.

The NewArchiveIterator class has a problem: it requires too much context. Any
memory buffers added to the archive must be stored within an Archive::Member,
which must have an associated Archive. This makes it harder than necessary
to create new archive members (or new archives entirely) from scratch using
memory buffers.

This patch replaces NewArchiveIterator with a NewArchiveMember class that
stores just the memory buffer and the information that goes into the archive
member header.

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

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

8 years ago[LV] Improve accuracy and formatting of function comment
Adam Nemet [Wed, 29 Jun 2016 22:04:10 +0000 (22:04 +0000)]
[LV] Improve accuracy and formatting of function comment

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

8 years ago[LLVMConfig.cmake] LLVM_CONFIG_EXPORTED_TARGETS => LLVM_EXPORTED_TARGETS.
Michael Gottesman [Wed, 29 Jun 2016 21:58:15 +0000 (21:58 +0000)]
[LLVMConfig.cmake] LLVM_CONFIG_EXPORTED_TARGETS => LLVM_EXPORTED_TARGETS.

This matches more closely the rest of the variables in LLVMConfig.cmake which
shed the _CONFIG_ part of their names.

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

8 years ago[llvm-cov] Use relative paths to file reports in -output-dir mode
Vedant Kumar [Wed, 29 Jun 2016 21:55:46 +0000 (21:55 +0000)]
[llvm-cov] Use relative paths to file reports in -output-dir mode

This makes it possible to e.g copy a report to another filesystem.

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

8 years agoResubmit "Update llvm command line parser to support subcommands."
Zachary Turner [Wed, 29 Jun 2016 21:48:26 +0000 (21:48 +0000)]
Resubmit "Update llvm command line parser to support subcommands."

This fixes an issue where occurrence counts would be unexpectedly
reset when parsing different parts of a command line multiple
times.

**ORIGINAL COMMIT MESSAGE**

This allows command line tools to use syntaxes like the following:

      llvm-foo.exe command1 -o1 -o2
      llvm-foo.exe command2 -p1 -p2

Where command1 and command2 contain completely different sets of
valid options.  This is backwards compatible with previous uses
of llvm cl which did not support subcommands, as any option
which specifies no optional subcommand (e.g. all existing
code) goes into a special "top level" subcommand that expects
dashed options to appear immediately after the program name.
For example, code which is subcommand unaware would generate
a command line such as the following, where no subcommand
is specified:

      llvm-foo.exe -q1 -q2

The top level subcommand can co-exist with actual subcommands,
as it is implemented as an actual subcommand which is searched
if no explicit subcommand is specified.  So llvm-foo.exe as
specified above could be written so as to support all three
aforementioned command lines simultaneously.

There is one additional "special" subcommand called AllSubCommands,
which can be used to inject an option into every subcommand.
This is useful to support things like help, so that commands
such as:

      llvm-foo.exe --help
      llvm-foo.exe command1 --help
      llvm-foo.exe command2 --help

All work and display the help for the selected subcommand
without having to explicitly go and write code to handle each
one separately.

This patch is submitted without an example of anything actually
using subcommands, but a followup patch will convert the
llvm-pdbdump tool to use subcommands.

Reviewed By: beanz

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

8 years agoRevert r273313 "[NVPTX] Improve lowering of byval args of device functions."
Artem Belevich [Wed, 29 Jun 2016 20:51:15 +0000 (20:51 +0000)]
Revert r273313 "[NVPTX] Improve lowering of byval args of device functions."

The change causes llvm crash in some unoptimized builds.

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

8 years agoStackColoring for SafeStack.
Evgeniy Stepanov [Wed, 29 Jun 2016 20:37:43 +0000 (20:37 +0000)]
StackColoring for SafeStack.

This is a fix for PR27842.

An IR-level implementation of stack coloring tailored to work with
SafeStack. It is a bit weaker than the MI implementation in that it
does not the "lifetime start at first access" logic. This can be
improved in the future.

This patch also replaces the naive implementation of stack frame
layout with a greedy algorithm that can split existing stack slots
and even fit small objects inside the alignment padding of other
objects.

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

8 years agoChange Archive::create() from ErrorOr<...> to Expected<...> and update
Kevin Enderby [Wed, 29 Jun 2016 20:35:44 +0000 (20:35 +0000)]
Change Archive::create() from ErrorOr<...> to Expected<...> and update
its clients.

This commit will break the next lld builds.  I’ll be committing the matching
change for lld next.

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

8 years ago[InstCombine] Simplify and correct folding fcmps with the same children
Tim Shen [Wed, 29 Jun 2016 20:10:17 +0000 (20:10 +0000)]
[InstCombine] Simplify and correct folding fcmps with the same children

Summary: Take advantage of FCmpInst::Predicate's bit pattern and handle (fcmp *, x, y) | (fcmp *, x, y) and (fcmp *, x, y) & (fcmp *, x, y) more consistently. Also fold more FCmpInst::FCMP_FALSE and FCmpInst::FCMP_TRUE to constants.

Currently InstCombine wrongly folds (fcmp ogt, x, y) | (fcmp ord, x, y) to (fcmp ogt, x, y); this patch also fixes that.

Reviewers: spatel

Subscribers: llvm-commits, iteratee, echristo

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

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

8 years ago[InstCombine, NFC] Change the generated variable names by creating new instructions
Tim Shen [Wed, 29 Jun 2016 20:10:13 +0000 (20:10 +0000)]
[InstCombine, NFC] Change the generated variable names by creating new instructions

This removes some noise for D21775's test changes.

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

8 years ago[Triple] Reimplement isLittleEndian(). Now it works for arm too.
Davide Italiano [Wed, 29 Jun 2016 20:01:39 +0000 (20:01 +0000)]
[Triple] Reimplement isLittleEndian(). Now it works for arm too.

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

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

8 years agoPermit memory operands in ins/outs instructions
Nirav Dave [Wed, 29 Jun 2016 19:54:27 +0000 (19:54 +0000)]
Permit memory operands in ins/outs instructions

[x86] (PR15455) While (ins|outs)[bwld] instructions do not take %dx as a
memory operand, various unofficial references do and objdump
disassembles to this format. Extend special treatment of
similar (in|out)[bwld] operations.

Reviewers: craig.topper, rnk, ab

Subscribers: llvm-commits

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

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

8 years agoDon't verify inputs to the Linker if ODR merging.
Rafael Espindola [Wed, 29 Jun 2016 18:31:48 +0000 (18:31 +0000)]
Don't verify inputs to the Linker if ODR merging.

This fixes pr28072.

The point, as Duncan pointed out, is that the file is already
partially linked by just reading it.

Long term I think the solution is to make metadata owned by the module
and then the linker will lazily read it and be in charge of all the
linking. Running a verifier in each input will defeat the lazy
loading, but will be legal.

Right now we are at the unfortunate position that to support odr
merging we cannot verify the inputs, which mildly annoying (see test
update).

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

8 years ago[InstCombine] Add full tests for FoldAndOfFCmps and FoldOrOfFCmps
Tim Shen [Wed, 29 Jun 2016 17:55:11 +0000 (17:55 +0000)]
[InstCombine] Add full tests for FoldAndOfFCmps and FoldOrOfFCmps

Summary: This adds tests for covering all cases that FoldAndOfFCmps and FoldOrOfFCmps handle.

Reviewers: spatel

Subscribers: llvm-commits

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

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

8 years ago[llvm-cov] Change some FileCheck prefixes to make tests reusable (NFC)
Vedant Kumar [Wed, 29 Jun 2016 17:47:08 +0000 (17:47 +0000)]
[llvm-cov] Change some FileCheck prefixes to make tests reusable (NFC)

I'm planning on extending these two tests with checks that validate
html coverage reports. Make it easier to extend them by not using a
prefix called "CHECK".

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

8 years agoAdd a regression test for PR28348.
Nico Weber [Wed, 29 Jun 2016 17:34:31 +0000 (17:34 +0000)]
Add a regression test for PR28348.

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

8 years agoRevert r272251, it caused PR28348.
Nico Weber [Wed, 29 Jun 2016 17:33:41 +0000 (17:33 +0000)]
Revert r272251, it caused PR28348.

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

8 years ago[LLVMConfig.cmake.in] Create a new variable LLVM_CONFIG_EXPORTED_TARGETS that contain...
Michael Gottesman [Wed, 29 Jun 2016 17:32:37 +0000 (17:32 +0000)]
[LLVMConfig.cmake.in] Create a new variable LLVM_CONFIG_EXPORTED_TARGETS that contains the list of all targets exported via LLVMExports.cmake.

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

8 years agoUse LLVM_ATTRIBUTE_UNUSED instead of void casts; NFC
Vedant Kumar [Wed, 29 Jun 2016 16:56:46 +0000 (16:56 +0000)]
Use LLVM_ATTRIBUTE_UNUSED instead of void casts; NFC

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

8 years ago[X86] Lower blended PACKUSes using appropriate types.
Ahmed Bougacha [Wed, 29 Jun 2016 16:56:09 +0000 (16:56 +0000)]
[X86] Lower blended PACKUSes using appropriate types.

When lowering two blended PACKUS, we used to disregard the types
of the PACKUS inputs, indiscriminately generating a v16i8 PACKUS.

This leads to non-selectable things like:
    (v16i8 (PACKUS (v4i32 v0), (v4i32 v1)))

Instead, check that the PACKUSes have the same type, and use that
as the final result type.

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

8 years ago[llvm-cov] Disable PGO name compression in a test file
Vedant Kumar [Wed, 29 Jun 2016 16:34:57 +0000 (16:34 +0000)]
[llvm-cov] Disable PGO name compression in a test file

Some bots do not configure llvm with zlib enabled. Should fix:

http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/15571

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

8 years agoFix a typo; NFC
Vedant Kumar [Wed, 29 Jun 2016 16:23:34 +0000 (16:23 +0000)]
Fix a typo; NFC

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

8 years ago[llvm-cov] Do not allow ".." to escape the coverage sub-directory
Vedant Kumar [Wed, 29 Jun 2016 16:22:12 +0000 (16:22 +0000)]
[llvm-cov] Do not allow ".." to escape the coverage sub-directory

In -output-dir mode, file reports are placed into a "coverage"
directory. If filenames in the coverage mapping contain "..", they might
escape out of this directory.

Fix the problem by removing ".." from source filenames (expand the path
component).

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

8 years ago[ManagedStatic] Reimplement double-checked locking with std::atomic.
Benjamin Kramer [Wed, 29 Jun 2016 15:04:07 +0000 (15:04 +0000)]
[ManagedStatic] Reimplement double-checked locking with std::atomic.

This gets rid of the memory fence in the hot path (dereferencing the
ManagedStatic), trading for an extra mutex lock in the cold path (when
the ManagedStatic was uninitialized). Since this only happens on the
first accesses it shouldn't matter much. On strict architectures like
x86 this removes any atomic instructions from the hot path.

Also remove the tsan annotations, tsan knows how standard atomics work
so they should be unnecessary now.

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

8 years agoDrop support for creating $stubs.
Rafael Espindola [Wed, 29 Jun 2016 14:59:50 +0000 (14:59 +0000)]
Drop support for creating $stubs.

They are created by ld64 since OS X 10.5.

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

8 years agoUpdate tests to use at least darwin9.
Rafael Espindola [Wed, 29 Jun 2016 14:51:10 +0000 (14:51 +0000)]
Update tests to use at least darwin9.

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

8 years ago[Docs][CodeGenerator] Don't specify the number of operands in BuildMI
Krzysztof Parzyszek [Wed, 29 Jun 2016 14:14:59 +0000 (14:14 +0000)]
[Docs][CodeGenerator] Don't specify the number of operands in BuildMI

Patch by Visoiu Mistrih Francis.

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

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

8 years ago[X86][SSE2] Added _mm_loadu_si64 test to match llvm\tools\clang\test\CodeGen\sse2...
Simon Pilgrim [Wed, 29 Jun 2016 14:05:33 +0000 (14:05 +0000)]
[X86][SSE2] Added _mm_loadu_si64 test to match llvm\tools\clang\test\CodeGen\sse2-builtins.c

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

8 years ago[X86] Regenerated popcnt combine tests
Simon Pilgrim [Wed, 29 Jun 2016 13:54:03 +0000 (13:54 +0000)]
[X86] Regenerated popcnt combine tests

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

8 years agoReverted patch 273864
Elena Demikhovsky [Wed, 29 Jun 2016 10:01:06 +0000 (10:01 +0000)]
Reverted patch 273864

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

8 years ago[SystemZ] Add floating-point test data class instructions.
Marcin Koscielnicki [Wed, 29 Jun 2016 07:29:07 +0000 (07:29 +0000)]
[SystemZ] Add floating-point test data class instructions.

These are not used by CodeGen yet - ISD combiners creating the new node
will come in subsequent patches.

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

8 years agoRevert "[Coverage] Move logic to encode filenames and mappings into llvm (NFC)"
Vedant Kumar [Wed, 29 Jun 2016 05:33:26 +0000 (05:33 +0000)]
Revert "[Coverage] Move logic to encode filenames and mappings into llvm (NFC)"

This reverts commit 520a8298d8ef676b5da617ba3d2c7fa37381e939 (r273055).

This is breaking stage2 instrumented builds with "malformed coverage
data" errors.

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

8 years agoRevert "[Coverage] Clarify ownership of a MemoryBuffer in the reader (NFC)"
Vedant Kumar [Wed, 29 Jun 2016 05:33:24 +0000 (05:33 +0000)]
Revert "[Coverage] Clarify ownership of a MemoryBuffer in the reader (NFC)"

This reverts commit 1037ef2574adde2103ad221d63834c3e1df4a776.

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

8 years agoRevert "[ValueTracking] Teach computeKnownBits for PHI nodes to compute sign bit...
Craig Topper [Wed, 29 Jun 2016 04:57:00 +0000 (04:57 +0000)]
Revert "[ValueTracking] Teach computeKnownBits for PHI nodes to compute sign bit for a recurrence with a NSW addition."

This is breaking an optimizaton remark test in clang. I've identified a couple fixes for that, but want to understand it better before I commit to anything.

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

8 years ago[Diag] Add getter shouldAlwaysPrint. NFC
Adam Nemet [Wed, 29 Jun 2016 04:55:19 +0000 (04:55 +0000)]
[Diag] Add getter shouldAlwaysPrint. NFC

For the new hotness attribute, the API will take the pass rather than
the pass name so we can no longer play the trick of AlwaysPrint being a
special pass name. This adds a getter to help the transition.

There is also a corresponding clang patch.

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

8 years ago[ValueTracking] Teach computeKnownBits for PHI nodes to compute sign bit for a recurr...
Craig Topper [Wed, 29 Jun 2016 03:46:47 +0000 (03:46 +0000)]
[ValueTracking] Teach computeKnownBits for PHI nodes to compute sign bit for a recurrence with a NSW addition.

If a operation for a recurrence is an addition with no signed wrap and both input sign bits are 0, then the result sign bit must also be 0. Similar for the negative case.

I found this deficiency while playing around with a loop in the x86 backend that contained a signed division that could be optimized into an unsigned division if we could prove both inputs were positive. One of them being the loop induction variable. With this patch we can perform the conversion for this case. One of the test cases here is a contrived variation of the loop I was looking at.

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

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

8 years ago[DAGCombine] Teach DAG combine to handle ORs of shuffles involving zero vectors where...
Craig Topper [Wed, 29 Jun 2016 03:29:12 +0000 (03:29 +0000)]
[DAGCombine] Teach DAG combine to handle ORs of shuffles involving zero vectors where the zero vector is the first operand to the shuffle instead of the second.

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

8 years ago[DAGCombine] Add test cases to show that DAG combining an OR of two shuffles with...
Craig Topper [Wed, 29 Jun 2016 03:29:09 +0000 (03:29 +0000)]
[DAGCombine] Add test cases to show that DAG combining an OR of two shuffles with zero vectors doesn't work if the zero vector is the first operand of the shuffle. Fix coming in a follow up patch.

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

8 years ago[CodeGen] Make ShuffleVectorSDNode::commuteMask take a MutableArrayRef instead of...
Craig Topper [Wed, 29 Jun 2016 03:29:06 +0000 (03:29 +0000)]
[CodeGen] Make ShuffleVectorSDNode::commuteMask take a MutableArrayRef instead of SmallVectorImpl. NFC.

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

8 years agoRevert "[InstCombine] Avoid combining the bitcast of a var that is used as both addre...
Eric Christopher [Wed, 29 Jun 2016 03:05:58 +0000 (03:05 +0000)]
Revert "[InstCombine] Avoid combining the bitcast of a var that is used as both address and result of load instructions"
Revert "[InstCombine] Combine A->B->A BitCast"

as this appears to cause PR27996 and as discussed in http://reviews.llvm.org/D20847

This reverts commits r270135 and r263734.

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

8 years ago[bugpoint] Delete a stale comment.
Philip Reames [Wed, 29 Jun 2016 03:02:01 +0000 (03:02 +0000)]
[bugpoint] Delete a stale comment.

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

8 years ago[bugpoint] Unwrap one level of wrapper functions [NFC]
Philip Reames [Wed, 29 Jun 2016 03:01:13 +0000 (03:01 +0000)]
[bugpoint] Unwrap one level of wrapper functions [NFC]

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

8 years ago[Triple] Add isLittleEndian().
Davide Italiano [Wed, 29 Jun 2016 01:56:27 +0000 (01:56 +0000)]
[Triple] Add isLittleEndian().

This allows us to query about the endianness without having to
look at DataLayout. The API will be used (and tested) in lld,
in order to find out the endianness of BitcodeFiles.

Briefly discussed with Rafael.

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

8 years ago[bugpoint] Extract helper functions for readability [NFCI]
Philip Reames [Wed, 29 Jun 2016 00:43:18 +0000 (00:43 +0000)]
[bugpoint] Extract helper functions for readability [NFCI]

And remove the use of a label(!) in the process.

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

8 years ago[llvm-cov] Minor cleanups to prepare for the html format patch
Vedant Kumar [Wed, 29 Jun 2016 00:38:21 +0000 (00:38 +0000)]
[llvm-cov] Minor cleanups to prepare for the html format patch

- Add renderView{Header,Footer}, renderLineSuffix, and hasSubViews to
  support creating tables with nested views.

- Move the 'Format' cl::opt to make it easier to extend.

- Just create one function view file, instead of overwriting the same
  file for every new function. Add a regression test for this.

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

8 years ago[Object] Fix a -Wpessimizing-move error; clang-format; NFC
Vedant Kumar [Wed, 29 Jun 2016 00:37:13 +0000 (00:37 +0000)]
[Object] Fix a -Wpessimizing-move error; clang-format; NFC

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

8 years ago[bugpoint] Simplify code by moving exception to only caller
Philip Reames [Wed, 29 Jun 2016 00:26:21 +0000 (00:26 +0000)]
[bugpoint] Simplify code by moving exception to only caller

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

8 years ago[bugpoint] Treat token type the same as ehpad w.r.t deletion
Philip Reames [Wed, 29 Jun 2016 00:15:35 +0000 (00:15 +0000)]
[bugpoint] Treat token type the same as ehpad w.r.t deletion

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

8 years ago[bugpoint] Disabling one transform shouldn't prevent reporting the progress of the...
Philip Reames [Wed, 29 Jun 2016 00:10:39 +0000 (00:10 +0000)]
[bugpoint] Disabling one transform shouldn't prevent reporting the progress of the former

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

8 years agoFinish cleaning up most of the error handling in libObject’s MachOUniversalBinary
Kevin Enderby [Tue, 28 Jun 2016 23:16:13 +0000 (23:16 +0000)]
Finish cleaning up most of the error handling in libObject’s MachOUniversalBinary
and its clients to use the new llvm::Error model for error handling.

Changed getAsArchive() from ErrorOr<...> to Expected<...> so now all
interfaces there use the new llvm::Error model for return values.

In the two places it had if (!Parent) this is actually a program error so changed
from returning errorCodeToError(object_error::parse_failed) to calling
report_fatal_error() with a message.

In getObjectForArch() added error messages to its two llvm::Error return values
instead of returning errorCodeToError(object_error::arch_not_found) with no
error message.

For the llvm-obdump, llvm-nm and llvm-size clients since the only binary files in
Mach-O Universal Binaries that are supported are Mach-O files or archives with
Mach-O objects, updated their logic to generate an error when a slice contains
something like an ELF binary instead of ignoring it. And added a test case for
that.

The last error stuff to be cleaned up for libObject’s MachOUniversalBinary is
the use of errorOrToExpected(Archive::create(ObjBuffer)) which needs
Archive::create() to be changed from ErrorOr<...> to Expected<...> first,
which I’ll work on next.

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

8 years ago[Diag] Fix file comment
Adam Nemet [Tue, 28 Jun 2016 23:06:39 +0000 (23:06 +0000)]
[Diag] Fix file comment

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

8 years agoCodegen: [MBP] Add messages to asserts. NFC
Kyle Butt [Tue, 28 Jun 2016 22:50:54 +0000 (22:50 +0000)]
Codegen: [MBP] Add messages to asserts. NFC

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

8 years ago[ARM] Fix 28282: cost computation for constant hoisting
Weiming Zhao [Tue, 28 Jun 2016 22:30:45 +0000 (22:30 +0000)]
[ARM] Fix 28282: cost computation for constant hoisting

Summary:
This fixes bug: https://llvm.org/bugs/show_bug.cgi?id=28282

Currently the cost model of constant hoisting checks the bit width of the data type of the constants.
However, the actual immediate value is small enough and not need to be hoisted.
This patch checks for the actual bit width needed for the constant.

Reviewers: t.p.northover, rengolin

Subscribers: aemerson, rengolin, llvm-commits

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

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

8 years agoRevert r274054 to try to appease the bot
Manman Ren [Tue, 28 Jun 2016 22:20:17 +0000 (22:20 +0000)]
Revert r274054 to try to appease the bot

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

8 years agoRelax the clearance calculating for breaking partial register dependency.
Dehao Chen [Tue, 28 Jun 2016 21:19:34 +0000 (21:19 +0000)]
Relax the clearance calculating for breaking partial register dependency.

Summary: LLVM assumes that large clearance will hide the partial register spill penalty. But in our experiment, 16 clearance is too small. As the inserted XOR is normally fairly cheap, we should have a higher clearance threshold to aggressively insert XORs that is necessary to break partial register dependency.

Reviewers: wmi, davidxl, stoklund, zansari, myatsina, RKSimon, DavidKreitzer, mkuper, joerg, spatel

Subscribers: davidxl, llvm-commits

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

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

8 years ago[YAML] Fix YAML tags appearing before the start of sequence elements
Chris Bieneman [Tue, 28 Jun 2016 21:10:26 +0000 (21:10 +0000)]
[YAML] Fix YAML tags appearing before the start of sequence elements

Our existing yaml::Output code writes tags immediately when mapTag is called, without any state handling. This results in tags on sequence elements being written before the element itself. For example, we see this:

SomeArray:     !elem_type
  - key1:         1
    key2:         2 !elem_type2
  - key3:         3
    key4:         4

We should instead see:

SomeArray:
  - !elem_type
    key1:         1
    key2:         2
  - !elem_type2
    key3:         3
    key4:         4

Our reader handles reading properly, so this bug only impacts writing yaml sequences with tagged elements.

As a test for this I've modified the Mach-O yaml encoding to allways apply the !mach-o tag when encoding MachOYAML::Object entries. This results in the !mach-o tag appearing as expected in dumped fat files.

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

8 years ago[SystemZ] Use NILL instruction instead of NILF where possible
Zhan Jun Liau [Tue, 28 Jun 2016 21:03:19 +0000 (21:03 +0000)]
[SystemZ] Use NILL instruction instead of NILF where possible

Summary: SystemZ shift instructions only use the last 6 bits of the shift
amount. When the result of an AND operation is used as a shift amount, this
means that we can use the NILL instruction (which operates on the last 16 bits)
rather than NILF (which operates on the last 32 bits) for a 16-bit savings in
instruction size.

Reviewers: uweigand

Subscribers: llvm-commits

Author: colpell
Committing on behalf of Elliot.

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

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

8 years agoFix "not all control paths return a value" warning on MSVC
Simon Pilgrim [Tue, 28 Jun 2016 21:02:41 +0000 (21:02 +0000)]
Fix "not all control paths return a value" warning on MSVC

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

8 years agoX86FrameLowering: Check subregs when deciding prolog kill flags
Matthias Braun [Tue, 28 Jun 2016 20:31:56 +0000 (20:31 +0000)]
X86FrameLowering: Check subregs when deciding prolog kill flags

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

8 years agoUse isPositionIndependent in a few more places.
Rafael Espindola [Tue, 28 Jun 2016 20:13:36 +0000 (20:13 +0000)]
Use isPositionIndependent in a few more places.

I think this converts all the simple cases that really just care about
the generated code being position independent or not. The remaining
uses are a bit more complicated and are checking things like "is this
a library or executable" or "can this symbol be preempted".

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

8 years agoUpdate llvm command line parser to support subcommands.
Zachary Turner [Tue, 28 Jun 2016 20:09:47 +0000 (20:09 +0000)]
Update llvm command line parser to support subcommands.

This allows command line tools to use syntaxes like the following:

  llvm-foo.exe command1 -o1 -o2
  llvm-foo.exe command2 -p1 -p2

Where command1 and command2 contain completely different sets of
valid options.  This is backwards compatible with previous uses
of llvm cl which did not support subcommands, as any option
which specifies no optional subcommand (e.g. all existing
code) goes into a special "top level" subcommand that expects
dashed options to appear immediately after the program name.
For example, code which is subcommand unaware would generate
a command line such as the following, where no subcommand
is specified:

  llvm-foo.exe -q1 -q2

The top level subcommand can co-exist with actual subcommands,
as it is implemented as an actual subcommand which is searched
if no explicit subcommand is specified.  So llvm-foo.exe as
specified above could be written so as to support all three
aforementioned command lines simultaneously.

There is one additional "special" subcommand called AllSubCommands,
which can be used to inject an option into every subcommand.
This is useful to support things like help, so that commands
such as:

  llvm-foo.exe --help
  llvm-foo.exe command1 --help
  llvm-foo.exe command2 --help

All work and display the help for the selected subcommand
without having to explicitly go and write code to handle each
one separately.

This patch is submitted without an example of anything actually
using subcommands, but a followup patch will convert the
llvm-pdbdump tool to use subcommands.

Reviewed By: beanz
Differential Revision: http://reviews.llvm.org/D21485

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

8 years agoFix typo
Krzysztof Parzyszek [Tue, 28 Jun 2016 19:12:28 +0000 (19:12 +0000)]
Fix typo

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

8 years agominimize regression tests and update checks
Sanjay Patel [Tue, 28 Jun 2016 18:40:08 +0000 (18:40 +0000)]
minimize regression tests and update checks

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

8 years agominimize regression tests and update checks
Sanjay Patel [Tue, 28 Jun 2016 18:33:10 +0000 (18:33 +0000)]
minimize regression tests and update checks

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

8 years agoSupport arbitrary addrspace pointers in masked load/store intrinsics
Artur Pilipenko [Tue, 28 Jun 2016 18:27:25 +0000 (18:27 +0000)]
Support arbitrary addrspace pointers in masked load/store intrinsics

This is a resubmittion of 263158 change after fixing the existing problem with intrinsics mangling (see LTO and intrinsics mangling llvm-dev thread for details).

This patch fixes the problem which occurs when loop-vectorize tries to use @llvm.masked.load/store intrinsic for a non-default addrspace pointer. It fails with "Calling a function with a bad signature!" assertion in CallInst constructor because it tries to pass a non-default addrspace pointer to the pointer argument which has default addrspace.

The fix is to add pointer type as another overloaded type to @llvm.masked.load/store intrinsics.

Reviewed By: reames

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

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

8 years ago[lanai] Update ELF number to correspond to the assigned number.
Jacques Pienaar [Tue, 28 Jun 2016 18:22:22 +0000 (18:22 +0000)]
[lanai] Update ELF number to correspond to the assigned number.

Change EM_LANAI to correspond to machine number assigned by Xinuos.

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

8 years ago[X86] Update a test with more explicit checks. NFC.
Michael Kuperstein [Tue, 28 Jun 2016 17:42:13 +0000 (17:42 +0000)]
[X86] Update a test with more explicit checks. NFC.

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

8 years agoAMDGPU: Fix global isel crashes
Matt Arsenault [Tue, 28 Jun 2016 17:42:09 +0000 (17:42 +0000)]
AMDGPU: Fix global isel crashes

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

8 years agoTypos. NFC.
Chad Rosier [Tue, 28 Jun 2016 17:19:10 +0000 (17:19 +0000)]
Typos. NFC.

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

8 years ago[X86] Reorder source list alphabetically. NFC.
Michael Kuperstein [Tue, 28 Jun 2016 17:11:15 +0000 (17:11 +0000)]
[X86] Reorder source list alphabetically. NFC.

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

8 years agoAMDGPU: Fix typo
Matt Arsenault [Tue, 28 Jun 2016 16:59:53 +0000 (16:59 +0000)]
AMDGPU: Fix typo

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

8 years agoAMDGPU: Remove unused function
Matt Arsenault [Tue, 28 Jun 2016 16:59:49 +0000 (16:59 +0000)]
AMDGPU: Remove unused function

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

8 years ago[llvm-cov] Create an index of reports in -output-dir mode
Vedant Kumar [Tue, 28 Jun 2016 16:12:24 +0000 (16:12 +0000)]
[llvm-cov] Create an index of reports in -output-dir mode

This index lists the reports available in the 'coverage' sub-directory.
This will help navigate coverage output from large projects.

This commit factors the file creation code out of SourceCoverageView and
into CoveragePrinter.

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

8 years ago[llvm-cov] Minor cleanups (NFC)
Vedant Kumar [Tue, 28 Jun 2016 16:12:20 +0000 (16:12 +0000)]
[llvm-cov] Minor cleanups (NFC)

- Test the '-o' alias for -output-dir.
- Use a helper method in a conditional.
- Add a period.

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

8 years ago[llvm-cov] Avoid copying file paths multiple times (NFC)
Vedant Kumar [Tue, 28 Jun 2016 16:12:18 +0000 (16:12 +0000)]
[llvm-cov] Avoid copying file paths multiple times (NFC)

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

8 years ago[llvm-cov] Rename ShowFormat to Format (NFC)
Vedant Kumar [Tue, 28 Jun 2016 16:12:15 +0000 (16:12 +0000)]
[llvm-cov] Rename ShowFormat to Format (NFC)

This makes it a bit more generic, in case we want to emit summary
reports in different formats in the future.

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

8 years ago[llvm-cov] Move a check into a helper method (NFC)
Vedant Kumar [Tue, 28 Jun 2016 16:12:12 +0000 (16:12 +0000)]
[llvm-cov] Move a check into a helper method (NFC)

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

8 years ago[X86] Make WRPKRU/RDPKRU pass -verify-machineinstrs
David Majnemer [Tue, 28 Jun 2016 16:04:46 +0000 (16:04 +0000)]
[X86] Make WRPKRU/RDPKRU pass -verify-machineinstrs

The original implementation attempted to zero registers using
XOR %foo, %foo.  This is problematic because it constitutes a
read-modify-write of a register which might not be defined.

Instead, use MOV32r0 to avoid these problems; expandPostRAPseudo does
the right thing here.

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

8 years agoDon't pass a Reloc::Model to GVIsIndirectSymbol.
Rafael Espindola [Tue, 28 Jun 2016 15:38:13 +0000 (15:38 +0000)]
Don't pass a Reloc::Model to GVIsIndirectSymbol.

It already has access to it.

While at it, rename it to isGVIndirectSymbol.

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

8 years agoDon't pass Reloc::Model to places that already have it. NFC.
Rafael Espindola [Tue, 28 Jun 2016 15:18:26 +0000 (15:18 +0000)]
Don't pass Reloc::Model to places that already have it. NFC.

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

8 years agoConvert more cases to isPositionIndependent(). NFC.
Rafael Espindola [Tue, 28 Jun 2016 14:33:28 +0000 (14:33 +0000)]
Convert more cases to isPositionIndependent(). NFC.

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

8 years agoDelete dead code. NFC.
Rafael Espindola [Tue, 28 Jun 2016 14:26:39 +0000 (14:26 +0000)]
Delete dead code. NFC.

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

8 years ago[SystemZ] Save/restore r6 and r7 if function contains landing pad.
Marcin Koscielnicki [Tue, 28 Jun 2016 14:13:11 +0000 (14:13 +0000)]
[SystemZ] Save/restore r6 and r7 if function contains landing pad.

This fixes PR27102.

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

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

8 years ago[X86][AVX] Peek through bitcasts to find the source of broadcasts (reapplied)
Simon Pilgrim [Tue, 28 Jun 2016 13:24:05 +0000 (13:24 +0000)]
[X86][AVX] Peek through bitcasts to find the source of broadcasts (reapplied)

AVX1 can only broadcast vectors as floats/doubles, so for 256-bit vectors we insert bitcasts if we are shuffling v8i32/v4i64 types. Unfortunately the presence of these bitcasts prevents the current broadcast lowering code from peeking through cases where we have concatenated / extracted vectors to create the 256-bit vectors.

This patch allows us to peek through bitcasts as long as the number of elements doesn't change (i.e. element bitwidth is the same) so the broadcast index is not affected.

Note this bitcast peek is different from the stage later on which doesn't care about the type and is just trying to find a load node.

As we're being more aggressive with bitcasts, we also need to ensure that the broadcast type is correctly bitcasted

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

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

8 years agoFix "not all control paths return a value" warning on MSVC
Simon Pilgrim [Tue, 28 Jun 2016 12:55:35 +0000 (12:55 +0000)]
Fix "not all control paths return a value" warning on MSVC

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

8 years agoConvert 2 more uses to shouldAssumeDSOLocal(). NFC.
Rafael Espindola [Tue, 28 Jun 2016 12:49:12 +0000 (12:49 +0000)]
Convert 2 more uses to shouldAssumeDSOLocal(). NFC.

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

8 years agoFixed MSVC unresolved symbol error due to an incorrectly declared extern
Simon Pilgrim [Tue, 28 Jun 2016 12:34:44 +0000 (12:34 +0000)]
Fixed MSVC unresolved symbol error due to an incorrectly declared extern

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

8 years ago[modules] Separate intrinsic_gen dependent headers from module LLVM_IR.
Vassil Vassilev [Tue, 28 Jun 2016 12:27:09 +0000 (12:27 +0000)]
[modules] Separate intrinsic_gen dependent headers from module LLVM_IR.

Some headers in IR depend on tablegen generated code. Modules builds triggered
generation of the LLVM_IR module (including headers dependant on intrinsic_gen),
imposing a unnecessary build dependency.

Reviewed by Richard Smith.

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

8 years agoUse isPositionIndependent(). NFC.
Rafael Espindola [Tue, 28 Jun 2016 12:25:00 +0000 (12:25 +0000)]
Use isPositionIndependent(). NFC.

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

8 years agoAdd missing includes.
Vassil Vassilev [Tue, 28 Jun 2016 12:17:05 +0000 (12:17 +0000)]
Add missing includes.

Patch by Cristina Cristescu.

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

8 years ago[gold] Really fix test to run on non x86 platforms.
Arnaud A. de Grandmaison [Tue, 28 Jun 2016 08:12:09 +0000 (08:12 +0000)]
[gold] Really fix test to run on non x86 platforms.

Address post-commit comment from H.J. Lu.

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

8 years ago[X86][SSE] Added support for combining target shuffles to (V)PSHUFD/VPERMILPD/VPERMIL...
Simon Pilgrim [Tue, 28 Jun 2016 08:08:15 +0000 (08:08 +0000)]
[X86][SSE] Added support for combining target shuffles to (V)PSHUFD/VPERMILPD/VPERMILPS immediate permutes

This patch allows target shuffles to be combined to single input immediate permute instructions - (V)PSHUFD/VPERMILPD/VPERMILPS - allowing more general pattern matching than what we current do and improves the likelihood of memory folding compared to existing patterns which tend to reuse the input in multiple arguments.

Further permute instructions (V)PSHUFLW/(V)PSHUFHW/(V)PERMQ/(V)PERMPD may be added in the future but its proven tricky to create tests cases for them so far. (V)PSHUFLW/(V)PSHUFHW is already handled quite well in combineTargetShuffle so it may be that removing some of that code may allow us to perform more of the combining in one place without duplication.

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

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

8 years ago[BFI/MBFI]: cfg graph view with color scheme
Xinliang David Li [Tue, 28 Jun 2016 06:58:21 +0000 (06:58 +0000)]
[BFI/MBFI]: cfg graph view with color scheme

This patch enhances dot graph viewer to show hot regions
with hot bbs/edges displayed in red. The ratio of the bb
freq to the max freq of the function needs to be no less
than the value specified by view-hot-freq-percent option.
The default value is 10 (i.e. 10%).

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

8 years ago[X86 Target Lowering] Merged ICMP test.
Elena Demikhovsky [Tue, 28 Jun 2016 06:25:38 +0000 (06:25 +0000)]
[X86 Target Lowering] Merged ICMP test.

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

8 years ago[BFI]: enhance BFI graph dump
Xinliang David Li [Tue, 28 Jun 2016 04:07:03 +0000 (04:07 +0000)]
[BFI]: enhance BFI graph dump

MBFI supports profile count dumping and function
name based filtering. Add these two feature to
BFI as well. The filtering option is shared between
BFI and MBFI: -view-bfi-func-name=..

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

8 years ago[LLE] Don't hoist conditionally executed loads
Adam Nemet [Tue, 28 Jun 2016 04:02:47 +0000 (04:02 +0000)]
[LLE] Don't hoist conditionally executed loads

If the load is conditional we can't hoist its 0-iteration instance to
the preheader because that would make it unconditional.  Thus we would
access a memory location that the original loop did not access.

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