oota-llvm.git
16 years agoMinor spelling and typo fixes.
John Criswell [Tue, 29 Apr 2008 22:12:40 +0000 (22:12 +0000)]
Minor spelling and typo fixes.

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

16 years agoRevert r50441. The original code was correct. Add some more comments so that I...
Owen Anderson [Tue, 29 Apr 2008 21:51:00 +0000 (21:51 +0000)]
Revert r50441.  The original code was correct.  Add some more comments so that I don't make the same mistake in the future.

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

16 years agoFix a bug in memcpyopt where the memcpy-memcpy transform was never being applied...
Owen Anderson [Tue, 29 Apr 2008 21:26:06 +0000 (21:26 +0000)]
Fix a bug in memcpyopt where the memcpy-memcpy transform was never being applied because
we were checking for it in the wrong order.  This caused a miscompilation because the
return slot optimization assumes that the call it is dealing with is NOT a memcpy.

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

16 years agoWe should be returning true here since we've changed the function.
Owen Anderson [Tue, 29 Apr 2008 21:02:46 +0000 (21:02 +0000)]
We should be returning true here since we've changed the function.

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

16 years agoA lot of cleanups and documentation improvements, as well as a few corner case fixes...
Owen Anderson [Tue, 29 Apr 2008 20:59:33 +0000 (20:59 +0000)]
A lot of cleanups and documentation improvements, as well as a few corner case fixes.  Most
of this was suggested by Chris.

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

16 years agoRename DeadLoopElimination to LoopDeletion, part 2.
Owen Anderson [Tue, 29 Apr 2008 20:06:54 +0000 (20:06 +0000)]
Rename DeadLoopElimination to LoopDeletion, part 2.

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

16 years agoRename DeadLoopElimination to LoopDeletion, part one.
Owen Anderson [Tue, 29 Apr 2008 19:58:07 +0000 (19:58 +0000)]
Rename DeadLoopElimination to LoopDeletion, part one.

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

16 years agoDon't do stupid things: doInitialization(Module&) is not applicable to ModulePass :)
Anton Korobeynikov [Tue, 29 Apr 2008 18:16:22 +0000 (18:16 +0000)]
Don't do stupid things: doInitialization(Module&) is not applicable to ModulePass :)

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

16 years agodon't eliminate load from volatile value on paths where the load is dead.
Chris Lattner [Tue, 29 Apr 2008 17:28:22 +0000 (17:28 +0000)]
don't eliminate load from volatile value on paths where the load is dead.
This fixes the second half of PR2262

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

16 years agomake this test reduced and *valid*
Chris Lattner [Tue, 29 Apr 2008 17:25:32 +0000 (17:25 +0000)]
make this test reduced and *valid*

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

16 years agofix a subtle volatile handling bug.
Chris Lattner [Tue, 29 Apr 2008 17:13:43 +0000 (17:13 +0000)]
fix a subtle volatile handling bug.

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

16 years agoUse std::set instead of std::priority_queue for the RegReductionPriorityQueue.
Roman Levenstein [Tue, 29 Apr 2008 09:07:59 +0000 (09:07 +0000)]
Use std::set instead of std::priority_queue for the RegReductionPriorityQueue.
This removes the existing bottleneck related to the removal of elements from
the middle of the queue.

Also fixes a subtle bug in ScheduleDAGRRList::CapturePred:
It was updating the state of the SUnit before removing it. As a result, the
comparison operators were working incorrectly and this SUnit could not be removed
from the queue properly.

Reviewed by Evan and Dan. Approved by Dan.

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

16 years agoImplement more aggressive support for analyzing string length. This
Chris Lattner [Tue, 29 Apr 2008 06:56:02 +0000 (06:56 +0000)]
Implement more aggressive support for analyzing string length.  This
generalizes the previous code to handle the case when the string is not
an immediate to the strlen call (for example, crazy stuff like
strlen(c ? "foo" : "bart"+1) -> 3).  This implements
gcc.c-torture/execute/builtins/strlen-2.c.  I will generalize other
cases in simplifylibcalls to use the same routine later.

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

16 years agoClarify what we mean by a dead loop.
Owen Anderson [Tue, 29 Apr 2008 06:34:55 +0000 (06:34 +0000)]
Clarify what we mean by a dead loop.

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

16 years agonew testcase for PR2094. The inline asms should not pin allocas to the
Chris Lattner [Tue, 29 Apr 2008 05:53:29 +0000 (05:53 +0000)]
new testcase for PR2094.  The inline asms should not pin allocas to the
stack anymore.

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

16 years agodon't delete the last store to an alloca if the store is volatile.
Chris Lattner [Tue, 29 Apr 2008 04:58:38 +0000 (04:58 +0000)]
don't delete the last store to an alloca if the store is volatile.

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

16 years agomake the vector conversion magic handle multiple results.
Chris Lattner [Tue, 29 Apr 2008 04:48:56 +0000 (04:48 +0000)]
make the vector conversion magic handle multiple results.
We now compile test2/test3 to:

_test2:
## InlineAsm Start
set %xmm0, %xmm1
## InlineAsm End
addps %xmm1, %xmm0
ret
_test3:
## InlineAsm Start
set %xmm0, %xmm1
## InlineAsm End
paddd %xmm1, %xmm0
ret

as expected.

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

16 years agoadd support for multiple return values in inline asm. This is a step
Chris Lattner [Tue, 29 Apr 2008 04:29:54 +0000 (04:29 +0000)]
add support for multiple return values in inline asm. This is a step
towards PR2094.  It now compiles the attached .ll file to:

_sad16_sse2:
movslq %ecx, %rax
## InlineAsm Start
%ecx %rdx %rax %rax %r8d %rdx %rsi
## InlineAsm End
## InlineAsm Start
set %eax
## InlineAsm End
ret

which is pretty decent for a 3 output, 4 input asm.

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

16 years agoAnother extract_subreg coalescing bug.
Evan Cheng [Tue, 29 Apr 2008 01:41:44 +0000 (01:41 +0000)]
Another extract_subreg coalescing bug.
e.g.
vr1024<2> extract_subreg vr1025, 2
If vr1024 do not have the same register class as vr1025, it's not safe to coalesce this away. For example, vr1024 might be a GPR32 while vr1025 might be a GPR64.

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

16 years agoAdd some more comments.
Owen Anderson [Tue, 29 Apr 2008 00:45:15 +0000 (00:45 +0000)]
Add some more comments.

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

16 years agoRemove debugging code.
Owen Anderson [Tue, 29 Apr 2008 00:39:24 +0000 (00:39 +0000)]
Remove debugging code.

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

16 years agoAdd dead loop elimination, which removes dead loops for which we can compute
Owen Anderson [Tue, 29 Apr 2008 00:38:34 +0000 (00:38 +0000)]
Add dead loop elimination, which removes dead loops for which we can compute
the trip count.

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

16 years agoAdd -march=x86.
Evan Cheng [Mon, 28 Apr 2008 23:31:41 +0000 (23:31 +0000)]
Add -march=x86.

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

16 years agoUpdate and_ops.ll according to the recent dagcombiner changes.
Dan Gohman [Mon, 28 Apr 2008 23:26:22 +0000 (23:26 +0000)]
Update and_ops.ll according to the recent dagcombiner changes.
Add a new test, and_ops_more.ll, which is XFAIL'd, to
record the parts of and_ops.ll that were affected by this
change.

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

16 years agoTest case.
Evan Cheng [Mon, 28 Apr 2008 22:14:34 +0000 (22:14 +0000)]
Test case.

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

16 years agoFix a bug in RegsForValue::getCopyToRegs() that causes cyclical scheduling units...
Evan Cheng [Mon, 28 Apr 2008 22:07:13 +0000 (22:07 +0000)]
Fix a bug in RegsForValue::getCopyToRegs() that causes cyclical scheduling units. If it's creating multiple CopyToReg nodes that are "flagged" together, it should not create a TokenFactor for it's chain outputs:

c1, f1 = CopyToReg
c2, f2 = CopyToReg
c3     = TokenFactor c1, c2
 ...
       = user c3, ..., f2

Now that the two CopyToReg's and the user are "flagged" together. They effectively forms a single scheduling unit. The TokenFactor is now both an operand and a successor of the Flagged nodes.

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

16 years agoCorrect parameter attributes encoding for C bindings.
Anton Korobeynikov [Mon, 28 Apr 2008 21:48:04 +0000 (21:48 +0000)]
Correct parameter attributes encoding for C bindings.
Patch by Anders Johnsen!

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

16 years agoAdd possibility of using arbitrary to to execute stuff from bugpoint.
Anton Korobeynikov [Mon, 28 Apr 2008 20:53:48 +0000 (20:53 +0000)]
Add possibility of using arbitrary to to execute stuff from bugpoint.
Patch by Pekka Jääskeläinen!

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

16 years agoFix a pointer-arithmetic bug that caused 64-bit host pointer values to
Dan Gohman [Mon, 28 Apr 2008 20:25:15 +0000 (20:25 +0000)]
Fix a pointer-arithmetic bug that caused 64-bit host pointer values to
be truncated to 32 bits. This fixes the recent Benchmarks/McCat/09-vor
regression on x86-64, among other things.

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

16 years agoFix DSE to not eliminate volatile loads with no uses.
Dan Gohman [Mon, 28 Apr 2008 19:51:27 +0000 (19:51 +0000)]
Fix DSE to not eliminate volatile loads with no uses.

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

16 years agoDon't try to convert PPC long double.
Dale Johannesen [Mon, 28 Apr 2008 19:46:58 +0000 (19:46 +0000)]
Don't try to convert PPC long double.

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

16 years agoEvan pointed out that folding sext to zext may not be correct
Dan Gohman [Mon, 28 Apr 2008 18:47:17 +0000 (18:47 +0000)]
Evan pointed out that folding sext to zext may not be correct
if the zext is not legal.

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

16 years agoDelete an unused constructor.
Dan Gohman [Mon, 28 Apr 2008 18:28:49 +0000 (18:28 +0000)]
Delete an unused constructor.

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

16 years agoAdd a comment to CreateRegForValue that clarifies the handling of
Dan Gohman [Mon, 28 Apr 2008 18:19:43 +0000 (18:19 +0000)]
Add a comment to CreateRegForValue that clarifies the handling of
aggregate types.

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

16 years agoRewrite the comments for RegsForValue and its members, and
Dan Gohman [Mon, 28 Apr 2008 18:10:39 +0000 (18:10 +0000)]
Rewrite the comments for RegsForValue and its members, and
reorder some of the members for clarity.

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

16 years agoAdd more alignment enums.
Ted Kremenek [Mon, 28 Apr 2008 17:58:20 +0000 (17:58 +0000)]
Add more alignment enums.

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

16 years agoBug fix in BumpPtrAllocator: don't assume that all objects have the same alignment...
Ted Kremenek [Mon, 28 Apr 2008 17:58:07 +0000 (17:58 +0000)]
Bug fix in BumpPtrAllocator: don't assume that all objects have the same alignment.  "Bump" of the pointer for the next allocated object to be of the specified alignment.

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

16 years agoDon't call size() on each iteration of the loop.
Dan Gohman [Mon, 28 Apr 2008 17:42:03 +0000 (17:42 +0000)]
Don't call size() on each iteration of the loop.

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

16 years agoExpose parameter attributes via C bindings.
Gordon Henriksen [Mon, 28 Apr 2008 17:37:06 +0000 (17:37 +0000)]
Expose parameter attributes via C bindings.

Patch by Anders Johnsen!

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

16 years agoFix the SVOffset values for loads and stores produced by
Dan Gohman [Mon, 28 Apr 2008 17:15:20 +0000 (17:15 +0000)]
Fix the SVOffset values for loads and stores produced by
memcpy/memset expansion. It was a bug for the SVOffset value
to be used in the actual address calculations.

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

16 years agoTeach InstCombine's ComputeMaskedBits what SelectionDAG's
Dan Gohman [Mon, 28 Apr 2008 17:02:21 +0000 (17:02 +0000)]
Teach InstCombine's ComputeMaskedBits what SelectionDAG's
ComputeMaskedBits knows about cttz, ctlz, and ctpop. Teach
SelectionDAG's ComputeMaskedBits what InstCombine's knows
about SRem. And teach them both some things about high bits
in Mul, UDiv, URem, and Sub. This allows instcombine and
dagcombine to eliminate sign-extension operations in
several new cases.

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

16 years agoTeach DAGCombine to convert (sext x) to (zext x) when the
Dan Gohman [Mon, 28 Apr 2008 16:58:24 +0000 (16:58 +0000)]
Teach DAGCombine to convert (sext x) to (zext x) when the
sign-bit of x is known to be zero.

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

16 years agoAdd support for response files to the CommandLine library.
Mikhail Glushenkov [Mon, 28 Apr 2008 16:44:25 +0000 (16:44 +0000)]
Add support for response files to the CommandLine library.

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

16 years agoFix FP return for Win64 ABI
Anton Korobeynikov [Mon, 28 Apr 2008 07:40:07 +0000 (07:40 +0000)]
Fix FP return for Win64 ABI

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

16 years agoAnother collection of random cleanups. No functionality change.
Chris Lattner [Mon, 28 Apr 2008 07:16:35 +0000 (07:16 +0000)]
Another collection of random cleanups.  No functionality change.

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

16 years agoRemove the SmallVector ctor that converts from a SmallVectorImpl. This
Chris Lattner [Mon, 28 Apr 2008 06:44:42 +0000 (06:44 +0000)]
Remove the SmallVector ctor that converts from a SmallVectorImpl.  This
conversion open the door for many nasty implicit conversion issues, and
can be easily solved by initializing with (V.begin(), V.end()) when
needed.

This patch includes many small cleanups for sdisel also.

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

16 years agorestore the copy ctor in SmallVector. This fixes serious
Chris Lattner [Mon, 28 Apr 2008 06:32:08 +0000 (06:32 +0000)]
restore the copy ctor in SmallVector.  This fixes serious
errors I introduced in my last patch.

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

16 years agoswitch RegsForValue::Regs to be a SmallVector to avoid
Chris Lattner [Mon, 28 Apr 2008 06:02:19 +0000 (06:02 +0000)]
switch RegsForValue::Regs to be a SmallVector to avoid
heap thrash on tiny (usually single-element) vectors.

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

16 years agogeneralize SmallVector copy ctor, there is no requirement for
Chris Lattner [Mon, 28 Apr 2008 06:01:06 +0000 (06:01 +0000)]
generalize SmallVector copy ctor, there is no requirement for
the initialization vector to have the same fixed size, just the
same element type.

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

16 years agoFix PR2256, yet another miscompilation in simplifycfg of i
Chris Lattner [Mon, 28 Apr 2008 00:19:07 +0000 (00:19 +0000)]
Fix PR2256, yet another miscompilation in simplifycfg of i
multiple return values.

Bill, please pull this into Tak.

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

16 years agoseveral multiple-retval fixes for bugpoint.
Chris Lattner [Mon, 28 Apr 2008 00:04:58 +0000 (00:04 +0000)]
several multiple-retval fixes for bugpoint.

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

16 years agomove static function out of anon namespace, no functionality change.
Chris Lattner [Sun, 27 Apr 2008 23:48:12 +0000 (23:48 +0000)]
move static function out of anon namespace, no functionality change.

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

16 years agoAnother step to getting multiple result inline asm to work.
Chris Lattner [Sun, 27 Apr 2008 23:44:28 +0000 (23:44 +0000)]
Another step to getting multiple result inline asm to work.

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

16 years agoAllow asms to return multiple results by value.
Chris Lattner [Sun, 27 Apr 2008 23:33:55 +0000 (23:33 +0000)]
Allow asms to return multiple results by value.

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

16 years agoProperly lower vararg's FORMAL_ARGUMENTS node on win64
Anton Korobeynikov [Sun, 27 Apr 2008 23:15:03 +0000 (23:15 +0000)]
Properly lower vararg's FORMAL_ARGUMENTS node on win64

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

16 years agoHandle fp80 for win64
Anton Korobeynikov [Sun, 27 Apr 2008 22:54:09 +0000 (22:54 +0000)]
Handle fp80 for win64

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

16 years agoAdded support for:
Bill Wendling [Sun, 27 Apr 2008 09:44:10 +0000 (09:44 +0000)]
Added support for:
- defm and multiclass
- imbricatable multiline C style comment
- FIXME/TODO highlight in comment
- binary and hexadecimal number
- code using [{ }] is no highlighted as special (perhaps not the best
choice)
Patch by Cedric Venet!

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

16 years agotypo
Chris Lattner [Sun, 27 Apr 2008 01:49:46 +0000 (01:49 +0000)]
typo

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

16 years agoImplement a signficant optimization for inline asm:
Chris Lattner [Sun, 27 Apr 2008 00:37:18 +0000 (00:37 +0000)]
Implement a signficant optimization for inline asm:
When choosing between constraints with multiple options,
like "ir", test to see if we can use the 'i' constraint and
go with that if possible.  This produces more optimal ASM in
all cases (sparing a register and an instruction to load it),
and fixes inline asm like this:

void test () {
  asm volatile (" %c0 %1 " : : "imr" (42), "imr"(14));
}

Previously we would dump "42" into a memory location (which
is ok for the 'm' constraint) which would cause a problem
because the 'c' modifier is not valid on memory operands.

Isn't it great how inline asm turns 'missed optimization'
into 'compile failed'??

Incidentally, this was the todo in
PowerPC/2007-04-24-InlineAsm-I-Modifier.ll

Please do NOT pull this into Tak.

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

16 years agoisa+cast -> dyn_cast
Chris Lattner [Sun, 27 Apr 2008 00:16:18 +0000 (00:16 +0000)]
isa+cast -> dyn_cast

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

16 years agoMove a bunch of inline asm code out of line.
Chris Lattner [Sun, 27 Apr 2008 00:09:47 +0000 (00:09 +0000)]
Move a bunch of inline asm code out of line.

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

16 years agoA few inline asm cleanups:
Chris Lattner [Sat, 26 Apr 2008 23:02:14 +0000 (23:02 +0000)]
A few inline asm cleanups:
  - Make targetlowering.h fit in 80 cols.
  - Make LowerAsmOperandForConstraint const.
  - Make lowerXConstraint -> LowerXConstraint
  - Make LowerXConstraint return a const char* instead of taking a string byref.

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

16 years agono need to implement this method and just have it call
Chris Lattner [Sat, 26 Apr 2008 22:59:59 +0000 (22:59 +0000)]
no need to implement this method and just have it call
the default impl.

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

16 years agoWhen SRoA'ing a global variable, make sure the new globals get the
Chris Lattner [Sat, 26 Apr 2008 07:40:11 +0000 (07:40 +0000)]
When SRoA'ing a global variable, make sure the new globals get the
appropriate alignment.  This fixes a miscompilation of 252.eon on
x86-64 (rdar://5891920).

Bill, please pull this into Tak.

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

16 years agoFeedback from chris
Nate Begeman [Fri, 25 Apr 2008 21:47:35 +0000 (21:47 +0000)]
Feedback from chris

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

16 years agoAdd a testcase for the recent "handle variable vector insert elt in mem" patch
Nate Begeman [Fri, 25 Apr 2008 21:26:59 +0000 (21:26 +0000)]
Add a testcase for the recent "handle variable vector insert elt in mem" patch

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

16 years agochange comments per review
Dale Johannesen [Fri, 25 Apr 2008 21:16:07 +0000 (21:16 +0000)]
change comments per review

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

16 years agoUpdate tests.
Evan Cheng [Fri, 25 Apr 2008 20:13:47 +0000 (20:13 +0000)]
Update tests.

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

16 years agoExtract the lower 64-bit if a MMX value is passed in a XMM register.
Evan Cheng [Fri, 25 Apr 2008 20:13:28 +0000 (20:13 +0000)]
Extract the lower 64-bit if a MMX value is passed in a XMM register.

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

16 years agoFix illegal MMX_MOVDQ2Qrr pattern. vector_extract result must be a scalar value.
Evan Cheng [Fri, 25 Apr 2008 20:12:46 +0000 (20:12 +0000)]
Fix illegal MMX_MOVDQ2Qrr pattern. vector_extract result must be a scalar value.

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

16 years agoSpecial handling for MMX values being passed in either GPR64 or lower 64-bits of...
Evan Cheng [Fri, 25 Apr 2008 19:11:04 +0000 (19:11 +0000)]
Special handling for MMX values being passed in either GPR64 or lower 64-bits of XMM registers.

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

16 years agoRemove the code from CodeGenPrepare that moved getresult instructions
Dan Gohman [Fri, 25 Apr 2008 18:27:55 +0000 (18:27 +0000)]
Remove the code from CodeGenPrepare that moved getresult instructions
to the block that defines their operands. This doesn't work in the
case that the operand is an invoke, because invoke is a terminator
and must be the last instruction in a block.

Replace it with support in SelectionDAGISel for copying struct values
into sequences of virtual registers.

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

16 years agoFix MMX_MOVQ2DQrr pattern. It's illegal to do a bitconvert from a smaller type to...
Evan Cheng [Fri, 25 Apr 2008 18:19:54 +0000 (18:19 +0000)]
Fix MMX_MOVQ2DQrr pattern. It's illegal to do a bitconvert from a smaller type to a larger one.

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

16 years agonew testcase
Chris Lattner [Fri, 25 Apr 2008 18:11:06 +0000 (18:11 +0000)]
new testcase

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

16 years agoPull the code to perform an INSERT_VECTOR_ELT in memory out into its own
Nate Begeman [Fri, 25 Apr 2008 18:07:40 +0000 (18:07 +0000)]
Pull the code to perform an INSERT_VECTOR_ELT in memory out into its own
function, and then use it to fix a bug in SplitVectorOp that expected inserts
to always have constant insertion indices.

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

16 years agoUpdate test
Anton Korobeynikov [Fri, 25 Apr 2008 17:54:21 +0000 (17:54 +0000)]
Update test

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

16 years agoFeedback from chris
Nate Begeman [Fri, 25 Apr 2008 17:45:52 +0000 (17:45 +0000)]
Feedback from chris

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

16 years agoadd a note
Chris Lattner [Fri, 25 Apr 2008 17:25:00 +0000 (17:25 +0000)]
add a note

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

16 years ago80 col violation.
Evan Cheng [Fri, 25 Apr 2008 17:21:40 +0000 (17:21 +0000)]
80 col violation.

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

16 years agoRemove 'unwinds to' support from mainline. This patch undoes r47802 r47989
Nick Lewycky [Fri, 25 Apr 2008 16:53:59 +0000 (16:53 +0000)]
Remove 'unwinds to' support from mainline. This patch undoes r47802 r47989
r48047 r48084 r48085 r48086 r48088 r48096 r48099 r48109 and r48123.

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

16 years agoNot checking for intrinsics which do not have a chain operand.
Evan Cheng [Fri, 25 Apr 2008 08:55:28 +0000 (08:55 +0000)]
Not checking for intrinsics which do not have a chain operand.

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

16 years ago- Switch from std::set to SmallPtrSet.
Evan Cheng [Fri, 25 Apr 2008 08:22:20 +0000 (08:22 +0000)]
- Switch from std::set to SmallPtrSet.
- Add comments.

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

16 years agoMMX argument passing fixes:
Evan Cheng [Fri, 25 Apr 2008 07:56:45 +0000 (07:56 +0000)]
MMX argument passing fixes:
On Darwin / Linux x86-32, v8i8, v4i16, v2i32 values are passed in MM[0-2].
On Darwin / Linux x86-32, v1i64 values are passed in memory.
On Darwin x86-64, v8i8, v4i16, v2i32 values are passed in XMM[0-7].
On Darwin x86-64, v1i64 values are passed in 64-bit GPRs.

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

16 years agoTeach the PruningFunctionCloner how to look through loads with
Nate Begeman [Fri, 25 Apr 2008 06:37:06 +0000 (06:37 +0000)]
Teach the PruningFunctionCloner how to look through loads with
ConstantExpression GEPs pointing into constant globals.

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

16 years agoLoosen up an assertion to allow intrinsics. I really have no
Chris Lattner [Fri, 25 Apr 2008 05:13:01 +0000 (05:13 +0000)]
Loosen up an assertion to allow intrinsics.  I really have no
idea what this code (findNonImmUse) does, so I'm only guessing
that this is the right thing.  It would be really really nice
if this had comments and perhaps switched to SmallPtrSet
(hint hint) :)

This fixes rdar://5886601, a crash on gcc.target/i386/sse4_1-pblendw.c

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

16 years agoDon't infininitely thread branches when a threaded edge
Chris Lattner [Fri, 25 Apr 2008 04:12:29 +0000 (04:12 +0000)]
Don't infininitely thread branches when a threaded edge
goes back to the block, e.g.:

  Threading edge through bool from 'bb37.us.thread3829' to 'bb37.us' with cost: 1, across block:

bb37.us: ; preds = %bb37.us.thread3829, %bb37.us, %bb33
%D1361.1.us = phi i32 [ %tmp36, %bb33 ], [ %D1361.1.us, %bb37.us ], [ 0, %bb37.us.thread3829 ] ; <i32> [#uses=2]
%tmp39.us = icmp eq i32 %D1361.1.us, 0 ; <i1> [#uses=1]
br i1 %tmp39.us, label %bb37.us, label %bb42.us

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

16 years agoPR2245: Misleading parameter name in llvm-c/Core.h:LLVMConstArray
Gordon Henriksen [Fri, 25 Apr 2008 03:21:19 +0000 (03:21 +0000)]
PR2245: Misleading parameter name in llvm-c/Core.h:LLVMConstArray

Applying fix by Frits van Bommel.

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

16 years agoPR2202: LLVMCreateInterpreter creates a JIT
Gordon Henriksen [Fri, 25 Apr 2008 02:52:30 +0000 (02:52 +0000)]
PR2202: LLVMCreateInterpreter creates a JIT

Applying fix by Frits van Bommel.

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

16 years agoFix bug in x86 memcpy / memset lowering. If there are trailing bytes not handled...
Evan Cheng [Fri, 25 Apr 2008 00:26:43 +0000 (00:26 +0000)]
Fix bug in x86 memcpy / memset lowering. If there are trailing bytes not handled by rep instructions, a new memcpy / memset is introduced for them. However, since source / destination addresses are already adjusted, their offsets should be zero.

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

16 years agoImplement != for DenseSet iterators.
Ted Kremenek [Thu, 24 Apr 2008 23:49:45 +0000 (23:49 +0000)]
Implement != for DenseSet iterators.

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

16 years agoAdded iterator support for DenseSet.
Ted Kremenek [Thu, 24 Apr 2008 23:48:12 +0000 (23:48 +0000)]
Added iterator support for DenseSet.

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

16 years agoNew test.
Evan Cheng [Thu, 24 Apr 2008 20:01:58 +0000 (20:01 +0000)]
New test.

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

16 years agoAdjust inline cost computation to be less aggressive.
Evan Cheng [Thu, 24 Apr 2008 18:42:47 +0000 (18:42 +0000)]
Adjust inline cost computation to be less aggressive.

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

16 years agoAdd EXTRA_OPTIONS on the llvmgxx command line.
Devang Patel [Thu, 24 Apr 2008 17:59:03 +0000 (17:59 +0000)]
Add EXTRA_OPTIONS on the llvmgxx command line.

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

16 years agoAdd EXTRA_OPTIONS on the llvmgcc command line.
Devang Patel [Thu, 24 Apr 2008 17:54:25 +0000 (17:54 +0000)]
Add EXTRA_OPTIONS on the llvmgcc command line.

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

16 years agooverlook Output directory
Gabor Greif [Thu, 24 Apr 2008 16:17:27 +0000 (16:17 +0000)]
overlook Output directory

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

16 years ago- Check if a register is livein before removing it. It may have already been removed.
Evan Cheng [Thu, 24 Apr 2008 09:06:33 +0000 (09:06 +0000)]
- Check if a register is livein before removing it. It may have already been removed.
- Do not iterate over SmallPtrSet, the order of iteration is not deterministic.

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

16 years ago% -> @
Chris Lattner [Thu, 24 Apr 2008 06:00:30 +0000 (06:00 +0000)]
% -> @

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

16 years agoDoc updates/edits, contributed by Terence Parr!
Chris Lattner [Thu, 24 Apr 2008 05:59:56 +0000 (05:59 +0000)]
Doc updates/edits, contributed by Terence Parr!

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

16 years agocode restructuring, not functionality change.
Chris Lattner [Thu, 24 Apr 2008 00:21:50 +0000 (00:21 +0000)]
code restructuring, not functionality change.

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