Rafael Espindola [Tue, 7 Jul 2015 13:58:32 +0000 (13:58 +0000)]
Simplify, NFC.
In these two contexts we really just want the raw n_value. No need to use
getSymbolValue which checks for special cases where, semantically, the symbol
has no value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241584
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 7 Jul 2015 09:15:29 +0000 (09:15 +0000)]
[IR] Make getFirstNonPHI return null if the BB is empty
getFirstNonPHI's documentation states that it returns null if there is
no non-PHI instruction. However, it instead returns a pointer to the
end iterator. The implementation of getFirstNonPHI claims that
dereferencing the iterator will result in an assertion failure but this
doesn't occur. Instead, machinery like getFirstInsertionPt will attempt
to isa<> this invalid memory which results in unpredictable behavior.
Instead, make getFirst* return null if no such instruction exists.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241570
91177308-0d34-0410-b5e6-
96231b3b80d8
Denis Protivensky [Tue, 7 Jul 2015 07:48:48 +0000 (07:48 +0000)]
Fix gcc warnings of different enum and non-enum types in ternaries
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241567
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Tue, 7 Jul 2015 06:54:42 +0000 (06:54 +0000)]
[ARM] Define a subtarget feature and use it to decide whether long calls should
be emitted.
This is needed to enable ARM long calls for LTO and enable and disable it on a
per-function basis.
Out-of-tree projects currently using EnableARMLongCalls to emit long calls
should start passing "+long-calls" to the feature string (see the changes made
to clang in r241565).
rdar://problem/
21529937
Differential Revision: http://reviews.llvm.org/D9364
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241566
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 7 Jul 2015 04:09:55 +0000 (04:09 +0000)]
Fix \param in r241472. [-Wdocumentation]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241552
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Tue, 7 Jul 2015 02:08:46 +0000 (02:08 +0000)]
MIR Parser: Verify the implicit machine register operands.
This commit verifies that the parsed machine instructions contain the implicit
register operands as specified by the MCInstrDesc. Variadic and call
instructions aren't verified.
Reviewers: Duncan P. N. Exon Smith
Differential Revision: http://reviews.llvm.org/D10781
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241537
91177308-0d34-0410-b5e6-
96231b3b80d8
Juergen Ributzka [Tue, 7 Jul 2015 02:05:18 +0000 (02:05 +0000)]
[StackMap Liveness] Calling the base class' getAnalysisUsage method. NFCI.
Calling into the base class' getAnalysisUsage method after we did our pass
specific modifications. This shouldn't really matter since this is the last
pass in the pipeline anyways.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241536
91177308-0d34-0410-b5e6-
96231b3b80d8
Juergen Ributzka [Tue, 7 Jul 2015 02:05:15 +0000 (02:05 +0000)]
[StackMap Liveness] No need to cache the MachineFunction. NFC.
Don't cache the MachineFunction in the pass and range'ify some loops.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241535
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 6 Jul 2015 23:58:14 +0000 (23:58 +0000)]
[Triple] Add a helper to switch between big/little endian variants
This will be used from clang's driver.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241527
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 6 Jul 2015 23:51:40 +0000 (23:51 +0000)]
Make UnitTestMain/TestMain.cpp free from llvm/Config/config.h.
llvm/Config/config.h is unavailable outside of build tree.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241523
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Mon, 6 Jul 2015 23:32:10 +0000 (23:32 +0000)]
[FaultMaps] Add statistic to count the # of implicit null checks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241521
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 6 Jul 2015 23:14:57 +0000 (23:14 +0000)]
[WebAssembly] Create a CodeGen unittest directory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241520
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Mon, 6 Jul 2015 23:07:26 +0000 (23:07 +0000)]
MIR Serialization: Serialize the implicit register flag.
This commit serializes the implicit flag for the register machine operands. It
introduces two new keywords into the machine instruction syntax: 'implicit' and
'implicit-def'. The 'implicit' keyword is used for the implicit register
operands, and the 'implicit-def' keyword is used for the register operands that
have both the implicit and the define flags set.
Reviewers: Duncan P. N. Exon Smith
Differential Revision: http://reviews.llvm.org/D10709
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241519
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 6 Jul 2015 22:55:20 +0000 (22:55 +0000)]
Remove JumpInstrTableInfo.h as it is no longer used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241517
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 6 Jul 2015 22:46:46 +0000 (22:46 +0000)]
[X86][AVX] Add support for shuffle decoding of vperm2f128/vperm2i128 with zero'd lanes
The vperm2f128/vperm2i128 shuffle mask decoding was not attempting to deal with shuffles that give zero lanes. This patch fixes this so that the assembly printer can provide shuffle comments.
As this decoder is also used in X86ISelLowering for shuffle combining, I've added an early-out to match existing behaviour. The hope is that we can add zero support in the future, this would allow other ops' decodes (e.g. insertps) to be combined as well.
Differential Revision: http://reviews.llvm.org/D10593
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241516
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 6 Jul 2015 22:35:29 +0000 (22:35 +0000)]
[x86] extend machine combiner reassociation optimization to SSE scalar adds
Extend the reassociation optimization of http://reviews.llvm.org/rL240361 (D10460)
to SSE scalar FP SP adds in addition to AVX scalar FP SP adds.
With the 'switch' in place, we can trivially add other opcodes and test cases in
future patches.
Differential Revision: http://reviews.llvm.org/D10975
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241515
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 6 Jul 2015 22:35:19 +0000 (22:35 +0000)]
[X86][SSE] Vectorized i64 uniform constant SRA shifts
This patch adds vectorization support for uniform constant i64 arithmetic shift right operators.
Differential Revision: http://reviews.llvm.org/D9645
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241514
91177308-0d34-0410-b5e6-
96231b3b80d8
JF Bastien [Mon, 6 Jul 2015 21:41:59 +0000 (21:41 +0000)]
WebAssembly: add some TODO
Reviewers: sunfish
Subscribers: llvm-commits, jfb
Differential Revision: http://reviews.llvm.org/D10971
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241513
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 6 Jul 2015 21:36:23 +0000 (21:36 +0000)]
llvm-nm: treat weak undefined as undefined.
This matches the behavior of gnu ld.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241512
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 6 Jul 2015 21:13:53 +0000 (21:13 +0000)]
[WinEH] Add some test cases I forgot to add to previous commits
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241510
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 6 Jul 2015 21:13:43 +0000 (21:13 +0000)]
[WinEH] Insert the EH code load before the block terminator
The previous code put the load after the terminator, leading to invalid
IR and downstream crashes. This caused http://crbug.com/506446.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241509
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 6 Jul 2015 20:46:41 +0000 (20:46 +0000)]
[X86][SSE4A] Shuffle lowering using SSE4A EXTRQ/INSERTQ instructions
This patch adds support for v8i16 and v16i8 shuffle lowering using the immediate versions of the SSE4A EXTRQ and INSERTQ instructions. Although rather limited (they can only act on the lower 64-bits of the source vectors, leave the upper 64-bits of the result vector undefined and don't have VEX encoded variants), the instructions are still useful for the zero extension of any lane (EXTRQ) or inserting a lane into another vector (INSERTQ). Testing demonstrated that it wasn't typically worth it to use these instructions for v2i64 or v4i32 vector shuffles although they are capable of it.
As well as adding specific pattern matching for the shuffles, the patch uses EXTRQ for zero extension cases where SSE41 isn't available and its more efficient than the SSE2 'unpack' default approach. It also adds shuffle decode support for the EXTRQ / INSERTQ cases when the instructions are handling full byte-sized extractions / insertions.
From this foundation, future patches will be able to make use of the instructions for situations that use their ability to extract/insert at the bit level.
Differential Revision: http://reviews.llvm.org/D10146
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241508
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 6 Jul 2015 20:30:47 +0000 (20:30 +0000)]
[X86][SSE] Use the general SMAX/SMIN/UMAX/UMIN opcodes and remove the X86 implementation
With the completion of D9746 there is now a common implementation of integer signed/unsigned min/max nodes, removing the need for the equivalent X86 specific implementations.
This patch removes the old X86ISD nodes, legalizes the relevant SSE2/SSE41/AVX2/AVX512 instructions for the ISD versions and converts the small amount of existing X86 code.
Differential Revision: http://reviews.llvm.org/D10947
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241506
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Mon, 6 Jul 2015 20:12:54 +0000 (20:12 +0000)]
[TwoAddressInstructionPass] Rename a variable to match the coding style.
Spot by Bruno.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241505
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 6 Jul 2015 19:24:40 +0000 (19:24 +0000)]
Swap operands instead of using !.
This avoids returning true for A == B.
Thanks to Benjamin Kramer for noticing it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241490
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 6 Jul 2015 19:21:04 +0000 (19:21 +0000)]
When sorting by address, undefined symbols go first.
This matches gnu nm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241488
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 6 Jul 2015 18:48:47 +0000 (18:48 +0000)]
Reduce code duplication. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241484
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 6 Jul 2015 18:48:02 +0000 (18:48 +0000)]
[llvm-extract] Drop comdats from declarations
The verifier rejects comdats on declarations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241483
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 6 Jul 2015 18:18:44 +0000 (18:18 +0000)]
Fix printing of common symbols.
Printing the symbol size matches the behavior or both gnu nm and freebsd nm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241480
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Mon, 6 Jul 2015 17:44:26 +0000 (17:44 +0000)]
llc: Add a 'run-pass' option.
This commit adds a 'run-pass' option to llc, which instructs the compiler to run
one specific code generation pass only.
Llc already has the 'start-after' and the 'stop-after' options, and this new
option complements the other two by making it easier to write tests that want
to invoke a single pass only.
Reviewers: Duncan P. N. Exon Smith
Differential Revision: http://reviews.llvm.org/D10776
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241476
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 6 Jul 2015 17:02:20 +0000 (17:02 +0000)]
AMDGPU: Run SIInsertWaits as pre-emit pass
Running this after the scheduler enables scheduling
waits later so other ALU instructions can run while
this would be waiting.
When combined with enabling the post-RA scheduler, this
gives about a ~20% improvement on sgemm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241473
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Mon, 6 Jul 2015 16:56:07 +0000 (16:56 +0000)]
Change the last few internal StringRef triples into Triple objects.
Summary:
This concludes the patch series to eliminate StringRef forms of GNU triples
from the internals of LLVM that began in r239036.
At this point, the StringRef-form of GNU Triples should only be used in the
public API (including IR serialization) and a couple objects that directly
interact with the API (most notably the Module class). The next step is to
replace these Triple objects with the TargetTuple object that will represent
our authoratative/unambiguous internal equivalent to GNU Triples.
Reviewers: rengolin
Subscribers: llvm-commits, jholewinski, ted, rengolin
Differential Revision: http://reviews.llvm.org/D10962
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241472
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Mon, 6 Jul 2015 16:36:02 +0000 (16:36 +0000)]
DIBuilder: Don't rauw null pointers with empty arrays in finalize().
This makes the IR a little easier to read.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241470
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Mon, 6 Jul 2015 16:33:18 +0000 (16:33 +0000)]
Where Triple has a suitable predicate, use it rather than the enum values. NFC.
Reviewers: mcrosier
Subscribers: llvm-commits, rengolin
Differential Revision: http://reviews.llvm.org/D10960
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241469
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 6 Jul 2015 16:27:35 +0000 (16:27 +0000)]
use range-based for loops; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241468
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Mon, 6 Jul 2015 16:22:42 +0000 (16:22 +0000)]
Resubmit "Add new EliminateAvailableExternally module pass" (r239480)
This change includes a fix for https://code.google.com/p/chromium/issues/detail?id=499508#c3,
which required updating the visibility for symbols with eliminated definitions.
--Original Commit Message--
Add new EliminateAvailableExternally module pass, which is performed in
O2 compiles just before GlobalDCE, unless we are preparing for LTO.
This pass eliminates available externally globals (turning them into
declarations), regardless of whether they are dead/unreferenced, since
we are guaranteed to have a copy available elsewhere at link time.
This enables additional opportunities for GlobalDCE.
If we are preparing for LTO (e.g. a -flto -c compile), the pass is not
included as we want to preserve available externally functions for possible
link time inlining. The FE indicates whether we are doing an -flto compile
via the new PrepareForLTO flag on the PassManagerBuilder.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241466
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Mon, 6 Jul 2015 16:22:12 +0000 (16:22 +0000)]
Use an early exit in DIBuilder::finalize() to improve readability.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241465
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Mon, 6 Jul 2015 16:22:07 +0000 (16:22 +0000)]
Use the correct DIArray types in DICompileUnit::replace*().
Thanks to Yaron Keren for noticing!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241464
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 6 Jul 2015 16:19:14 +0000 (16:19 +0000)]
use range-based for loops; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241463
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 6 Jul 2015 16:01:58 +0000 (16:01 +0000)]
AMDGPU/SI: Add debugging subtarget feature for DS offsets
We don't have a good way to detect most situations where
DS offsets are usable on SI, so add an option to force using
them even if unsafe for debugging performance problems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241462
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Mon, 6 Jul 2015 16:01:07 +0000 (16:01 +0000)]
[Sparc] Add more instruction aliases.
These are mostly from the chart in the SparcV8 spec, section "A.3
Synthetic Instructions".
Differential Revision: http://reviews.llvm.org/D9834
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241461
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Mon, 6 Jul 2015 16:01:04 +0000 (16:01 +0000)]
[Sparc] Add support for flush instruction.
Differential Revision: http://reviews.llvm.org/D9833
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241460
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 6 Jul 2015 15:53:43 +0000 (15:53 +0000)]
Simplify. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241458
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 6 Jul 2015 15:47:43 +0000 (15:47 +0000)]
Simplify. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241456
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 6 Jul 2015 15:36:50 +0000 (15:36 +0000)]
Inline function into single use. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241453
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 6 Jul 2015 14:55:37 +0000 (14:55 +0000)]
Remove getRelocationAddress.
Originally added in r139314.
Back then it didn't actually get the address, it got whatever value the
relocation used: address or offset.
The values in different object formats are:
* MachO: Always an offset.
* COFF: Always an address, but when talking about the virtual address of
sections it says: "for simplicity, compilers should set this to zero".
* ELF: An offset for .o files and and address for .so files. In the case of the
.so, the relocation in not linked to any section (sh_info is 0). We can't
really compute an offset.
Some API mappings would be:
* Use getAddress for everything. It would be quite cumbersome. To compute the
address elf has to follow sh_info, which can be corrupted and therefore the
method has to return an ErrorOr. The address of the section is also the same
for every relocation in a section, so we shouldn't have to check the error
and fetch the value for every relocation.
* Use a getValue and make it up to the user to know what it is getting.
* Use a getOffset and:
* Assert for dynamic ELF objects. That is a very peculiar case and it is
probably fair to ask any tool that wants to support it to use ELF.h. The
only tool we have that reads those (llvm-readobj) already does that. The
only other use case I can think of is a dynamic linker.
* Check that COFF .obj files have sections with zero virtual address spaces. If
it turns out that some assembler/compiler produces these, we can change
COFFObjectFile::getRelocationOffset to subtract it. Given COFF format,
this can be done without the need for ErrorOr.
The getRelocationAddress method was never implemented for COFF. It also
had exactly one use in a very peculiar case: a shortcut for adding the
section value to a pcrel reloc on MachO.
Given that, I don't expect that there is any use out there of the C API. If
that is not the case, let me know and I will add it back with the implementation
inlined and do a proper deprecation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241450
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 6 Jul 2015 14:46:34 +0000 (14:46 +0000)]
Fix a bug in the A57FPLoadBalancing register tracking/scavenger.
The code in AArch64A57FPLoadBalancing::scavengeRegister() to handle dead defs
was not correctly handling aliased registers. E.g. if the dead def was of D2,
then S2 was not being marked as unavailable, so it could potentially be used
across a live-range in which it would be clobbered.
Patch by Geoff Berry <gberry@codeaurora.org>!
Phabricator: http://reviews.llvm.org/D10900
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241449
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 6 Jul 2015 14:26:07 +0000 (14:26 +0000)]
Check that COFF .obj files have sections with zero virtual address spaces.
When talking about the virtual address of sections the coff spec says:
... for simplicity, compilers should set this to zero. Otherwise, it is an
arbitrary value that is subtracted from offsets during relocation.
We don't currently subtract it, so check that it is zero.
If some producer does create such files, we can change getRelocationOffset
instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241447
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 6 Jul 2015 14:15:02 +0000 (14:15 +0000)]
[X86][SSE] Added missing stack folding test for SQRTSD and SQRTSS instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241445
91177308-0d34-0410-b5e6-
96231b3b80d8
Asaf Badouh [Mon, 6 Jul 2015 14:03:40 +0000 (14:03 +0000)]
[X86][AVX512] Multiply Packed Unsigned Integers with Round and Scale
pmulhrsw
review:
http://reviews.llvm.org/D10948
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241443
91177308-0d34-0410-b5e6-
96231b3b80d8
Petar Jovanovic [Mon, 6 Jul 2015 12:50:55 +0000 (12:50 +0000)]
[Mips] Add support for MCJIT for MIPS32r6
Add support for resolving MIPS32r6 relocations in MCJIT.
Patch by Vladimir Radosavljevic.
Differential Revision: http://reviews.llvm.org/D10687
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241442
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 6 Jul 2015 12:18:44 +0000 (12:18 +0000)]
Fix handling of ELF::R_MIPS_32 on Mips64.
Thanks to Aboud, Amjad for reporting the regression and providing the testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241440
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 6 Jul 2015 06:23:01 +0000 (06:23 +0000)]
[TableGen] Change a couple methods to return an ArrayRef instead of a const std::vector reference. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241430
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 6 Jul 2015 02:45:01 +0000 (02:45 +0000)]
Make this test a bit more interesting.
Before every test was using a section with an address of zero.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241427
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 6 Jul 2015 00:48:17 +0000 (00:48 +0000)]
Untabify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241423
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 5 Jul 2015 23:19:16 +0000 (23:19 +0000)]
change CHECK to CHECK-LABEL for more precision
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241422
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 5 Jul 2015 22:37:51 +0000 (22:37 +0000)]
remove unnecessary test specifications
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241419
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 5 Jul 2015 22:30:12 +0000 (22:30 +0000)]
minimize test case and remove unnecessary opt passes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241418
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 5 Jul 2015 21:21:47 +0000 (21:21 +0000)]
remove unnecessary temp variable; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241415
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Sun, 5 Jul 2015 20:52:40 +0000 (20:52 +0000)]
Verifier: Forbid comdats on linker declarations.
Differential Revision: http://reviews.llvm.org/D10945
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241414
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Sun, 5 Jul 2015 20:52:35 +0000 (20:52 +0000)]
IR: Do not consider available_externally linkage to be linker-weak.
From the linker's perspective, an available_externally global is equivalent
to an external declaration (per isDeclarationForLinker()), so it is incorrect
to consider it to be a weak definition.
Also clean up some logic in the dead argument elimination pass and clarify
its comments to better explain how its behavior depends on linkage,
introduce GlobalValue::isStrongDefinitionForLinker() and start using
it throughout the optimizers and backend.
Differential Revision: http://reviews.llvm.org/D10941
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241413
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 5 Jul 2015 20:15:21 +0000 (20:15 +0000)]
use range-based for loops; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241412
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 5 Jul 2015 19:29:18 +0000 (19:29 +0000)]
[TargetLowering] StringRefize asm constraint getters.
There is some functional change here because it changes target code from
atoi(3) to StringRef::getAsInteger which has error checking. For valid
constraints there should be no difference.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241411
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 5 Jul 2015 19:06:32 +0000 (19:06 +0000)]
[X86][SSE3] Just use an explicit SSE3 target attribute - not a cpu type.
Merged arch/target into a specific triple - we had i686 and x86_64 targets overriding each other....
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241410
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 5 Jul 2015 19:03:51 +0000 (19:03 +0000)]
[X86][SSE2] Just use an explicit SSE2 target attribute - not a cpu type.
corei7 is capable of a lot more than just SSE2....
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241409
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Sun, 5 Jul 2015 18:49:17 +0000 (18:49 +0000)]
[RuntimeDyld] Add comment documenting the behavior change in r241383.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241408
91177308-0d34-0410-b5e6-
96231b3b80d8
Asaf Badouh [Sun, 5 Jul 2015 12:23:20 +0000 (12:23 +0000)]
[x86][AVX512] add Multiply High Op
include encoding and intrinsics tests.
review
http://reviews.llvm.org/D10896
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241406
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Sun, 5 Jul 2015 10:25:41 +0000 (10:25 +0000)]
[X86] Fix incorrect/inefficient pushw encodings for x86-64 targets
Correctly support assembling "pushw $imm8" on x86-64 targets.
Also some cleanup of the PUSH instructions (PUSH64i16 and PUSHi16 actually
represent the same instruction)
This fixes PR23996
Patch by: david.l.kreitzer@intel.com
Differential Revision: http://reviews.llvm.org/D10878
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241404
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sun, 5 Jul 2015 08:56:38 +0000 (08:56 +0000)]
[CMake] add_llvm_symbol_exports: Use Python oneliner instead of "cmd.exe /c type" to generate *.def.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241402
91177308-0d34-0410-b5e6-
96231b3b80d8
Nemanja Ivanovic [Sun, 5 Jul 2015 06:03:51 +0000 (06:03 +0000)]
Add missing builtins to the PPC back end for ABI compliance (vol. 2)
This patch corresponds to review:
http://reviews.llvm.org/D10874
Back end portion of the second round of additions to altivec.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241398
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sat, 4 Jul 2015 19:38:52 +0000 (19:38 +0000)]
use range-based for loops; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241395
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 4 Jul 2015 15:33:34 +0000 (15:33 +0000)]
[X86][SSE] Improved i8/i16 to f64 uint2fp vector conversions
Followup to D10433 and D10589 that fixes i8/i16 uint2fp vector conversions by zero extending to i32 and using the sint2fp path (unless the target does actually support uint2fp).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241394
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sat, 4 Jul 2015 15:00:28 +0000 (15:00 +0000)]
use valid bits to avoid unnecessary machine trace metric recomputations
Although this does cut the number of traces recomputed by ~10% for the
test case mentioned in http://reviews.llvm.org/D10460, it doesn't
make a dent in the overall performance. That example needs to be more
selective when invalidating traces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241393
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Sat, 4 Jul 2015 05:48:52 +0000 (05:48 +0000)]
Fix spelling, NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241392
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Sat, 4 Jul 2015 03:42:35 +0000 (03:42 +0000)]
LTO: expose LTO_SYMBOL_ALIAS, which indicates that the symbol is an alias.
This is needed for COFF linkers to distinguish between weak external aliases
and regular symbols with LLVM weak linkage, which are represented as strong
symbols in COFF.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241389
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Sat, 4 Jul 2015 03:25:51 +0000 (03:25 +0000)]
Object/COFF: Do not rely on VirtualSize being 0 in object files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241387
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Sat, 4 Jul 2015 01:35:26 +0000 (01:35 +0000)]
[RuntimeDyld] Skip relocations for external symbols with 64-bit address ~0ULL.
Requested by Eugene Rozenfeld of the LLILC team, this feature allows JIT
clients to skip relocations for selected external symbols by returning ~0ULL
from their symbol resolver. If this value is returned for a given symbol,
RuntimeDyld will skip all relocations for that symbol. The client will be
responsible for applying the skipped relocations manually before the code
is executed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241383
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 4 Jul 2015 00:01:07 +0000 (00:01 +0000)]
[X86] Add proper 64-bit mode checks to jrcxz and jcxz.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241381
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 3 Jul 2015 23:33:38 +0000 (23:33 +0000)]
AMDGPU: Fix indentation of switch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241380
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Fri, 3 Jul 2015 23:00:54 +0000 (23:00 +0000)]
[ELFYAML] Fix handling SHT_NOBITS sections by obj2yaml/yaml2obj tools
SHT_NOBITS sections do not have content in an object file. Now the yaml2obj
tool does not accept `Content` field for such sections, and the obj2yaml
tool does not attempt to read the section content from a file.
Restore r241350 and r241352.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241377
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 3 Jul 2015 22:02:28 +0000 (22:02 +0000)]
Use a continue to reduce indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241375
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 3 Jul 2015 21:57:41 +0000 (21:57 +0000)]
Use a continue to reduce indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241374
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 3 Jul 2015 21:54:41 +0000 (21:54 +0000)]
Context is allocated just a few lines above. Don't check if it is null.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241373
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 3 Jul 2015 21:47:00 +0000 (21:47 +0000)]
Fix build with -DLLVM_USE_INTEL_JITEVENTS=ON -DLLVM_USE_OPROFILE=ON.
Is anyone using those?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241372
91177308-0d34-0410-b5e6-
96231b3b80d8
Filipe Cabecinhas [Fri, 3 Jul 2015 20:12:01 +0000 (20:12 +0000)]
Remove always-true comparison, NFC.
Summary:
Looking at r241279, I noticed that UpgradedIntrinsics only gets written
to in the following code:
if (UpgradeIntrinsicFunction(&F, NewFn))
UpgradedIntrinsics[&F] = NewFn;
Looking through UpgradeIntrinsicFunction, we always return false OR
NewFn will be set to a different function from our source.
This patch pulls the F != NewFn into UpgradeIntrinsicFunction as an
assert, and removes the check from callers of UpgradeIntrinsicFunction.
Reviewers: rafael, chandlerc
Subscribers: llvm-commits-list
Differential Revision: http://reviews.llvm.org/D10915
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241369
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 3 Jul 2015 20:07:57 +0000 (20:07 +0000)]
[X86] Added 32-bit builds to fp<->int tests.
Ensure that i686 x87/SSE/SSE2 targets all build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241368
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 3 Jul 2015 19:10:09 +0000 (19:10 +0000)]
Delete dead code. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241367
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 3 Jul 2015 18:19:00 +0000 (18:19 +0000)]
Return ErrorOr from getSymbolAddress.
It can fail trying to get the section on ELF and COFF. This makes sure the
error is handled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241366
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 3 Jul 2015 18:02:36 +0000 (18:02 +0000)]
Replace a few more MachO only uses of getSymbolAddress.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241365
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 3 Jul 2015 17:44:18 +0000 (17:44 +0000)]
Use getValue instead of getAddress in a few MachO only cases.
In MachO the value of the symbol is always the address, so we can use the
simpler function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241364
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 3 Jul 2015 14:54:02 +0000 (14:54 +0000)]
This reverts commit r241350 and r241352.
r241350 broke lld tests.
r241352 depends on r241350.
Original messages:
"[ELFYAML] Fix handling SHT_NOBITS sections by obj2yaml/yaml2obj tools"
"[ELFYAML] Make the Size field for .bss section optional"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241354
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 3 Jul 2015 14:46:17 +0000 (14:46 +0000)]
Delete dead code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241353
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Fri, 3 Jul 2015 14:19:06 +0000 (14:19 +0000)]
[ELFYAML] Make the Size field for .bss section optional
It's a common case to have a zero-size .bss section in an object file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241352
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Fri, 3 Jul 2015 14:07:06 +0000 (14:07 +0000)]
[ELFYAML] Fix handling SHT_NOBITS sections by obj2yaml/yaml2obj tools
SHT_NOBITS sections do not have content in an object file. Now yaml2obj
tool does not accept `Content` field for such sections, and obj2yaml
tool does not attempt to read the section content from a file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241350
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 3 Jul 2015 12:53:50 +0000 (12:53 +0000)]
Avoid warning about unused variable when building without assertions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241348
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 3 Jul 2015 12:20:34 +0000 (12:20 +0000)]
Avoid a use after free.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241345
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 3 Jul 2015 12:00:05 +0000 (12:00 +0000)]
Continue to remove the notion that ELF has dynamic and static symbols.
The ELFObjectFile now just reasons about a section/index pair, removing
one of the users that force ELF.h to maintain the difference.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241344
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Fri, 3 Jul 2015 08:21:38 +0000 (08:21 +0000)]
llvm/test/CodeGen/ARM/fnattr-trap.ll: Add -mtriple, to appease targeting *-win32.
LLVM ERROR: CPU: 'generic' does not support ARM mode execution!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241329
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 3 Jul 2015 08:02:12 +0000 (08:02 +0000)]
whitespace tidyup. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241326
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 3 Jul 2015 08:01:36 +0000 (08:01 +0000)]
[X86][SSE] Sign extension for target vector sizes less than 128 bits (pt2)
Add support for v2i8/v2i16 to v2f64 by using a sign extension to v2i32 before conversion to v2f64.
Differential Revision: http://reviews.llvm.org/D10589
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241325
91177308-0d34-0410-b5e6-
96231b3b80d8