OSDN Git Service
Simon Pilgrim [Fri, 20 May 2016 16:05:55 +0000 (16:05 +0000)]
[X86][AVX] Sync with clang/test/CodeGen/avx-builtins.c
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270229
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 20 May 2016 15:52:23 +0000 (15:52 +0000)]
[PartiallyInlineLibCalls] Remove dead includes. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270228
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 20 May 2016 15:43:39 +0000 (15:43 +0000)]
[PM/PartiallyInlineLibCalls] Convert to static function in preparation for porting this pass to the new PM.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270225
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 20 May 2016 14:53:09 +0000 (14:53 +0000)]
[SimplifyCFG] eliminate switch cases based on known range of switch condition
This was noted in PR24766:
https://llvm.org/bugs/show_bug.cgi?id=24766#c2
We may not know whether the sign bit(s) are zero or one, but we can still
optimize based on knowing that the sign bit is repeated.
Differential Revision: http://reviews.llvm.org/D20275
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270222
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 20 May 2016 14:34:03 +0000 (14:34 +0000)]
Correction to r270219: fix detection of invalid frame index
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270220
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 20 May 2016 14:18:54 +0000 (14:18 +0000)]
Skip entries with invalid indexes in the search loop in register scavenger
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270219
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 20 May 2016 14:09:41 +0000 (14:09 +0000)]
[MCExpr] avoid UB via negation of INT_MIN
I accidentally exposed a bug in MCExpr::evaluateAsRelocatableImpl() with the test file added in:
http://reviews.llvm.org/rL269977
Differential Revision: http://reviews.llvm.org/D20434
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270218
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 20 May 2016 14:01:34 +0000 (14:01 +0000)]
[Hexagon] Use pipe instead of temporary files in tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270217
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 20 May 2016 12:20:10 +0000 (12:20 +0000)]
Refactor X86 symbol access classification.
This refactors the logic in X86 to avoid code duplication. It also
splits it in two steps: it first decides if a symbol is local to the DSO
and then uses that information to decide how to access it.
The first part is implemented by shouldAssumeDSOLocal. It is not in any
way specific to X86. In a followup patch I intend to move it to
somewhere common and reused it in other backends.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270209
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 20 May 2016 12:00:52 +0000 (12:00 +0000)]
Simplify handling of hidden stubs on PowerPC.
We now handle them just like non hidden ones. This was already the case
on x86 (r207518) and arm (r207517).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270205
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Fri, 20 May 2016 10:53:56 +0000 (10:53 +0000)]
SparcISelLowering.cpp: Add missing StringSwitch.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270200
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Dewhurst [Fri, 20 May 2016 10:21:01 +0000 (10:21 +0000)]
[Sparc] Implement getRegisterByName.
Allows Sparc registers to be specifically referred to in inline assembly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270198
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 20 May 2016 09:18:37 +0000 (09:18 +0000)]
[ProfileData] Thread unique_ptr through the summary builder to avoid leaks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270195
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Kudrin [Fri, 20 May 2016 09:14:24 +0000 (09:14 +0000)]
[Coverage] Fix an issue where improper coverage mapping data could be loaded for an inline function.
If an inline function is observed but unused in a translation unit, dummy
coverage mapping data with zero hash is stored for this function.
If such a coverage mapping section came earlier than real one, the latter
was ignored. As a result, llvm-cov was unable to show coverage information
for those functions.
Differential Revision: http://reviews.llvm.org/D20286
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270194
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Dewhurst [Fri, 20 May 2016 09:03:01 +0000 (09:03 +0000)]
[Sparc] Enable more inline assembly constraints.
Note: This is specifically to allow GCC's test pr44707 to pass.
Trivial change, not put for differential revision. Test included.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270192
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Fri, 20 May 2016 08:06:31 +0000 (08:06 +0000)]
Fix some comment typos in SelectionDAGBuilder. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270190
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Fri, 20 May 2016 05:13:35 +0000 (05:13 +0000)]
Target: move enum back into MC
Move the enumeration back to avoid the layering violation. Should repair the
modules build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270184
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 20 May 2016 05:10:32 +0000 (05:10 +0000)]
[X86] Run the AVX/AVX2 intrinsic tests in AVX512VL mode too just to make sure we don't break any older intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270183
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 20 May 2016 05:10:27 +0000 (05:10 +0000)]
[X86] Fix another AVX pattern to only be disable if VLX and BWI are supported.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270182
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Fri, 20 May 2016 03:39:28 +0000 (03:39 +0000)]
Target: move the EH enumeration and add option
Move the ExceptionHandling enumeration into TargetOptions and introduce a field
to track the desired exception model. This will allow us to set the exception
model from the frontend (needed to optionally use SjLj EH on other targets where
zero-cost is available and preferred).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270178
91177308-0d34-0410-b5e6-
96231b3b80d8
Jacques Pienaar [Fri, 20 May 2016 03:21:37 +0000 (03:21 +0000)]
[lanai] Use Optional<Reloc> in LanaiTargetMachine.
Follow r269988 and use Optional<Reloc>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270176
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 20 May 2016 02:01:51 +0000 (02:01 +0000)]
Revert accidental commit of a test command line addition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270175
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 20 May 2016 02:00:08 +0000 (02:00 +0000)]
[X86] Fix some AVX patterns to only be disabled if VLX and BWI are supported. Without this we get isel failures on the avx-intrinsics-x86.ll test in AVX512VL.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270174
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Liew [Fri, 20 May 2016 01:37:54 +0000 (01:37 +0000)]
[LibFuzzer] Fix implementation of ``GetPeakRSSMb()`` on Mac OSX.
On Linux ``rusage.ru_maxrss`` is in KiB but on Mac OSX it is in bytes.
Differential Revision: http://reviews.llvm.org/D20410
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270173
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Liew [Fri, 20 May 2016 01:30:36 +0000 (01:30 +0000)]
[LibFuzzer] Fix ``NumberOfCpuCores()`` on Mac OSX.
The ``nprocs`` command does not exist under Mac OSX so use
``sysctl`` instead on that platform.
Whilst I'm here
* Use ``pclose()`` instead of ``fclose()`` which the ``popen()``
documentation says should be used.
* Check for errors that were previously unhandled.
Differential Revision: http://reviews.llvm.org/D20409
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270172
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Fri, 20 May 2016 01:17:38 +0000 (01:17 +0000)]
Add AVRTargetStreamers
Reviewed by Matt Arsenault in http://reviews.llvm.org/D16311
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270171
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Fri, 20 May 2016 00:55:51 +0000 (00:55 +0000)]
[RegBankSelect] Refactor the code to split the repairing and mapping of
an instruction.
Use the previously introduced RepairingPlacement class to split the code
computing the repairing placement from the code doing the actual
placement. That way, we will be able to consider different placement and
then, only apply the best one.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270168
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Fri, 20 May 2016 00:49:10 +0000 (00:49 +0000)]
[RegBankSelect] Add helper class for repairing code placement.
When assigning the register banks we may have to insert repairing code
to move already assigned values accross register banks.
Introduce a few helper classes to keep track of what is involved in the
repairing of an operand:
- InsertPoint and its derived classes record the positions, in the CFG,
where repairing has to be inserted.
- RepairingPlacement holds all the insert points for the repairing of an
operand plus the kind of action that is required to do the repairing.
This is going to be used to keep track of how the repairing should be
done, while comparing different solutions for an instruction. Indeed, we
will need the repairing placement to capture the cost of a solution and
we do not want to compute it a second time when we do the actual
repairing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270167
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Fri, 20 May 2016 00:42:57 +0000 (00:42 +0000)]
[RegBankSelect] Refactor assignmentMatch to avoid testing the current
register bank twice.
Prior to this change, we were checking if the assignment for the current
machine operand was matching, then we would check if the mismatch
requires to insert repair code.
We actually already have this information from the first check, so just
pass it along.
NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270166
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 20 May 2016 00:38:28 +0000 (00:38 +0000)]
Fix pr27728.
Sorry for the lack testcase. There is one in the pr, but it depends on
std::sort and the .ll version is 110 lines, so I don't think it is
wort it.
The bug was that we were sorting after adding a terminator, and the
sorting algorithm could end up putting the terminator in the middle of
the List vector.
With that we would create a Spans map entry keyed on nullptr which would
then be added to CUs and fail in that sorting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270165
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Fri, 20 May 2016 00:35:26 +0000 (00:35 +0000)]
[RegBankSelect] Introduce MappingCost helper class.
This helper class will be used to represent the cost of mapping an
instruction to a specific register bank.
The particularity of these costs is that they are mostly local, thus the
frequency of the basic block is irrelevant. However, for few
instructions (e.g., phis and terminators), the cost may be non-local and
then, we need to account for the frequency of the involved basic blocks.
This will be used by the greedy mode I am working on.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270163
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Fri, 20 May 2016 00:05:55 +0000 (00:05 +0000)]
Restore ASCIIbetical order.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270161
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Thu, 19 May 2016 23:26:39 +0000 (23:26 +0000)]
[obj2yaml] [yaml2obj] Adding a test for r270124
This test covers strings after load command structs and zero fill bytes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270159
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Thu, 19 May 2016 23:26:31 +0000 (23:26 +0000)]
[yaml2obj] Removing debug code that scribbled 0xDEADBEEF
Now that MachO load command fields are fully covered we can fill unaccounted for bytes with 0. That allows us to sparsely specify YAML to simplify tests.
Simplifying load_commands test accordingly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270158
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Thu, 19 May 2016 23:26:05 +0000 (23:26 +0000)]
[RuntimeDyld][MachO] Add support for SUBTRACTOR relocations between anonymous
symbols on x86-64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270157
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 19 May 2016 23:17:37 +0000 (23:17 +0000)]
clang-format. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270156
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Thu, 19 May 2016 23:15:59 +0000 (23:15 +0000)]
Add const qualifiers to appease bots; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270155
91177308-0d34-0410-b5e6-
96231b3b80d8
Easwaran Raman [Thu, 19 May 2016 23:02:09 +0000 (23:02 +0000)]
Allow -inline-threshold to override default threshold.
Before r257832, the threshold used by SimpleInliner was explicitly specified or generated from opt levels and passed to the base class Inliner's constructor. There, it was first overridden by explicitly specified -inline-threshold. The refactoring in r257832 did not preserve this behavior for all opt levels. This change brings back the original behavior.
Differential Revision: http://reviews.llvm.org/D20452
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270153
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Thu, 19 May 2016 22:56:37 +0000 (22:56 +0000)]
Forgotten file from r269992.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270152
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Thu, 19 May 2016 22:55:46 +0000 (22:55 +0000)]
[GuardWidening] Introduce range check merging
Sequences of range checks expressed using guards, like
guard((I - 2) u< L)
guard((I - 1) u< L)
guard((I + 0) u< L)
guard((I + 1) u< L)
guard((I + 2) u< L)
can sometimes be combined into a smaller sequence:
guard((I - 2) u< L AND (I + 2) u< L)
if we can prove that (I - 2) u< L AND (I + 2) u< L implies all of checks
expressed in the previous sequence.
This change teaches GuardWidening to do this kind of merging when
feasible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270151
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Thu, 19 May 2016 22:40:37 +0000 (22:40 +0000)]
Reapply r263460: [SpillPlacement] Fix a quadratic behavior in spill placement.
Using Chandler's words from r265331:
This commit was greatly exacerbating PR17409 and effectively regressed
build time for lot of (very large) code when compiled with ASan or MSan.
PR17409 is fixed by r269249, so this is fine to reapply r263460.
Original commit message:
The bad behavior happens when we have a function with a long linear
chain of basic blocks, and have a live range spanning most of this
chain, but with very few uses.
Let say we have only 2 uses.
The Hopfield network is only seeded with two active blocks where the
uses are, and each iteration of the outer loop in
`RAGreedy::growRegion()` only adds two new nodes to the network due to
the completely linear shape of the CFG. Meanwhile,
`SpillPlacer->iterate()` visits the whole set of discovered nodes, which
adds up to a quadratic algorithm.
This is an historical accident effect from r129188.
When the Hopfield network is expanding, most of the action is happening
on the frontier where new nodes are being added. The internal nodes in
the network are not likely to be flip-flopping much, or they will at
least settle down very quickly. This means that while
`SpillPlacer->iterate()` is recomputing all the nodes in the network, it
is probably only the two frontier nodes that are changing their output.
Instead of recomputing the whole network on each iteration, we can
maintain a SparseSet of nodes that need to be updated:
- `SpillPlacement::activate()` adds the node to the todo list.
- When a node changes value (i.e., `update()` returns true), its
neighbors are added to the todo list.
- `SpillPlacement::iterate()` only updates the nodes in the list.
The result of Hopfield iterations is not necessarily exact. It should
converge to a local minimum, but there is no guarantee that it will find
a global minimum. It is possible that updating nodes in a different
order will cause us to switch to a different local minimum. In other
words, this is not NFC, but although I saw a few runtime improvements
and regressions when I benchmarked this change, those were side effects
and actually the performance change is in the noise as expected.
Huge thanks to Jakob Stoklund Olesen <stoklund@2pi.dk> for his
feedbacks, guidance and time for the review.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270149
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 19 May 2016 22:07:57 +0000 (22:07 +0000)]
Record a TargetMachine instead of a Reloc::Model.
Addresses r270095's code review.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270147
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Liew [Thu, 19 May 2016 22:00:33 +0000 (22:00 +0000)]
[LibFuzzer]
Work around crashes in ``__sanitizer_malloc_hook()`` under Mac OSX.
Under Mac OSX we intercept calls to malloc before thread local
storage is initialised leading to a crash when accessing
``AllocTracer``. To workaround this ``AllocTracer`` is only accessed
in the hook under Linux. For symmetry ``__sanitizer_free_hook()``
is also modified in the same way.
To support this change a set of new macros
LIBFUZZER_LINUX and LIBFUZZER_APPLE has been defined which can be
used to check the target being compiled for.
Differential Revision: http://reviews.llvm.org/D20402
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270145
91177308-0d34-0410-b5e6-
96231b3b80d8
Easwaran Raman [Thu, 19 May 2016 21:53:28 +0000 (21:53 +0000)]
Remove specializations of ProfileSummary
This removes the subclasses of ProfileSummary, moves the members of the derived classes to the base class.
Differential Revision: http://reviews.llvm.org/D20390
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270143
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Thu, 19 May 2016 21:39:00 +0000 (21:39 +0000)]
[ARM, AArch64] Match additional patterns to ldN instructions
When matching an interleaved load to an ldN pattern, the interleaved access
pass checks that all users of the load are shuffles. If the load is used by an
instruction other than a shuffle, the pass gives up and an ldN is not
generated. This patch considers users of the load that are extractelement
instructions. It attempts to modify the extracts to use one of the available
shuffles rather than the load. After the transformation, the load is only used
by shuffles and will then be matched with an ldN pattern.
Differential Revision: http://reviews.llvm.org/D20250
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270142
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 19 May 2016 21:09:58 +0000 (21:09 +0000)]
AMDGPU: Remove pointless conversions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270139
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 19 May 2016 21:07:20 +0000 (21:07 +0000)]
[WebAssembly] Simplify code that never has to handle physical registers. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270137
91177308-0d34-0410-b5e6-
96231b3b80d8
Easwaran Raman [Thu, 19 May 2016 21:07:12 +0000 (21:07 +0000)]
Move ProfileSummary to IR.
This splits ProfileSummary into two classes: a ProfileSummary class that has methods to convert from/to metadata and a ProfileSummaryBuilder class that computes the profiles summary which is in ProfileData.
Differential Revision: http://reviews.llvm.org/D20314
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270136
91177308-0d34-0410-b5e6-
96231b3b80d8
Guozhi Wei [Thu, 19 May 2016 21:07:01 +0000 (21:07 +0000)]
[InstCombine] Avoid combining the bitcast of a var that is used as both address and result of load instructions
This patch fixes https://llvm.org/bugs/show_bug.cgi?id=27703.
If there is a sequence of one or more load instructions, each loaded value is used as address of later load instruction, bitcast is necessary to change the value type, don't optimize it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270135
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 19 May 2016 21:00:02 +0000 (21:00 +0000)]
comment out line that is causing UBSAN bot failures
Patch is awaiting review here:
http://reviews.llvm.org/D20434
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270128
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Thu, 19 May 2016 20:54:43 +0000 (20:54 +0000)]
[obj2yaml] [yaml2obj] Support for MachO Load Command data
This re-applies r270115.
Many of the MachO load commands can have data appended after the command structure. This data is frequently strings, but can actually be anything. This patch adds support for three optional fields on load command yaml descriptions.
The new PayloadString YAML field is populated with the data after load commands known to have strings as extra data.
The new ZeroPadBytes YAML field is a count of zero'd bytes after the end of the load command structure before the next command. This can apply anywhere in the file. MachO2YAML verifies that bytes are zero before populating this field, and YAML2MachO will add zero'd bytes.
The new PayloadBytes YAML field stores all bytes after the end of the load command structure before the next command if they are non-zero. This is a catch all for all unhandled bytes. If MachO2Yaml populates PayloadBytes it will not populate ZeroPadBytes, instead zero'd bytes will be in the PayloadBytes structure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270124
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Thu, 19 May 2016 20:48:54 +0000 (20:48 +0000)]
Revert "[obj2yaml] [yaml2obj] Support for MachO Load Command data"
This reverts commit r270115.
This failed on several builders using GCC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270121
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 19 May 2016 20:44:22 +0000 (20:44 +0000)]
Fix -Wunused-variable in non-Asserts build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270118
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Thu, 19 May 2016 20:40:03 +0000 (20:40 +0000)]
[obj2yaml] [yaml2obj] Support for MachO Load Command data
Many of the MachO load commands can have data appended after the command structure. This data is frequently strings, but can actually be anything. This patch adds support for three optional fields on load command yaml descriptions.
The new PayloadString YAML field is populated with the data after load commands known to have strings as extra data.
The new ZeroPadBytes YAML field is a count of zero'd bytes after the end of the load command structure before the next command. This can apply anywhere in the file. MachO2YAML verifies that bytes are zero before populating this field, and YAML2MachO will add zero'd bytes.
The new PayloadBytes YAML field stores all bytes after the end of the load command structure before the next command if they are non-zero. This is a catch all for all unhandled bytes. If MachO2Yaml populates PayloadBytes it will not populate ZeroPadBytes, instead zero'd bytes will be in the PayloadBytes structure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270115
91177308-0d34-0410-b5e6-
96231b3b80d8
Wei Mi [Thu, 19 May 2016 20:38:03 +0000 (20:38 +0000)]
Recommit r255691 since PR26509 has been fixed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270113
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 19 May 2016 20:28:40 +0000 (20:28 +0000)]
Simplify conditional unreachable into an assertion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270111
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 19 May 2016 20:20:22 +0000 (20:20 +0000)]
Fix -Wmicrosoft-enum-value warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270110
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Thu, 19 May 2016 20:15:33 +0000 (20:15 +0000)]
X86: Don't reset the stack after calls that don't return (PR27117)
Since the calls don't return, the instruction afterwards will never run,
and is just taking up unnecessary space in the binary.
Differential Revision: http://reviews.llvm.org/D20406
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270109
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian McCarthy [Thu, 19 May 2016 20:12:56 +0000 (20:12 +0000)]
Modify emitTypeInformation to use MemoryTypeTableBuilder
A baby step toward translating DIType records to CodeView.
This does not (yet) combine the record length with the record data. I'm going back and forth trying to determine if that's a good idea.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270106
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Thu, 19 May 2016 20:08:32 +0000 (20:08 +0000)]
[ARM, AArch64] Properly initialize InterleavedAccessPass
InterleavedAccessPass is an IR-level pass, so this change will enable testing
it with opt. This is part of D20250.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270101
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Thu, 19 May 2016 20:03:16 +0000 (20:03 +0000)]
[Target] Don't return a std::string in getRegAsmName
getRegAsmName ends up making a copy of the register's name in order to
make a lower-case version of it. This is bad because
getRegForInlineAsmConstraint, it's sole caller, does a lowercase
comparison anyway.
This resulted in a significant regression in compile time for the Linux
kernel because getRegAsmName is called in a loop by
getRegForInlineAsmConstraint.
Instead, forgo the call to lower in getRegAsmName and have it return a
StringRef.
No functionality change is intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270099
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 19 May 2016 18:57:54 +0000 (18:57 +0000)]
[x86] add tests for urem lowering
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270096
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 19 May 2016 18:49:29 +0000 (18:49 +0000)]
Remember the relocation model. NFC.
This avoids passing a TargetMachine in a few places.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270095
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 19 May 2016 18:34:20 +0000 (18:34 +0000)]
Style fixes. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270093
91177308-0d34-0410-b5e6-
96231b3b80d8
Zhan Jun Liau [Thu, 19 May 2016 18:30:17 +0000 (18:30 +0000)]
[SystemZ] Test commit - remove idea from README
Remove a comment about not supporting LRVH/STRVH from the README
LRVH/STRVH are being generated as of r269688
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270092
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 19 May 2016 18:20:25 +0000 (18:20 +0000)]
AMDGPU: Also look for s_cbranch_vccz
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270091
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Thu, 19 May 2016 18:05:58 +0000 (18:05 +0000)]
pdbdump: Rename NumberOfSymbols -> SymbolRecordStreamIndex.
Differential Revision: http://reviews.llvm.org/D20441
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270088
91177308-0d34-0410-b5e6-
96231b3b80d8
Ron Lieberman [Thu, 19 May 2016 18:05:56 +0000 (18:05 +0000)]
Fix a covnersion from string to bool issue used in an assert
Problem Was exposed by -Wstring-conversion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270087
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 19 May 2016 16:55:52 +0000 (16:55 +0000)]
[X86][SSE] Added fast-isel tests to sync with clang/test/CodeGen/sse-builtins.c
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270081
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 19 May 2016 16:49:53 +0000 (16:49 +0000)]
[X86][SSE2] Fixed shuffle of results in _mm_cmpnge_sd/_mm_cmpngt_sd tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270080
91177308-0d34-0410-b5e6-
96231b3b80d8
Mitch Bodart [Thu, 19 May 2016 16:40:49 +0000 (16:40 +0000)]
CodeGen: Move check of EnablePostRAScheduler to avoid disabling antidependency breaker
Previously, specifying -post-RA-scheduler=true had the side effect of
disabling the antidependency breaker, yielding different behavior than
if the post-RA-scheduler was enabled via the scheduling model.
Differential Revision: http://reviews.llvm.org/D20186
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270077
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Thu, 19 May 2016 15:58:05 +0000 (15:58 +0000)]
Temporarily revert r270070
It broke buildbot:
http://lab.llvm.org:8011/builders/clang-s390x-linux/builds/4817/steps/ninja%20check%201/logs/stdio
Actually it is just because D20273 not yet commited, but these 2 were crossing with each other,
and I`ll better find the way to land them separatelly soon.
Initial commit message:
[llvm-mc] - Teach llvm-mc to generate compressed debug sections in zlib style.
Before this patch llvm-mc generated zlib-gnu styled sections.
That means no SHF_COMPRESSED flag was set, magic 'zlib' signature
was used in combination with full size field. Sections were renamed to "*.z*".
This patch reimplements the compression style to zlib one as zlib-gnu looks
to be depricated everywhere.
Differential revision: http://reviews.llvm.org/D20331
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270075
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Thu, 19 May 2016 15:58:02 +0000 (15:58 +0000)]
[SCCP] Prefer class to struct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270074
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 19 May 2016 15:53:52 +0000 (15:53 +0000)]
[SelectionDAG] rename/move isKnownToBeAPowerOfTwo() from TargetLowering (NFC)
There are at least 2 places (DAGCombiner, X86ISelLowering) where this could be used instead
of ad-hoc and watered down code that is trying to match a power-of-2 pattern.
Differential Revision: http://reviews.llvm.org/D20439
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270073
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Thu, 19 May 2016 15:37:19 +0000 (15:37 +0000)]
[LAA] Check independence of strided accesses before forward case
This patch changes the order in which we attempt to prove the independence of
strided accesses. We previously did this after we knew the dependence distance
was positive. With this change, we check for independence before handling the
negative distance case. The patch prevents LAA from reporting forward
dependences for independent strided accesses.
This change was requested in the review of D19984.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270072
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Thu, 19 May 2016 15:08:31 +0000 (15:08 +0000)]
[llvm-mc] - Teach llvm-mc to generate compressed debug sections in zlib style.
Before this patch llvm-mc generated zlib-gnu styled sections.
That means no SHF_COMPRESSED flag was set, magic 'zlib' signature
was used in combination with full size field. Sections were renamed to "*.z*".
This patch reimplements the compression style to zlib one as zlib-gnu looks
to be depricated everywhere.
Differential revision: http://reviews.llvm.org/D20331
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270070
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Thu, 19 May 2016 14:19:47 +0000 (14:19 +0000)]
[AArch64 ] Generate a BFXIL from 'or (and X, Mask0Imm),(and Y, Mask1Imm)'.
Mask0Imm and ~Mask1Imm must be equivalent and one of the MaskImms is a shifted
mask (e.g., 0x000ffff0). Both 'and's must have a single use.
This changes code like:
and w8, w0, #0xffff000f
and w9, w1, #0x0000fff0
orr w0, w9, w8
into
lsr w8, w1, #4
bfi w0, w8, #4, #12
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270063
91177308-0d34-0410-b5e6-
96231b3b80d8
Ranjeet Singh [Thu, 19 May 2016 12:59:17 +0000 (12:59 +0000)]
[ARM] Add cdp intrinsic tests.
- Renamed intrinsics.ll to intrinsics-coprocessor.ll
as all the tests were testing coprocessor instructions,
also made the test checks match the full instruction.
Differential Revision: http://reviews.llvm.org/D20393
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270057
91177308-0d34-0410-b5e6-
96231b3b80d8
Ranjeet Singh [Thu, 19 May 2016 12:44:39 +0000 (12:44 +0000)]
Test commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270056
91177308-0d34-0410-b5e6-
96231b3b80d8
Artem Tamazov [Thu, 19 May 2016 12:22:39 +0000 (12:22 +0000)]
[AMDGPU][llvm-mc] Fixes to support buffer atomics.
Fixes for MUBUF_Atomic instructions to make operand list valid:
- For RTN insns, make a copy of $vdata_in operand as $vdata.
- Do not add operand for GLC, it is hardcoded and comes as a token.
Workaround to avoid adding multiple default optional operands.
Tests added.
Differential Revision: http://reviews.llvm.org/D20257
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270049
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Thu, 19 May 2016 12:20:40 +0000 (12:20 +0000)]
ps][microMIPS] Add R_MICROMIPS_PC21_S1 relocation
Differential Revision: http://reviews.llvm.org/D15526
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270048
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 19 May 2016 11:59:57 +0000 (11:59 +0000)]
[X86][SSE2] Added _mm_move_* tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270046
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 19 May 2016 10:58:54 +0000 (10:58 +0000)]
[X86][SSE2] Added _mm_cast* and _mm_set* tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270041
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Thu, 19 May 2016 10:42:14 +0000 (10:42 +0000)]
[mips][mips16] Fix ZERO is not a CPU16Regs register error from the machine verifier.
Summary: Partially fixes PR27458
Reviewers: sdardis
Subscribers: dsanders, llvm-commits, sdardis
Differential Revision: http://reviews.llvm.org/D20330
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270037
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrey Turetskiy [Thu, 19 May 2016 10:18:29 +0000 (10:18 +0000)]
[X86] Enable RRL part of the LEA optimization pass for -O2.
Enable "Remove Redundant LEAs" part of the LEA optimization pass for -O2.
This gives 6.4% performance improve on Broadwell on nnet benchmark from Coremark-pro.
There is no significant effect on other benchmarks (Geekbench, Spec2000, Spec2006).
Differential Revision: http://reviews.llvm.org/D19659
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270036
91177308-0d34-0410-b5e6-
96231b3b80d8
Zlatko Buljan [Thu, 19 May 2016 07:31:28 +0000 (07:31 +0000)]
[mips][microMIPS] Implement BC1EQZC, BC1NEZC, BC2EQZC and BC2NEZC instructions
Differential Revision: http://reviews.llvm.org/D18352
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270030
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 19 May 2016 06:13:58 +0000 (06:13 +0000)]
[X86] Generalize and combine some similar type constraints and node types. No changes to the isel table size so the separation wasn't buying us anything.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270026
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 19 May 2016 06:13:48 +0000 (06:13 +0000)]
[X86] Simplify some type constraints by removing parts that were already implied.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270025
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Thu, 19 May 2016 04:38:56 +0000 (04:38 +0000)]
CodeGen: Make the global-merge pass independently testable, and add a test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270023
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Thu, 19 May 2016 03:54:45 +0000 (03:54 +0000)]
Retry^3 "[ProfileData] (llvm) Use Error in InstrProf and Coverage, NFC"
Transition InstrProf and Coverage over to the stricter Error/Expected
interface.
Changes since the initial commit:
- Fix error message printing in llvm-profdata.
- Check errors in loadTestingFormat() + annotateAllFunctions().
- Defer error handling in InstrProfIterator to InstrProfReader.
- Remove the base ProfError class to work around an MSVC ICE.
Differential Revision: http://reviews.llvm.org/D19901
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270020
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Thu, 19 May 2016 03:53:17 +0000 (03:53 +0000)]
[GuardWidening] Use getEquivalentICmp to fold constant compares
`ConstantRange::getEquivalentICmp` is more general, and better
factored.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270019
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Thu, 19 May 2016 03:53:06 +0000 (03:53 +0000)]
[ConstantRange] Add an getEquivalentICmp helper
Currently only its unit test uses it, but this will be used in a later
change to simplify some logic in the GuardWidening pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270018
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 19 May 2016 03:00:05 +0000 (03:00 +0000)]
[WebAssembly] Update WebAssembly target for r269988.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270017
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 19 May 2016 02:05:58 +0000 (02:05 +0000)]
[X86] Remove some type constraint classes and use already existing stricter classes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270013
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 19 May 2016 02:05:55 +0000 (02:05 +0000)]
[AVX512] Strengthen type constraints for VFIXUPIMM patterns and combine the type constraints for vector and scalar.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270012
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 19 May 2016 01:52:56 +0000 (01:52 +0000)]
[WebAssembly] Make several CHECK lines less fragile using regexes and CHECK-DAG.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270011
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Thu, 19 May 2016 01:08:04 +0000 (01:08 +0000)]
Fix some Clang-tidy modernize-use-bool-literals and Include What You Use warnings in examples; other minor fixes.
Differential revision: http://reviews.llvm.org/D20397
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270008
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 19 May 2016 00:33:07 +0000 (00:33 +0000)]
reduce indentation; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270007
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Wed, 18 May 2016 23:51:17 +0000 (23:51 +0000)]
[AArch64] Push comment into function. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270003
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 18 May 2016 23:35:53 +0000 (23:35 +0000)]
AMDGPU: Fix verifier error when spilling undef subreg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270002
91177308-0d34-0410-b5e6-
96231b3b80d8