oota-llvm.git
13 years agoUse the SSAUpdator to turn calls to eh.exception that are not in a
Duncan Sands [Wed, 1 Sep 2010 14:07:47 +0000 (14:07 +0000)]
Use the SSAUpdator to turn calls to eh.exception that are not in a
landing pad into uses of registers rather than loads from a stack
slot.  Doesn't touch the 'orrible hack code - Bill needs to persuade
me harder :)

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

13 years agoMake the iterator form of erase return void, since it always succeeds,
Dan Gohman [Wed, 1 Sep 2010 14:00:35 +0000 (14:00 +0000)]
Make the iterator form of erase return void, since it always succeeds,
and since this is what std::map and std::set do.

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

13 years agoDefine LLVM_GLOBAL_VISIBILITY to be __declspec(dllexport) on
Duncan Sands [Wed, 1 Sep 2010 13:07:11 +0000 (13:07 +0000)]
Define LLVM_GLOBAL_VISIBILITY to be __declspec(dllexport) on
windows systems.

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

13 years agoIf PrototypeValue is erased in the middle of using the SSAUpdator
Duncan Sands [Wed, 1 Sep 2010 10:29:33 +0000 (10:29 +0000)]
If PrototypeValue is erased in the middle of using the SSAUpdator
then the SSAUpdator may access freed memory.  Instead, simply pass
in the type and name explicitly, which is all that was used anyway.

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

13 years agoAdd convenience class for working with eh.exception calls.
Duncan Sands [Wed, 1 Sep 2010 09:26:00 +0000 (09:26 +0000)]
Add convenience class for working with eh.exception calls.

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

13 years agoAttempt to fix buildbot.
Dale Johannesen [Wed, 1 Sep 2010 05:19:06 +0000 (05:19 +0000)]
Attempt to fix buildbot.

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

13 years agoadd a gross hack to work around a problem that Argiris reported
Chris Lattner [Wed, 1 Sep 2010 05:14:33 +0000 (05:14 +0000)]
add a gross hack to work around a problem that Argiris reported
on llvmdev: SRoA is introducing MMX datatypes like <1 x i64>,
which then cause random problems because the X86 backend is
producing mmx stuff without inserting proper emms calls.

In the short term, force off MMX datatypes.  In the long term,
the X86 backend should not select generic vector types to MMX
registers.  This is being worked on, but won't be done in time
for 2.8.  rdar://8380055

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

13 years agofilecheckize
Chris Lattner [Wed, 1 Sep 2010 05:10:14 +0000 (05:10 +0000)]
filecheckize

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

13 years agoUse movlps, movlpd, movss and movsd specific nodes instead of pattern matching with...
Bruno Cardoso Lopes [Wed, 1 Sep 2010 05:08:25 +0000 (05:08 +0000)]
Use movlps, movlpd, movss and movsd specific nodes instead of pattern matching with movlp pattern fragment

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

13 years agoRevert 112442 and 112440 until the compile time problems introduced
Dan Gohman [Wed, 1 Sep 2010 01:45:53 +0000 (01:45 +0000)]
Revert 112442 and 112440 until the compile time problems introduced
by 112440 are resolved.

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

13 years agominor change, simplify some logic
Bruno Cardoso Lopes [Wed, 1 Sep 2010 00:57:08 +0000 (00:57 +0000)]
minor change, simplify some logic

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

13 years agoMove some functions around so they can be used for some other to come function
Bruno Cardoso Lopes [Wed, 1 Sep 2010 00:51:36 +0000 (00:51 +0000)]
Move some functions around so they can be used for some other to come function

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

13 years agoAdd some MMX intrinsics that duplicate functionality
Dale Johannesen [Wed, 1 Sep 2010 00:40:09 +0000 (00:40 +0000)]
Add some MMX intrinsics that duplicate functionality
available in normal llvm operators.  We aren't going to
use those for MMX any more because it's unsafe for the
optimizers to synthesize new MMX instructions.

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

13 years agoUse absolute label for DW_AT_stmt_list if a target does not prefer offset here.
Devang Patel [Tue, 31 Aug 2010 23:50:19 +0000 (23:50 +0000)]
Use absolute label for DW_AT_stmt_list if a target does not prefer offset here.
This patch was developed on top of original patch by Artur Pietrek.

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

13 years agoTestcase for llvm checkin 112674.
Dale Johannesen [Tue, 31 Aug 2010 23:43:55 +0000 (23:43 +0000)]
Testcase for llvm checkin 112674.

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

13 years agoRemove noisy semicolon.
Benjamin Kramer [Tue, 31 Aug 2010 23:38:13 +0000 (23:38 +0000)]
Remove noisy semicolon.

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

13 years agolicm is wasting time hoisting constant foldable operations,
Chris Lattner [Tue, 31 Aug 2010 23:00:16 +0000 (23:00 +0000)]
licm is wasting time hoisting constant foldable operations,
instead of hoisting them, just fold them away.  This occurs in the
testcase for PR8041, for example.

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

13 years agoThis is the second of three patches to implement support for the .loc directive
Kevin Enderby [Tue, 31 Aug 2010 22:55:11 +0000 (22:55 +0000)]
This is the second of three patches to implement support for the .loc directive
and output the dwarf line number tables.  This takes the current loc info after
an instruction is assembled and saves the needed info into an object that has
vector and for each section.  These objects will be used for the final patch to
build and emit the encoded dwarf line number tables.  Again for now this is only
in the Mach-O streamer but at some point will move to a more generic place.

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

13 years agoReapply r112432, now that the real problem is addressed.
Dan Gohman [Tue, 31 Aug 2010 22:53:17 +0000 (22:53 +0000)]
Reapply r112432, now that the real problem is addressed.

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

13 years agoReapply r112433, now that the real problem is addressed.
Dan Gohman [Tue, 31 Aug 2010 22:52:12 +0000 (22:52 +0000)]
Reapply r112433, now that the real problem is addressed.

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

13 years agoRevert r110916. This patch is buggy because the code inside the
Dan Gohman [Tue, 31 Aug 2010 22:50:31 +0000 (22:50 +0000)]
Revert r110916. This patch is buggy because the code inside the
inner loop doesn't update all the variables in the outer loop.

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

13 years agoWe have a chance for an optimization. Consider this code:
Bill Wendling [Tue, 31 Aug 2010 22:41:22 +0000 (22:41 +0000)]
We have a chance for an optimization. Consider this code:

int x(int t) {
  if (t & 256)
    return -26;
  return 0;
}

We generate this:

     tst.w   r0, #256
     mvn     r0, #25
     it      eq
     moveq   r0, #0

while gcc generates this:

     ands    r0, r0, #256
     it      ne
     mvnne   r0, #25
     bx      lr

Scandalous really!

During ISel time, we can look for this particular pattern. One where we have a
"MOVCC" that uses the flag off of a CMPZ that itself is comparing an AND
instruction to 0. Something like this (greatly simplified):

  %r0 = ISD::AND ...
  ARMISD::CMPZ %r0, 0         @ sets [CPSR]
  %r0 = ARMISD::MOVCC 0, -26  @ reads [CPSR]

All we have to do is convert the "ISD::AND" into an "ARM::ANDS" that sets [CPSR]
when it's zero. The zero value will all ready be in the %r0 register and we only
need to change it if the AND wasn't zero. Easy!

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

13 years agoSome fixes for NetBSD
Anton Korobeynikov [Tue, 31 Aug 2010 22:38:00 +0000 (22:38 +0000)]
Some fixes for NetBSD

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

13 years agoUse x86 specific MOVSLDUP node, add more patterns to match it and remove useless...
Bruno Cardoso Lopes [Tue, 31 Aug 2010 22:35:05 +0000 (22:35 +0000)]
Use x86 specific MOVSLDUP node, add more patterns to match it and remove useless load nodes

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

13 years agoReapply r112623. Included additional check for unused byval argument.
Devang Patel [Tue, 31 Aug 2010 22:22:42 +0000 (22:22 +0000)]
Reapply r112623. Included additional check for unused byval argument.

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

13 years agoUse x86 specific MOVSHDUP node and add more patterns to match it
Bruno Cardoso Lopes [Tue, 31 Aug 2010 22:22:11 +0000 (22:22 +0000)]
Use x86 specific MOVSHDUP node and add more patterns to match it

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

13 years agoAnd ANDS pattern to match the t2ANDS pattern.
Bill Wendling [Tue, 31 Aug 2010 22:05:37 +0000 (22:05 +0000)]
And ANDS pattern to match the t2ANDS pattern.

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

13 years agoStack slot access methods are in TargetInstrInfo.
Jakob Stoklund Olesen [Tue, 31 Aug 2010 22:01:07 +0000 (22:01 +0000)]
Stack slot access methods are in TargetInstrInfo.

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

13 years agoComment typo.
Dale Johannesen [Tue, 31 Aug 2010 21:53:15 +0000 (21:53 +0000)]
Comment typo.

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

13 years agoMake %EFLAGS unallocatable.
Jakob Stoklund Olesen [Tue, 31 Aug 2010 21:51:07 +0000 (21:51 +0000)]
Make %EFLAGS unallocatable.

No CCR virtual registers should exist, and %EFLAGS is used in ways that can
surprise RegAllocFast.

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

13 years agoTrack liveness of unallocatable, unreserved registers in machine DCE.
Jakob Stoklund Olesen [Tue, 31 Aug 2010 21:51:05 +0000 (21:51 +0000)]
Track liveness of unallocatable, unreserved registers in machine DCE.

Reserved registers are unpredictable, and are treated as always live by machine
DCE.

Allocatable registers are never reserved, and can be used for virtual registers.

Unreserved, unallocatable registers can not be used for virtual registers, but
otherwise behave like a normal allocatable register. Most targets only have
the flag register in this set.

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

13 years agoUse MOVHLPS node instead of matching using movhlps and movhlps_undef pattern fragments
Bruno Cardoso Lopes [Tue, 31 Aug 2010 21:38:49 +0000 (21:38 +0000)]
Use MOVHLPS node instead of matching using movhlps and movhlps_undef pattern fragments

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

13 years agotidy up
Chris Lattner [Tue, 31 Aug 2010 21:21:25 +0000 (21:21 +0000)]
tidy up

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

13 years agoUse MOVLHPS and MOVHLPS x86 nodes whenever possible. Also remove some useless nodes
Bruno Cardoso Lopes [Tue, 31 Aug 2010 21:15:21 +0000 (21:15 +0000)]
Use MOVLHPS and MOVHLPS x86 nodes whenever possible. Also remove some useless nodes

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

13 years agoRevert r112432. It appears to be exposing a problem in the emacs build.
Dan Gohman [Tue, 31 Aug 2010 20:58:44 +0000 (20:58 +0000)]
Revert r112432. It appears to be exposing a problem in the emacs build.

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

13 years agoMerge 2010-08-31-InfiniteRecursion.ll into crash.ll.
Owen Anderson [Tue, 31 Aug 2010 20:27:17 +0000 (20:27 +0000)]
Merge 2010-08-31-InfiniteRecursion.ll into crash.ll.

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

13 years agoMore cleanups of my JumpThreading transforms, including extracting some duplicated...
Owen Anderson [Tue, 31 Aug 2010 20:26:04 +0000 (20:26 +0000)]
More cleanups of my JumpThreading transforms, including extracting some duplicated code into a helper function.

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

13 years agoIgnore unallocatable registers in RegAllocFast.
Jakob Stoklund Olesen [Tue, 31 Aug 2010 19:54:25 +0000 (19:54 +0000)]
Ignore unallocatable registers in RegAllocFast.

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

13 years agoRevert r112623. It is causing self host build failures.
Devang Patel [Tue, 31 Aug 2010 19:41:03 +0000 (19:41 +0000)]
Revert r112623. It is causing self host build failures.

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

13 years agoUpdate the Ada instructions to LLVM 2.7 (from LLVM 2.5).
Duncan Sands [Tue, 31 Aug 2010 19:40:21 +0000 (19:40 +0000)]
Update the Ada instructions to LLVM 2.7 (from LLVM 2.5).

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

13 years agoAdd an RAII helper to make cleanup of the RecursionSet more fool-proof.
Owen Anderson [Tue, 31 Aug 2010 19:24:27 +0000 (19:24 +0000)]
Add an RAII helper to make cleanup of the RecursionSet more fool-proof.

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

13 years agoOnly try to clean up the current block if we changed that block already.
Owen Anderson [Tue, 31 Aug 2010 18:55:52 +0000 (18:55 +0000)]
Only try to clean up the current block if we changed that block already.

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

13 years agoSP relative offsets need to be adjusted by the local allocation size when
Jim Grosbach [Tue, 31 Aug 2010 18:52:31 +0000 (18:52 +0000)]
SP relative offsets need to be adjusted by the local allocation size when
determining if they're likely to be in range of the SP when resolving
frame references.

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

13 years agoRemember byval argument's frame index during argument lowering and use this info...
Devang Patel [Tue, 31 Aug 2010 18:50:09 +0000 (18:50 +0000)]
Remember byval argument's frame index during argument lowering and use this info to emit debug info.
Fixes Radar 8367011.

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

13 years agothis assert should just be a condition, since this function is just asking if
Jim Grosbach [Tue, 31 Aug 2010 18:49:31 +0000 (18:49 +0000)]
this assert should just be a condition, since this function is just asking if
the offset is legally encodable, not actually trying to do the encoding.

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

13 years agoAdd a test for the duplicated-conditional situation illutrated by PR5652.
Owen Anderson [Tue, 31 Aug 2010 18:49:12 +0000 (18:49 +0000)]
Add a test for the duplicated-conditional situation illutrated by PR5652.

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

13 years agoRefactor my fix for PR5652 to terminate the predecessor lookups after the first failure.
Owen Anderson [Tue, 31 Aug 2010 18:48:48 +0000 (18:48 +0000)]
Refactor my fix for PR5652 to terminate the predecessor lookups after the first failure.

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

13 years agomerge two tests.
Chris Lattner [Tue, 31 Aug 2010 18:44:03 +0000 (18:44 +0000)]
merge two tests.

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

13 years agoManually reduce this testcase.
Owen Anderson [Tue, 31 Aug 2010 18:16:29 +0000 (18:16 +0000)]
Manually reduce this testcase.

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

13 years agomerge two tests and convert to filecheck.
Chris Lattner [Tue, 31 Aug 2010 18:05:08 +0000 (18:05 +0000)]
merge two tests and convert to filecheck.

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

13 years agoAdd a micro-test for the transforms I added to JumpThreading.
Owen Anderson [Tue, 31 Aug 2010 17:59:07 +0000 (17:59 +0000)]
Add a micro-test for the transforms I added to JumpThreading.

I have not been able to find a way to test each in isolation, for a few reasons:
1) The ability to look-through non-i1 BinaryOperator's requires the ability to look through non-constant
   ICmps in order for it to ever trigger.
2) The ability to do LVI-powered PHI value determination only matters in cases that ProcessBranchOnPHI
   can't handle.  Since it already handles all the cases without other instructions in the def-use chain
   between the PHI and the branch, it requires the ability to look through ICmps and/or BinaryOperators
   as well.

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

13 years agoUpdate test for 112609
Jim Grosbach [Tue, 31 Aug 2010 17:58:47 +0000 (17:58 +0000)]
Update test for 112609

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

13 years agoImprove virtual frame base register allocation heuristics.
Jim Grosbach [Tue, 31 Aug 2010 17:58:19 +0000 (17:58 +0000)]
Improve virtual frame base register allocation heuristics.

  1. Allocate them in the entry block of the function to enable function-wide
     re-use. The instructions to create them should be re-materializable, so
     there shouldn't be additional cost compared to creating them local
     to the basic blocks where they are used.
  2. Collect all of the frame index references for the function and sort them
     by the local offset referenced. Iterate over the sorted list to
     allocate the virtual base registers. This enables creation of base
     registers optimized for positive-offset access of frame references.
     (Note: This may be appropriate to later be a target hook to do the
     sorting in a target appropriate manner. For now it's done here for
     simplicity.)

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

13 years agoSpeculatively revert r112433.
Dan Gohman [Tue, 31 Aug 2010 17:56:47 +0000 (17:56 +0000)]
Speculatively revert r112433.

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

13 years agoAllow creation of SHT_NULL sections, from Roman Divacky.
Benjamin Kramer [Tue, 31 Aug 2010 17:03:33 +0000 (17:03 +0000)]
Allow creation of SHT_NULL sections, from Roman Divacky.

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

13 years agoStop using the dom frontier in DwarfEHPrepare by not promoting alloca's
Duncan Sands [Tue, 31 Aug 2010 09:05:06 +0000 (09:05 +0000)]
Stop using the dom frontier in DwarfEHPrepare by not promoting alloca's
any more.  I plan to reimplement alloca promotion using SSAUpdater later.
It looks like Bill's URoR logic really always needs domtree, so the pass
now always asks for domtree info.

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

13 years agoFix an infinite loop; merging two functions will create a new function (if the
Nick Lewycky [Tue, 31 Aug 2010 08:29:37 +0000 (08:29 +0000)]
Fix an infinite loop; merging two functions will create a new function (if the
two are weak, we make them thunks to a new strong function) so don't iterate
through the function list as we're modifying it.

Also add back the outermost loop which got removed during the cleanups.

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

13 years agoDon't perform an extra traversal of the function just to do cleanup. We can safely...
Owen Anderson [Tue, 31 Aug 2010 07:55:56 +0000 (07:55 +0000)]
Don't perform an extra traversal of the function just to do cleanup.  We can safely simplify instructions after each block has been processed without worrying about iterator invalidation.

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

13 years ago- Cleanup some whitespaces.
Bill Wendling [Tue, 31 Aug 2010 07:50:46 +0000 (07:50 +0000)]
- Cleanup some whitespaces.
- Convert {0,1} and friends into 0b01, which is identical and more consistent.

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

13 years agoRename test directory to reflect new pass name.
Owen Anderson [Tue, 31 Aug 2010 07:50:31 +0000 (07:50 +0000)]
Rename test directory to reflect new pass name.

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

13 years agoRename ValuePropagation to a more descriptive CorrelatedValuePropagation.
Owen Anderson [Tue, 31 Aug 2010 07:48:34 +0000 (07:48 +0000)]
Rename ValuePropagation to a more descriptive CorrelatedValuePropagation.

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

13 years agoRename file to something more descriptive.
Owen Anderson [Tue, 31 Aug 2010 07:41:39 +0000 (07:41 +0000)]
Rename file to something more descriptive.

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

13 years agoMore Chris-inspired JumpThreading fixes: use ConstantExpr to correctly constant-fold...
Owen Anderson [Tue, 31 Aug 2010 07:36:34 +0000 (07:36 +0000)]
More Chris-inspired JumpThreading fixes: use ConstantExpr to correctly constant-fold undef, and be more careful with its return value.
This actually exposed an infinite recursion bug in ComputeValueKnownInPredecessors which theoretically already existed (in JumpThreading's
handling of and/or of i1's), but never manifested before.  This patch adds a tracking set to prevent this case.

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

13 years agoCleanup Whitespace.
Michael J. Spencer [Tue, 31 Aug 2010 06:36:46 +0000 (06:36 +0000)]
Cleanup Whitespace.

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

13 years agoSystem: Fix getMagicNumber on windows.
Michael J. Spencer [Tue, 31 Aug 2010 06:36:33 +0000 (06:36 +0000)]
System: Fix getMagicNumber on windows.

getMagicNumber was treating the _binary_ data it read in as a
null terminated string. This resulted in the std::string
calculating the length, and causing an assert in other code that
assumed that the length it passed was the same as the length of
the string it would get back.

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

13 years agoFix spelling/typo.
Michael J. Spencer [Tue, 31 Aug 2010 06:36:22 +0000 (06:36 +0000)]
Fix spelling/typo.

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

13 years agoOffset is not always unsigned number.
Devang Patel [Tue, 31 Aug 2010 06:12:08 +0000 (06:12 +0000)]
Offset is not always unsigned number.

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

13 years agoSimplify.
Devang Patel [Tue, 31 Aug 2010 06:11:28 +0000 (06:11 +0000)]
Simplify.

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

13 years agoSwitch to DenseSet, simplifying much more code. We now have a single iteration
Nick Lewycky [Tue, 31 Aug 2010 05:53:05 +0000 (05:53 +0000)]
Switch to DenseSet, simplifying much more code. We now have a single iteration
where we hash, compare and fold, instead of one iteration where we build up
the hash buckets and a second one to fold.

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

13 years agoRemove r111665, which implemented store-narrowing in InstCombine. Chris discovered...
Owen Anderson [Tue, 31 Aug 2010 04:41:06 +0000 (04:41 +0000)]
Remove r111665, which implemented store-narrowing in InstCombine.  Chris discovered a miscompilation in it, and it's not easily
fixable at the optimizer level. I'll investigate reimplementing it in DAGCombine.

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

13 years agozap unused method. x86 is the only user and already has a more powerfull version
Bruno Cardoso Lopes [Tue, 31 Aug 2010 02:36:20 +0000 (02:36 +0000)]
zap unused method. x86 is the only user and already has a more powerfull version

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

13 years agoUse X86ISD::MOVSS and MOVSD to represent the movl mask pattern, also fix the handling...
Bruno Cardoso Lopes [Tue, 31 Aug 2010 02:26:40 +0000 (02:26 +0000)]
Use X86ISD::MOVSS and MOVSD to represent the movl mask pattern, also fix the handling of those nodes when seeking for scalars inside vector shuffles

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

13 years agoRewrite slightly so we can expand for floating point types easier.
Eric Christopher [Tue, 31 Aug 2010 01:28:42 +0000 (01:28 +0000)]
Rewrite slightly so we can expand for floating point types easier.

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

13 years agoAdd experimental -disable-physical-join command line option.
Jakob Stoklund Olesen [Tue, 31 Aug 2010 01:27:49 +0000 (01:27 +0000)]
Add experimental -disable-physical-join command line option.

Eventually, we want to disable physreg coalescing completely, and let the
register allocator do its job using hints.

This option makes it possible to measure the impact of disabling physreg
coalescing.

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

13 years agoFix a typo.
Owen Anderson [Mon, 30 Aug 2010 23:59:30 +0000 (23:59 +0000)]
Fix a typo.

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

13 years agoIf we have an unhandled type then assert, we shouldn't get here for
Eric Christopher [Mon, 30 Aug 2010 23:48:26 +0000 (23:48 +0000)]
If we have an unhandled type then assert, we shouldn't get here for
things we can't handle.

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

13 years agoUpdate the descriptions of NoModRef and ModRef to be consistent
Dan Gohman [Mon, 30 Aug 2010 23:47:24 +0000 (23:47 +0000)]
Update the descriptions of NoModRef and ModRef to be consistent
with the descriptions of Mod and Ref.

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

13 years agoFix borken test
Anton Korobeynikov [Mon, 30 Aug 2010 23:41:49 +0000 (23:41 +0000)]
Fix borken test

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

13 years agoCombine these two tests, and make sure there's a newline at the end of the file.
Owen Anderson [Mon, 30 Aug 2010 23:37:41 +0000 (23:37 +0000)]
Combine these two tests, and make sure there's a newline at the end of the file.

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

13 years agoCleanups suggested by Chris.
Owen Anderson [Mon, 30 Aug 2010 23:34:17 +0000 (23:34 +0000)]
Cleanups suggested by Chris.

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

13 years agoRe-apply r112539, being more careful to respect the return values of the constant...
Owen Anderson [Mon, 30 Aug 2010 23:22:36 +0000 (23:22 +0000)]
Re-apply r112539, being more careful to respect the return values of the constant folding methods.  Additionally,
use the ConstantExpr::get*() methods to simplify some constant folding.

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

13 years agoExpand MOVi32imm in ARM mode after regalloc. This provides
Anton Korobeynikov [Mon, 30 Aug 2010 22:50:36 +0000 (22:50 +0000)]
Expand MOVi32imm in ARM mode after regalloc. This provides
scheduling opportunities (extra instruction can go in between
MOVT / MOVW pair removing the stall).

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

13 years agoAdd statistics to evaluate this pass.
Owen Anderson [Mon, 30 Aug 2010 22:45:55 +0000 (22:45 +0000)]
Add statistics to evaluate this pass.

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

13 years agoRevert r112539. It accidentally introduced a miscompilation.
Owen Anderson [Mon, 30 Aug 2010 22:33:41 +0000 (22:33 +0000)]
Revert r112539.  It accidentally introduced a miscompilation.

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

13 years agoFixes and cleanups pointed out by Chris. In general, be careful to handle 0 results...
Owen Anderson [Mon, 30 Aug 2010 22:07:52 +0000 (22:07 +0000)]
Fixes and cleanups pointed out by Chris.  In general, be careful to handle 0 results from ComputeValueKnownInPredecessors
(indicating undef), and re-use existing constant folding APIs.

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

13 years agoUse the existing T2I_bin_s_irs pattern instead of creating T2I_bin_sw_irs, which
Bill Wendling [Mon, 30 Aug 2010 22:05:23 +0000 (22:05 +0000)]
Use the existing T2I_bin_s_irs pattern instead of creating T2I_bin_sw_irs, which
is meant to do exactly the same thing. Thanks to Jim Grosbach for pointing this
out! :-)

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

13 years agoFix a comment.
NAKAMURA Takumi [Mon, 30 Aug 2010 21:54:03 +0000 (21:54 +0000)]
Fix a comment.

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

13 years agoRemember to clear the shadow kill flag at the same time as clearing the real
Jakob Stoklund Olesen [Mon, 30 Aug 2010 21:52:40 +0000 (21:52 +0000)]
Remember to clear the shadow kill flag at the same time as clearing the real
kill flag.

This could cause duplicate kill flags when the same register was used twice in a
continuous sequence of STRs.

There is no small test case. <rdar://problem/8218046>

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

13 years agoFix llc to run the verifier once, not twice.
Dan Gohman [Mon, 30 Aug 2010 21:41:20 +0000 (21:41 +0000)]
Fix llc to run the verifier once, not twice.

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

13 years agoRemove this from the main tree. I'll host it out of tree.
Owen Anderson [Mon, 30 Aug 2010 21:34:26 +0000 (21:34 +0000)]
Remove this from the main tree.  I'll host it out of tree.

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

13 years agoAdd comments explaining why it's not necessary to include the
Dan Gohman [Mon, 30 Aug 2010 21:18:41 +0000 (21:18 +0000)]
Add comments explaining why it's not necessary to include the
is-function-local flag in metadata uniquing bits.

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

13 years agoRemove NEON vmovn intrinsic, replacing it with vector truncate operations.
Bob Wilson [Mon, 30 Aug 2010 20:02:30 +0000 (20:02 +0000)]
Remove NEON vmovn intrinsic, replacing it with vector truncate operations.
Auto-upgrade the old intrinsic and update tests.

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

13 years agoMake ARM add rN, sp, #imm instructions rematerializable. That's how the address of...
Jim Grosbach [Mon, 30 Aug 2010 19:49:58 +0000 (19:49 +0000)]
Make ARM add rN, sp, #imm instructions rematerializable. That's how the address of locals is calculated, so this should
help relieve register pressure a bit. Recalculating the local address is
almost always going to be better than spilling.

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

13 years agoFix LLVM target initialization to deal with sociopathic outside projects
Eric Christopher [Mon, 30 Aug 2010 18:34:48 +0000 (18:34 +0000)]
Fix LLVM target initialization to deal with sociopathic outside projects
that like to randomly define things like "X86", regenerate autoconf bits
and update cmake.

Fixes PR7852.

Patch by Xerxes RĂ„nby!

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

13 years agoKill a couple of unused variables.
Eric Christopher [Mon, 30 Aug 2010 18:31:44 +0000 (18:31 +0000)]
Kill a couple of unused variables.

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

13 years agonuke dead ivar which was supposed to be committed with r112496
Chris Lattner [Mon, 30 Aug 2010 18:16:27 +0000 (18:16 +0000)]
nuke dead ivar which was supposed to be committed with r112496

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

13 years agotwo changes:
Chris Lattner [Mon, 30 Aug 2010 18:12:35 +0000 (18:12 +0000)]
two changes:
1) nuke ConstDataCoalSection, which is dead.
2) revise my previous patch for rdar://8018335,
  which was completely wrong.  Specifically, it doesn't
  make sense to mark __TEXT,__const_coal as PURE_INSTRUCTIONS,
  because it is for readonly data.  templates (it turns out)
  go to const_coal_nt.  The real fix for rdar://8018335 was
  to give ConstTextCoalSection a section kind of ReadOnly
  instead of Text.

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

13 years agoWhen expanding NEON VST pseudo instructions, if the original super-register
Bob Wilson [Mon, 30 Aug 2010 18:10:48 +0000 (18:10 +0000)]
When expanding NEON VST pseudo instructions, if the original super-register
operand is killed, add it to the expanded instruction as an implicit kill
operand instead of marking the individual subregs with kill flags.  This
should work better in general and also handles the case for VST3 where one
of the subregs was not referenced in the expanded instruction and so was
not marked killed.

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

13 years agoMCELF: The value of all common symbols is the offset from the start of the section...
Benjamin Kramer [Mon, 30 Aug 2010 17:20:17 +0000 (17:20 +0000)]
MCELF: The value of all common symbols is the offset from the start of the section.  Patch by Roman Divacky.

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

13 years agoIt is possible to try to merge a not-constant with a constantrage, when dealing with...
Owen Anderson [Mon, 30 Aug 2010 17:03:45 +0000 (17:03 +0000)]
It is possible to try to merge a not-constant with a constantrage, when dealing with ptrtoint ConstantExpr's.
Unfortunately, the only testcase I have for this is huge and doesn't reduce well because the error is
sensitive to iteration-order issues, since the problem only occurs when merging values in a particular order.

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