OSDN Git Service
Reid Kleckner [Mon, 24 Jun 2013 13:21:16 +0000 (13:21 +0000)]
Look for Python 2 before Python 3 in CMakeLists.txt
All of LLVM's Python scripts only support Python 2 for widely understood
reasons.
Patch by Yonggang Luo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184732
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 24 Jun 2013 13:19:59 +0000 (13:19 +0000)]
llvm/test/CodeGen/X86: Add explicit -mtriple=x86_64-unknown-unknown.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184731
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 24 Jun 2013 13:19:52 +0000 (13:19 +0000)]
llvm/test/CodeGen/X86/legalize-shift-64.ll: Add explicit -mtriple=i686-unknown-unknown.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184730
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 24 Jun 2013 13:19:47 +0000 (13:19 +0000)]
llvm/test/DebugInfo/arguments.ll: Add explicit -mtriple=x86_64-unknown-unknown.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184729
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 24 Jun 2013 13:19:41 +0000 (13:19 +0000)]
NVPTXTargetObjectFile.h: Initialize some pointers as NULL in the constructor of NVPTXTargetObjectFile. ~NVPTXTargetObjectFile() tries to delete them.
It caused crash on some hosts since r184595.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184728
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Mon, 24 Jun 2013 12:49:20 +0000 (12:49 +0000)]
[PowerPC] Add t/f branch mnemonics to asm parser
This adds the bt/bf/bd(n)zt/bd(n)zf mnemonics as aliases for the
asm parser, resolving to the generic conditional patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184725
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Mon, 24 Jun 2013 12:09:15 +0000 (12:09 +0000)]
Reapply 184685 after the SetVector iteration order fix.
This should hopefully have fixed the stage2/stage3 miscompare on the dragonegg
testers.
"LoopVectorize: Use the dependence test utility class
We now no longer need alias analysis - the cases that alias analysis would
handle are now handled as accesses with a large dependence distance.
We can now vectorize loops with simple constant dependence distances.
for (i = 8; i < 256; ++i) {
a[i] = a[i+4] * a[i+8];
}
for (i = 8; i < 256; ++i) {
a[i] = a[i-4] * a[i-8];
}
We would be able to vectorize about 200 more loops (in many cases the cost model
instructs us no to) in the test suite now. Results on x86-64 are a wash.
I have seen one degradation in ammp. Interestingly, the function in which we
now vectorize a loop is never executed so we probably see some instruction
cache effects. There is a 2% improvement in h264ref. There is one or the other
TSCV loop kernel that speeds up.
radar://
13681598"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184724
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Mon, 24 Jun 2013 12:09:12 +0000 (12:09 +0000)]
LoopVectorize: Use SetVector for the access set
We are creating the runtime checks using this set so we need a deterministic
iteration order.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184723
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Mon, 24 Jun 2013 11:55:21 +0000 (11:55 +0000)]
[PowerPC] Support generic conditional branches in asm parser
This adds instruction patterns to cover the generic forms of
the conditional branch instructions. This allows the assembler
to support the generic mnemonics.
The compiler will still generate the various specific forms
of the instruction that were already supported.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184722
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Mon, 24 Jun 2013 11:03:33 +0000 (11:03 +0000)]
[PowerPC] Support absolute branches
There is currently only limited support for the "absolute" variants
of branch instructions. This patch adds support for the absolute
variants of all branches that are currently otherwise supported.
This requires adding new fixup types so that the correct variant
of relocation type can be selected by the object writer.
While the compiler will continue to usually choose the relative
branch variants, this will allow the asm parser to fully support
the absolute branches, with either immediate (numerical) or
symbolic target addresses.
No change in code generation intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184721
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Mon, 24 Jun 2013 11:02:38 +0000 (11:02 +0000)]
[PowerPC] Support bd(n)zl and bd(n)zlrl
This adds support for the bd(n)zl and bd(n)zlrl instructions.
The patterns are currently used for the asm parser only.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184720
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Mon, 24 Jun 2013 11:02:19 +0000 (11:02 +0000)]
[PowerPC] Support b(cond)l in the asm parser
This patch adds support for the conditional variants of bl.
The pattern is currently used by the asm parser only.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184719
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Mon, 24 Jun 2013 11:01:55 +0000 (11:01 +0000)]
[PowerPC] Support blrl and variants in the asm parser
This patch adds support for blrl and its conditional variants.
The patterns are (currently) used for the asm parser only.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184718
91177308-0d34-0410-b5e6-
96231b3b80d8
Vladimir Medic [Mon, 24 Jun 2013 10:05:34 +0000 (10:05 +0000)]
This patch introduces RegisterOperand class into Mips FPU instruction definitions and adds dedicated parser methods to MipsAsmParser. It is the first in a series of patches that should fix the problems with parsing Mips FPU instructions and optimize the code in MipsAsmParser.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184716
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Mon, 24 Jun 2013 09:58:09 +0000 (09:58 +0000)]
[APFloat] Removed trailing whitespace from unittests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184715
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Mon, 24 Jun 2013 09:58:07 +0000 (09:58 +0000)]
[APFloat] Added a large unittest for APFloat.add that checks that special values are computed correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184714
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Mon, 24 Jun 2013 09:58:05 +0000 (09:58 +0000)]
[APFloat] Added support for parsing float strings which contain {inf,-inf,NaN,-NaN}.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184713
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Mon, 24 Jun 2013 09:58:02 +0000 (09:58 +0000)]
[APFloat] Added make{Zero,Inf} methods and implemented get{Zero,Inf} on top of them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184712
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Mon, 24 Jun 2013 09:57:59 +0000 (09:57 +0000)]
[APFloat] Removed a assert from significandParts() which says that one can only access the significand of FiniteNonZero/NaN floats.
The method significandParts() is a helper method meant to ease access to
APFloat's significand by allowing the user to not need to be aware of whether or
not the APFloat is using memory allocated in the instance itself or in an
external array.
This assert says that one can only access the significand of FiniteNonZero/NaN
floats. This makes it cumbersome and more importantly dangerous when one wishes
to zero out the significand of a zero/infinity value since one will have to deal
with the aforementioned quandary related to how the memory in APFloat is
allocated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184711
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Mon, 24 Jun 2013 09:57:57 +0000 (09:57 +0000)]
[APFloat] Rename macro convolve => PackCategoriesIntoKey so that it is clear what APFloat is actually using said macro for.
In the context of APFloat, seeing a macro called convolve suggests that APFloat
is using said value in some sort of convolution somewhere in the source code.
This is misleading.
I also added a documentation comment to the macro.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184710
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Mon, 24 Jun 2013 09:51:30 +0000 (09:51 +0000)]
Add -mcpu to some unit tests that only fail on certain hosts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184709
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury de la Vieuville [Mon, 24 Jun 2013 09:15:01 +0000 (09:15 +0000)]
ARM: check predicate bits for thumb instructions
When encoded to thumb, VFP instruction and VMOV/VDUP between scalar and
core registers, must have their predicate bit to 0b1110.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184707
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury de la Vieuville [Mon, 24 Jun 2013 09:14:54 +0000 (09:14 +0000)]
ARM: rGPR is meant to be unpredictable, not undefined
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184706
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Mon, 24 Jun 2013 09:13:20 +0000 (09:13 +0000)]
Temporarily enable MI-Sched on X86.
Sorry for the unit test churn. I'll try to make the change permanently
next time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184705
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury de la Vieuville [Mon, 24 Jun 2013 09:11:53 +0000 (09:11 +0000)]
ARM: fix thumb1 nop decoding
In thumb1, NOP is a pseudo-instruction equivalent to mov r8, r8.
However the disassembler should not use this alias.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184703
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury de la Vieuville [Mon, 24 Jun 2013 09:11:45 +0000 (09:11 +0000)]
ARM: fix IT decoding
mask == 0 -> UNPRED
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184702
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury de la Vieuville [Mon, 24 Jun 2013 09:11:38 +0000 (09:11 +0000)]
ARM: enable decoding of pc-relative PLD/PLI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184701
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 24 Jun 2013 07:21:47 +0000 (07:21 +0000)]
Add a flag to defer vectorization into a phase after the inliner and its
CGSCC pass manager. This should insulate the inlining decisions from the
vectorization decisions, however it may have both compile time and code
size problems so it is just an experimental option right now.
Adding this based on a discussion with Arnold and it seems at least
worth having this flag for us to both run some experiments to see if
this strategy is workable. It may solve some of the regressions seen
with the loop vectorizer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184698
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 24 Jun 2013 07:21:35 +0000 (07:21 +0000)]
Filter out dragonegg when checked out into a projects subdirectory.
There is some hope of eventually supporting a unified build with it, but
until then this lets me (and others) check it out in this location
without things breaking.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184697
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 24 Jun 2013 07:11:08 +0000 (07:11 +0000)]
DebugInfo: enumerator values returned as int64 as they are stored
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184694
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 24 Jun 2013 06:47:22 +0000 (06:47 +0000)]
DebugInfo: add some testing from an overly broad end-to-end test in Clang
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184692
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Mon, 24 Jun 2013 06:10:41 +0000 (06:10 +0000)]
Revert "LoopVectorize: Use the dependence test utility class"
This reverts commit
cbfa1ca993363ca5c4dbf6c913abc957c584cbac.
We are seeing a stage2 and stage3 miscompare on some dragonegg bots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184690
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Mon, 24 Jun 2013 04:19:37 +0000 (04:19 +0000)]
[APFloat] Removed out of date comment from isNormal().
I already finished the isIEEENormal => isNormal transition. So isNormal is now
IEEE-754R compliant.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184687
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Mon, 24 Jun 2013 04:06:23 +0000 (04:06 +0000)]
[APFloat] Rename llvm::exponent_t => llvm::APFloat::ExponentType.
exponent_t is only used internally in APFloat and no exponent_t values are
exposed via the APFloat API. In light of such conditions it does not make any
sense to gum up the llvm namespace with said type. Plus it makes it clearer that
exponent_t is associated with APFloat.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184686
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Mon, 24 Jun 2013 03:55:48 +0000 (03:55 +0000)]
LoopVectorize: Use the dependence test utility class
We now no longer need alias analysis - the cases that alias analysis would
handle are now handled as accesses with a large dependence distance.
We can now vectorize loops with simple constant dependence distances.
for (i = 8; i < 256; ++i) {
a[i] = a[i+4] * a[i+8];
}
for (i = 8; i < 256; ++i) {
a[i] = a[i-4] * a[i-8];
}
We would be able to vectorize about 200 more loops (in many cases the cost model
instructs us no to) in the test suite now. Results on x86-64 are a wash.
I have seen one degradation in ammp. Interestingly, the function in which we
now vectorize a loop is never executed so we probably see some instruction
cache effects. There is a 2% improvement in h264ref. There is one or the other
TSCV loop kernel that speeds up.
radar://
13681598
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184685
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Mon, 24 Jun 2013 03:55:45 +0000 (03:55 +0000)]
LoopVectorize: Add utility class for checking dependency among accesses
This class checks dependences by subtracting two Scalar Evolution access
functions allowing us to catch very simple linear dependences.
The checker assumes source order in determining whether vectorization is safe.
We currently don't reorder accesses.
Positive true dependencies need to be a multiple of VF otherwise we impede
store-load forwarding.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184684
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Mon, 24 Jun 2013 03:55:44 +0000 (03:55 +0000)]
LoopVectorize: Add utility class for building sets of dependent accesses
Sets of dependent accesses are built by unioning sets based on underlying
objects. This class will be used by the upcoming dependence checker.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184683
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Mon, 24 Jun 2013 02:52:43 +0000 (02:52 +0000)]
SLP Vectorizer: Add support for vectorizing parts of the tree.
Untill now we detected the vectorizable tree and evaluated the cost of the
entire tree. With this patch we can decide to trim-out branches of the tree
that are not profitable to vectorizer.
Also, increase the max depth from 6 to 12. In the worse possible case where all
of the code is made of diamond-shaped graph this can bring the cost to 2**10,
but diamonds are not very common.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184681
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Mon, 24 Jun 2013 01:55:01 +0000 (01:55 +0000)]
Fix tail merging to assign the (more) correct BasicBlock when splitting.
This makes it possible to write unit tests that are less susceptible
to minor code motion, particularly copy placement. block-placement.ll
covers this case with -pre-RA-sched=source which will soon be
default. One incorrectly named block is already fixed, but without
this fix, enabling new coalescing and scheduling would cause more
failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184680
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sun, 23 Jun 2013 21:57:27 +0000 (21:57 +0000)]
SLP Vectorizer: Fix a bug in the code that does CSE on the generated gather sequences.
Make sure that we don't replace and RAUW two sequences if one does not dominate the other.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184674
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sun, 23 Jun 2013 19:38:56 +0000 (19:38 +0000)]
SLP Vectorizer: Erase instructions outside the vectorizeTree method.
The RAII builder location guard is saving a reference to instructions, so we can't erase instructions during vectorization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184671
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Sun, 23 Jun 2013 18:31:11 +0000 (18:31 +0000)]
DebugInfo: PR14404: Avoid truncating 64 bit values into 32 bits for ULEB128/SLEB128 generation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184669
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Sun, 23 Jun 2013 15:32:01 +0000 (15:32 +0000)]
AArch64: fix overzealous NEXTing for Windows testing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184667
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Sun, 23 Jun 2013 09:00:28 +0000 (09:00 +0000)]
Add MI-Sched support for x86 macro fusion.
This is an awful implementation of the target hook. But we don't have
abstractions yet for common machine ops, and I don't see any quick way
to make it table-driven.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184664
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sun, 23 Jun 2013 06:15:46 +0000 (06:15 +0000)]
SLP Vectorizer: Implement a simple CSE optimization for the gather sequences.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184660
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sat, 22 Jun 2013 21:34:10 +0000 (21:34 +0000)]
SLP Vectorizer: Implement multi-block slp-vectorization.
Rewrote the SLP-vectorization as a whole-function vectorization pass. It is now able to vectorize chains across multiple basic blocks.
It still does not vectorize PHIs, but this should be easy to do now that we scan the entire function.
I removed the support for extracting values from trees.
We are now able to vectorize more programs, but there are some serious regressions in many workloads (such as flops-6 and mandel-2).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184647
91177308-0d34-0410-b5e6-
96231b3b80d8
Reed Kotler [Sat, 22 Jun 2013 19:35:08 +0000 (19:35 +0000)]
Replace with a shorter test case produced by Doug Gillmore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184645
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Sat, 22 Jun 2013 18:59:11 +0000 (18:59 +0000)]
DebugInfo: Support (using GNU extensions) for template template parameters and parameter packs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184643
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Sat, 22 Jun 2013 18:37:38 +0000 (18:37 +0000)]
The getRegForInlineAsmConstraint function should only accept MVT value types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184642
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 22 Jun 2013 16:56:32 +0000 (16:56 +0000)]
Revert "FunctionAttrs: Merge attributes once instead of doing it for every argument."
It doesn't work as I intended it to. This reverts commit r184638.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184641
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 22 Jun 2013 15:51:19 +0000 (15:51 +0000)]
FunctionAttrs: Merge attributes once instead of doing it for every argument.
It has become an expensive operation. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184638
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 22 Jun 2013 13:03:15 +0000 (13:03 +0000)]
RelocVisitor: Add another PPC64 relocation that occurs in dwarf output.
Should bring the ppc64 buildbot back to life.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184633
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sat, 22 Jun 2013 02:34:24 +0000 (02:34 +0000)]
Create the file with the right permissions instead of setting it afterwards.
Removes the last use of PathV1.h in llvm-ar.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184630
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Sat, 22 Jun 2013 01:38:00 +0000 (01:38 +0000)]
[yaml2obj][ELF] Make symbol table top-level key.
Although in reality the symbol table in ELF resides in a section, the
standard requires that there be no more than one SHT_SYMTAB. To enforce
this constraint, it is cleaner to group all the symbols under a
top-level `Symbols` key on the object file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184627
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Sat, 22 Jun 2013 01:37:55 +0000 (01:37 +0000)]
[yaml2obj][ELF] Narrow parameter.
The full ELFYAML::Section isn't needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184626
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Sat, 22 Jun 2013 01:06:12 +0000 (01:06 +0000)]
[yaml2obj][ELF] Don't special case writing these.
Just add them to the vector of section headers like the rest of the
section headers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184624
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Sat, 22 Jun 2013 01:03:35 +0000 (01:03 +0000)]
[yaml2obj][ELF] Make this "type switch" actually readable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184623
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Sat, 22 Jun 2013 00:47:43 +0000 (00:47 +0000)]
[yaml2obj][ELF] Align section contents in the output.
The improperly aligned section content in the output was causing
buildbot failures. This should fix them.
Incidentally, this results in a simpler and more robust API for
ContiguousBlobAccumulator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184621
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Sat, 22 Jun 2013 00:33:48 +0000 (00:33 +0000)]
Prevent LiveRangeEdit from deleting bundled instructions.
We have no targets on trunk that bundle before regalloc. However, we
have been advertising regalloc as bundle safe for use with out-of-tree
targets. We need to at least contain the parts of the code that are
still unsafe.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184620
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 21 Jun 2013 23:45:18 +0000 (23:45 +0000)]
Reapply documentation changes from r184584.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184609
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Fri, 21 Jun 2013 23:17:13 +0000 (23:17 +0000)]
This was a nifty test, but remove it.
It wouldn't really test anything that doesn't already have a more
targeted test:
`yaml2obj-elf-section-basic.yaml`:
Already tests that section content is correctly passed though.
`yaml2obj-elf-symbol-basic.yaml` (this file):
Tests that the st_value and st_size attributes of `main` are set
correctly.
Between those two tests, disassembling the file doesn't really add
anything, so just remove mention of disassembling the file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184607
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Fri, 21 Jun 2013 23:17:10 +0000 (23:17 +0000)]
Revert "Put r184469 disassembler test back on X86"
This reverts commit r184602. In an upcoming commit, I will just remove
the disassembler part of the test; it was mostly just a "nifty" thing
marking a milestone but it doesn't test anything that isn't tested
elsewhere.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184606
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 21 Jun 2013 22:56:30 +0000 (22:56 +0000)]
DebugInfo: Don't lose unreferenced non-trivial by-value parameters
A FastISel optimization was causing us to emit no information for such
parameters & when they go missing we end up emitting a different
function type. By avoiding that shortcut we not only get types correct
(very important) but also location information (handy) - even if it's
only live at the start of a function & may be clobbered later.
Reviewed/discussion by Evan Cheng & Dan Gohman.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184604
91177308-0d34-0410-b5e6-
96231b3b80d8
Renato Golin [Fri, 21 Jun 2013 22:42:20 +0000 (22:42 +0000)]
Put r184469 disassembler test back on X86
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184602
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 21 Jun 2013 22:11:36 +0000 (22:11 +0000)]
Convert some uses of PathV1.h in ArchiveWriter.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184599
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Fri, 21 Jun 2013 21:51:15 +0000 (21:51 +0000)]
[yaml2obj][ELF] Don't do disassembly in this test.
This was causing buildbot failures when build without X86 support.
Is there a way to conditionalize the test on the X86 target being
present?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184597
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Fri, 21 Jun 2013 20:52:49 +0000 (20:52 +0000)]
[objc-arc-opts] Make IsTrackingImpreciseReleases a const method.
Thanks to Bill Wendling for pointing this out!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184593
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Fri, 21 Jun 2013 20:51:39 +0000 (20:51 +0000)]
Improve the time it takes to generating dwarf for assembly source files
that have been run through the 'C' pre-processor.
The implementation of SrcMgr.FindLineNumber() is slow but OK if
it uses its cache when called multiple times with an SMLoc that is
forward of the previous call.
In the case of generating dwarf for assembly source files that have
been run through the 'C' pre-processor we need to calculate the
logical line number based on the last parsed cpp hash file line
comment. And the current code calls SrcMgr.FindLineNumber()
twice to do this causing its cache not to work and results in very
slow compile times:
% time /Volumes/SandBox/build-llvm/Debug+Asserts/bin/llvm-mc -triple thumbv7-apple-ios -filetype=obj -o /tmp/x.o mscorlib.dll.E -g
672.542u 0.299s 11:13.15 99.9% 0+0k 0+2io 2106pf+0w
So we save the info from the last parsed cpp hash file line comment
to avoid making the second call to SrcMgr.FindLineNumber() most times
and end up with compile times like:
% time /Volumes/SandBox/build-llvm/Debug+Asserts/bin/llvm-mc -triple thumbv7-apple-ios -filetype=obj -o /tmp/x.o mscorlib.dll.E -g
3.404u 0.104s 0:03.80 92.1% 0+0k 0+3io 2105pf+0w
rdar://
14156934
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184592
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Liao [Fri, 21 Jun 2013 20:22:45 +0000 (20:22 +0000)]
Add '-mcpu=' to prevent breaking on ATOM due to different code schedule
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184591
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 21 Jun 2013 20:20:27 +0000 (20:20 +0000)]
Revert "BlockFrequency: Saturate at 1 instead of 0 when multiplying a frequency with a branch probability."
This reverts commit r184584. Breaks PPC selfhost.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184590
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Fri, 21 Jun 2013 19:44:30 +0000 (19:44 +0000)]
[objc-arc-opts] Now that PtrState.RRI is encapsulated in PtrState, make PtrState.RRI private and delete the TODO.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184587
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Fri, 21 Jun 2013 19:44:27 +0000 (19:44 +0000)]
[objc-arc-opts] Encapsulated PtrState.RRI.{Calls,ReverseInsertPts} into several methods on PtrState.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184586
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 21 Jun 2013 19:30:05 +0000 (19:30 +0000)]
BlockFrequency: Saturate at 1 instead of 0 when multiplying a frequency with a branch probability.
Zero is used by BlockFrequencyInfo as a special "don't know" value. It also
causes a sink for frequencies as you can't ever get off a zero frequency with
more multiplies.
This recovers a 10% regression on MultiSource/Benchmarks/7zip. A zero frequency
was propagated into an inner loop causing excessive spilling.
PR16402.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184584
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Fri, 21 Jun 2013 19:12:38 +0000 (19:12 +0000)]
[objcarcopts] Encapsulated PtrState.RRI.IsTrackingImpreciseRelease() => PtrState.IsTrackingImpreciseRelease().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184583
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Fri, 21 Jun 2013 19:12:36 +0000 (19:12 +0000)]
[objcarcopts] Encapsulate PtrState.RRI.CFGHazardAfflicted via methods PtrState.{IsCFGHazardAfflicted,SetCFGHazardAfflicted}.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184582
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Holewinski [Fri, 21 Jun 2013 18:51:49 +0000 (18:51 +0000)]
[NVPTX] Add support for selecting CUDA vs OCL mode based on triple
IR for CUDA should use "nvptx[64]-nvidia-cuda", and IR for NV OpenCL should use "nvptx[64]-nvidia-nvcl"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184579
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 21 Jun 2013 18:47:08 +0000 (18:47 +0000)]
Add missing REQUIRES: asserts in crash.ll.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184576
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Liao [Fri, 21 Jun 2013 18:45:27 +0000 (18:45 +0000)]
Fix PR16360
When (srl (anyextend x), c) is folded into (anyextend (srl x, c)), the
high bits are not cleared. Add 'and' to clear off them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184575
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 21 Jun 2013 18:33:26 +0000 (18:33 +0000)]
Update physreg live intervals during remat.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184574
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 21 Jun 2013 18:33:23 +0000 (18:33 +0000)]
Added -precompute-phys-liveness for testing LiveIntervals updates.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184573
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 21 Jun 2013 18:33:20 +0000 (18:33 +0000)]
Handle more cases in LiveRangeEdit::eliminateDeadDefs.
Live intervals for dead physregs may be created during coalescing. We
need to update these in the event that their instruction goes away.
crash.ll is the unit test that catches it when MI sched is enabled on
X86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184572
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 21 Jun 2013 18:33:17 +0000 (18:33 +0000)]
Refactor LiveRangeEdit::eliminateDeadDefs.
I want to add logic to handle more cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184571
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 21 Jun 2013 18:33:14 +0000 (18:33 +0000)]
whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184570
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 21 Jun 2013 18:33:11 +0000 (18:33 +0000)]
Fix a -join-globalcopies bug; handle undef operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184569
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 21 Jun 2013 18:33:09 +0000 (18:33 +0000)]
Modify the -join-globalcopies option (off by default).
Always coalesce in forward order to propagate rematerialization.
I'm fixing this option so I can enable it by default soon.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184568
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 21 Jun 2013 18:33:06 +0000 (18:33 +0000)]
Make rematerialization in the coalescer less sensitive to LRG order.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184567
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 21 Jun 2013 18:33:04 +0000 (18:33 +0000)]
Fix IMULX machine model. Multiple def operands require multiple SchedWrites.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184566
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 21 Jun 2013 18:33:01 +0000 (18:33 +0000)]
MI-Sched: cleanup DEBUG output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184565
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 21 Jun 2013 18:32:58 +0000 (18:32 +0000)]
MI-Sched: Adjust regpressure limits for reserved regs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184564
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 21 Jun 2013 14:44:37 +0000 (14:44 +0000)]
[PowerPC] Support R_PPC_REL16 family of relocations
The GNU assembler supports (as extension to the ABI) use of PC-relative
relocations in half16 fields, which allows writing code like:
li 1, base-.
This patch adds support for those relocation types in the assembler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184552
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 21 Jun 2013 14:44:15 +0000 (14:44 +0000)]
[PowerPC] Support various tls-related modifiers
The current code base only supports the minimum set of tls-related
relocations and @modifiers that are necessary to support compiler-
generated code. This patch extends this to the full set defined
in the ABI (and supported by the GNU assembler) for the benefit
of the assembler parser.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184551
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 21 Jun 2013 14:43:42 +0000 (14:43 +0000)]
[PowerPC] Support @higher et.al. modifiers
This adds support for the @higher, @highera, @highest, and @highesta
modifers, including some missing relocation types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184550
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 21 Jun 2013 14:43:10 +0000 (14:43 +0000)]
[PowerPC] Support @toc@h modifier
This adds the relocation type and other necessary infrastructure
to use the @toc@h modifier in the assembler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184549
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 21 Jun 2013 14:42:49 +0000 (14:42 +0000)]
[PowerPC] Support @h modifier
This adds necessary infrastructure to support the @h modifier.
Note that all required relocation types were already present
(and unused).
This patch provides support for using @h in the assembler;
it would also be possible to now use this feature in code
generated by the compiler, but this is not done yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184548
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 21 Jun 2013 14:42:20 +0000 (14:42 +0000)]
[PowerPC] Rename some more VK_PPC_ enums
This renames more VK_PPC_ enums, to make them more closely reflect
the @modifier string they represent. This also prepares for adding
a bunch of new VK_PPC_ enums in upcoming patches.
For consistency, some MO_ flags related to VK_PPC_ enums are
likewise renamed.
No change in behaviour.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184547
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Fri, 21 Jun 2013 07:38:09 +0000 (07:38 +0000)]
add Function::removeFnAttr()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184536
91177308-0d34-0410-b5e6-
96231b3b80d8
Manuel Klimek [Fri, 21 Jun 2013 07:23:14 +0000 (07:23 +0000)]
Fix an ordering problem in the test.
The output can be in different orders, which breaks the test in some
situations. I have not yet found out what the root cause of the order
difference is. This fixes our internal build. If it is not the right
solution, feel free to roll back.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184535
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Fri, 21 Jun 2013 07:03:07 +0000 (07:03 +0000)]
[objcarcopts] Encapsulate PtrState.RRI.ReleaseMetadata into the methods PtrState.GetReleaseMetadata() and PtrState.SetReleaseMetadata().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184534
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Fri, 21 Jun 2013 07:00:44 +0000 (07:00 +0000)]
[objcarcopts] Encapsulate PtrState.RRI.IsTailCallRelease into the method PtrState.IsTailCallRelease() and PtrState.SetTailCallRelease().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184533
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Fri, 21 Jun 2013 06:59:02 +0000 (06:59 +0000)]
[obcjarcopts] Encapsulate PtrState.RRI.KnownSafe in the methods PtrState.IsKnownSafe and PtrState.SetKnownSafe.
This is apart of a series of patches to encapsulate PtrState.RRI and
make PtrState.RRI a private field of PtrState.
*NOTE* This is actually the second commit in the patch stream. I should
have put this note on the first such commit r184528.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184532
91177308-0d34-0410-b5e6-
96231b3b80d8