Bruno Cardoso Lopes [Sat, 18 Aug 2007 02:16:30 +0000 (02:16 +0000)]
Removed LowerRETURADDR, fixed small bug into LowerRET, LowerGlobalAddress
fixed to generate instructions (add, lui) glued!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41158
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Sat, 18 Aug 2007 02:05:24 +0000 (02:05 +0000)]
Couple of small changes. Delay Slot handle header declared.
Newline added after macros at function init on generated asm!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41157
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Sat, 18 Aug 2007 02:01:28 +0000 (02:01 +0000)]
Added InstrItinClass support for instruction formats
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41156
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Sat, 18 Aug 2007 01:59:45 +0000 (01:59 +0000)]
Branch Analysis and InsertNoop inserted into header files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41155
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Sat, 18 Aug 2007 01:58:15 +0000 (01:58 +0000)]
createMipsDelaySlotFillerPass added to mips codegen runtime
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41154
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Sat, 18 Aug 2007 01:56:48 +0000 (01:56 +0000)]
Added Branch Analysis support
Added InsertNoop support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41153
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Sat, 18 Aug 2007 01:54:09 +0000 (01:54 +0000)]
LowerRETURNADDR removed since it was wrong and does not have utility yet!
MipsAdd opcode added
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41152
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Sat, 18 Aug 2007 01:52:27 +0000 (01:52 +0000)]
InstrItineraryData support on added.
Added Mips3 ISA feature (needed when supporting R4000 machines)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41151
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Sat, 18 Aug 2007 01:50:47 +0000 (01:50 +0000)]
A Pass to insert Nops on intructions with DelaySlot
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41150
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Sat, 18 Aug 2007 01:46:44 +0000 (01:46 +0000)]
Mips generic fallback instruction schedule support!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41149
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Sat, 18 Aug 2007 00:00:32 +0000 (00:00 +0000)]
Avoid spliting loops where two split condition branches are not independent.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41148
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Fri, 17 Aug 2007 22:02:15 +0000 (22:02 +0000)]
Add loop index split tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41146
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Fri, 17 Aug 2007 21:59:16 +0000 (21:59 +0000)]
When one branch of condition is eliminated then head of the other
branch is not necessary immediate dominators of merge blcok in all cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41144
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 17 Aug 2007 18:02:22 +0000 (18:02 +0000)]
Avoid issue on 64-bit hosts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41143
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 17 Aug 2007 16:49:19 +0000 (16:49 +0000)]
improve iplist comments. Switch iplist from allocating its sentinal object (for
end()) eagerly to allocating it lazily. This saves a lot of memory for JIT applications
that read a module but don't materialize most of the functions (e.g. 62K for 252.eon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41142
91177308-0d34-0410-b5e6-
96231b3b80d8
David Greene [Fri, 17 Aug 2007 15:13:55 +0000 (15:13 +0000)]
Fix GLIBCXX_DEBUG error of comparing two singular iterators
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41139
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 17 Aug 2007 05:45:26 +0000 (05:45 +0000)]
Regenerate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41138
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 17 Aug 2007 05:44:59 +0000 (05:44 +0000)]
Fix PR1606:
The AC_CHECK_HEADER macro was used instead of AC_CHECK_HEADERS. The former does
not automatically add a #define to the configure variables while the latter
does. Consequently, the HAVE_PTHREAD_H symbol was not defined which caused the
Mutex.cpp file to compile to an empty implementation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41137
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 16 Aug 2007 23:52:23 +0000 (23:52 +0000)]
New test. Make sure dynamic_stackalloc size is rounded up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41135
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 16 Aug 2007 23:51:28 +0000 (23:51 +0000)]
Update test: dynamic_stackalloc size *must* be rounded to ensure stack ptr be left in a valid state.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41134
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 16 Aug 2007 23:50:06 +0000 (23:50 +0000)]
If dynamic_stackalloc alignment is > stack alignment, first issue an instruction to align the stack ptr before the decrement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41133
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 16 Aug 2007 23:46:29 +0000 (23:46 +0000)]
- If a dynamic_stackalloc alignment requirement is <= stack alignment, then the alignment argument is ignored.
- *Always* round up the size of the allocation to multiples of stack
alignment to ensure the stack ptr is never left in an invalid state after a dynamic_stackalloc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41132
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 16 Aug 2007 22:51:56 +0000 (22:51 +0000)]
Factor out some code into a helper function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41131
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 16 Aug 2007 22:06:45 +0000 (22:06 +0000)]
Fix the verification for overloaded intrinsic types. Check that they are
what they're supposed to be before using them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41130
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 16 Aug 2007 22:02:55 +0000 (22:02 +0000)]
Add some more comments to GVN.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41129
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 16 Aug 2007 21:57:19 +0000 (21:57 +0000)]
Add MVT::fAny for overloading intrinsics on floating-point types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41128
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 16 Aug 2007 21:27:05 +0000 (21:27 +0000)]
Cache non-local memory dependence analysis. This is a significant compile
time performance win in most cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41126
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 16 Aug 2007 15:56:55 +0000 (15:56 +0000)]
This adds a bunch of static functions that implement unsigned
two's complement bignum arithmetic. They could be used to
implement much of APInt, but the idea is they are enough to
implement APFloat as well, which the current APInt interface
is not suited for.
Patch by Neil Booth!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41124
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 16 Aug 2007 13:09:02 +0000 (13:09 +0000)]
add byval test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41123
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 16 Aug 2007 07:47:30 +0000 (07:47 +0000)]
Improve error handling in the linker by:
1. Eliminate redundant error messages. LinkInFile and LinkInArchive
already call the error() method in each case so there's no use
telling the user again that an item couldn't be linked in.
2. Improve the formatting of error messages (separating content).
3. Change the wording for the warning about unrecognized files. Make
it clear that the file is being ignored.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41121
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 16 Aug 2007 07:25:37 +0000 (07:25 +0000)]
Comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41119
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 16 Aug 2007 07:24:22 +0000 (07:24 +0000)]
Fix some kill info update bugs; add hidden option -disable-rematerialization to turn off remat for debugging.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41118
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 16 Aug 2007 07:23:37 +0000 (07:23 +0000)]
Ensure that error messages a propagated from calls to LinkInModule so they get
reported to the end user.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41117
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 16 Aug 2007 07:22:43 +0000 (07:22 +0000)]
Add a test to ensure that obvious link messages are actually produced on
the standard error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41116
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 16 Aug 2007 00:25:42 +0000 (00:25 +0000)]
Forgot a line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41115
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 16 Aug 2007 00:18:32 +0000 (00:18 +0000)]
Add a copy constructor and an assignment operator to DenseMap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41114
91177308-0d34-0410-b5e6-
96231b3b80d8
Lauro Ramos Venancio [Wed, 15 Aug 2007 22:13:27 +0000 (22:13 +0000)]
Implement FPOWI ExpandOp.
Fix PR1287.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41112
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Wed, 15 Aug 2007 21:12:30 +0000 (21:12 +0000)]
Properly use const qualifiers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41111
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 15 Aug 2007 20:30:10 +0000 (20:30 +0000)]
Test case for PR1609.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41110
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 15 Aug 2007 20:20:34 +0000 (20:20 +0000)]
If the source of a move is in spill slot, the reload may be folded to essentially a load from stack slot. It's ok to mark the stack slot value as available for reuse. But it should not be clobbered since the destination of the move is live.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41109
91177308-0d34-0410-b5e6-
96231b3b80d8
David Greene [Wed, 15 Aug 2007 17:58:51 +0000 (17:58 +0000)]
Update .cvs file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41106
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Wed, 15 Aug 2007 17:12:32 +0000 (17:12 +0000)]
Move ReturnAddrIndex variable to X86MachineFunctionInfo structure. This fixed
hard to catch bugs with retaddr lowering
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41104
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 15 Aug 2007 16:58:38 +0000 (16:58 +0000)]
add a note.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41103
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 15 Aug 2007 14:03:58 +0000 (14:03 +0000)]
svn propdel the svn:mime-type property of application/x-troff.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41102
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 15 Aug 2007 13:55:47 +0000 (13:55 +0000)]
This test used "wc | grep ..."; convert it to use the count script.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41101
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 15 Aug 2007 13:49:33 +0000 (13:49 +0000)]
Convert tests using "grep -c ... | grep ..." to use the count script.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41100
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 15 Aug 2007 13:45:35 +0000 (13:45 +0000)]
Delete extraneous uses of wc -l.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41099
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 15 Aug 2007 13:42:36 +0000 (13:42 +0000)]
Convert another test to use the count script. This one didn't fit the
regex used to convert all the others because the first '|' was on a
separate line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41098
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 15 Aug 2007 13:36:28 +0000 (13:36 +0000)]
Convert tests using "| wc -l | grep ..." to use the count script.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41097
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Wed, 15 Aug 2007 03:34:53 +0000 (03:34 +0000)]
Dominance frontier is now required.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41096
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Wed, 15 Aug 2007 03:31:47 +0000 (03:31 +0000)]
Cleanup removeBlocks.
Use dominance frontier to fixup incoming edges of successor blocks not domianted by DeadBB.
Use df_iterator to walk and delete basic blocks dominated by DeadBB.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41095
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Wed, 15 Aug 2007 03:01:04 +0000 (03:01 +0000)]
Remove unneeded header file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41094
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Wed, 15 Aug 2007 02:14:55 +0000 (02:14 +0000)]
Avoid triangle loops.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41093
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 14 Aug 2007 23:59:17 +0000 (23:59 +0000)]
Break infinite loop.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41091
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 14 Aug 2007 23:53:57 +0000 (23:53 +0000)]
Avoid nested loops at the moment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41090
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 14 Aug 2007 23:34:50 +0000 (23:34 +0000)]
New test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41087
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 14 Aug 2007 23:25:37 +0000 (23:25 +0000)]
- If a def is dead, do not spill it.
- If the defs of a spilled rematerializable MI are dead after the spill store is deleted, delete
the def MI as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41086
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 14 Aug 2007 23:21:10 +0000 (23:21 +0000)]
Test case for PR1596.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41085
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 14 Aug 2007 23:19:28 +0000 (23:19 +0000)]
Fix for PR1596: AdjustCopiesBackFrom() should conservatively check if any of its sub-registers may overlap with the interval of the copy that's being coalesced.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41084
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 14 Aug 2007 20:23:13 +0000 (20:23 +0000)]
If a MI's def is remat as well as spilled, and the store is later deemed dead, mark the def operand as isDead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41083
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 14 Aug 2007 18:35:57 +0000 (18:35 +0000)]
Fix dominance frontier update while removing blocks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41082
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 14 Aug 2007 18:33:27 +0000 (18:33 +0000)]
Eliminate PHI nodes with constant values during normal GVN processing, even when
they're not related to eliminating a load.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41081
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 14 Aug 2007 18:16:29 +0000 (18:16 +0000)]
Be more aggressive in pruning unnecessary PHI nodes when doing PHI construction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41080
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 14 Aug 2007 18:04:11 +0000 (18:04 +0000)]
Make GVN iterative.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41078
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 14 Aug 2007 17:59:48 +0000 (17:59 +0000)]
Fix a case where GVN was failing to return true when it had, in fact, modified
the function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41077
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 14 Aug 2007 16:53:52 +0000 (16:53 +0000)]
Assert sooner. Fix wordings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41075
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 14 Aug 2007 16:53:24 +0000 (16:53 +0000)]
No need to use iterator to erase basic block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41074
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 14 Aug 2007 16:19:35 +0000 (16:19 +0000)]
tcl seems to hate |& for some reason.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41073
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 14 Aug 2007 16:14:10 +0000 (16:14 +0000)]
switch this to use fastcc to avoid fpstack traffic on x86-32. Switch to
using the count script instead of wc -l
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41072
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 14 Aug 2007 09:16:00 +0000 (09:16 +0000)]
Update test case. A spill should now be deleted.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41070
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 14 Aug 2007 09:11:18 +0000 (09:11 +0000)]
If a spilled value is being reused and the use is a kill, that means there are
no more uses within the MBB and the spilled value isn't live out of the MBB.
Then it's safe to delete the spill store.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41069
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 14 Aug 2007 05:51:03 +0000 (05:51 +0000)]
Spiller reuse test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41068
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 14 Aug 2007 05:42:54 +0000 (05:42 +0000)]
If a rematerializable def is not deleted, i.e. it is also spilled, check if the
spilled value is available for reuse.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41067
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 14 Aug 2007 01:56:58 +0000 (01:56 +0000)]
Kill info update bugs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41064
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 14 Aug 2007 01:30:57 +0000 (01:30 +0000)]
Handle last value assignments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41063
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 14 Aug 2007 00:15:45 +0000 (00:15 +0000)]
StartValue is already calculated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41062
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 13 Aug 2007 23:54:16 +0000 (23:54 +0000)]
Now capable of rematerializing coalesced live intervals.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41061
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 13 Aug 2007 23:45:17 +0000 (23:45 +0000)]
Re-implement trivial rematerialization. This allows def MIs whose live intervals that are coalesced to be rematerialized.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41060
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 13 Aug 2007 23:27:11 +0000 (23:27 +0000)]
Fix a typo pointd out by Maarten ter Huurne.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41059
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 13 Aug 2007 22:22:13 +0000 (22:22 +0000)]
Preserve simple analysis.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41054
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 13 Aug 2007 22:13:24 +0000 (22:13 +0000)]
Preserve dominator info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41053
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 13 Aug 2007 22:10:29 +0000 (22:10 +0000)]
Add methods to erase basic block entry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41052
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 13 Aug 2007 21:59:17 +0000 (21:59 +0000)]
If NewBB dominates DestBB then DestBB is not part of NewBB's dominance frontier.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41051
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 13 Aug 2007 20:08:16 +0000 (20:08 +0000)]
move assertion into mutex guard, a partial fix for PR1606.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41050
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 13 Aug 2007 20:03:06 +0000 (20:03 +0000)]
When x86 addresses matching exceeds its recursion limit, check to
see if the base register is already occupied before assuming it can be
used. This fixes bogus code generation in the accompanying testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41049
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 13 Aug 2007 18:42:37 +0000 (18:42 +0000)]
Fix PR1607
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41048
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 13 Aug 2007 17:17:03 +0000 (17:17 +0000)]
test that the ptr-to-method is succefully eliminated, leaving just the vtable dispatch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41047
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 13 Aug 2007 17:09:08 +0000 (17:09 +0000)]
Constant fold: getelementptr (i8* inttoptr (i64 1 to i8*), i32 -1)
Into: inttoptr (i64 0 to i8*) -> null
This occurs in the example in PR1602. With this fixed, we now compile
the example in PR1602 into fully "devirtualized" code:
define void @_Z1g1S(%struct.S* noalias %s) {
entry: %tmp131415 = getelementptr %struct.S* %s, i32 0, i32 0 ; <i32 (...)***> [#uses=1] %tmp16 = load i32 (...)*** %tmp131415, align 4 ; <i32 (...)**> [#uses=1]
%tmp26277 = load i32 (...)** %tmp16 ; <i32 (...)*> [#uses=1]
%tmp2829 = bitcast i32 (...)* %tmp26277 to void (%struct.S*)* ; <void (%struct.S*)*> [#uses=1]
tail call void %tmp2829( %struct.S* %s )
ret void
}
This still has the vtable dispatch (as required) but does not have any pointer
to method cruft left.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41046
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 13 Aug 2007 07:12:23 +0000 (07:12 +0000)]
Kill info update bugs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41043
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 13 Aug 2007 06:19:51 +0000 (06:19 +0000)]
Make use of the llvm-ld tool's new ability to read input from stdin to extract
the list of link time passes to be run, just as for opt, with the
-debug-pass=Arguments option.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41040
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 13 Aug 2007 00:25:47 +0000 (00:25 +0000)]
Don't build llvm-stub twice.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41039
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 12 Aug 2007 16:55:14 +0000 (16:55 +0000)]
oops, forgot to commit this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41034
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sun, 12 Aug 2007 08:12:35 +0000 (08:12 +0000)]
Change casts from old style to new style. This helps document the details
better, gives the compiler a chance to validate the cast and reduces warnings
if the user turns on -Wold-style-cast option.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41033
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Sun, 12 Aug 2007 07:02:51 +0000 (07:02 +0000)]
Split loops and do CFG cleanup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41029
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sun, 12 Aug 2007 04:45:36 +0000 (04:45 +0000)]
Remove unused variables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41028
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sun, 12 Aug 2007 01:26:19 +0000 (01:26 +0000)]
No need to remove dead range from soon-to-be-dead live interval. Its val# may be out of whack.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41024
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 11 Aug 2007 23:49:01 +0000 (23:49 +0000)]
constant fold ptrtoint(inttoptr) with target data when available. This allows
us to fold the entry block of PR1602 to false instead of:
br i1 icmp eq (i32 and (i32 ptrtoint (void (%struct.S*)* inttoptr (i64
1 to void (%struct.S*)*) to i32), i32 1), i32 0), label %cond_next, label
%cond_true
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41023
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 11 Aug 2007 18:48:48 +0000 (18:48 +0000)]
Transform a load from an undef/zero global into an undef/global even if we
have complex pointer manipulation going on. This allows us to compile
stuff like this:
__m128i foo(__m128i x){
static const unsigned int c_0[4] = { 0, 0, 0, 0 };
__m128i v_Zero = _mm_loadu_si128((__m128i*)c_0);
x = _mm_unpacklo_epi8(x, v_Zero);
return x;
}
into:
_foo:
xorps %xmm1, %xmm1
punpcklbw %xmm1, %xmm0
ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41022
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 11 Aug 2007 18:19:07 +0000 (18:19 +0000)]
expand a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41021
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 11 Aug 2007 18:16:46 +0000 (18:16 +0000)]
With evan's explicit flag representation, hopefully we will finally be
able to 3-addressify away stuff like this:
movl %ecx, %eax
decl %eax
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41020
91177308-0d34-0410-b5e6-
96231b3b80d8