oota-llvm.git
13 years agoMerge pmovzx test case into existing file.
Stuart Hastings [Wed, 18 May 2011 17:02:04 +0000 (17:02 +0000)]
Merge pmovzx test case into existing file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131539 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix inelegant initialization.
Stuart Hastings [Wed, 18 May 2011 15:54:26 +0000 (15:54 +0000)]
Fix inelegant initialization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131538 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPTX: add flag to disable mad/fma selection
Justin Holewinski [Wed, 18 May 2011 15:42:23 +0000 (15:42 +0000)]
PTX: add flag to disable mad/fma selection

Patch by Dan Bailey

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131537 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRevert commit 131534 since it seems to have broken several buildbots.
Duncan Sands [Wed, 18 May 2011 14:57:56 +0000 (14:57 +0000)]
Revert commit 131534 since it seems to have broken several buildbots.
Original log entry:
Refactor getActionType and getTypeToTransformTo ; place all of the 'decision'
code in one place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131536 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRefactor getActionType and getTypeToTransformTo ; place all of the 'decision'
Nadav Rotem [Wed, 18 May 2011 12:26:38 +0000 (12:26 +0000)]
Refactor getActionType and getTypeToTransformTo ; place all of the 'decision'
code in one place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131534 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoNow that SrcBits and DestBits always represent the primitive size, rather
Duncan Sands [Wed, 18 May 2011 10:59:25 +0000 (10:59 +0000)]
Now that SrcBits and DestBits always represent the primitive size, rather
than either the primitive size or the element primitive size (in the case
of vectors), simplify the vector logic.  No functionality change.  There
is some distracting churn in the patch because I lined up comments better
while there - sorry about that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131533 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTighten up checking of the validity of casts. (1) The IR parser would
Duncan Sands [Wed, 18 May 2011 09:21:57 +0000 (09:21 +0000)]
Tighten up checking of the validity of casts.  (1) The IR parser would
happily accept things like "sext <2 x i32> to <999 x i64>".  It would
also accept "sext <2 x i32> to i64", though the verifier would catch
that later.  Fixed by having castIsValid check that vector lengths match
except when doing a bitcast.  (2) When creating a cast instruction, check
that the cast is valid (this was already done when creating constexpr
casts).  While there, replace getScalarSizeInBits (used to allow more
vector casts) with getPrimitiveSizeInBits in getCastOpcode and isCastable
since vector to vector casts are now handled explicitly by passing to the
element types; i.e. this bit should result in no functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131532 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTeach getCastOpcode about element-by-element vector casts. For example, "trunc"
Duncan Sands [Wed, 18 May 2011 07:13:41 +0000 (07:13 +0000)]
Teach getCastOpcode about element-by-element vector casts.  For example, "trunc"
can be used to turn a <4 x i64> into a <4 x i32> but getCastOpcode would assert
if you passed these types to it.  Note that this strictly extends the previous
functionality: if getCastOpcode previously accepted two vector types (i.e. didn't
assert) then it still will and returns the same opcode (BitCast).  That's because
before it would only accept vectors with the same bitwidth, and the new code only
touches vectors with the same length.  However if two vectors have both the same
bitwidth and the same length then their element types have the same bitwidth, so
the new logic will return BitCast as before.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131530 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoIn r131488 I misunderstood how VREV works. It splits the vector in half and splits...
Tanya Lattner [Wed, 18 May 2011 06:42:21 +0000 (06:42 +0000)]
In r131488 I misunderstood how VREV works. It splits the vector in half and splits each half. Therefore, the real problem was that we were using a VREV64 for a 4xi16, when we should have been using a VREV32.
Updated test case and reverted change to the PerfectShuffle Table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131529 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoImplement the Win64 EH directive methods for the assembly language streamer.
Charles Davis [Wed, 18 May 2011 04:58:05 +0000 (04:58 +0000)]
Implement the Win64 EH directive methods for the assembly language streamer.

GAS has no such directives (not even mingw-w64 GAS has them), so I took
creative license with their names in assembly. I prefixed them all with
"w64_" to avoid namespace collisions, for example. If I discover that GAS
has taken a different approach, I'll change ours to match.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131525 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoEliminate dead dead code elimination code.
Jakob Stoklund Olesen [Wed, 18 May 2011 04:51:15 +0000 (04:51 +0000)]
Eliminate dead dead code elimination code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131524 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAlso use shrinkToUses after AdjustCopiesBackFrom().
Jakob Stoklund Olesen [Wed, 18 May 2011 04:51:12 +0000 (04:51 +0000)]
Also use shrinkToUses after AdjustCopiesBackFrom().

The 'last use' may not be in the same basic block, and we still want a correct
live range.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131523 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoWhile thinking about how to know where the functions' boundaries are for
Charles Davis [Wed, 18 May 2011 04:47:22 +0000 (04:47 +0000)]
While thinking about how to know where the functions' boundaries are for
the purposes of the Win64 EH tables, I realized we had no way to tell where
the function ends. (MASM bounds functions with PROC and ENDP keywords.)
Add a directive to delimit the end of the function, and rename the 'frame'
directive to more accurately reflect its duality with the new directive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131522 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoProperly shrink live ranges after deleting dead copies. Clean up after all joined...
Jakob Stoklund Olesen [Wed, 18 May 2011 04:18:19 +0000 (04:18 +0000)]
Properly shrink live ranges after deleting dead copies. Clean up after all joined copies.

LiveInterval::shrinkToUses recomputes the live range from scratch instead of
removing snippets. This should avoid the problem with dangling live ranges.

Leave physreg identity copies alone. They can be created when joining a virtreg
with a physreg. They don't affect register allocation, and they will be removed
by the rewriter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131521 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix typo.
Cameron Zwarich [Wed, 18 May 2011 02:29:50 +0000 (02:29 +0000)]
Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131519 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix more of PR8825 by correctly using rGPR registers when lowering atomic
Cameron Zwarich [Wed, 18 May 2011 02:20:07 +0000 (02:20 +0000)]
Fix more of PR8825 by correctly using rGPR registers when lowering atomic
compare-and-swap intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131518 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoStart trying to make InstCombine preserve more debug info. The idea here is to set...
Eli Friedman [Wed, 18 May 2011 01:28:27 +0000 (01:28 +0000)]
Start trying to make InstCombine preserve more debug info.  The idea here is to set the debug location on the IRBuilder, which will be then right location in most cases.  This should magically give many transformations debug locations, and fixing places which are missing a debug location will usually just means changing the code creating it to use the IRBuilder.

As an example, the change to InstCombineCalls catches a common case where a call to a bitcast of a function is rewritten.

Chris, does this approach look reasonable?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131516 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoUse ReplaceInstUsesWith instead of replaceAllUsesWith where appropriate in instcombine.
Eli Friedman [Wed, 18 May 2011 00:32:01 +0000 (00:32 +0000)]
Use ReplaceInstUsesWith instead of replaceAllUsesWith where appropriate in instcombine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131512 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMake some of the fast-isel tests actually test fast-isel (and fix test failures).
Eli Friedman [Wed, 18 May 2011 00:00:10 +0000 (00:00 +0000)]
Make some of the fast-isel tests actually test fast-isel (and fix test failures).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131510 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPreseve line numbers while simplifying CFG.
Devang Patel [Tue, 17 May 2011 23:29:05 +0000 (23:29 +0000)]
Preseve line numbers while simplifying CFG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131508 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoActually, the address operand of the Thumb2 LDREX / STREX instructions *can*
Cameron Zwarich [Tue, 17 May 2011 23:26:20 +0000 (23:26 +0000)]
Actually, the address operand of the Thumb2 LDREX / STREX instructions *can*
take r13, so we can just make it a GPR. This fixes PR8825.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131507 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoCorrect a minor problem with the Thumb2 LDREX and STREX instruction encodings. They
Cameron Zwarich [Tue, 17 May 2011 23:11:12 +0000 (23:11 +0000)]
Correct a minor problem with the Thumb2 LDREX and STREX instruction encodings. They
were marked as taking a tGPR when in reality they take an rGPR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131506 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoConditionalize the format of the GCOV files by target type. Darwin uses the 4.2
Bill Wendling [Tue, 17 May 2011 23:05:13 +0000 (23:05 +0000)]
Conditionalize the format of the GCOV files by target type. Darwin uses the 4.2
format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131503 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMake fast-isel miss counting in -stats and -fast-isel-verbose take terminators into...
Eli Friedman [Tue, 17 May 2011 23:02:10 +0000 (23:02 +0000)]
Make fast-isel miss counting in -stats and -fast-isel-verbose take terminators into account; since there are many fewer isel misses with recent changes, misses caused by terminators are more significant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131502 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMisc. code cleanups.
Dan Gohman [Tue, 17 May 2011 22:22:52 +0000 (22:22 +0000)]
Misc. code cleanups.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131497 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMisc. code cleanups.
Dan Gohman [Tue, 17 May 2011 22:20:36 +0000 (22:20 +0000)]
Misc. code cleanups.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131495 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoX86 pmovsx/pmovzx ignore the upper half of their inputs.
Stuart Hastings [Tue, 17 May 2011 22:13:31 +0000 (22:13 +0000)]
X86 pmovsx/pmovzx ignore the upper half of their inputs.
rdar://problem/6945110

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131493 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agovrev is incorrectly defined in the perfect shuffle table. The ordering is backwards...
Tanya Lattner [Tue, 17 May 2011 20:48:40 +0000 (20:48 +0000)]
vrev is incorrectly defined in the perfect shuffle table. The ordering is backwards (should be 0x3210 versus 0x1032) which exposed a bug when doing a shuffle on a 4xi16. I've attached a test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131488 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPreserve line number information.
Devang Patel [Tue, 17 May 2011 20:00:02 +0000 (20:00 +0000)]
Preserve line number information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131482 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSet debug loc for new load instruction.
Devang Patel [Tue, 17 May 2011 19:43:38 +0000 (19:43 +0000)]
Set debug loc for new load instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131481 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPreserve line number information.
Devang Patel [Tue, 17 May 2011 19:43:06 +0000 (19:43 +0000)]
Preserve line number information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131480 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMove test for appropriate directory.
Galina Kistanova [Tue, 17 May 2011 19:06:43 +0000 (19:06 +0000)]
Move test for appropriate directory.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131477 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoEnable autodetect of popcnt
Mon P Wang [Tue, 17 May 2011 18:33:37 +0000 (18:33 +0000)]
Enable autodetect of popcnt

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131476 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFrame indices are signed. Update MachineOperand methods accordingly.
Jim Grosbach [Tue, 17 May 2011 18:29:21 +0000 (18:29 +0000)]
Frame indices are signed. Update MachineOperand methods accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131475 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd x86 fast-isel for calls returning first-class aggregates. rdar://9435872.
Eli Friedman [Tue, 17 May 2011 18:29:03 +0000 (18:29 +0000)]
Add x86 fast-isel for calls returning first-class aggregates.  rdar://9435872.

This is r131438 with a couple small fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131474 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoClean up the mess created by r131467+r131469.
Eli Friedman [Tue, 17 May 2011 18:02:22 +0000 (18:02 +0000)]
Clean up the mess created by r131467+r131469.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131471 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRevert 131467 due to buildbot complaint.
Stuart Hastings [Tue, 17 May 2011 16:59:46 +0000 (16:59 +0000)]
Revert 131467 due to buildbot complaint.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131469 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix an obscure issue in X86_64 parameter passing: if a tiny byval is
Stuart Hastings [Tue, 17 May 2011 16:45:55 +0000 (16:45 +0000)]
Fix an obscure issue in X86_64 parameter passing: if a tiny byval is
passed as the fifth parameter, insure it's passed correctly (in R9).
rdar://problem/6920088

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131467 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTweak cross-class coalescing to be more aggressive when the target class is small.
Jakob Stoklund Olesen [Tue, 17 May 2011 16:38:37 +0000 (16:38 +0000)]
Tweak cross-class coalescing to be more aggressive when the target class is small.

The greedy register allocator has live range splitting and register class
inflation, so it can actually fully undo this join, including restoring the
original register classes.

We still don't want to do this for long live ranges, mostly because of the high
register pressure of there are many constrained live ranges overlapping.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131466 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDon't include information about the build into the information returned by
Rafael Espindola [Tue, 17 May 2011 15:26:34 +0000 (15:26 +0000)]
Don't include information about the build into the information returned by
getHostTriple. This fixes a 32 bit clang running on a 64 bit ubuntu.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131463 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix a bug in PerformEXTRACT_VECTOR_ELTCombine. The code created an ADD SDNode
Nadav Rotem [Tue, 17 May 2011 08:31:57 +0000 (08:31 +0000)]
Fix a bug in PerformEXTRACT_VECTOR_ELTCombine. The code created an ADD SDNode
with two different types, in cases where the index and the ptr had different
types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131461 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoUpdate comment.
Eric Christopher [Tue, 17 May 2011 08:16:14 +0000 (08:16 +0000)]
Update comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131459 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSupport XOR and AND optimization with no return value.
Eric Christopher [Tue, 17 May 2011 08:10:18 +0000 (08:10 +0000)]
Support XOR and AND optimization with no return value.

Finishes off rdar://8470697

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131458 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoCouple less magic numbers.
Eric Christopher [Tue, 17 May 2011 07:50:41 +0000 (07:50 +0000)]
Couple less magic numbers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131457 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMake this code a little less magic number laden.
Eric Christopher [Tue, 17 May 2011 07:47:55 +0000 (07:47 +0000)]
Make this code a little less magic number laden.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131456 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoadd a note
Chris Lattner [Tue, 17 May 2011 07:22:33 +0000 (07:22 +0000)]
add a note

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131455 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDrop lli, revise test.
Stuart Hastings [Tue, 17 May 2011 02:38:59 +0000 (02:38 +0000)]
Drop lli, revise test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131452 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoBack out r131444 and r131438; they're breaking nightly tests. I'll look into
Eli Friedman [Tue, 17 May 2011 02:36:59 +0000 (02:36 +0000)]
Back out r131444 and r131438; they're breaking nightly tests.  I'll look into
it more tomorrow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131451 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix test.
Eli Friedman [Tue, 17 May 2011 00:39:14 +0000 (00:39 +0000)]
Fix test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131444 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd target triple so test doesn't fail on Windows machines.
Evan Cheng [Tue, 17 May 2011 00:15:58 +0000 (00:15 +0000)]
Add target triple so test doesn't fail on Windows machines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131439 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd x86 fast-isel for calls returning first-class aggregates. rdar://9435872.
Eli Friedman [Tue, 17 May 2011 00:13:47 +0000 (00:13 +0000)]
Add x86 fast-isel for calls returning first-class aggregates.  rdar://9435872.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131438 91177308-0d34-0410-b5e6-96231b3b80d8

13 years ago@llvm.lifetime.begin acts as a load, not @llvm.lifetime.end.
Owen Anderson [Tue, 17 May 2011 00:05:49 +0000 (00:05 +0000)]
@llvm.lifetime.begin acts as a load, not @llvm.lifetime.end.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131437 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTeach LiveInterval::isZeroLength about null SlotIndexes.
Jakob Stoklund Olesen [Mon, 16 May 2011 23:50:05 +0000 (23:50 +0000)]
Teach LiveInterval::isZeroLength about null SlotIndexes.

When instructions are deleted, they leave tombstone SlotIndex entries.
The isZeroLength method should ignore these null indexes.

This causes RABasic to sometimes spill a callee-saved register in the
abi-isel.ll test, so don't run that test with -regalloc=basic.  Prioritizing
register allocation according to spill weight can cause more registers to be
used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131436 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoKill some dead code.
Jim Grosbach [Mon, 16 May 2011 22:24:07 +0000 (22:24 +0000)]
Kill some dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131431 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDelete unused variables.
Dan Gohman [Mon, 16 May 2011 22:19:54 +0000 (22:19 +0000)]
Delete unused variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131430 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTrim #includes.
Dan Gohman [Mon, 16 May 2011 22:14:50 +0000 (22:14 +0000)]
Trim #includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131429 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix whitespace and 80-column violations.
Dan Gohman [Mon, 16 May 2011 22:09:53 +0000 (22:09 +0000)]
Fix whitespace and 80-column violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131428 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoThere is no need to force DebugLoc on a PHI at this point.
Devang Patel [Mon, 16 May 2011 22:05:03 +0000 (22:05 +0000)]
There is no need to force DebugLoc on a PHI at this point.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131427 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTrack how many insns fast-isel successfully selects as well as how many it
Jim Grosbach [Mon, 16 May 2011 21:51:07 +0000 (21:51 +0000)]
Track how many insns fast-isel successfully selects as well as how many it
misses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131426 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRemove dead code. Fix associated test to use FileCheck.
Eli Friedman [Mon, 16 May 2011 21:28:22 +0000 (21:28 +0000)]
Remove dead code.  Fix associated test to use FileCheck.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131424 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPreserve debug info for unused zero extended boolean argument.
Devang Patel [Mon, 16 May 2011 21:24:05 +0000 (21:24 +0000)]
Preserve debug info for unused zero extended boolean argument.
Radar 9422775.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131422 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd a method I forgot in the last commit. Don't worry, this one passed
Charles Davis [Mon, 16 May 2011 21:13:58 +0000 (21:13 +0000)]
Add a method I forgot in the last commit. Don't worry, this one passed
self-host :).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131421 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMake fast-isel work correctly s/uadd.with.overflow intrinsics.
Eli Friedman [Mon, 16 May 2011 21:06:17 +0000 (21:06 +0000)]
Make fast-isel work correctly s/uadd.with.overflow intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131420 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix silly typo.
Eli Friedman [Mon, 16 May 2011 20:34:53 +0000 (20:34 +0000)]
Fix silly typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131419 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoBasic fast-isel of extractvalue. Not too helpful on its own, given the IR clang...
Eli Friedman [Mon, 16 May 2011 20:27:46 +0000 (20:27 +0000)]
Basic fast-isel of extractvalue.  Not too helpful on its own, given the IR clang generates for cases like this, but it should become more useful soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131417 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix errors in this llvm ir example.
Nick Lewycky [Mon, 16 May 2011 19:29:30 +0000 (19:29 +0000)]
Fix errors in this llvm ir example.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131416 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd a FIXME reminder to remove ForceARMElfPIC switch.
Jason W Kim [Mon, 16 May 2011 16:35:21 +0000 (16:35 +0000)]
Add a FIXME reminder to remove ForceARMElfPIC switch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131411 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agosets bit 0 of the function address of thumb function in .symtab
Rafael Espindola [Mon, 16 May 2011 16:17:21 +0000 (16:17 +0000)]
sets bit 0 of the function address of thumb function in .symtab
("T is 1 if the target symbol S has type STT_FUNC and the
symbol addresses a Thumb instruction ;it is 0 otherwise."
from "ELF for the ARM Architecture" 4.7.1.2)

Patch by Koan-Sin Tan!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131406 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoExtra refactoring noticed by Eli Friedman.
Rafael Espindola [Mon, 16 May 2011 15:48:45 +0000 (15:48 +0000)]
Extra refactoring noticed by Eli Friedman.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131405 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRemove redundant template partial specilization.
Zhongxing Xu [Mon, 16 May 2011 12:42:22 +0000 (12:42 +0000)]
Remove redundant template partial specilization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131402 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDon't do tail calls in a function that call setjmp. The stack might be
Rafael Espindola [Mon, 16 May 2011 03:05:33 +0000 (03:05 +0000)]
Don't do tail calls in a function that call setjmp. The stack might be
corrupted when setjmp returns again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131399 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix copy-pasto.
Charles Davis [Sun, 15 May 2011 17:28:27 +0000 (17:28 +0000)]
Fix copy-pasto.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131384 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd stub methods to MCStreamer for emitting Win64 exception-handling
Charles Davis [Sun, 15 May 2011 17:20:01 +0000 (17:20 +0000)]
Add stub methods to MCStreamer for emitting Win64 exception-handling
information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131382 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoGet rid of extern "C" from the Win64 EH header.
Charles Davis [Sun, 15 May 2011 17:09:26 +0000 (17:09 +0000)]
Get rid of extern "C" from the Win64 EH header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131381 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd a header containing definitions used to implement Win64 exception handling.
Charles Davis [Sun, 15 May 2011 14:42:22 +0000 (14:42 +0000)]
Add a header containing definitions used to implement Win64 exception handling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131380 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDeclare this function here so that it doesn't get C++ mangling.
Nick Lewycky [Sun, 15 May 2011 07:20:34 +0000 (07:20 +0000)]
Declare this function here so that it doesn't get C++ mangling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131379 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDisable test harder.
Benjamin Kramer [Sat, 14 May 2011 19:30:39 +0000 (19:30 +0000)]
Disable test harder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131363 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDisable this test while I revise it. rdar://problem/9267970
Stuart Hastings [Sat, 14 May 2011 18:39:05 +0000 (18:39 +0000)]
Disable this test while I revise it. rdar://problem/9267970

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131350 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSimplifyCFG: Use ComputeMaskedBits to prune dead cases from switch instructions.
Benjamin Kramer [Sat, 14 May 2011 15:57:25 +0000 (15:57 +0000)]
SimplifyCFG: Use ComputeMaskedBits to prune dead cases from switch instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131345 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAvoid combining GEPs that might overflow at runtime.
Stuart Hastings [Sat, 14 May 2011 05:55:10 +0000 (05:55 +0000)]
Avoid combining GEPs that might overflow at runtime.
rdar://problem/9267970

Patch by Julien Lerouge!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131339 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix a FIXME by moving the fast-isel implementation of the objectsize intrinsic from...
Eli Friedman [Sat, 14 May 2011 00:47:51 +0000 (00:47 +0000)]
Fix a FIXME by moving the fast-isel implementation of the objectsize intrinsic from the x86 code to the generic code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131332 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDon't produce a vmovntdq if we don't have AVX support.
Rafael Espindola [Sat, 14 May 2011 00:30:01 +0000 (00:30 +0000)]
Don't produce a vmovntdq if we don't have AVX support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131330 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoZap useless code; this hasn't done anything useful since fast-isel switched to being...
Eli Friedman [Sat, 14 May 2011 00:19:32 +0000 (00:19 +0000)]
Zap useless code; this hasn't done anything useful since fast-isel switched to being bottom-up (a very long time ago).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131329 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd an operator+= for appending StringRefs onto std::strings.
John McCall [Fri, 13 May 2011 23:58:45 +0000 (23:58 +0000)]
Add an operator+= for appending StringRefs onto std::strings.
Previously this pattern would be compiled using an implicit conversion
to std::string.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131325 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoBe a bit more permissive about symbols we don't understand. Just skip them
Jim Grosbach [Fri, 13 May 2011 23:11:30 +0000 (23:11 +0000)]
Be a bit more permissive about symbols we don't understand. Just skip them
rather than throwing an error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131322 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoExecutionEngine: move createJIT() definition (v2)
Dylan Noblesmith [Fri, 13 May 2011 22:02:53 +0000 (22:02 +0000)]
ExecutionEngine: move createJIT() definition (v2)

As an ExecutionEngine class function, its definition
really belongs in ExecutionEngine.cpp, not JIT.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131320 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoExecutionEngine: push TargetMachine creation into clients (v2)
Dylan Noblesmith [Fri, 13 May 2011 21:51:29 +0000 (21:51 +0000)]
ExecutionEngine: push TargetMachine creation into clients (v2)

In particular, into EngineBuilder. This should only impact
the private API between the EE and EB classes, not external
clients, since JITCtor and MCJITCtor are both protected members.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131317 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoExecutionEngine: fix JIT/MCJIT selectTarget() duplication (v2)
Dylan Noblesmith [Fri, 13 May 2011 21:36:16 +0000 (21:36 +0000)]
ExecutionEngine: fix JIT/MCJIT selectTarget() duplication (v2)

This prepares for making JITCtor/MCJITCtor take a
TargetMachine* directly from clients like EngineBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131316 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMove test.
Rafael Espindola [Fri, 13 May 2011 21:35:17 +0000 (21:35 +0000)]
Move test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131315 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMove test.
Rafael Espindola [Fri, 13 May 2011 21:33:32 +0000 (21:33 +0000)]
Move test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131314 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTeach the RtDyld to tell the memory manager about how much space a function
Jim Grosbach [Fri, 13 May 2011 20:12:14 +0000 (20:12 +0000)]
Teach the RtDyld to tell the memory manager about how much space a function
actually takes rather than how much memory was allocated for it. This
is more accurate and should help the manager pack things more effectively.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131305 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMove platform-dependent test to appropriate directory.
Galina Kistanova [Fri, 13 May 2011 19:45:05 +0000 (19:45 +0000)]
Move platform-dependent test to appropriate directory.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131302 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMake codegen able to handle values of empty types. This is one way
Rafael Espindola [Fri, 13 May 2011 15:18:06 +0000 (15:18 +0000)]
Make codegen able to handle values of empty types. This is one way
to fix PR9900. I will keep it open until sable is able to comment on it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131294 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix a source of non determinism in FindUsedTypes, use a SetVector instead of a
Julien Lerouge [Fri, 13 May 2011 05:20:42 +0000 (05:20 +0000)]
Fix a source of non determinism in FindUsedTypes, use a SetVector instead of a
set.

rdar://9423996

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131283 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRe-add the autoconf rule for the docs/doxygen.cfg file.
Peter Collingbourne [Fri, 13 May 2011 03:27:56 +0000 (03:27 +0000)]
Re-add the autoconf rule for the docs/doxygen.cfg file.
For some reason this was not reverted when r103213 was.

At the same time, add an optional rule for clang's doxygen.cfg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131279 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoConvert SimplifyIVUsers into a worklist instead of a single pass over
Andrew Trick [Fri, 13 May 2011 01:12:21 +0000 (01:12 +0000)]
Convert SimplifyIVUsers into a worklist instead of a single pass over
the users.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131277 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSince I can't reproduce the failures from 131261, re-trying with a
Stuart Hastings [Fri, 13 May 2011 00:51:54 +0000 (00:51 +0000)]
Since I can't reproduce the failures from 131261, re-trying with a
simplified version.  <rdar://problem/9298790>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131274 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRevert 131266 and 131261 due to buildbot complaints.
Stuart Hastings [Fri, 13 May 2011 00:15:17 +0000 (00:15 +0000)]
Revert 131266 and 131261 due to buildbot complaints.
rdar://problem/9298790

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131269 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTweak 131261 (thumb2-cbnz.ll) to generate the intended cbnz.
Stuart Hastings [Fri, 13 May 2011 00:10:03 +0000 (00:10 +0000)]
Tweak 131261 (thumb2-cbnz.ll) to generate the intended cbnz.
rdar://problem/9298790

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131266 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoNon-fast-isel followup to 129634; correctly handle branches controlled
Stuart Hastings [Thu, 12 May 2011 23:36:41 +0000 (23:36 +0000)]
Non-fast-isel followup to 129634; correctly handle branches controlled
by non-CMP expressions.  The executable test case (129821) would test
this as well, if we had an "-O0 -disable-arm-fast-isel" LLVM-GCC
tester.  Alas, the ARM assembly would be very difficult to check with
FileCheck.

The thumb2-cbnz.ll test is affected; it generates larger code (tst.w
vs. cmp #0), but I believe the new version is correct.
rdar://problem/9298790

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131261 91177308-0d34-0410-b5e6-96231b3b80d8