Commit Graph

86586 Commits

Author SHA1 Message Date
Anton Korobeynikov
a9a9779b11 Bring PTX back to sync with release tarball
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@172479 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-14 22:03:20 +00:00
Pawel Wodnicki
ba1c186912 removing PTX remnants
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@172205 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-11 15:11:58 +00:00
Pawel Wodnicki
4197b436ec Fixed couple of spellings
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@170526 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-19 10:50:28 +00:00
Pawel Wodnicki
834cdef96d VMKit and Tagrget notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@170525 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-19 10:35:39 +00:00
Pawel Wodnicki
eb8eaa89a5 Sync-up SROA notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@170521 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-19 09:57:57 +00:00
Pawel Wodnicki
2691635b57 Added libc++ notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@170448 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-18 20:31:29 +00:00
Pawel Wodnicki
4c7fc003bd MiB, Spidey and other Externals get to be mentioned in the relase notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@170375 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-17 21:45:48 +00:00
Ted Kremenek
ad8d4795df Add some release note text for the Clang Static Analyzer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@170251 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-14 22:22:23 +00:00
Daniel Malea
f69442c7a8 Add some LLDB release notes for 3.2 (with Linux improvements that made it in)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@170247 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-14 22:03:16 +00:00
Pawel Wodnicki
2e0b25a632 More updates to relase notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@170178 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-14 05:43:03 +00:00
Pawel Wodnicki
a713918d44 Partial update for release notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@170151 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-13 22:03:18 +00:00
Pawel Wodnicki
3f0b779be8 Merging r169719: into 3.2 release branch.
Fix PR14548: SROA was crashing on a mixture of i1 and i8 loads and stores.

When SROA was evaluating a mixture of i1 and i8 loads and stores, in
just a particular case, it would tickle a latent bug where we compared
bits to bytes rather than bits to bits. As a consequence of the latent
bug, we would allow integers through which were not byte-size multiples,
a situation the later rewriting code was never intended to handle.

In release builds this could trigger all manner of oddities, but the
reported issue in PR14548 was forming invalid bitcast instructions.

The only downside of this fix is that it makes it more clear that SROA
in its current form is not capable of handling mixed i1 and i8 loads and
stores. Sometimes with the previous code this would work by luck, but
usually it would crash, so I'm not terribly worried. I'll watch the LNT
numbers just to be sure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@169735 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-10 14:20:28 +00:00
Pawel Wodnicki
710e1c519a Rewording for clarity
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@169468 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-06 05:36:17 +00:00
Pawel Wodnicki
91309c721c Bump Pure version for 3.2 release
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@169298 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04 20:47:35 +00:00
Pawel Wodnicki
935a1f08c1 Merging r169280: into the 3.2 release branch.
Update release notes for NVPTX

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@169297 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04 20:36:52 +00:00
Pawel Wodnicki
7d2093c741 Merging MIPS JIT/MCJIT changeset into 3.2 release branch.
Merging r169183:

RuntimeDyld: Fix up r169178. MSVC doesn't like "or".

Merging r169178:

Runtime dynamic linker for MCJIT should support MIPS BigEndian architecture.
This small change adds support for that. It will make all MCJIT tests pass
in make-check on BigEndian platforms.

Patch by Petar Jovanovic.

Merging r169177:

Classic JIT is still being supported by MIPS, along with MCJIT.
This change adds endian-awareness to MipsJITInfo and emitWordLE in
MipsCodeEmitter has become emitWord now to support both endianness.

Patch by Petar Jovanovic.

Merging r169174:

Functions in MipsCodeEmitter.cpp that expand unaligned loads/stores are dead
code. Removing it.

Patch by Petar Jovanovic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@169296 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04 20:23:05 +00:00
Pawel Wodnicki
bdcb22211f Merging MIPS GOT changeset into 3.2 release branch.
Merging r168471:

Mips direct object xgot support

This patch provides support for the MIPS relocations:

    *)  R_MIPS_GOT_HI16
    *)  R_MIPS_GOT_LO16
    *)  R_MIPS_CALL_HI16
    *)  R_MIPS_CALL_LO16

These are used for large GOT instruction sequences.

Contributer: Jack Carter

Merging r168460:

[mips] Generate big GOT code.

Merging r168458:

[mips] Simplify lowering functions in MipsISelLowering.cpp by using the helper
functions added in r168456.

Merging r168456:

[mips] Add helper functions that create nodes for computing address.

Merging r168455:

[mips] Add command line option "-mxgot".

Merging r168453:

[mips] When a node which loads from a GOT is created, pass a MachinePointerInfo
referring to a GOT entry.

Merging r168450:

[mips] Add target operand flag enums for big GOT relocations.

Merging r168448:

Add relocations used for mips big GOT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@169294 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04 19:47:56 +00:00
Pawel Wodnicki
a902024940 Merging r169084: into 3.2 release branch.
SROA: Avoid struct and array types early to avoid creating an overly large integer type.

Fixes PR14465.

Differential Revision: http://llvm-reviews.chandlerc.com/D148


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@169290 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04 18:29:45 +00:00
Pawel Wodnicki
24d616e51f Merging r168921: into the 3.2 release branch.
Follow up to 168711: It's safe to base this analysis on the found compare, just return the value for the right predicate.

Thanks to Andy for catching this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168974 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-30 03:38:58 +00:00
Pawel Wodnicki
73c484255b Merging r168711: into the 3.2 release branch.
SCEV: Even if the latch terminator is foldable we can't deduce the result of an unrelated condition with it.

Fixes PR14432.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168973 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-30 03:35:46 +00:00
Pawel Wodnicki
f56817cfb5 Merging r168622: into 3.2 release branch.
Don't use iterator after being erased.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168947 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-29 22:11:02 +00:00
Pawel Wodnicki
01a2efa74e Merging r168837: into the 3.2 release branch.
Avoid rewriting instructions twice.

This could cause miscompilations in targets where sub-register
composition is not always idempotent (ARM).

<rdar://problem/12758887>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168849 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-29 02:35:17 +00:00
Hal Finkel
0bf2470000 Merge in r168799 (PPC bug fix).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168842 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-29 00:42:22 +00:00
Hal Finkel
0416bc140f Merge in r168765 (BBVectorize bug fix)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168839 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-29 00:38:51 +00:00
Pawel Wodnicki
3668de5ba6 Merging r167912: into the 3.2 release branch.
Handle DAG CSE adding new uses during ReplaceAllUsesWith. Fixes PR14333.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168596 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-26 17:01:12 +00:00
Pawel Wodnicki
bc69dc1d88 Merging r168196: into the 3.2 release branch.
Make this easier to understand, as suggested by Chandler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168594 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-26 16:52:27 +00:00
Pawel Wodnicki
077cee586e Merging r168186: into the 3.2 release branch.
InstructionSimplify should be able to simplify A+B==B+A to 'true'
but wasn't due to the same logic bug that caused PR14361.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168593 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-26 16:49:56 +00:00
Pawel Wodnicki
12c349d441 Merging r168320: into 3.2 relase branch.
Handle mixed normal and early-clobber defs on inline asm.

PR14376.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168527 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-23 20:02:28 +00:00
Pawel Wodnicki
024e48b43d Merging r168512: into 3.2 release branch.
Update call to the new syntax.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168526 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-23 19:56:57 +00:00
Pawel Wodnicki
df46b9004b Merging r168291: into the 3.2 release branch.
Fix PR14060, an infinite loop in reassociate.  The problem was that one of the
operands of the expression being written was wrongly thought to be reusable as
an inner node of the expression resulting in it turning up as both an inner node
*and* a leaf, creating a cycle in the def-use graph.  This would have caused the
verifier to blow up if things had gotten that far, however it managed to provoke
an infinite loop first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168489 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-22 06:21:31 +00:00
Pawel Wodnicki
d11161f404 Merging r168354: into 3.2 release branch
Make the AttrListPtr object a part of the LLVMContext.

When code deletes the context, the AttributeImpls that the AttrListPtr points to
are now invalid. Therefore, instead of keeping a separate managed static for the
AttrListPtrs that's reference counted, move it into the LLVMContext and delete
it when deleting the AttributeImpls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168486 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-22 06:08:33 +00:00
Pawel Wodnicki
ddf07067bc Merging r168280: into 3.2 release branch.
Don't try to calculate the alignment of an unsigned type. Fixes PR14371!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168480 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-22 00:43:18 +00:00
Pawel Wodnicki
3e2cbf9d08 Reverting 168457
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168465 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-21 22:21:40 +00:00
Pawel Wodnicki
7022c651ca Merging r168354, r168355 and r168379 into the 3.2 release branch.
Set of  Attributes patches.

Merging r168354:

Make the AttrListPtr object a part of the LLVMContext.

When code deletes the context, the AttributeImpls that the AttrListPtr points to
are now invalid. Therefore, instead of keeping a separate managed static for the
AttrListPtrs that's reference counted, move it into the LLVMContext and delete
it when deleting the AttributeImpls.

Merging r168355:

Merging r168379

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168457 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-21 20:30:37 +00:00
Pawel Wodnicki
07d7748544 Merging r168181: into 3.2 release branch.
Fix PR14361: wrong simplification of A+B==B+A.  You may think that the old logic
replaced by this patch is equivalent to the new logic, but you'd be wrong, and
that's exactly where the bug was.  There's a similar bug in instsimplify which
manifests itself as instsimplify failing to simplify this, rather than doing it
wrong, see next commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168447 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-21 19:01:53 +00:00
Pawel Wodnicki
b30ce3e484 Merging r168035: into 3.2 release branch.
Fix a crash observed by Shuxin Yang.  The issue here is that LinearizeExprTree,
the utility for extracting a chain of operations from the IR, thought that it
might as well combine any constants it came across (rather than just returning
them along with everything else).  On the other hand, the factorization code
would like to see the individual constants (this is quite reasonable: it is
much easier to pull a factor of 3 out of 2*3 than it is to pull it out of 6;
you may think 6/3 isn't so hard, but due to overflow it's not as easy to undo
multiplications of constants as it may at first appear).  This patch therefore
makes LinearizeExprTree stupider: it now leaves optimizing to the optimization
part of reassociate, and sticks to just analysing the IR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168446 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-21 18:55:44 +00:00
Pawel Wodnicki
36915224aa Merging r168361, r168346 and r168227 into 3.2 branch release
Merging r168361: 

Fix PR14132 and handle OOB loads speculated throuh PHI nodes.

The issue is that we may end up with newly OOB loads when speculating
a load into the predecessors of a PHI node, and this confuses the new
integer splitting logic in some cases, triggering an assertion failure.
In fact, the branch in question must be dead code as it loads from
a too-narrow alloca. Add code to handle this gracefully and leave the
requisite FIXMEs for both optimizing more aggressively and doing more to
aid sanitizing invalid code which triggers these patterns.


Merging r168346:
------------------------------------------------------------------------

Rework the rewriting of loads and stores for vector and integer allocas
to properly handle the combinations of these with split integer loads
and stores. This essentially replaces Evan's r168227 by refactoring the
code in a different way, and trynig to mirror that refactoring in both
the load and store sides of the rewriting.

Generally speaking there was some really problematic duplicated code
here that led to poorly founded assumptions and then subtle bugs. Now
much of the code actually flows through and follows a more consistent
style and logical path. There is still a tiny bit of duplication on the
store side of things, but it is much less bad.

This also changes the logic to never re-use a load or store instruction
as that was simply too error prone in practice.

I've added a few tests (one a reduction of the one in Evan's original
patch, which happened to be the same as the report in PR14349). I'm
going to look at adding a few more tests for things I found and fixed in
passing (such as the volatile tests in the vectorizable predicate).

This patch has survived bootstrap, and modulo one bugfix survived
Duncan's test suite, but let me know if anything else explodes.


Merging r168227:

Teach SROA rewriteVectorizedStoreInst to handle cases when the loaded value is narrower than the stored value. rdar://12713675



git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168443 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-21 18:28:32 +00:00
Pawel Wodnicki
00dace859e Merging r168197: into 3.2 release branch
Preserve address space of forward-referenced global variables in the LL parser

Before, the parser would assert on the following code:

@a2 = global i8 addrspace(1)* @a
@a = addrspace(1) global i8 0

because the type of @a was "i8*" instead of "i8 addrspace(1)*" when parsing
the initializer for @a2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168435 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-21 16:40:23 +00:00
Pawel Wodnicki
50a66acf1b Merging r168319 into 3.2 release branch
Fix a pasto.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168432 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-21 16:13:35 +00:00
Andrew Kaylor
81c4d420bf Merge in r168364 to disable MCJIT execution engine tests on ppc32 (which doesn't currently support MCJIT).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168392 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-20 22:47:44 +00:00
Pawel Wodnicki
6b42fadfac Merging r168001 into 3.2 release branch
NVPTXISelLowering.cpp: Fix warnings. [-Wunused-variable]


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168378 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-20 19:25:29 +00:00
Hal Finkel
a4652365e3 Merge in PPC release notes: r168189 and r168352.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168353 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-20 04:22:44 +00:00
Hal Finkel
3c221ac679 Merge in PPC internal-as fixes: r167861, r167862, r167863, r167875, r167860, r167864
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168351 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-20 03:57:32 +00:00
Hal Finkel
c21252912a Merge in r167737: Make PPC TOC contents deterministic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168350 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-20 03:47:28 +00:00
Hal Finkel
16a8cf6eac Merge in r168316 so that the proper JIT tests are run on PPC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168349 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-20 03:40:57 +00:00
Pawel Wodnicki
dbf293f367 Merging r167718 into 3.2 release branch
Fix PR14314

- Fix operand order for atomic sub, where the minuend is the value
  loaded from memory and the subtrahend is the parameter specified.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168336 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-19 22:31:55 +00:00
Pawel Wodnicki
c8a344e16a Merging r167948, r168198: into the 3.2 release branch
r168198

[NVPTX] Order global variables in def-use order before emiting them in the final assembly


r167948

[NVPTX] Implement custom lowering of loads/stores for i1

Loads from i1 become loads from i8 followed by trunc
Stores to i1 become zext to i8 followed by store to i8

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168335 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-19 22:25:44 +00:00
Pawel Wodnicki
97b07299fa Merging r167855 into 3.2 relase branch
Do not consider a machine instruction that uses and defines the same
physical register as candidate for common subexpression elimination
in MachineCSE.

This fixes a bug on PowerPC in MultiSource/Applications/oggenc/oggenc
caused by MachineCSE invalidly merging two separate DYNALLOC insns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168334 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-19 22:17:54 +00:00
Pawel Wodnicki
2439c573e6 Merging r167719 into the 3.2 relase branch
Remove unused field.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168333 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-19 22:11:50 +00:00
Hans Wennborg
aab71049df Merge r168176 from trunk:
SimplifyCFG: Don't assume non-null ScalarTargetTransformInfo.

  Patch by Pekka Jääskeläinen!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168194 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-16 20:26:47 +00:00