Commit Graph

3229 Commits

Author SHA1 Message Date
Chris Lattner
24d80079a8 Make the TD pass not include all of the call nodes from the local pass,
eliminating incomplete markers from them


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5490 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 00:59:32 +00:00
Chris Lattner
f52ade928c Add sanity check
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5489 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 00:03:57 +00:00
Chris Lattner
e6c0b5dba4 Fix steensgaard to work on a lot more cases...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5488 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 00:03:37 +00:00
Chris Lattner
714752fa8e Fix printing of nonfunction graphs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5487 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 00:03:18 +00:00
Chris Lattner
0a91e63d92 Rename variable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5486 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 22:51:53 +00:00
Chris Lattner
4923d1be91 Hack to work around deficiency in pass infrastructure
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5485 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 22:51:28 +00:00
Chris Lattner
8105cfbed0 Initial implementation of ds-aa
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5484 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 22:50:46 +00:00
Chris Lattner
dc1ad196e1 Add statistics to basicAA pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5480 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 21:16:17 +00:00
Chris Lattner
1e88369afe * Fix a bug introduced in the last checkin wrt Stack markers
* Make cloning more efficient in the process...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5479 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 20:08:51 +00:00
Chris Lattner
0ac7d5c534 Implement the globals graph!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5477 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 19:12:15 +00:00
Chris Lattner
20167e3c6d Add better debug output
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5476 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 19:11:38 +00:00
Chris Lattner
f9c81670d7 Split public interface out into header file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5472 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 19:08:18 +00:00
Chris Lattner
32d10ddefa Be a bit more specific in caption
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5469 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-02 16:42:01 +00:00
Chris Lattner
bb3e5d4f6e Fix bug: Assembler/2003-02-02-ConstGlobal.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5467 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-02 16:40:20 +00:00
Chris Lattner
7094b7ae8f Fix a bug where we would delete neccesary calls in bu pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5465 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 06:54:31 +00:00
Chris Lattner
706e7ab871 Fix a bug where we would incorrectly delete globals which had edges to alive nodes in
a graph in the t-d pass.  This slows down the TD pass by quite a bit (1/3), but is
needed for correctness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5464 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 06:51:17 +00:00
Chris Lattner
d4400c8297 Delete nodes more efficiently
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5463 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 06:41:15 +00:00
Chris Lattner
5e7d0e2691 Remove dead nodes more efficiently
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5462 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 06:23:33 +00:00
Chris Lattner
a1220afc3a Improve efficiency of aliveness traversal code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5461 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 06:17:02 +00:00
Chris Lattner
41c04f730b Change DSGraph stuff to use hash_(set|map) instead of std::(set|map)
This change provides a small (3%) but consistent speedup


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5460 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 04:52:08 +00:00
Chris Lattner
bac74584f1 Fix typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5458 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 04:50:59 +00:00
Chris Lattner
b3416bc9cc Remove using declarations
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5456 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 04:01:21 +00:00
Chris Lattner
36e50ff3e4 Simplify assertions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5455 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 03:33:22 +00:00
Joel Stanley
95e8b1c976 Added implementation of alternate CallInst constructors (one ctor is
for no actual parameters, and one ctor is for one actual parameter).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5452 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 00:39:58 +00:00
Chris Lattner
100f87252d Remove globals on the bottom up pass which do not contain any information
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5451 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-31 23:57:36 +00:00
Chris Lattner
11d71edd0d Add functions to the ban list
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5450 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-31 23:57:10 +00:00
Chris Lattner
3f39849003 * Add new -track-memory option to tools which enables the mem usage column in the reports.
This is now optional (and defaults to off) because mallinfo can be VERY slow as it
seems to touch every page of allocated memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5448 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-30 23:08:50 +00:00
Chris Lattner
49f2012140 Fix a bug resolving sprintf(...) to sprintf(char*, char*, ...)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5446 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-30 22:38:44 +00:00
Chris Lattner
bae362f8fc Fix bug: Assembler/2003-01-30-UnsignedString.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5445 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-30 22:24:26 +00:00
Chris Lattner
9943a59cb5 Actually print the function _name_ if there is a problem
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5443 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-30 21:33:07 +00:00
Chris Lattner
2f6bb2bce1 * Fix linking of opaque types and their non-opaque versions
* Fix bug: Linker/2003-01-30-LinkerTypeRename.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5441 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-30 20:53:43 +00:00
Chris Lattner
5c2d335d86 Eliminate using decls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5439 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-30 19:53:34 +00:00
Chris Lattner
da902ba970 * Fix function resolution for varargs function to generate incorrect bytecode instead of crashing
* remove using decls
 CVS: ----------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5437 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-30 18:22:32 +00:00
Chris Lattner
8c73b0f7f6 Fix levelraise/2003-01-30-ShiftCrash.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5435 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-30 17:10:41 +00:00
Chris Lattner
f34e1ba79c Initial checkin of pool allocation code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5432 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-29 21:12:13 +00:00
Chris Lattner
5c7380e567 Use and implement API for graph traversals
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5431 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-29 21:10:20 +00:00
Chris Lattner
3301b695cb Fix build problem on sparc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5428 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-29 18:15:34 +00:00
Chris Lattner
910687ec55 Fix warnings on sparc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5427 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-29 18:02:02 +00:00
Chris Lattner
3f24d7a2cd free instructions mark their operands as being heap nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5425 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-28 20:59:57 +00:00
Chris Lattner
0ea3e6dc41 Disable construction of pool allocator
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5422 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-24 20:13:20 +00:00
Chris Lattner
381977d191 * Eliminate boolean arguments in favor of using enums
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5420 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-23 22:06:33 +00:00
Chris Lattner
394471f197 * Eliminate boolean arguments in favor of using enums
* T-D pass now eliminates unreachable globals


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5419 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-23 22:05:33 +00:00
Chris Lattner
787645839a Slight efficiency improvement
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5418 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-23 21:31:16 +00:00
Chris Lattner
e5fa63a578 Fix bug: LevelRaise/2003-01-22-GEPProblem.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5407 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-23 02:39:10 +00:00
Chris Lattner
d7f268d418 Fix bug: ADCE/2003-01-22-PredecessorProblem.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5405 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-23 02:12:18 +00:00
Chris Lattner
6f6fef8c26 Fix analysis of the Burg program
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5401 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-22 22:00:24 +00:00
Chris Lattner
285ca5ed2f Fix didn't fix the race condition in the makefiles
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5394 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-22 15:41:10 +00:00
Chris Lattner
a407ba1062 Don't keep track of # big vs #small instructions seperately
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5385 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-21 20:13:49 +00:00
Chris Lattner
c479db964f Fix race condition in Makefile
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5380 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-21 15:20:50 +00:00
Chris Lattner
9085d8a9a9 Print machine frame objects with the frame offset intrinsic to the machine
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5329 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-16 18:35:57 +00:00
Chris Lattner
55f6fab9f1 Don't emit unneccesary branch instructions!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5328 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-16 18:07:23 +00:00
Chris Lattner
ee3e4356fc Fix problem with invalidated iterator
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5327 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-16 18:07:13 +00:00
Chris Lattner
0416d2a70a Fix problems with empty basic blocks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5326 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-16 18:06:43 +00:00
Chris Lattner
6d40c191ee Implement optimization folding setcc into branch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5324 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-16 16:43:00 +00:00
Chris Lattner
b037ee822c Add more flavors of branch instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5323 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-16 16:42:45 +00:00
Chris Lattner
f85249ca73 Arg, fix bugs in previous checkin...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5322 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-16 02:24:20 +00:00
Chris Lattner
78d6db5627 Add assertion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5321 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-16 02:22:08 +00:00
Chris Lattner
f158da2f78 Implement code to keep the stack pointer aligned to an 8 byte boundary.
This improves the performance of the power benchmark by a few percent.
This will be neccesary for SSE code, which requires 16 byte alignment of
the stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5320 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-16 02:20:12 +00:00
Chris Lattner
eafa423881 Handle frame offset due to return address pushed on the stack
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5319 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 22:57:35 +00:00
Chris Lattner
4ac7d7302b * Insert prolog/epilog code before rewriting indexes
* Fix calculation of frame offsets when there is an offset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5318 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 22:52:34 +00:00
Chris Lattner
795ba6cabd Move sparc specific code into the Sparc backend
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5317 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 21:36:50 +00:00
Chris Lattner
ac4dfd0643 Fix warnings
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5316 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 21:36:30 +00:00
Chris Lattner
3c3c82d05d Adjust to simpler interfaces
Eliminate dependency on RegClass.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5315 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 21:14:32 +00:00
Chris Lattner
9d4ed15c9e Adjust to new interfaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5314 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 21:14:01 +00:00
Chris Lattner
af3cdcf9b0 Move headers around
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5312 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 21:02:16 +00:00
Chris Lattner
4cfd622252 Header is moved into local directory
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5311 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 21:00:02 +00:00
Chris Lattner
c7c7b7ab75 Fix bug in previous checkin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5310 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 20:32:15 +00:00
Chris Lattner
c520feb6f0 Add new method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5309 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 20:28:36 +00:00
Chris Lattner
4309e736c1 #include RegClass.h explicitly
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5307 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 19:57:07 +00:00
Chris Lattner
abb9c08a05 Remvoe dependency on RegClass.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5306 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 19:56:21 +00:00
Chris Lattner
0e10433325 Move private header to private directory
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5305 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 19:50:44 +00:00
Chris Lattner
a9b19b9002 Prune #includes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5303 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 19:48:13 +00:00
Chris Lattner
0412077faf Minor changes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5302 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 19:47:53 +00:00
Chris Lattner
b66fdc2934 Remove obsolete ctor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5301 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 19:47:02 +00:00
Chris Lattner
54e898e690 Use BuildMI more
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5299 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 19:23:34 +00:00
Chris Lattner
1531b63421 Remove dead code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5298 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 19:22:38 +00:00
Chris Lattner
4690e6d42f Fix bug found by regtests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5294 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 18:11:11 +00:00
Chris Lattner
f6ee49fcf0 Use buildmi not MI ctor directly
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5293 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 18:08:07 +00:00
Chris Lattner
00dca91658 Use BuildMI more, Create*Instruction less
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5291 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 17:47:49 +00:00
Chris Lattner
1a57ccdfbf X86 backend should never use addMReg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5288 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 00:04:14 +00:00
Chris Lattner
e5b1ed9db9 * Elimiante a bunch of functions from InstrSelectionSupport.h, replacing users
of them with BUildMI calls instead.
* Fix def information in instructions generated by prologepilog inserter


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5287 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-15 00:03:28 +00:00
Chris Lattner
92ba2aaa58 Rename llvm/Analysis/LiveVar/FunctionLiveVarInfo.h -> llvm/CodeGen/FunctionLiveVarInfo.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5284 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-14 23:05:08 +00:00
Chris Lattner
8143d8f91a Move llvm/Analysis/LiveVar/ValueSet.h to CodeGen/ValueSet.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5282 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-14 22:56:37 +00:00
Chris Lattner
c56d239510 Rename include/llvm/Transforms/Instrumentation/TraceFunctions.h to Instrumentation.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5281 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-14 22:39:29 +00:00
Chris Lattner
4b208dc599 Fix typeo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5278 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-14 22:34:36 +00:00
Chris Lattner
e9e55131e8 Remove unused header and function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5277 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-14 22:34:13 +00:00
Chris Lattner
b117fb57a6 Clean up #includes
Move graph.h into local directory


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5276 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-14 22:33:56 +00:00
Chris Lattner
6d57086129 Fix bug Regression/Verifier/2002-11-05-GetelementptrPointers.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5273 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-14 22:19:44 +00:00
Chris Lattner
3501feab81 Rename MachineInstrInfo -> TargetInstrInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5272 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-14 22:00:31 +00:00
Chris Lattner
2c1378cc12 Move annotations to support library
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5270 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-14 21:31:39 +00:00
Chris Lattner
cb09cc268b Move annotation to support library
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5268 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-14 21:29:58 +00:00
Chris Lattner
64317fce27 Minor cleanups
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5266 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-14 20:32:10 +00:00
Chris Lattner
6a490cedb5 Make type resolution a bit more efficient
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5265 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-14 19:42:39 +00:00
Chris Lattner
408e72df50 Fix bug
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5264 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-14 19:04:43 +00:00
Chris Lattner
bc40e898e1 New files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5262 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 20:01:16 +00:00
Chris Lattner
a960d95253 New files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5260 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 01:01:59 +00:00
Chris Lattner
0d448c03f3 Add support for named functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5258 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 01:00:48 +00:00
Chris Lattner
f1dd28d89e Dead file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5257 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 01:00:28 +00:00
Chris Lattner
1cc08381f1 Add support for new types of values
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5256 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 01:00:12 +00:00
Chris Lattner
61253a9c93 Bad segvs actually cause a segv now
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5255 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 01:00:02 +00:00
Chris Lattner
b111874b38 * Wrap at 80 columns
* Fix a ton of warnings
* Implement puts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5254 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:59:47 +00:00
Chris Lattner
93780132a7 Handle value promotion properly to work with tracing better
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5253 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:58:52 +00:00
Chris Lattner
0394891ef6 No longer need scalaropts lib
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5252 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:58:18 +00:00
Chris Lattner
92798d7849 Add fixme
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5251 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:58:06 +00:00
Chris Lattner
3fa61eb199 Fix static initializer ordering dependency
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5236 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:52:43 +00:00
Chris Lattner
3cf5db73c7 Add debugging helper
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5235 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:52:25 +00:00
Chris Lattner
80e5ed9f77 Make sure to handle %'s in strings correctly so that the names of BB's and functions are actually printed!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5234 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:52:14 +00:00
Chris Lattner
d91d86f3a6 * No longer need lowerallocation pass
* Add X86 Stackifier pass
* Add peephole optimizer pass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5233 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:51:23 +00:00
Chris Lattner
a849056a37 rename FP -> fp*
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5232 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:50:46 +00:00
Chris Lattner
d264bec88a * Move frame and constant pool indexes to first argument of memory reference
so we can put an offset in there as well...
* Fix long/ulong stuff


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5231 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:50:33 +00:00
Chris Lattner
0c514f4e27 * Some instructions take 64 bit integers, add an Arg type for it
* Add flags for different types of FP pseudo instrs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5230 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:49:24 +00:00
Chris Lattner
20862b970e * Function calls clobber fp registers
* Use new M_TERMINATOR_FLAG flag
* Add ::Void flag on several instructions so def-use info is correct!
* Implement MANY FP instructions
* Finalize pseudo FP instructions
* Add set of Pseudo FP instruction description flags
* Add support for MOVim instrs
* Add support for 64 bit support instrs, like adc sbb, etc
* Add conditional move


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5229 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:48:46 +00:00
Chris Lattner
987e8baf12 Add support for frame and constant pool references
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5228 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:45:53 +00:00
Chris Lattner
31ad5dd67f Move passes out to Passes.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5227 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:45:29 +00:00
Chris Lattner
70445403c3 Add speculation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5226 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:35:08 +00:00
Chris Lattner
b708944fc2 * Implement rudimentary output of the constant pool
* Implement support for MRMS?m instructions
* Add Arg64 support
* Add support for frame indexes and constant pool indexes
*


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5225 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:35:03 +00:00
Chris Lattner
e831b6b802 * Add support for FP registers ST*
* Add support for the constant pool & constant pool indices
* Add support for MRMS?m instructions
* Fix FP Prefix emission
* Add support for global addresses and external symbols


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5224 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:33:59 +00:00
Chris Lattner
3e130a2a77 * Adjust to use new interfaces, eliminating CurReg stuff
* Support arbitrary FP constants
* Fix bugs in frame layout for function calls and incoming arguments
* Insert copies for constant arguments to PHI nodes into the BOTTOM of
  predecessor blocks, not the top.
* Implement _floating point_ support: setcc, return, load, store, cast
* Fix several bugs in the cast instruction
* Abstract out call emission and load/store for FP
* Implement malloc/free without previous lowering pass.
* Make use of new forms of MachineOperand
* Implement _long_ support!
* Fix many bugs in FP support
* Change branch from je/jne to je/jmp
* Simplify code generated for GEP instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5223 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:32:26 +00:00
Chris Lattner
019a7c801b Fix references to functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5222 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:27:23 +00:00
Chris Lattner
08084145c6 Start renaming MachineInstrInfo -> TargetInstrInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5221 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:26:36 +00:00
Chris Lattner
80a0478bbb * Use the PHI Elimination pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5220 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:26:08 +00:00
Chris Lattner
91a452b382 * Convert to use LiveVariable analysis
* Convert to use PHIElimination pass
* Don't spill values which have just been reloaded (big win reducing spills)
* Add experimental support for eliminating spills before TwoAddress
  instructions.  It currently is broken so it is #ifdef'd out.
* Use new "is terminator" flag on instructions instead of looking for
  branches and returns explicitly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5219 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:25:40 +00:00
Chris Lattner
f00a3f905e Convert to MachineFunctionPass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5218 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:23:41 +00:00
Chris Lattner
8d95ef4973 Add support for 3 new forms of MachineOperand
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5217 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:23:24 +00:00
Chris Lattner
4d149cdae1 Add support for constant pool
Add helper methods for MachineFrameInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5216 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:23:03 +00:00
Chris Lattner
7775df1a6c Add support for global address by string and constant pool values
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5215 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:22:37 +00:00
Chris Lattner
d0f166a486 More renamings of Target/Machine*Info to Target/Target*Info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5204 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-29 03:13:05 +00:00
Chris Lattner
f27eeea54f Rename MachineOptInfo to TargetoptInfo
Rename MachineCacheInfo to TargetCacheInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5203 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-29 02:50:35 +00:00
Chris Lattner
dde126207e Rename MachineOptInfo to TargetoptInfo
Rename MachineCacheInfo to TargetCacheInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5202 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-29 02:50:33 +00:00
Chris Lattner
aa09b75d22 Rename FunctionFrameInfo to MachineFrameInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5201 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 21:08:28 +00:00
Chris Lattner
eb24db9727 Rename FunctionFrameInfo to MachineFrameInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5200 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 21:08:26 +00:00
Chris Lattner
8bd66e6907 Rename MachineFrameInfo to TargetFrameInfo.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5199 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 21:00:25 +00:00
Chris Lattner
58b3328ac7 Initial checkin of Prolog/Epilog code inserter, which is an important part
of the abstract frame representation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5198 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:43:30 +00:00
Chris Lattner
5a977d4034 Put class in anonymous namespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5197 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:42:56 +00:00
Chris Lattner
600dee4aae * Convert to be a MachineFunctionPass instance
* Use new FunctionFrameInfo object to manage stack slots instead of doing
  it directly
* Adjust to new MRegisterInfo API
* Don't take a TM as a ctor argument
* Don't keep track of which callee saved registers are modified
* Don't emit prolog/epilog code or spill/restore code for callee saved regs
* Use new allocation_order_begin/end iterators to simplify dramatically the
  logic for picking registers to allocate
* Machine PHI nodes can no longer contain constant arguments

* Use a bitvector to keep track of registers used instead of a set
* Fix problem where explicitly referenced registers would be added to
  regsused set and never removed


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5196 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:42:14 +00:00
Chris Lattner
580f9be7ff * Convert to be a MachineFunctionPass instance
* Use new FunctionFrameInfo object to manage stack slots instead of doing
  it directly
* Adjust to new MRegisterInfo API
* Don't take a TM as a ctor argument
* Don't keep track of which callee saved registers are modified
* Don't emit prolog/epilog code or spill/restore code for callee saved regs
* Use new allocation_order_begin/end iterators to simplify dramatically the
  logic for picking registers to allocate
* Machine PHI nodes can no longer contain constant arguments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5195 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:40:43 +00:00
Chris Lattner
10cb79b484 * Add printing support for FrameIndex operands
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5194 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:37:37 +00:00
Chris Lattner
955fad1f99 * A bunch of functionality and data was removed from MachineFunction and put
into a new MachineFunctionInfo class
* Implement new FunctionFrameInfo class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5193 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:37:16 +00:00
Chris Lattner
e90fcb739a Frame info moved out of MachineFunction into a seperate object
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5192 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:35:34 +00:00
Chris Lattner
370e187aac Eliminate unneccesary file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5191 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:34:47 +00:00
Chris Lattner
3ad7642901 Capture more information in ctor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5190 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:34:18 +00:00
Chris Lattner
fde4b51baa Implement the TargetFrameInfo interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5189 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:33:52 +00:00
Chris Lattner
d282cfef61 * Initialize new FrameInfo member
* most pass ctors no longer take TM arguments
* New prolog/epilog insertion pass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5188 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:33:32 +00:00
Chris Lattner
128aff4f95 Changes to match new MRegisterInfo api
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5187 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:32:54 +00:00
Chris Lattner
3c1c03d7a7 *** Implement frame pointer elimination on X86!
* Include contents of X86RegisterClasses.cpp into here
* Adjustments to register api to work with new frame manager
* Eliminate moveImm2Reg, getFramePointer, and getStackPointer
* Cleanup and simplify prolog/epilog code generation
* Prolog/epilog are MUCH more efficient now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5186 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:32:28 +00:00
Chris Lattner
e0a3fcb304 Contents merged with X86RegisterInfo.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5185 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:30:15 +00:00
Chris Lattner
0ef73f3e29 * Remove implementations of previously pure virtual functions that are not any longer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5184 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:29:41 +00:00
Chris Lattner
3e6dd5009d * Minor reformatting
* Remove some size suffixes [bwl]
* Add new ADJCALLSTACKDOWN & ADJCALLSTACKUP pseudo instrs
* Call instructions are M_CALL not M_BRANCH!
* Disable push and pop instructions
* Add new ANDri32 instr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5183 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:29:14 +00:00
Chris Lattner
a1826c2ecd New addFrameReference function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5182 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:26:58 +00:00
Chris Lattner
f2ab4124e3 * Most pass ctor functions don't take TM arguments anymore
* New createPrologEpilogCodeInserter() function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5181 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:26:16 +00:00
Chris Lattner
0285a33761 * Convert to a MachineFunctionPass
* Don't take a TM as a ctor parameter
* Print [X - Y] instead of [X + -Y] when possible


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5180 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:25:38 +00:00
Chris Lattner
5ae99fe3bf * Convert to a MachineFunctionPass
* ctor doesn't take TM argument
* handle direct ESP references correctly!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5179 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:24:48 +00:00
Chris Lattner
065faebe10 * Use the new Abstract Frame Manager to handle incoming arguments and
fixed size allocas
* Revamp call emission to work with new frame manager


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5178 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:24:02 +00:00
Chris Lattner
1b849be29e * Rename machineFrameInfo to targetFrameInfo
* Constant pool and frame info is no longer directly in MachineFunction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5177 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:21:29 +00:00
Chris Lattner
da62ac6fe2 * Rename MachineFrameInfo to TargetFrameInfo
* Move some sparc specific code here from Target files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5176 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:20:24 +00:00
Chris Lattner
ea45d7ba3f * TargetData is no longer directly accessable from TM
* s/unsigned int/unsigned/


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5175 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:19:44 +00:00
Chris Lattner
2ef9a6aac0 * TargetData is no longer directly accessable from TargetMachine
* Constpool & frame info is no longer directly in MachineFunction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5174 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:18:21 +00:00
Chris Lattner
78d881d26a * Frame & const pool info is no longer directly in MachineFunction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5173 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:17:43 +00:00
Chris Lattner
8cab46e10e * Changes to be a MachineFunctionPass
* Frame information is now stuck in MachineFunctionInfo instead of directly
  in MachineFunction.
* Don't require a TM as an argument to the ctor


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5172 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:16:08 +00:00
Chris Lattner
d0fe5f5769 * Don't access TargetData directly
* Changes because frame info is not in MachineFunction directly anymore


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5171 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:15:01 +00:00
Chris Lattner
1951c5b987 State for frame and constant pool information pulled out of MachineFunction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5165 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:07:33 +00:00
Chris Lattner
623a222510 Add diagnostic output
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5157 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:00:15 +00:00
Chris Lattner
94af414b71 * Simplify Value classes
* Add initial support for FP constants
* Add initial FP support for several instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5154 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:13:53 +00:00
Chris Lattner
6331bdb940 * Use new pseudo instr form for instructions
* Mark CALLpcrel as a RawFrm instruction as required
* Eliminate invalid BSWAP16 instruction
* Add xchg instructions
* Add initial support for FP instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5153 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:11:46 +00:00
Chris Lattner
4c299f5da1 Add FP instr prefix byte support
Add Pseudo instr class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5152 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:09:59 +00:00
Chris Lattner
5ada8df488 Add support for FP prefixes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5151 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:09:21 +00:00
Chris Lattner
eca1f639eb Add printer support for Pseudo instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5150 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:09:01 +00:00
Chris Lattner
ba4ef26245 Initial support for FP registers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5149 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:08:03 +00:00
Chris Lattner
8e58179048 New simpler spill interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5148 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:07:09 +00:00
Chris Lattner
6811c6e1d7 Adjustments to match new simpler spill interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5147 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:06:43 +00:00
Chris Lattner
430cda7452 Free machine code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5146 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:06:21 +00:00
Chris Lattner
ff863ba610 Adjust to simpler spill interface
Only spill and reload caller saved registers that are actually modified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5145 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:05:46 +00:00
Chris Lattner
5124aec32f Adjustments to work with the simpler spill interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5144 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:04:20 +00:00
Chris Lattner
831fdcf017 Remove dependency on SSARegMap.h by MachineFunction.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5143 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:03:22 +00:00
Chris Lattner
e1b52b7656 Fix compilation on GCC 3.2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5136 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:44:34 +00:00
Chris Lattner
d6840ac046 Fixes to compile with GCC 3.2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5134 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:39:16 +00:00
Chris Lattner
0eb172cc4a Substantial fixes to live range handling, fixing several problems, getting
strtol to not miscompile, and fixing bug: 2002-12-23-LocalRAProblem.llx


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5132 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:04:55 +00:00
Chris Lattner
5bcd95c57f Changes to allow for a configurable target machine that allows big endian and/or long pointer operation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5131 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:04:01 +00:00
Chris Lattner
e8f0d924d4 Changes to compile with GCC 2.96
Changes to support configurable pointer size and endianness


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5130 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:03:11 +00:00
Chris Lattner
ce8bce6e5c Sparc is not little endian
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5129 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:02:38 +00:00
Chris Lattner
836f675c49 Initial checkin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5127 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:01:22 +00:00
Chris Lattner
bd199fb114 Initial checkin of new LLI with JIT compiler
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5126 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:01:05 +00:00
Chris Lattner
fe11a97fcd Substantial changes to refactor LLI to incorporate both the Jello JIT and
the traditional LLI interpreter


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5125 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-23 23:59:41 +00:00
Chris Lattner
4a10645c70 New files for miscompilation detection
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5120 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-23 23:50:16 +00:00
Chris Lattner
fc1c705965 Fix compilation on gcc 2.96
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5116 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-23 23:46:55 +00:00
Chris Lattner
25f091fc61 Add definition for the bswap instruction
*** FIX: the encoding of the SUB instruction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5115 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-23 23:46:31 +00:00
Chris Lattner
facc9fb9ba Add support for the bswap instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5114 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-23 23:46:00 +00:00
Chris Lattner
e500864619 Fix compilation on GCC 2.96
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5113 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-23 23:44:04 +00:00
Chris Lattner
dbcda22bf3 Add support for isnan
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5111 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-20 04:18:13 +00:00
Chris Lattner
6eaa46956a Fix warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5109 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-20 04:13:28 +00:00
Chris Lattner
45a4399f88 CBW doesn't modify AL
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5108 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-20 04:13:11 +00:00
Chris Lattner
df642e1fd6 fix warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5107 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-20 04:12:48 +00:00
Chris Lattner
82bee0f2c8 * Fix several register aliasing bugs
* Add a new option to eliminate spilling of registers that are only used
  within a basic block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5106 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-18 08:14:26 +00:00
Chris Lattner
89fab07abd Don't force setCC instructions into AL
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5104 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-18 01:44:31 +00:00
Chris Lattner
aed967cc9e Implicit defs/uses list may be empty.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5103 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-18 01:11:14 +00:00
Chris Lattner
b339223518 Add comments, switch uses/defs to match InstrInfo.def file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5102 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-18 01:05:54 +00:00
Chris Lattner
1445895e19 Add reg clobber list for direct calls
Represent empty use/def list as a null pointer


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5101 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-18 01:05:31 +00:00
Chris Lattner
e7d361d15a Use new reginfo interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5099 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 04:19:40 +00:00
Chris Lattner
79de6319b1 Update to use new interface for register info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5098 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 04:19:17 +00:00
Chris Lattner
9208bbf5c9 New file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5097 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 04:03:08 +00:00
Chris Lattner
86c69a6cbe Add prolog/epilog spills/reloads to counters
Move X86 specific alignment gunk to X86 files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5096 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 03:16:10 +00:00
Chris Lattner
3bbe7cc51d Round number of bytes allocated on the stack up to a multiple of 4 so that the
stack remains aligned


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5095 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 03:15:26 +00:00
Chris Lattner
14322cd337 Local register allocator is now stable enough for use, it passes all tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5094 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 02:51:15 +00:00
Chris Lattner
ae64043737 Fix many bugs, regallocator now saves callee-save registers instead of target
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5093 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 02:50:10 +00:00
Chris Lattner
6c6cf873f3 Register allocator is responsible for spilling callee saved regs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5092 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 02:48:57 +00:00
Chris Lattner
3bd9409349 Build add instructions of the correct form!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5090 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 23:36:57 +00:00
Chris Lattner
14aa7fe238 Two fixes:
* Only load incoming arguments into virtual registers once at the
    beginning of the function
  * Assign different virtual registers to each reference to constants/globals


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5088 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 22:54:46 +00:00
Chris Lattner
3fc14c2602 Fix prolog/epilog in the presence of alloca
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5087 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 22:29:30 +00:00
Chris Lattner
4863fe14de Make sure stack manipulation refers to ESP the right number of times
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5086 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 22:29:06 +00:00
Chris Lattner
8a307e8c63 Add some special cases to make common getelementptr cases easier to read/faster
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5084 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 19:32:50 +00:00
Chris Lattner
27177cb1c1 Finish implementation of alias list impl
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5083 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 19:31:48 +00:00
Chris Lattner
c21be922bf * Fix a gross X86 hack that was intended to avoid allocating SP and BP
* Implement register alias set support


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5082 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 17:44:42 +00:00
Chris Lattner
69c198863d Keep the stack frame aligned.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5081 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 17:42:40 +00:00
Chris Lattner
439a27ac42 Add mechanism to select register allocator to use
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5079 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 16:15:51 +00:00
Chris Lattner
b74e83c898 Initial checkin of "local" register allocator. Bugs are still present.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5078 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 16:15:28 +00:00
Chris Lattner
92aec04cd6 Try #2 to get alias set stuff to work
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5077 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 16:14:51 +00:00
Chris Lattner
1894dd6ca9 Add comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5076 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 15:57:44 +00:00
Chris Lattner
c2fc7ea60b Add info about register aliases, add prototype for createLocalRegisterAllocator
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5075 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 15:55:51 +00:00
Chris Lattner
dfb0a541c7 Add info about register file aliasing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5074 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 15:55:25 +00:00
Chris Lattner
1a49517a2c Add information about register file aliasing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5073 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 15:54:59 +00:00
Chris Lattner
880eaa5985 Add call clobber info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5072 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 15:54:42 +00:00
Chris Lattner
1a45626c4c Rename createSimpleX86RegisterAllocator to createSimpleRegisterAllocator
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5071 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 14:38:13 +00:00
Chris Lattner
1d62cea90b Rename createSimpleX86RegisterAllocator to createSimpleRegisterAllocator.
Remvoe some dead code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5070 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 14:37:00 +00:00
Brian Gaeke
68b1edca76 brg
Fix some bugs in use of MBB vs. BB and iterators that are invalidated before
we use them.

Reference targetClass by enum name, not by number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5069 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 04:23:29 +00:00
Chris Lattner
b167c04e62 Some simpliciations to the spill/reload interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5067 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 23:01:26 +00:00
Chris Lattner
8ed9eb5ca3 Simplify PHI node elimination significantly by doing it as a prepass to
register allocation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5066 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 22:39:53 +00:00
Chris Lattner
f4b95d94e2 Correct the setting of Def flags on registers that are modified!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5065 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 22:38:47 +00:00
Chris Lattner
9f366d7ab6 Variety of small or trivial simplifications to the code, completely eliminated
the dependence on PhysRegClassMap


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5064 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 22:19:19 +00:00
Chris Lattner
f605055994 Remove unused savePhysRegToStack method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5061 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 21:33:51 +00:00
Chris Lattner
01b08c59b4 Localize a map, remove another
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5060 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 21:24:30 +00:00
Chris Lattner
f0eb7beb66 Give passes nice names!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5059 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 21:13:40 +00:00
Chris Lattner
8233e2fe01 Give simple reg allocator a nice Pass Name
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5058 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 21:13:12 +00:00
Chris Lattner
15f96db4d9 Add a big assert making sure 2 address instructions are formed right
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5057 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 21:02:20 +00:00
Chris Lattner
3f91ad7ba7 Fix a problem that occurs when PHI nodes have multiple entries for the same predecessor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5055 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 20:48:03 +00:00
Chris Lattner
da7e453aac Grab bag of minor cleanups. Export some statistics about the number of
spills and reloads emitted


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5054 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 20:36:09 +00:00
Chris Lattner
2109f502d6 Implement printing of MBB arguments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5053 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 20:35:25 +00:00
Chris Lattner
198ab640bb Simplify interfaces used by regalloc to insert code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5052 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 20:06:35 +00:00
Chris Lattner
c2db1a95df * Simplify code a bit by breaking the PHI node handling stuff out into a seperate
function from normal regalloc code
* Make the regalloc for a block a function instead of part of runOnMachineBB, which
  makes it easier to see what's going on in runOnMBB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5051 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 19:51:14 +00:00
Chris Lattner
afe628c1d6 Changes to make new TargetRegisterClass interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5050 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 19:29:34 +00:00
Chris Lattner
9593fb1503 * Remove some unneccesary instance variables
* Make allocateStackSpaceFor only allocate the right amount of space


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5048 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 19:07:34 +00:00
Chris Lattner
439b76730d * Simplify TargetRegisterClass implementations
* Change regclass iterators to use an extra level of pointers


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5047 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 18:40:36 +00:00
Chris Lattner
dd444f9242 pull inverse reg class mapping into a class that is sharable and out of the
target register description classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5045 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 18:38:59 +00:00
Chris Lattner
abe8dd592d Prune #includes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5044 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 18:19:24 +00:00
Chris Lattner
ad44bd99ff Remove extraneous #includes, perform FIXME
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5043 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 18:15:24 +00:00
Chris Lattner
197ff79a8c Fix bug: Assembler/2002-12-15-GlobalResolve.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5039 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 16:41:52 +00:00
Chris Lattner
8e637a9383 planes is not spelled with an O
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5037 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 16:20:23 +00:00
Chris Lattner
71c83728b4 Fix borkness with not using MachineBasicBlocks in PHI nodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5035 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 08:02:51 +00:00
Chris Lattner
6b993ccfe5 Add support to cast from a bool type
Add support for boolean constants
add getClassB method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5034 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 08:02:15 +00:00
Chris Lattner
d909683591 Use MachineOperand::isFoo methods instead of our own global functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5033 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 08:01:39 +00:00
Chris Lattner
4d0a82da2d Fix a huge performance problem in reassociate by introducing a
rank map cache for instruction ranks


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5030 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 03:56:00 +00:00
Chris Lattner
680f0c283d Minor changes:
* Reword comment to make more clear
  * Don't print out BB's after modification made
  * Don't delete and new an instruction when we need to move something, just move it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5029 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 03:49:50 +00:00
Chris Lattner
6e49a4b814 Implement indirect function calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5024 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 14:13:27 +00:00
Misha Brukman
b8ead9dc22 Make function code generation printing debug-only.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5023 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 13:16:14 +00:00
Chris Lattner
202a2d0e17 Fix bork in doMultiply
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5021 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 13:07:42 +00:00
Chris Lattner
d7d3872fb0 Add sanity checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5020 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 13:04:04 +00:00
Misha Brukman
0868667f78 Fixed a bug where moves due to phis were being neglected.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5019 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 12:33:31 +00:00
Misha Brukman
87e369d221 Cleaned up the code: factored out switch/case into a separate function, put
constants in an array for quick lookup. Stole the idea from elsewhere in
Jello.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5017 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 12:00:06 +00:00
Misha Brukman
74676da6f1 Need to insert all moves due to PHI nodes before *ALL* jumps in a predecessor
basic block, as there could be multiple.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5016 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 11:55:59 +00:00
Chris Lattner
920536333c Insert phi code at top of block
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5015 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 11:52:34 +00:00
Brian Gaeke
992447f91b lib/Target/X86/InstSelectSimple.cpp:
The MachineBasicBlock variable name patrol hereby fines Chris Lattner
one bag of nachos, for shadowing global names while his license to do so
was under suspension.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5014 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 11:39:18 +00:00
Misha Brukman
972b03fa53 This should be more correct: invalidates physical registers that are used in
an instruction to avoid using them to allocate to other virtual registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5013 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 11:33:22 +00:00
Chris Lattner
7d25589ee1 Implement cast bool to X
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5012 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 11:31:59 +00:00
Brian Gaeke
71794c0069 Rename all BMI MachineBasicBlock operands to MBB.
Try to mess around with emitGEPOperation's elementSizeReg to make it work,
again.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5011 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 11:22:48 +00:00
Chris Lattner
f08ad9f817 Finish up iterator stuph
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5009 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 10:50:40 +00:00
Misha Brukman
fa18ade05b Treat longs as ints => pretend they're all 32-bit values and squeeze them into
32-bit registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5008 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 10:43:09 +00:00
Misha Brukman
59b3eedf31 Fixed bug with running out of registers. Also, reinstated namespace which
disappeared during the last checkin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5007 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 10:42:31 +00:00
Chris Lattner
333b2fa560 Code gen phi's correctly
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5004 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 10:09:43 +00:00
Chris Lattner
3faae2dbc2 Print X86 PHI nodes in a sane manner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5003 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 09:59:26 +00:00
Misha Brukman
203b769b20 This should handle register allocating PHI nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5002 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 09:54:36 +00:00
Misha Brukman
2b46e8eccc Added moveReg2Reg() and moveImm2Reg() to accomodate moving data around due to
PHI nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5001 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 09:54:12 +00:00
Brian Gaeke
ed6902ca89 lib/Target/X86/InstSelectSimple.cpp: Start counting arguments with 2,
because arguments start two stack slots off of EBP. Break out of the
 for loop once the argument is found. Increment the counter at the end
 of the loop instead of the beginning. Use addRegOffset and compute
 the scale * index part at compile time instead of using the fancy
 load instruction. Just because an instruction set has wacky addressing
 modes doesn't mean we ought to use them (at least, if you believe Dave
 Patterson).

lib/Target/X86/X86InstrBuilder.h: Add some comments.

test/Regression/Jello/test-loadstore.ll:  Let main return int 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4999 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 09:28:50 +00:00
Brian Gaeke
95780cccef InstSelectSimple.cpp: Give promote32 a comment. Add initial
implementation of getReg() for arguments.

MachineCodeEmitter.cpp: Fix using EBP with index, scale and no
 displacement (whew!) due to Chris.

Printer.cpp: Fix printing out index and scale in memory references.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4998 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 07:56:18 +00:00
Chris Lattner
c0812d8f39 Implement getelementptr constant exprs
Implement ConstantPointerRefs
Treat long/ulongs as if they were integers.  A hack, but an effective one


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4995 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 06:56:29 +00:00
Brian Gaeke
e48ec018a5 brg
InstSelectSimple.cpp: Add stub implementation of visitFreeInst.
 Add comments that mention how we are failing to implement malloc/free.
 Add initial implementation of visitAllocaInst.

X86TargetMachine.cpp: Include llvm/Transforms/Scalar.h.
 Add LowerAllocations pass before instruction selection.

jello/Makefile: Add scalaropts.a.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4994 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 06:46:31 +00:00
Chris Lattner
2067184b42 Emit the right form of mod/rm mod field
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4986 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 05:05:05 +00:00
Chris Lattner
276867de18 Nicify a bit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4985 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 05:04:37 +00:00
Chris Lattner
b1224f2d0b Fix encoding of CBW instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4983 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 04:41:31 +00:00
Misha Brukman
cea2245f04 Start allocating stack space at [ebp-4] to not overwrite the return address.
Also make all loads & stores 4-byte aligned for performance. ;)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4982 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 04:34:02 +00:00
Misha Brukman
07e376bd0d Moves now select correct opcode based on the data size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4981 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 04:24:53 +00:00
Chris Lattner
95b12ba775 Remove extranous #include
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4980 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 04:12:24 +00:00
Chris Lattner
a0f38c867c Rename MemArg* to Arg*
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4979 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 03:51:55 +00:00
Chris Lattner
a6a382c5ca Make mem size an assert
Add mem size flags to all instructions using an imm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4978 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 03:50:13 +00:00
Misha Brukman
5000e43809 This is supposed to provide correct size for datatypes. Supposedly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4977 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 02:13:15 +00:00
Misha Brukman
d1bedcced2 Take advantage of our knowledge of 2-address X86 instructions and
register-allocated them appropriately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4976 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-12 23:20:31 +00:00
Misha Brukman
9f32791fe7 Added the flag to mark instructions which are really 2-address instructions in
X86, but would be 3-address in any normail architecture.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4974 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-12 23:19:11 +00:00
Brian Gaeke
20244b7e2c This checkin is brought to you by the brian gaeke allnighter fund.
(lib/Target/X86) InstSelectSimple.cpp:
 Include llvm/DerivedTypes.h and iostream.
 Refactor visitMul out into a wrapper around doMultiply(), so that we
  can do multiplications on temporary values when we are doing
  getelementptrs.
 Refactor part of getReg out into makeAnotherReg, so that we can create
  registers willy-nilly to hold temporary values, when we are doing
  getelementptrs.
 Add stub implementations of visitMallocInst and visitAllocaInst.
 Add initial implementation of visitGetElementPtrInst.
 In copyConstantToRegister:
  We throw a *lot* of our asserts here. So, when we want to throw an
   assert, print out to stderr whatever expr or whatever constant made
   us barf.
  Support copying ConstantPointerNull to register, using a move immediate
   of zero.
 Rename FLDr4 and FLDr8 to FLDr32 and FLDr64, so that they match the meanings
  of the numbers in the other instruction names. All uses modified.
 Teach visitCallInst to extract byte- and short-class return values
  from subregs of EAX.  Add a FIXME note about how we would do it for
  float-class return values.
 Add a FIXME note about how we would cast float to int and back.

X86InstrInfo.def:
 Rename FLDr4 and FLDr8 to FLDr32 and FLDr64, so that they match the meanings
  of the numbers in the other instruction names. All uses modified.

(tools/jello) GlobalVars.cpp:
 Include iostream.
 If we have to emit a floating-point constant to memory, gamble and use
  the same method as for ints.
 If we have to emit a ConstantPointerNull to memory, try using a "void *"
  and "NULL".
 Otherwise, if we are going to throw an assert, print out whatever constant
  made us barf, first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4973 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-12 15:33:40 +00:00
Misha Brukman
f4445dfcb7 'graph' is spelled without a 'c'.
Also added Statistic counters for NoAlias and MayAlias.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4972 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-12 05:34:10 +00:00
Chris Lattner
3fc46450b7 Remove #includes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4968 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-12 03:47:27 +00:00
Vikram S. Adve
d86deb689b External routines used to identify Cilk operations inserted by the
parallelization pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4965 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-10 13:08:48 +00:00
Vikram S. Adve
83e3b6503d This file implements the function DemoteRegToStack(), which takes a
virtual register computed by an Instruction& X and replaces it with
a slot in the stack frame, allocated via alloca.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4964 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-10 13:07:58 +00:00
Vikram S. Adve
e12c74c07b This file implements a pass that automatically parallelizes a program,
using the Cilk multi-threaded runtime system to execute parallel code.
The current version inserts too many sync() operations in the program
because it does not attempt to optimize their placement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4962 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-10 00:43:34 +00:00
Vikram S. Adve
0d4f76637d Iterator that enumerates the ProgramDependenceGraph (PDG) for a function,
i.e., enumerates all data and control dependences for the function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4958 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-08 14:13:19 +00:00
Vikram S. Adve
96b21c1054 An explicit representation of dependence graphs, and a pass that
computes a dependence graph for data dependences on memory locations
using interprocedural Mod/Ref information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4957 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-08 13:26:29 +00:00
Chris Lattner
138b0cd7da Namespacify more
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4956 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-08 06:01:34 +00:00
Chris Lattner
bbdabce1e9 Add support to count the number of dynamic instructions executed by LLI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4955 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-08 05:51:08 +00:00
Chris Lattner
a1af8bd72b Add total instruction, bb, & function counts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4954 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-07 23:24:24 +00:00
Chris Lattner
ac8d4d9d59 Fix bug that was bugging bugpoint
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4953 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-07 21:27:16 +00:00
Chris Lattner
342d1826fb Remove dead code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4952 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-07 18:42:13 +00:00
Vikram S. Adve
bac0622ef9 Two bug fixes:
(1) Make entries for Constant values in the ScalarMap.
(2) Set MOD bit for the node pointed to by the
    argument of a free instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4948 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-06 21:17:10 +00:00
Vikram S. Adve
2b7a92c72f Fix several related bugs in DSNode::mergeWith() caused by the
fact that the incoming nodes may be merged away at intermediate
steps.  Use an extra level of indirection via DSNodeHandles
to track the nodes being merged.  All this now happens in a
static helper function MergeNodes().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4947 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-06 21:15:21 +00:00
Brian Gaeke
d474e9cdce Implement a lot of cast functionality (no FP or 64)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4944 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-06 10:49:33 +00:00
Chris Lattner
c736d56562 Fix bug: 2002-12-05-MissedConstProp.ll pointed out by Casey Carter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4935 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-05 22:41:53 +00:00
Vikram S. Adve
c102cb7359 Cute bug fix: when moving links from N to this, some links could have
been missed if node *this got merged away due to recursive merging!
Also, links were not moved correctly if a node is collapsed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4933 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-05 17:17:26 +00:00
Brian Gaeke
86764d778e Target/X86/Printer.cpp: Add sizePtr function, and use it instead of
" <SIZE> PTR " string when emitting assembly.

Target/X86/X86InstrInfo.def: Tidy up a bit:
 Squashed everything down to 118 chars wide, wrapping lines so that
 comment is at the same point on each line. Rename "NoImpRegs" as
 "NoIR". (most instructions have NoImpRegs twice on a line, so this
 saves 10 columns).

 Also, annotate various instructions with flags for size of memory operand.
  (MemArg16, MemArg32, MemArg64, etc.)

Target/X86/X86InstrInfo.h: Define flags for size of memory operand.
 (MemArg16, MemArg32, MemArg64, etc.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4932 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-05 08:30:40 +00:00
Misha Brukman
dd46e2a81d Added code generation for function prologues and epilogues.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4930 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 23:58:08 +00:00
Misha Brukman
2adb3959f6 Implemented functions for emitting prologues and epilogues;
removed EBP from the list of callee-saved registers (it isn't one).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4929 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 23:57:03 +00:00
Misha Brukman
1f283ef3e5 Added push and pop instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4928 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 23:56:26 +00:00
Chris Lattner
4fa1acc945 Fix handling of function calls that return void
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4925 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 23:50:28 +00:00
Chris Lattner
a324364f04 Implement initial support for return values from call instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4924 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 23:45:28 +00:00
Misha Brukman
06f8aecc88 Fun arithmetic with iterators aimed at fixing a bug: inserting instructions
after the *current* instruction while keeping the iterator in the same
'logical' place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4923 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 19:24:45 +00:00
Misha Brukman
0d2cf3a533 Adjust the stack pointer after a function call, proportional to the number of
arguments pushed onto the stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4922 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 19:22:53 +00:00
Misha Brukman
a17a2ac727 Added instructions to add/subtract imm32 to/from a reg32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4921 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 19:15:22 +00:00
Chris Lattner
ac573f61b4 Fix bogus assertion failures
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4919 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 17:32:52 +00:00
Chris Lattner
6d66944388 Avoid bad assertion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4918 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 17:28:40 +00:00
Chris Lattner
93689114a5 Remove think-o assertion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4917 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 17:18:30 +00:00
Chris Lattner
d6c4cfab54 Avoid crashing on Arguments, just silently miscompile
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4916 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 17:15:34 +00:00
Misha Brukman
a361c8417b storeReg2RegOffset() and loadRegOffset2Reg() now take the iterator by value
instead of by reference, since they return the modified iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4914 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 17:14:13 +00:00
Misha Brukman
0af0d5bd3e Moved buildReg2RegClassMap() into from X86RegisterInfo to MRegisterInfo, since
it is target-independent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4911 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 16:47:04 +00:00
Chris Lattner
504c411e81 Add a "Lazy Function Resolution in Jello" section
Remove some todo's


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4910 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 16:12:54 +00:00
Chris Lattner
33ced56edb Fix a bug I introduced in a previous change
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4909 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 06:56:56 +00:00
Chris Lattner
dbf30f7b02 Add support for referencing global variables/functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4907 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 06:45:19 +00:00
Chris Lattner
b72d221d61 Print out direct global references
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4906 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-04 06:44:41 +00:00
Misha Brukman
dc2ec004f1 This should fix the bug seen with some registers not being allocated
correctly: skipping instructions by incorrectly incrementing the pointer.

Also adds support for building a reg-to-regclass map, and splits the function
for saving register to stack into two, one suitable for virtual registers
(which also assigns it a physical register) and one for simply storing back
physical registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4898 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 23:15:19 +00:00
Misha Brukman
03c6fafd05 Added support for callee- and caller-save registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4897 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 23:11:21 +00:00
Chris Lattner
e8e6743cb7 Fix broken ret opcode, grr...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4895 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 22:50:02 +00:00
Chris Lattner
f815aebd20 Checkin debug implementation of MCE
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4893 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 20:56:42 +00:00
Chris Lattner
d852c15546 Fix instsel for calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4891 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 20:30:12 +00:00
Chris Lattner
149a5203a9 Simplify code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4886 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 19:40:16 +00:00
Chris Lattner
b91b657e02 Fix big bug introduced with symbol table changes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4885 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 18:32:30 +00:00
Chris Lattner
f18a36e398 Fix the build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4884 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 18:15:59 +00:00
Brian Gaeke
07f02614f6 brg
Add support for cast ... to bool in visitCastInst (it's a start, anyways...)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4883 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 07:36:03 +00:00
Chris Lattner
ea1ddab58e Split the machine code emitter completely out of the printer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4882 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 06:34:06 +00:00
Chris Lattner
4ce42a776a * Move information about Implicit Defs/Uses into X86InstrInfo.def.
* Expose information about implicit defs/uses of register through the
  MachineInstrInfo.h file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4877 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 05:42:53 +00:00
Chris Lattner
6af204077c Initialize implicit uses/defs fields for sparc backend to empty list
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4876 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 05:41:54 +00:00
Brian Gaeke
bb25f2f08d brg
X86Implicit.cpp, X86Implicit.h: New files.
InstSelectSimple.cpp: Add some clarifications in visitCallInst comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4874 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 00:51:09 +00:00
Chris Lattner
8f04b0981f More support for machine code emission: raw instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4872 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-02 21:56:18 +00:00
Chris Lattner
b0f99b90df Expose explicit type
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4871 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-02 21:50:41 +00:00
Chris Lattner
76041ce515 Start implementing MachineCodeEmitter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4870 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-02 21:44:34 +00:00
Chris Lattner
4aff92860d Eliminate OtherFrm
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4868 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-02 21:40:58 +00:00
Chris Lattner
a5855c829b Remove comment
Remove handling of OtherFrm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4867 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-02 21:40:46 +00:00
Chris Lattner
40ead95928 Initial support for machine code emission
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4866 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-02 21:24:12 +00:00
Misha Brukman
236757df2e Ignore generated files Lexer.cpp and llvmAsmParser.*
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4861 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-02 21:14:54 +00:00
Misha Brukman
f514d51b20 * Abstracted out stack space allocation into its own function
* Added saving of register values to the stack


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4858 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-02 21:11:58 +00:00
Misha Brukman
6877dd3fb0 Fix order of operands on a store from reg to [reg+offset].
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4857 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-02 21:10:35 +00:00
Chris Lattner
f8bafe8fdb Add rawfrm flags
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4841 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-01 23:25:59 +00:00
Chris Lattner
a4978ccbcb Don't add implicit regs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4840 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-01 23:24:58 +00:00
Brian Gaeke
c2505985ce brg
InstSelectSimple.cpp: Refactor out conversion of byte, short -> int
  from visitReturnInst() to new method, promote32().
 Use it in both visitReturnInst() and visitCallInst().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4839 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-30 11:57:28 +00:00
Brian Gaeke
18a20212d9 brg
InstSelectSimple.cpp: First draft of visitCallInst method, handling
 int/float args.
X86InstrInfo.def: Add entries for CALL with 32-bit pc relative arg, and
 PUSH with 32-bit reg arg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4838 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-29 12:01:58 +00:00
Vikram S. Adve
61ff02982f Fix logical error in TD pass: we should clear Mod/Ref bits of each caller
before inlining their graphs into a function.  To support this,
added flags to CloneFlags to strip/keep Mod/Ref bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4836 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-27 17:41:13 +00:00
Vikram S. Adve
9a96428297 (1) Bug fix that was causing nodes with dangling references to be freed.
We run removeDeadNodes() on the TD graph up front before using it.
(2) Major enhancement to printing of results: now we list the actual objects
    that are mod/ref instead of just printing the bit vectors.
Also an important bug fix in TDDataStructures pass (no change here):
clear Mod/Ref bits of callers before inlining into a function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4833 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-27 17:37:46 +00:00