OSDN Git Service
Filipe Cabecinhas [Sun, 22 Jun 2014 17:21:37 +0000 (17:21 +0000)]
Fix PR20087 by using the source index when changing the vector load
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211472
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sun, 22 Jun 2014 12:35:39 +0000 (12:35 +0000)]
Introduce a Lit feature "debug_frame" and apply it to llvm/test/MC/ELF/cfi-version.ll.
.debug_frame is not emitted for targeting Windows x64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211466
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 22 Jun 2014 12:22:04 +0000 (12:22 +0000)]
Add a description to the test from r211433 explaining why it's written that way.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211465
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Sun, 22 Jun 2014 03:38:59 +0000 (03:38 +0000)]
LoopVectorizer: Fix a dominance issue
The induction variables start value needs to be defined before we branch
(overflow check) to the scalar preheader where we used it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211460
91177308-0d34-0410-b5e6-
96231b3b80d8
Stepan Dyatkovskiy [Sun, 22 Jun 2014 01:53:30 +0000 (01:53 +0000)]
MergeFunctions Pass, removed DenseMap helpers.
Patch removes rest part of code related to old implementation.
This patch belongs to patch series that improves MergeFunctions
performance time from O(N*N) to O(N*log(N)).
This one was the final patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211457
91177308-0d34-0410-b5e6-
96231b3b80d8
Stepan Dyatkovskiy [Sun, 22 Jun 2014 00:57:09 +0000 (00:57 +0000)]
MergeFunctions Pass, updated header comments.
Added short description for new comparison algorithm, that introduces
total ordering among functions set.
This patch belongs to patch series that improves MergeFunctions
performance time from O(N*N) to O(N*log(N)).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211456
91177308-0d34-0410-b5e6-
96231b3b80d8
Weiming Zhao [Sun, 22 Jun 2014 00:33:44 +0000 (00:33 +0000)]
Report error for non-zero data in .bss
User may initialize a var with non-zero value and specify .bss section.
E.g. : int a __attribute__((section(".bss"))) = 2;
This patch converts an assertion to error report for better user
experience.
Differential Revision: http://reviews.llvm.org/D4199
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211455
91177308-0d34-0410-b5e6-
96231b3b80d8
Stepan Dyatkovskiy [Sat, 21 Jun 2014 20:54:36 +0000 (20:54 +0000)]
MergeFunctions Pass, FnSet has been replaced with FnTree.
Patch activates new implementation.
So from now, merging process should take time O(N*log(N)).
Where N size of module (we are free to measure it in
functions or in instructions). Internally FnTree represents
binary tree. So every lookup operation takes O(log(N)) time.
It is still not the last patch in series, we also have to
clean-up pass from old code, and update pass comments.
This patch belongs to patch series that improves MergeFunctions
performance time from O(N*N) to O(N*log(N)).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211445
91177308-0d34-0410-b5e6-
96231b3b80d8
Stepan Dyatkovskiy [Sat, 21 Jun 2014 20:13:24 +0000 (20:13 +0000)]
MergeFunctions Pass, removed unused methods from old implementation.
Patch removed next old FunctionComparator methods:
* enumerate
* isEquivalentOperation
* isEquivalentGEP
* isEquivalentType
This patch belongs to patch series that improves MergeFunctions
performance time from O(N*N) to O(N*log(N)).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211444
91177308-0d34-0410-b5e6-
96231b3b80d8
Stepan Dyatkovskiy [Sat, 21 Jun 2014 19:07:51 +0000 (19:07 +0000)]
MergeFunctions, doSanityCheck: fixed body comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211443
91177308-0d34-0410-b5e6-
96231b3b80d8
Stepan Dyatkovskiy [Sat, 21 Jun 2014 18:58:11 +0000 (18:58 +0000)]
MergeFunctions Pass, introduced sanity check, that checks order relation,
introduced among functions set.
This patch belongs to patch series that improves MergeFunctions
performance time from O(N*N) to O(N*log(N)).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211442
91177308-0d34-0410-b5e6-
96231b3b80d8
Stepan Dyatkovskiy [Sat, 21 Jun 2014 17:55:51 +0000 (17:55 +0000)]
MergeFunctions Pass, introduced total ordering among top-level comparison
methods.
Patch changes return type of FunctionComparator::compare() and
FunctionComparator::compare(const BasicBlock*, const BasicBlock*)
methods from bool (equal or not) to {-1, 0, 1} (less, equal, great).
This patch belongs to patch series that improves MergeFunctions
performance time from O(N*N) to O(N*log(N)).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211437
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 21 Jun 2014 13:46:25 +0000 (13:46 +0000)]
LoopUnrollRuntime: Check for overflow in the trip count calculation.
Fixes PR19823.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211436
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 21 Jun 2014 12:56:42 +0000 (12:56 +0000)]
Legalizer: Add support for splitting insert_subvectors.
We handle this by spilling the whole thing to the stack and doing the
insertion as a store.
PR19492. This happens in real code because the vectorizer creates v2i128 when AVX is enabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211435
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 21 Jun 2014 11:47:18 +0000 (11:47 +0000)]
SCEVExpander: Fold constant PHIs harder. The logic below only understands proper IVs.
PR20093.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211433
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Trieu [Sat, 21 Jun 2014 02:43:02 +0000 (02:43 +0000)]
Add back functionality removed in r210497.
Instead of asserting, output a message stating that a null pointer was found.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211430
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Sat, 21 Jun 2014 01:31:15 +0000 (01:31 +0000)]
[X86] Add ISel patterns to select SSE3/AVX ADDSUB instructions.
This patch adds ISel patterns to select SSE3/AVX ADDSUB instructions
from a sequence of "vadd + vsub + blend".
Example:
///
typedef float float4 __attribute__((ext_vector_type(4)));
float4 foo(float4 A, float4 B) {
float4 X = A - B;
float4 Y = A + B;
return (float4){X[0], Y[1], X[2], Y[3]};
}
///
Before this patch, (with flag -mcpu=corei7) llc produced the following
assembly sequence:
movaps %xmm0, %xmm2
addps %xmm1, %xmm2
subps %xmm1, %xmm0
blendps $10, %xmm2, %xmm0
With this patch, we now get a single
addsubps %xmm1, %xmm0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211427
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Sat, 21 Jun 2014 00:24:51 +0000 (00:24 +0000)]
Fix the MinGW builder. Apparently std::call_once and
std::recursive_mutex are not available on MinGW and breaks the
builder. Revert to using a function local static and sys::Mutex
just to get the tree green until we figure out a better solution.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211424
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 20 Jun 2014 23:54:32 +0000 (23:54 +0000)]
Always use a temp symbol for CIE.
Fixes pr19185.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211423
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 20 Jun 2014 22:40:55 +0000 (22:40 +0000)]
Use compact unwind for the iOS simulator.
Another step in fixing pr19185.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211416
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 20 Jun 2014 22:37:01 +0000 (22:37 +0000)]
Use a helper function and clang-format.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211415
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 20 Jun 2014 22:36:09 +0000 (22:36 +0000)]
Support: ScaledNumber: Fix inconsistent test names
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211414
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 20 Jun 2014 22:33:40 +0000 (22:33 +0000)]
Support: Write ScaledNumbers::getLg{,Floor,Ceiling}()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211413
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 20 Jun 2014 22:30:31 +0000 (22:30 +0000)]
Delete dead code.
The compact unwind info is only used by code that knows it is supported.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211412
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 20 Jun 2014 21:47:47 +0000 (21:47 +0000)]
Support: Write ScaledNumber::getQuotient() and getProduct()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211409
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 20 Jun 2014 21:44:36 +0000 (21:44 +0000)]
Support: Cleanup ScaledNumber::getAdjusted() doc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211407
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 20 Jun 2014 21:43:20 +0000 (21:43 +0000)]
Support: Mark end of namespaces
This convinces clang-format to leave a newline.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211406
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Fri, 20 Jun 2014 21:29:27 +0000 (21:29 +0000)]
Fix some double printing of filenames for archives in llvm-nm when
the tool is given multiple files. Also fix the same issue with Mach-O
universal files. And fix the newline spacing to separate the output
in these cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211405
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 20 Jun 2014 21:15:27 +0000 (21:15 +0000)]
Don't produce eh_frame relocations when targeting the IOS simulator.
First step for fixing pr19185.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211404
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 20 Jun 2014 21:07:14 +0000 (21:07 +0000)]
Revert "Replace Execution Engine's mutex with std::recursive_mutex."
This reverts commit
1f502bd9d7d2c1f98ad93a09ffe435e11a95aedd, due to
GCC / MinGW's lack of support for C++11 threading.
It's possible this will go back in after we come up with a
reasonable solution.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211401
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 20 Jun 2014 20:35:47 +0000 (20:35 +0000)]
Generate native unwind info on Win64
This patch enables LLVM to emit Win64-native unwind info rather than
DWARF CFI. It handles all corner cases (I hope), including stack
realignment.
Because the unwind info is not flexible enough to describe stack frames
with a gap of unknown size in the middle, such as the one caused by
stack realignment, I modified register spilling code to place all spills
into the fixed frame slots, so that they can be accessed relative to the
frame pointer.
Patch by Vadim Chugunov!
Reviewed By: rnk
Differential Revision: http://reviews.llvm.org/D4081
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211399
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 20 Jun 2014 19:54:13 +0000 (19:54 +0000)]
Fix some -Wsign-compare fallout from changing container count member functions to return unsigned instead of bool.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211393
91177308-0d34-0410-b5e6-
96231b3b80d8
Stepan Dyatkovskiy [Fri, 20 Jun 2014 19:11:56 +0000 (19:11 +0000)]
Commited patch from Björn Steinbrink:
Summary:
Different range metadata can lead to different optimizations in later
passes, possibly breaking the semantics of the merged function. So range
metadata must be taken into consideration when comparing Load
instructions.
Thanks!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211391
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Fri, 20 Jun 2014 19:00:41 +0000 (19:00 +0000)]
[Make] Fix dependencies for td.expanded
Depend on all the .td files not just the main one.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211390
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 20 Jun 2014 18:17:56 +0000 (18:17 +0000)]
[RuntimeDyld] Fix ppc64 stub relocations on little-endian
When RuntimeDyldELF creates stub functions, it needs to install
relocations that will resolve to the final address of the target
routine. Since those are 16-bit relocs, they need to be applied to the
least-significant halfword of the instruction. On big-endian ppc64,
this means that addresses have to be adjusted by 2, which is what the
code currently does.
However, on a little-endian system, the address must *not* be adjusted;
the least-significant halfword is the first one. This patch updates the
RuntimeDyldELF code to take the target byte order into account.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211384
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Fri, 20 Jun 2014 18:07:34 +0000 (18:07 +0000)]
Fix a warning about the use of const being ignored with a cast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211383
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 20 Jun 2014 17:51:47 +0000 (17:51 +0000)]
[RuntimeDyld] Support more PPC64 relocations
This adds support for several missing PPC64 relocations in the
straight-forward manner to RuntimeDyldELF.cpp.
Note that this actually fixes a failure of a large-model test case on
PowerPC, allowing the XFAIL to be removed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211382
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Fri, 20 Jun 2014 17:06:11 +0000 (17:06 +0000)]
R600/SI: Add patterns for ctpop inside a branch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211378
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Fri, 20 Jun 2014 17:06:09 +0000 (17:06 +0000)]
R600/SI: Add a pattern for f32 ftrunc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211377
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Fri, 20 Jun 2014 17:06:07 +0000 (17:06 +0000)]
R600: Expand vector flog2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211376
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Fri, 20 Jun 2014 17:06:05 +0000 (17:06 +0000)]
R600: Expand vector fexp2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211375
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Fri, 20 Jun 2014 17:06:02 +0000 (17:06 +0000)]
R600/SI: SI Control Flow Annotation bug fixed
Mixing of AddAvailableValue and GetValueAtEndOfBlock methods of SSAUpdater
leaded to the endless loop generation when the nested loops annotated.
This fixes a bug in the OCL_ML/KNN OpenCV test. The test case is too
complex for FileCheck and would be very fragile.
Patch by: Elena Denisova
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211374
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Fri, 20 Jun 2014 17:05:57 +0000 (17:05 +0000)]
R600/SI: Add a VALU pattern for i64 xor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211373
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 20 Jun 2014 16:34:05 +0000 (16:34 +0000)]
[PowerPC] Fix small argument stack slot offset for LE
When small arguments (structures < 8 bytes or "float") are passed in a
stack slot in the ppc64 SVR4 ABI, they must reside in the least
significant part of that slot. On BE, this means that an offset needs
to be added to the stack address of the parameter, but on LE, the least
significant part of the slot has the same address as the slot itself.
This changes the PowerPC back-end ABI code to only add the small
argument stack slot offset for BE. It also adds test cases to verify
the correct behavior on both BE and LE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211368
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 20 Jun 2014 15:30:38 +0000 (15:30 +0000)]
Move test so that it is skipped if the ARM target is not enabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211366
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 20 Jun 2014 13:11:28 +0000 (13:11 +0000)]
Allow a target to create a null streamer.
Targets can assume that a target streamer is present, so they have to be able
to construct a null streamer in order to set the target streamer in it to.
Fixes a crash when using the null streamer with arm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211358
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Fri, 20 Jun 2014 12:57:44 +0000 (12:57 +0000)]
Code in LoopStrengthReduce.cpp depends on SmallBitVector::size() being size_t
and not unsigned.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211356
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Fri, 20 Jun 2014 12:20:56 +0000 (12:20 +0000)]
Reverting size_type for the containers from size_type to unsigned.
Various places in LLVM assume that container size and count are unsigned
and do not use the container size_type. Therefore they break compilation
(or possibly executation) for LP64 systems where size_t is 64 bit while
unsigned is still 32 bit.
If we'll ever that many items in the container size_type could be made
size_t for a specific containers after reviweing its other uses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211353
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Fri, 20 Jun 2014 10:52:57 +0000 (10:52 +0000)]
Attempting to fix the 64 bit bots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211351
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Fri, 20 Jun 2014 10:26:56 +0000 (10:26 +0000)]
The count() function for STL datatypes returns unsigned, even where it's
only 1/0 result like std::set. Some of the LLVM ADT already return unsigned
count(), while others still return bool count().
In continuation to r197879, this patch modifies DenseMap, DenseSet,
ScopedHashTable, ValueMap:: count() to return size_type instead of bool,
1 instead of true and 0 instead of false.
size_type is typedef-ed locally within each class to size_t.
http://reviews.llvm.org/D4018
Reviewed by dblaikie.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211350
91177308-0d34-0410-b5e6-
96231b3b80d8
Oliver Stannard [Fri, 20 Jun 2014 10:08:11 +0000 (10:08 +0000)]
Emit the ARM build attributes ABI_PCS_wchar_t and ABI_enum_size.
Emit the ARM build attributes ABI_PCS_wchar_t and ABI_enum_size based on
module flags metadata.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211349
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Fri, 20 Jun 2014 09:28:09 +0000 (09:28 +0000)]
ps][mips64r6] Added LSA/DLSA instructions
Differential Revision: http://reviews.llvm.org/D3897
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211346
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 20 Jun 2014 06:50:05 +0000 (06:50 +0000)]
R600: Trivial subtarget feature cleanups.
Remove an unused AMDIL leftover, correct extra periods
appearing in the help menu.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211341
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Fri, 20 Jun 2014 04:36:29 +0000 (04:36 +0000)]
ArgList: use MakeArgList overloads in subclasses and clean up some calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211340
91177308-0d34-0410-b5e6-
96231b3b80d8
Karthik Bhat [Fri, 20 Jun 2014 04:32:48 +0000 (04:32 +0000)]
Add Support to Recognize and Vectorize NON SIMD instructions in SLPVectorizer.
This patch adds support to recognize patterns such as fadd,fsub,fadd,fsub.../add,sub,add,sub... and
vectorizes them as vector shuffles if they are profitable.
These patterns of vector shuffle can later be converted to instructions such as addsubpd etc on X86.
Thanks to Arnold and Hal for the reviews. http://reviews.llvm.org/D4015
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211339
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 20 Jun 2014 02:31:07 +0000 (02:31 +0000)]
Support: Clean up getRounded() tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211337
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 20 Jun 2014 02:31:03 +0000 (02:31 +0000)]
Support: Write ScaledNumbers::getAdjusted()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211336
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 20 Jun 2014 01:37:35 +0000 (01:37 +0000)]
Small clanups:
Use static instead of anonymous namespace.
Delete write only variables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211335
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Fri, 20 Jun 2014 01:36:00 +0000 (01:36 +0000)]
Fix .cpp files claiming to be header files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211334
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 20 Jun 2014 01:30:43 +0000 (01:30 +0000)]
Support: Write ScaledNumbers::getRounded()
Start extracting helper functions out of -block-freq's `UnsignedFloat`
into `Support/ScaledNumber.h` with the eventual goal of moving and
renaming the class to `ScaledNumber`.
The bike shed about names is still being painted, but I'm going with
this for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211333
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Fri, 20 Jun 2014 01:05:28 +0000 (01:05 +0000)]
[x86] Make the x86 PACKSSWB, PACKSSDW, PACKUSWB, and PACKUSDW
instructions available as synthetic SDNodes PACKSS and PACKUS that will
select to the correct instruction variants based on the return type.
This allows us to use these rather important instructions when lowering
vector shuffles.
Also moves the relevant instruction definitions to be split out from
the fully generic multiclasses to allow them to match these new SDNodes
in the same way that the UNPCK instructions do.
No functionality should actually be changed here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211332
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Fri, 20 Jun 2014 00:38:12 +0000 (00:38 +0000)]
Don't build switch lookup tables for dllimport or TLS variables
We would previously put dllimport variables in switch lookup tables, which
doesn't work because the address cannot be used in a constant initializer.
This is basically the same problem that we have in PR19955.
Putting TLS variables in switch tables also desn't work, because the
address of such a variable is not constant.
Differential Revision: http://reviews.llvm.org/D4220
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211331
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 20 Jun 2014 00:23:03 +0000 (00:23 +0000)]
Revert "Add StringMap::insert(pair) consistent with the standard associative container concept."
This reverts commit r211309.
It looks like it broke some bots:
http://lab.llvm.org:8011/builders/clang-x86_64-ubuntu-gdb-75/builds/15563/steps/compile/logs/stdio
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211328
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Fri, 20 Jun 2014 00:04:16 +0000 (00:04 +0000)]
Added the -m option as an alias for -format=darwin to llvm-nm and llvm-size
which is what the darwin tools use for the Mach-O format output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211326
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 19 Jun 2014 23:06:53 +0000 (23:06 +0000)]
The gold plugin doesn't need disassemblers.
Back in r128440 tools/LTO started exporting the disassembler interface. It
was never clear why, but whatever the reason I am pretty sure it doesn't hold
for tools/gold.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211325
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 19 Jun 2014 22:54:47 +0000 (22:54 +0000)]
Set gold plugin options in a sane order.
This fixes the processing of --plugin-opt=-jump-table-type=arity.
Nice properties:
* We call InitTargetOptionsFromCodeGenFlags once.
* We call parseCodeGenDebugOptions once.
* It works :-)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211322
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Thu, 19 Jun 2014 22:49:21 +0000 (22:49 +0000)]
Fix the output of llvm-nm for Mach-O files to use the characters ‘d’ and ‘b’ for
data and bss symbols instead of the generic ’s’ for a symbol in a section.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211321
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 19 Jun 2014 22:33:23 +0000 (22:33 +0000)]
Simplify. No functionality change.
Thanks to Alp Toker for noticing it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211320
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 19 Jun 2014 22:27:46 +0000 (22:27 +0000)]
Use the assignment operator.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211319
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 19 Jun 2014 22:20:07 +0000 (22:20 +0000)]
Reduce indentation. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211318
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 19 Jun 2014 22:14:12 +0000 (22:14 +0000)]
Set missing options in LTOCodeGenerator::setTargetOptions.
Patch by Tom Roeder, I just added the test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211317
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Thu, 19 Jun 2014 22:03:18 +0000 (22:03 +0000)]
Change the output of llvm-nm and llvm-size for Mach-O universal files (aka
fat files) to print “ (for architecture XYZ)” for fat files with more than
one architecture to be like what the darwin tools do for fat files.
Also clean up the Mach-O printing of archive membernames in llvm-nm to use
the darwin form of "libx.a(foo.o)".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211316
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 19 Jun 2014 21:14:13 +0000 (21:14 +0000)]
Use lib/LTO directly in the gold plugin.
The tools/lto API is not the best choice for implementing a gold plugin. Among
other issues:
* It is an stable ABI. Old errors stay and we have to be really careful
before adding new features.
* It has to support two fairly different linkers: gold and ld64.
* We end up with a plugin that depends on a shared lib, something quiet
unusual in LLVM land.
* It hides LLVM. For some features in the gold plugin it would be really
nice to be able to just get a Module or a GlobalValue.
This change is intended to be a very direct translation from the C API. It
will just enable other fixes and cleanups.
Tested with a LTO bootstrap on linux.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211315
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 19 Jun 2014 21:03:04 +0000 (21:03 +0000)]
Add a new subtarget hook for whether or not we'd like to enable
the atomic load linked expander pass to run for a particular
subtarget. This requires a check of the subtarget and so save
the TargetMachine rather than only TargetLoweringInfo and update
all callers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211314
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Thu, 19 Jun 2014 20:20:03 +0000 (20:20 +0000)]
Include Threading.h instead of forward declaring a function.
Previously this led to a circular header dependency, but a recent
change has since removed this dependency, so the correct fix is
to simply include the header rather than forward declare.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211311
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 19 Jun 2014 20:08:56 +0000 (20:08 +0000)]
Add StringMap::insert(pair) consistent with the standard associative container concept.
Patch by Agustín Bergé.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211309
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 19 Jun 2014 20:00:13 +0000 (20:00 +0000)]
Since we're using DW_AT_string rather than DW_AT_strp for debug_info
for assembly files we can't depend on the offset within the section
after a string since it could be different between producers etc.
Relax these tests accordingly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211308
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 19 Jun 2014 20:00:09 +0000 (20:00 +0000)]
Fix up a few formatting issues.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211307
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 19 Jun 2014 19:45:25 +0000 (19:45 +0000)]
Remove an incorrect fixme.
dynamic-no-pic is just another output type. If gnu ld gets support for MachO,
it should also add something like LDPO_DYN_NO_PIC to the plugin interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211305
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Thu, 19 Jun 2014 19:41:26 +0000 (19:41 +0000)]
Fix typos
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211304
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 19 Jun 2014 19:35:39 +0000 (19:35 +0000)]
Support: Add llvm::sys::fs::copy_file
A function to copy one file's contents to another.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211302
91177308-0d34-0410-b5e6-
96231b3b80d8
David Greene [Thu, 19 Jun 2014 19:31:11 +0000 (19:31 +0000)]
Remove bogus configure check
Configure creates makefiles, so it doesn't make sense to check for
them to see if we can configure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211301
91177308-0d34-0410-b5e6-
96231b3b80d8
David Greene [Thu, 19 Jun 2014 19:31:09 +0000 (19:31 +0000)]
Add option to keep flavor out of the install directory
Sometimes we want to install things in "standard" locations and the
flavor directories interfere with that. Add an option to keep them
out of the install path.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211300
91177308-0d34-0410-b5e6-
96231b3b80d8
David Greene [Thu, 19 Jun 2014 19:31:05 +0000 (19:31 +0000)]
Turn of -Werror by default
Don't build with -Werror unless asked to.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211299
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 19 Jun 2014 19:26:42 +0000 (19:26 +0000)]
Fix this test a little harder - use llc_dwarf to make sure we don't
try to execute it on windows.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211298
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Thu, 19 Jun 2014 19:25:49 +0000 (19:25 +0000)]
Remove unused includes following r211294
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211297
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 19 Jun 2014 19:11:22 +0000 (19:11 +0000)]
Use the c++ APIs.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211294
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 19 Jun 2014 18:36:15 +0000 (18:36 +0000)]
Relax this test a bit, we don't need the full contents of the
frame section to match, just the version for this test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211293
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 19 Jun 2014 18:26:28 +0000 (18:26 +0000)]
Remove use of removed function, llvm_stop_multithreading
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211291
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 19 Jun 2014 18:26:26 +0000 (18:26 +0000)]
Remove circular header reference in Threading.h/Mutex.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211290
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Thu, 19 Jun 2014 18:25:06 +0000 (18:25 +0000)]
Fix build on non-Windows platforms.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211288
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Thu, 19 Jun 2014 18:18:23 +0000 (18:18 +0000)]
Remove support for LLVM runtime multi-threading.
After a number of previous small iterations, the functions
llvm_start_multithreaded() and llvm_stop_multithreaded() have
been reduced essentially to no-ops. This change removes them
entirely.
Reviewed by: rnk, dblaikie
Differential Revision: http://reviews.llvm.org/D4216
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211287
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 19 Jun 2014 17:59:14 +0000 (17:59 +0000)]
DebugInfo: Fission: Ensure the address pool entries for location lists are emitted.
The address pool was being emitted before location lists. The latter
could add more entries to the pool which would be lost/never emitted.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211284
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Thu, 19 Jun 2014 17:15:36 +0000 (17:15 +0000)]
MCNullStreamer: assign file IDs to resolve crashes and errors
Use the MCStreamer base implementations for file ID tracking instead of
overriding them as no-ops.
Avoids assertions when streaming Dwarf debug info, and fixes ASM parsing of loc
and file directives.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211282
91177308-0d34-0410-b5e6-
96231b3b80d8
Jingyue Wu [Thu, 19 Jun 2014 16:50:16 +0000 (16:50 +0000)]
[ValueTracking] Extend range metadata to call/invoke
Summary:
With this patch, range metadata can be added to call/invoke including
IntrinsicInst. Previously, it could only be added to load.
Rename computeKnownBitsLoad to computeKnownBitsFromRangeMetadata because
range metadata is not only used by load.
Update the language reference to reflect this change.
Test Plan:
Add several tests in range-2.ll to confirm the verifier is happy with
having range metadata on call/invoke.
Add two tests in AddOverFlow.ll to confirm annotating range metadata to
call/invoke can benefit InstCombine.
Reviewers: meheff, nlewycky, reames, hfinkel, eliben
Reviewed By: eliben
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D4187
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211281
91177308-0d34-0410-b5e6-
96231b3b80d8
Oliver Stannard [Thu, 19 Jun 2014 16:35:19 +0000 (16:35 +0000)]
Tests for r211273
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211279
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Thu, 19 Jun 2014 16:17:42 +0000 (16:17 +0000)]
Kill the LLVM global lock.
This patch removes the LLVM global lock, and updates all existing
users of the global lock to use their own mutex. None of the
existing users of the global lock were protecting code that was
mutually exclusive with any of the other users of the global
lock, so its purpose was not being met.
Reviewed by: rnk
Differential Revision: http://reviews.llvm.org/D4142
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211277
91177308-0d34-0410-b5e6-
96231b3b80d8
Oliver Stannard [Thu, 19 Jun 2014 15:52:37 +0000 (15:52 +0000)]
Emit DWARF info for all code section in an assembly file
Currently, when using llvm as an assembler, DWARF debug information is only
generated for the .text section. This patch modifies this so that DWARF info
is emitted for all executable sections.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211273
91177308-0d34-0410-b5e6-
96231b3b80d8
Oliver Stannard [Thu, 19 Jun 2014 15:39:33 +0000 (15:39 +0000)]
Emit DWARF3 call frame information when DWARF3+ debug info is requested
Currently, llvm always emits a DWARF CIE with a version of 1, even when emitting
DWARF 3 or 4, which both support CIE version 3. This patch makes it emit the
newer CIE version when we are emitting DWARF 3 or 4. This will not reduce
compatibility, as we already emit other DWARF3/4 features, and is worth doing as
the DWARF3 spec removed some ambiguities in the interpretation of call frame
information.
It also fixes a minor bug where the "return address" field of the CIE was
encoded as a ULEB128, which is only valid when the CIE version is 3. There are
no test changes for this, because (as far as I can tell) none of the platforms
that we test have a return address register with a DWARF register number >127.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211272
91177308-0d34-0410-b5e6-
96231b3b80d8
Matheus Almeida [Thu, 19 Jun 2014 15:08:04 +0000 (15:08 +0000)]
[mips] Implementation of dli.
Patch by David Chisnall
His work was sponsored by: DARPA, AFRL
Some small modifications to the original patch: we now error if
it's not possible to expand an instruction (mips-expansions-bad.s has some
examples). Added some comments to the expansions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211271
91177308-0d34-0410-b5e6-
96231b3b80d8