Commit Graph

1561 Commits

Author SHA1 Message Date
Misha Brukman 656304bb6c The plural of `Pass' is Passes, not Pass's.
llvm-svn: 6247
2003-05-20 18:39:06 +00:00
Chris Lattner 192623ec93 Add support for setjmp/longjmp primitives
Patch checked in for Bill Wendling :)

llvm-svn: 6241
2003-05-17 22:26:33 +00:00
Chris Lattner f2bef422e4 Add some methods to make type safety a bit easier
llvm-svn: 6198
2003-05-14 17:49:52 +00:00
Chris Lattner e24ae25363 Beef up interface, move getVarInfo out-of-line.
llvm-svn: 6114
2003-05-12 14:23:04 +00:00
Chris Lattner 065eadeb8a Expand API for updating live var info.
Expose iterators, not const-iterators.
Rename method that was VERY misleading

llvm-svn: 6108
2003-05-12 03:51:30 +00:00
Chris Lattner b78244f9e1 Make sure that globals are emitted AFTER the passmanager is set up for the JIT,
because the globals may refer to functions that need to be compiled!

llvm-svn: 6105
2003-05-12 02:14:34 +00:00
Joel Stanley 1bf4750f8d Fixed comment.
llvm-svn: 6072
2003-05-10 01:56:42 +00:00
Chris Lattner 3d017b8797 Update out of date comment
llvm-svn: 6070
2003-05-09 22:16:18 +00:00
Chris Lattner 36a38730c6 Updates to match recent timer updates
llvm-svn: 6069
2003-05-09 20:44:22 +00:00
Chris Lattner 3223099757 Add new method to check to see if a global is available
llvm-svn: 6058
2003-05-09 03:29:03 +00:00
Chris Lattner 2274c71150 Allow const functions
llvm-svn: 6056
2003-05-09 03:27:41 +00:00
Chris Lattner f7c402c42f Fix bug in last checkin
llvm-svn: 6055
2003-05-08 22:00:52 +00:00
Chris Lattner e79e4c8147 Add new methods for stub generation
llvm-svn: 6053
2003-05-08 21:53:57 +00:00
Chris Lattner 7f389e8cf9 Add a pointersize/endianness safe load routine to match the store routine
llvm-svn: 6042
2003-05-08 16:52:16 +00:00
Chris Lattner 940ebf64d6 Initial support for intrinsic functions
llvm-svn: 6033
2003-05-08 03:34:12 +00:00
Chris Lattner 708d608ba3 Initial checkin for LLVM intrinsic functions
llvm-svn: 6032
2003-05-08 03:33:54 +00:00
Chris Lattner e10061e202 Add support for the new VarArgInst instruction, reindent some stuff
llvm-svn: 6028
2003-05-08 02:43:06 +00:00
Chris Lattner d625272e45 Add new VarArgInst class for the va_arg instruction
llvm-svn: 6027
2003-05-08 02:42:50 +00:00
Chris Lattner b0888bfaca Add comments, add a vector to keep track of which registers are allocatable
llvm-svn: 6014
2003-05-07 20:07:58 +00:00
Chris Lattner afcc4b9f1c Fix memory corruption problem
llvm-svn: 6003
2003-05-06 18:45:02 +00:00
Misha Brukman f4c7d206a3 It's 'separate'. The 'i.e.' is kinda nit-picking, but think of it this way:
'separate' is the one causing you to recompile all your passes anyway.

llvm-svn: 5992
2003-05-03 03:31:06 +00:00
Chris Lattner 4f6cdbdf81 Remove two fields from TargetData which are target specific.
llvm-svn: 5963
2003-04-26 20:11:09 +00:00
Chris Lattner 91e0564f75 Revert last checkin. Note that PHI nodes can use basic blocks also!
llvm-svn: 5956
2003-04-26 17:38:26 +00:00
Chris Lattner 201b4b9c88 Remove long-dead obsolete cruft
llvm-svn: 5955
2003-04-25 23:39:08 +00:00
Chris Lattner d6df41d389 Fix method name type-o
llvm-svn: 5933
2003-04-25 05:23:27 +00:00
Chris Lattner a2f7d23e9a *** Huge: Make constantexprs be handled correctly, conservatively
llvm-svn: 5923
2003-04-25 02:51:46 +00:00
Chris Lattner 06aa504555 Default ctor doesn't provide name
llvm-svn: 5921
2003-04-25 02:50:19 +00:00
Chris Lattner 02378422a4 Add new targetdata ctor to create a targetdata appropriate to the module
llvm-svn: 5902
2003-04-24 19:08:45 +00:00
Chris Lattner 4ca84cbbde Remove support for "targetdata pass ctors"
llvm-svn: 5901
2003-04-24 18:41:30 +00:00
Chris Lattner 6e646f1377 LevelRaise now gets TD from passmanager
llvm-svn: 5897
2003-04-24 18:25:42 +00:00
Chris Lattner 1d724408d0 Kill unneccesary &*
llvm-svn: 5870
2003-04-23 16:35:30 +00:00
Chris Lattner 1dd9185996 Add stub to create lowerSwitches pass
llvm-svn: 5866
2003-04-23 16:24:19 +00:00
Chris Lattner ecb0bac0ec Allow autoconversion from ilist_iterator<T> to T* in a dyn_cast and friends
llvm-svn: 5862
2003-04-23 16:17:53 +00:00
Chris Lattner 215b00589f Allow dyn_cast to operate on things that aren't OBVIOUSLY a pointer type.
These things can be converted to a pointer, like ilist_iterators

llvm-svn: 5861
2003-04-23 16:17:28 +00:00
Chris Lattner 085ca7d3ed Add information about the module source
llvm-svn: 5837
2003-04-22 18:03:13 +00:00
Chris Lattner c3f6e00011 Add support for tracking whether a module is 64/32 bit and big/little endian
Also add a moduleID field which can be used for diagnostics

llvm-svn: 5834
2003-04-22 18:02:04 +00:00
Chris Lattner 56b9eb9cc1 Add prototype to read .a files
llvm-svn: 5821
2003-04-19 21:45:52 +00:00
Chris Lattner 55cdd161f8 Add prototype for new CloneBasicBlock function
llvm-svn: 5804
2003-04-18 03:49:22 +00:00
Chris Lattner 37a2e2185a Don't force a ConstantPointer to be returned
llvm-svn: 5799
2003-04-17 19:22:47 +00:00
Chris Lattner 46b3d30bf6 Change the interface to constant expressions to allow automatic folding
llvm-svn: 5793
2003-04-16 22:40:51 +00:00
Chris Lattner 0d2d871e80 Revert modulo scheduling change that should be part of the modulo-sched pass itself,
not part of the Instruction class.

llvm-svn: 5787
2003-04-16 20:30:02 +00:00
Chris Lattner 379a8d2d1c Add new linkage types to support a real frontend
llvm-svn: 5786
2003-04-16 20:28:45 +00:00
Misha Brukman 61a9e7c901 Must use std::pair instead of just 'pair'.
llvm-svn: 5767
2003-04-07 00:25:09 +00:00
Guochun Shi 2c6ad22962 added a function and a member to the TargetSchedInfo class
which is used  by Modulo Scheduling pass

llvm-svn: 5766
2003-04-07 00:00:36 +00:00
Guochun Shi 09abd1aeaf added some memory for clone function
llvm-svn: 5765
2003-04-06 23:58:44 +00:00
Chris Lattner 73410f84f7 Add getAnalysisUsage method
llvm-svn: 5756
2003-03-31 17:29:18 +00:00
Chris Lattner 9ad7757e7c Add helper method
llvm-svn: 5753
2003-03-21 21:41:02 +00:00
Chris Lattner 3628607140 Update comment
llvm-svn: 5752
2003-03-21 21:40:39 +00:00
Chris Lattner 91f136847e Add more graph traits specializations for dominator tree nodes
llvm-svn: 5751
2003-03-20 21:21:05 +00:00
Chris Lattner 65c9fb07b0 Add new chunk type
llvm-svn: 5747
2003-03-19 20:48:27 +00:00
Chris Lattner 9c19c07e8b Fix problems with BitSetVector that makes it not compile under GCC 3.0 and 2.95
llvm-svn: 5745
2003-03-17 18:11:27 +00:00
Chris Lattner 83e5d39566 Fix ConstantUInt::isAllOnesValue
llvm-svn: 5734
2003-03-10 22:39:02 +00:00
Chris Lattner 187c39b6d0 Extend struct and array constants to support isNullValue
llvm-svn: 5719
2003-03-06 21:02:43 +00:00
Chris Lattner c429eee86a Generalize interface a bit
llvm-svn: 5711
2003-03-06 16:50:21 +00:00
Chris Lattner d5c4ef5456 Add new getIncomingValueForBlock method
Relax a bit about constness

llvm-svn: 5709
2003-03-06 16:36:28 +00:00
Chris Lattner fbb7739b13 Simplify some of the PHI node interfaces
llvm-svn: 5700
2003-03-05 21:15:12 +00:00
Chris Lattner 12f3ec7d10 Add a few new 'add' methods. Move the iterator around
llvm-svn: 5690
2003-03-03 23:27:52 +00:00
Chris Lattner e27406eb59 Change the mem2reg interface to accept a TargetData argument
llvm-svn: 5685
2003-03-03 17:25:18 +00:00
Chris Lattner e2d58f2065 Don't apply type information to loads
llvm-svn: 5683
2003-03-03 17:13:22 +00:00
Chris Lattner a6de793baa Add dump method for loops
llvm-svn: 5670
2003-02-28 16:54:37 +00:00
Chris Lattner 915e1a4854 Add graph traits specializations for loop nesting information...
llvm-svn: 5666
2003-02-28 03:05:15 +00:00
Chris Lattner 9eaef21f1f Add new Loop::hasExitBlock helper method
llvm-svn: 5663
2003-02-27 22:48:28 +00:00
Chris Lattner 72a9854584 Change behavior of changeExitBlock function to replace all instances of exit block
llvm-svn: 5661
2003-02-27 22:37:44 +00:00
Chris Lattner 079cd2acf1 Make the interface to update a little more efficient
llvm-svn: 5651
2003-02-27 20:24:17 +00:00
Chris Lattner 9ce4a2bb96 * LoopInfo now keeps track of exit blocks from the loop
* New LoopInfo::isLoopHeader method
  * Remove some #if 0 code

llvm-svn: 5649
2003-02-27 00:37:22 +00:00
Chris Lattner b5b0b7a934 Make the aliassettracker much more precise by actually tracking size
information for various accesses.  What a concept.

llvm-svn: 5647
2003-02-26 22:11:00 +00:00
Chris Lattner ddfe676e71 BasicAA doesn't need a public header
llvm-svn: 5639
2003-02-26 19:41:46 +00:00
Chris Lattner 7b5727a400 Tweak to work with new AA implementation
llvm-svn: 5632
2003-02-26 19:25:04 +00:00
Chris Lattner c6bf7ec5e0 Checkin of new alias analysis interface:
* Takes into account the size of the memory reference to determine aliasing.
  * Expose mod/ref information in a more consistent way

llvm-svn: 5631
2003-02-26 19:24:47 +00:00
Chris Lattner daaf2982e7 * Un "protect" the getAnalysis<> functions
* Add a new initializePass() method to ImmutablePass

llvm-svn: 5629
2003-02-26 19:10:28 +00:00
Chris Lattner a5dc1ec0a4 Add new helper template function
llvm-svn: 5622
2003-02-25 00:00:50 +00:00
Chris Lattner 4869f3700e Rename Instruction::hasSideEffects() -> mayWriteToMemory()
llvm-svn: 5620
2003-02-24 20:48:32 +00:00
Chris Lattner 7606fb65c0 This is a substantial rewrite of the AliasSetTracker class which now uses
a union-find based algorithm, is significantly faster, and is more general.
It will also scale to handle call instructions correctly, which is a nice
added bonus.

This includes a new pass -print-alias-sets which can be used to show how
alias sets are formed for a particular analysis.

llvm-svn: 5619
2003-02-24 20:37:56 +00:00
Chris Lattner a65cd08dd8 Initial checkin of CallSite wrapper for Call/Invoke instructions
llvm-svn: 5618
2003-02-24 20:35:45 +00:00
Chris Lattner 940863bd22 Fix #endif
llvm-svn: 5615
2003-02-24 04:40:35 +00:00
Chris Lattner af9598f6a8 Add support for the slist extension
llvm-svn: 5614
2003-02-24 04:31:49 +00:00
Chris Lattner 6dbd10c760 Add a new interface file for the PromoteMemToReg interface in the Utils library
llvm-svn: 5609
2003-02-22 23:04:52 +00:00
Chris Lattner a17866894a Move node forwarding code from being inlined to being out-of-line.
This brings a 11.6% speedup to steens, and a 3.6 overall speedup to ds-aa

llvm-svn: 5552
2003-02-13 19:09:00 +00:00
Chris Lattner 7127d7db7a Implement a "union-findy" version of DS-Analysis, which eliminates the
Referrers list on DSNodes.

llvm-svn: 5536
2003-02-11 23:11:51 +00:00
Chris Lattner 1cc14aa2ba Fix uninitialized member problem
llvm-svn: 5534
2003-02-11 06:36:00 +00:00
Chris Lattner 242d685332 Bugfix for calling dump() after the links vector has been cleared
llvm-svn: 5533
2003-02-10 22:46:47 +00:00
Chris Lattner e170f0db13 Move getNode() out of line
llvm-svn: 5531
2003-02-10 18:19:41 +00:00
Chris Lattner f4122de179 Implement a new method "viewGraph" which can be used to instantly view a graph from GDB.
llvm-svn: 5529
2003-02-10 18:17:38 +00:00
Chris Lattner ed8dbc90a5 TD Pass now does not cause globals to mark nodes incomplete.
llvm-svn: 5512
2003-02-09 18:40:25 +00:00
Chris Lattner 80614ee5ef Implement optimization for direct function call case. This dramatically
reduces the number of function nodes created and speeds up analysis by
about 10% overall.

llvm-svn: 5495
2003-02-05 21:59:58 +00:00
Chris Lattner 6a9307866c Allow the addition of edge source labels
llvm-svn: 5493
2003-02-05 19:40:59 +00:00
Chris Lattner a0e9e6ec8c Add sanity check
llvm-svn: 5489
2003-02-04 00:03:57 +00:00
Chris Lattner 390cec0c77 Hack to work around deficiency in pass infrastructure
llvm-svn: 5485
2003-02-03 22:51:28 +00:00
Chris Lattner 6662cbc510 Eliminate unused resolving caller stuff
llvm-svn: 5475
2003-02-03 19:11:04 +00:00
Chris Lattner d39eca41b8 * Add a bunch of stuff for checking the integrity of the graph
* remove the isNodeDead method

llvm-svn: 5474
2003-02-03 19:10:24 +00:00
Chris Lattner ddcd02e8db Remove pool alloc accessor
llvm-svn: 5473
2003-02-03 19:08:33 +00:00
Chris Lattner 45914783ad Expose information about pool allocation
llvm-svn: 5471
2003-02-03 19:07:46 +00:00
Chris Lattner b57f4b7b72 Allow modifying a global variables constness property
llvm-svn: 5468
2003-02-02 16:40:40 +00:00
Chris Lattner c44c04af44 Change DSGraph stuff to use hash_(set|map) instead of std::(set|map)
This change provides a small (3%) but consistent speedup

llvm-svn: 5460
2003-02-01 04:52:08 +00:00
Chris Lattner 2c5b6a0021 Add hash_multimap support
llvm-svn: 5457
2003-02-01 04:14:28 +00:00
Chris Lattner fae1291852 Add new composition mask
llvm-svn: 5454
2003-02-01 03:28:26 +00:00
Joel Stanley a801c7bae5 Added protos for two alternate, convenient CallInst constructors.
llvm-svn: 5453
2003-02-01 00:41:27 +00:00
Chris Lattner 26a1fe3494 Add new function to allow removal of typed named elements
llvm-svn: 5442
2003-01-30 20:54:03 +00:00
Chris Lattner d43c53abbc New API for traversing graph
llvm-svn: 5430
2003-01-29 21:09:59 +00:00
Chris Lattner aa6b2bfd78 Initial checking: defult the make_vector function
llvm-svn: 5424
2003-01-28 20:01:16 +00:00
Chris Lattner 6ffcdb5bef New helper header
llvm-svn: 5423
2003-01-27 22:08:52 +00:00
Chris Lattner 38c5e417a7 * Eliminate boolean arguments in favor of using enums
llvm-svn: 5420
2003-01-23 22:06:33 +00:00
Chris Lattner eb45c982ae Print machine frame objects with the frame offset intrinsic to the machine
llvm-svn: 5329
2003-01-16 18:35:57 +00:00
Chris Lattner dea36ca100 Move sparc specific code into the Sparc backend
llvm-svn: 5317
2003-01-15 21:36:50 +00:00
Chris Lattner 79f8a6e5fb Simplify the interface
llvm-svn: 5313
2003-01-15 21:13:32 +00:00
Chris Lattner 8e3df8ea34 Move private headers into private regalloc directory
llvm-svn: 5308
2003-01-15 20:26:32 +00:00
Chris Lattner 99f2dfd673 Move private header to private dir
llvm-svn: 5304
2003-01-15 19:50:32 +00:00
Chris Lattner 5da071b265 Remove obsolete ctor
llvm-svn: 5301
2003-01-15 19:47:02 +00:00
Chris Lattner 5d0a644b63 Remove internal helper fn
llvm-svn: 5300
2003-01-15 19:46:39 +00:00
Chris Lattner 067bf7b949 ADd support for CC registers for Sparc BE
llvm-svn: 5297
2003-01-15 19:22:23 +00:00
Chris Lattner 109d114e4c Add support for the CC registers for Sparc BE
llvm-svn: 5296
2003-01-15 19:22:06 +00:00
Chris Lattner 637de4abee Remove more unused methods
llvm-svn: 5295
2003-01-15 19:21:50 +00:00
Chris Lattner 11f883813f Remove a ton of functions that are no longer used, instead using BuildMI
llvm-svn: 5290
2003-01-15 17:35:44 +00:00
Chris Lattner 3db143a92b Add new helper method addRegDef
llvm-svn: 5289
2003-01-15 17:18:22 +00:00
Chris Lattner 87c859211d * Eliminate a bunch of inline functions.
* Convert callers to use BuildMI instead

llvm-svn: 5286
2003-01-15 00:02:41 +00:00
Chris Lattner 717fbaf92c Move to include/llvm/CodeGen
llvm-svn: 5285
2003-01-14 23:05:31 +00:00
Chris Lattner de1d729747 Move llvm/Analysis/LiveVar/ValueSet.h to CodeGen/ValueSet.h
llvm-svn: 5282
2003-01-14 22:56:37 +00:00
Chris Lattner ebe979693d New header
llvm-svn: 5280
2003-01-14 22:37:41 +00:00
Chris Lattner 4d0d75ef88 Move to Instrumentation.h
llvm-svn: 5279
2003-01-14 22:36:15 +00:00
Chris Lattner 37ac1c4df3 REmove unused header file
llvm-svn: 5275
2003-01-14 22:29:57 +00:00
Chris Lattner ca4903a35d Remove unused header
llvm-svn: 5274
2003-01-14 22:28:22 +00:00
Chris Lattner b4d58d7f9e Rename MachineInstrInfo -> TargetInstrInfo
llvm-svn: 5272
2003-01-14 22:00:31 +00:00
Chris Lattner 73a8c81c40 Move llvm/Annotation.h to Support/Annotation.h
llvm-svn: 5271
2003-01-14 21:39:04 +00:00
Chris Lattner 4fd26cc90e Move annotation to support library
llvm-svn: 5268
2003-01-14 21:29:58 +00:00
Chris Lattner 67229e4bff Must #include assert.h
llvm-svn: 5267
2003-01-14 21:29:52 +00:00
Chris Lattner 7b55045858 Add new files
llvm-svn: 5259
2003-01-13 01:01:31 +00:00
Chris Lattner b63ba57411 Rename MachineInstrInfo -> TargetInstrInfo
llvm-svn: 5214
2003-01-13 00:21:32 +00:00
Chris Lattner deca2b5272 * Start renaming MachineInstrInfo -> TargetInstrInfo
* Add new M_TERMINATOR_FLAG

llvm-svn: 5213
2003-01-13 00:21:19 +00:00
Chris Lattner 936402bbb2 Add new getName method
llvm-svn: 5212
2003-01-13 00:19:44 +00:00
Chris Lattner 5d72e6cb69 Simplify interface to creating a register
llvm-svn: 5211
2003-01-13 00:19:18 +00:00
Chris Lattner 6cd144e676 * Add support for new types of operands
llvm-svn: 5210
2003-01-13 00:18:44 +00:00
Chris Lattner c32a3ba53d * Add 3 new types of MachineOperand: ConstantPoolIndex ExternalSymbol and GlobalAddress's
* Add new isPCRelative modifier flag which should be used in place of MO_PCRelativeDisp type.
* Fix a bug in isPhysicalRegister
* Add new setOpcode and RemoveOperand methods

llvm-svn: 5209
2003-01-13 00:18:17 +00:00
Chris Lattner ea1f103e5c * Add a constant pool to hold per-function constants which must be spilled to memory
llvm-svn: 5208
2003-01-13 00:16:10 +00:00
Chris Lattner 55f00fa00f * Add utility methods which make common cases easier
llvm-svn: 5207
2003-01-13 00:15:24 +00:00
Chris Lattner 5d4b55f69f * Add support for values in the constant pool
* Add support for functions referenced by name

llvm-svn: 5206
2003-01-13 00:14:55 +00:00
Chris Lattner f9781b59ab More renamings of Target/Machine*Info to Target/Target*Info
llvm-svn: 5204
2002-12-29 03:13:05 +00:00
Chris Lattner 42d59219c7 Rename MachineOptInfo to TargetoptInfo
Rename MachineCacheInfo to TargetCacheInfo

llvm-svn: 5203
2002-12-29 02:50:35 +00:00
Chris Lattner 26c23467c5 Rename FunctionFrameInfo to MachineFrameInfo
llvm-svn: 5201
2002-12-28 21:08:28 +00:00
Chris Lattner 69f10f32cc * doxygenize comment
* rename MachineFrameInfo to TargetFrameInfo

llvm-svn: 5170
2002-12-28 20:13:29 +00:00
Chris Lattner 8da6184be0 Sparc specific methods default to abort rather than being pure virtual
llvm-svn: 5169
2002-12-28 20:12:54 +00:00
Chris Lattner 6ed67d7ac5 Expose some very simple information about the frame, rather than in-depth
target specific information.  Rename MachineFrameInfo to TargetFrameInfo

llvm-svn: 5168
2002-12-28 20:12:10 +00:00
Chris Lattner a4f3329bc9 * Keep track of register alignment as well as register size
* Add comments
* Add a new allocation_order iterator for register classes which targets may
  use to control the register order and available registers based on properties
  of the function being compiled.
* Remove access to FP and SP registers
* Add new callframe setup opcode support
* Eliminate moveImm2Reg method
* Revamp frame offset handling and prolog/epilog code generation

llvm-svn: 5167
2002-12-28 20:10:23 +00:00
Chris Lattner 840af613be Descriptor object used to manage abstract frame references
llvm-svn: 5166
2002-12-28 20:07:47 +00:00
Chris Lattner 00436009f6 State for frame and constant pool information pulled out of MachineFunction
llvm-svn: 5165
2002-12-28 20:07:33 +00:00
Chris Lattner 30cd247441 * Frame indices are signed
* Cluster modification methods together

llvm-svn: 5164
2002-12-28 20:05:44 +00:00
Chris Lattner f1230afc0e * Pull a bunch of frame and constant pool state out into a new
MachineFunctionInfo class
* Add a new FunctionFrameInfo object

llvm-svn: 5163
2002-12-28 20:04:31 +00:00
Chris Lattner 343ad0d65c Initial check in of MachineFunctionPass.h
llvm-svn: 5162
2002-12-28 20:03:01 +00:00
Chris Lattner f2dc9d9cea Simplify spill interface methods
llvm-svn: 5142
2002-12-25 05:02:00 +00:00
Chris Lattner 52d325b494 Add comment
llvm-svn: 5141
2002-12-25 05:01:46 +00:00
Chris Lattner 05ec1f9369 Add abstract frame index capability
llvm-svn: 5140
2002-12-25 05:01:18 +00:00
Chris Lattner 9d8350939a Remove default ctor
llvm-svn: 5139
2002-12-25 05:01:05 +00:00
Chris Lattner 21d48e8f2c *** empty log message ***
llvm-svn: 5138
2002-12-25 05:00:49 +00:00
Chris Lattner 6e6c6eda24 Remove dependency on SSARegMap.h
llvm-svn: 5137
2002-12-25 05:00:16 +00:00
Chris Lattner a4d7e4f203 Allow the target machines to specify endianness and pointer size
llvm-svn: 5128
2002-12-24 00:02:17 +00:00
Chris Lattner 996fe01028 Initial checkin of new LLI with JIT compiler
llvm-svn: 5126
2002-12-24 00:01:05 +00:00
Chris Lattner de4aa4cf8c New files for miscompilation detection
llvm-svn: 5120
2002-12-23 23:50:16 +00:00
Chris Lattner 5629397d28 Simplify interface to remove virtual function references
llvm-svn: 5100
2002-12-17 04:20:39 +00:00
Chris Lattner b74c150efc Add support for register alias set description
llvm-svn: 5080
2002-12-16 16:39:14 +00:00
Chris Lattner 050d0ce094 Export well known instruction opcodes usable by target independant passes
llvm-svn: 5063
2002-12-15 22:16:08 +00:00
Chris Lattner 432447fed1 Add new opIsUse method
llvm-svn: 5062
2002-12-15 22:05:02 +00:00
Chris Lattner e2533336f5 Simplify interfaces used by regalloc to insert code
llvm-svn: 5052
2002-12-15 20:06:35 +00:00
Chris Lattner df1f77207a Simplify TargetRegisterClass a bit, also eliminating virtual function call
overhead

llvm-svn: 5049
2002-12-15 19:29:14 +00:00
Chris Lattner 663cd4fc2e * Rename const_regclass_begin/end to just regclass_begin/end
* Regclass iterators need an extra level of pointerness to work right
* Pull inverse mapping code out of target description files

llvm-svn: 5046
2002-12-15 18:40:01 +00:00
Chris Lattner 0345ea6908 Add capability to have a MachineBasicBlock as an operand to a MachineInstr
Add a bunch of methods to MachineOperand is* to reduce usage of MO_foo

llvm-svn: 5032
2002-12-15 08:01:02 +00:00
Misha Brukman 78401cbb3c Added moveReg2Reg() and moveImm2Reg() to accomodate moving data around due to
PHI nodes.

llvm-svn: 5001
2002-12-13 09:54:12 +00:00
Chris Lattner 34cd32d42a Final version of BuildMI for symmetry and because I want to use it
llvm-svn: 5000
2002-12-13 09:33:06 +00:00
Chris Lattner a8d8e0d9dd Get rid of deprecated function
llvm-svn: 4997
2002-12-13 07:30:45 +00:00
Misha Brukman eedcef4f92 Define the 2-address flag used by X86 instructions (add,sub,and,or,xor) that
need to be declared as such.

llvm-svn: 4975
2002-12-12 23:19:51 +00:00
Chris Lattner c1ba0cddd6 Make a release build compile. This field is not really an enum, it's really a bitfield
llvm-svn: 4971
2002-12-12 05:31:26 +00:00
Misha Brukman 0d19db3c34 No need to specify the class if the method is within the class declaration.
llvm-svn: 4969
2002-12-12 05:28:39 +00:00
Chris Lattner 5bd7897ac2 Fix header
llvm-svn: 4966
2002-12-12 03:43:30 +00:00
Vikram S. Adve 5fb974b74a This file provides 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.

llvm-svn: 4963
2002-12-10 13:07:12 +00:00
Vikram S. Adve 41aab86c40 The pass Parallelize automatically parallelizes a program using the
Cilk multi-threaded runtime system to execute parallel code.  This file
exposes some routines needed for code generation for that pass.

llvm-svn: 4961
2002-12-10 00:42:22 +00:00
Vikram S. Adve 775e51d87a Iterator that enumerates the ProgramDependenceGraph (PDG) for a function,
i.e., enumerates all data and control dependences for the function.

llvm-svn: 4958
2002-12-08 14:13:19 +00:00
Vikram S. Adve 8975afdfc4 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.

llvm-svn: 4957
2002-12-08 13:26:29 +00:00
Chris Lattner 906eea0e43 Give better error message if two passes of the same argument are registered
llvm-svn: 4950
2002-12-07 04:41:22 +00:00
Vikram S. Adve d1665d2bab Stronger assertion in getNodeId(): node id must exist in the map.
llvm-svn: 4949
2002-12-06 21:19:07 +00:00
Vikram S. Adve 00ca82dbd2 Added static helper method MergeNodes(). See DataStructure.cpp for more.
llvm-svn: 4946
2002-12-06 21:10:17 +00:00
Vikram S. Adve 80cac479bd Bug fix in operator==() and in method fini().
llvm-svn: 4945
2002-12-06 15:02:22 +00:00
Chris Lattner bf10511db7 Make sure to print indirect node again
llvm-svn: 4943
2002-12-06 06:40:00 +00:00
Misha Brukman 25e6ed4ec1 Added prototypes for emitting prologue and epilogue for function code
generation.

llvm-svn: 4927
2002-12-04 23:55:56 +00:00
Misha Brukman 1af9bebcda storeReg2RegOffset() and loadRegOffset2Reg() now take the iterator by value
instead of by reference, since they return the modified iterator.

llvm-svn: 4914
2002-12-04 17:14:13 +00:00
Misha Brukman 0d28502c32 Moved buildReg2RegClassMap() into from X86RegisterInfo to MRegisterInfo, since
it is target-independent.

llvm-svn: 4911
2002-12-04 16:47:04 +00:00
Chris Lattner 418b77ef4b Add support for direct global references
llvm-svn: 4905
2002-12-04 06:44:27 +00:00
Chris Lattner 4843ebc4ba Expose target data through a method for uniformity
llvm-svn: 4901
2002-12-04 05:20:12 +00:00
Misha Brukman 9e4163539f RegisterInfo now supports handing out caller- and callee-save registers, as
well as building a map from a physical register to its register class.

llvm-svn: 4896
2002-12-03 23:09:53 +00:00
Chris Lattner 8f520dfa9c Add virtual dtor, expose a debug impl
llvm-svn: 4892
2002-12-03 20:56:20 +00:00
Chris Lattner aa0d2c5fb3 Add entries to track information about implicit uses and definitions of
the instructions

llvm-svn: 4875
2002-12-03 05:41:32 +00:00
Chris Lattner f24e2a748f More support
llvm-svn: 4873
2002-12-02 21:56:28 +00:00
Chris Lattner d5eadf6aa4 Start adding to the meat of MachineCodeEmitter
llvm-svn: 4869
2002-12-02 21:44:13 +00:00
Chris Lattner b0a750cf39 Initial version of MachineCodeEmitter interface: empty
llvm-svn: 4864
2002-12-02 21:21:36 +00:00
Chris Lattner 23f0e10a9a The hopefully final version of addPassesToEmitMachineCode which does not
have any question about ownership

llvm-svn: 4863
2002-12-02 21:15:42 +00:00
Chris Lattner e992ff49bd Add comment about ownership semantics
llvm-svn: 4859
2002-12-02 21:13:45 +00:00
Chris Lattner 7b6411c3c0 Add stub to emit machine code for JIT
llvm-svn: 4856
2002-12-02 21:00:50 +00:00
Vikram S. Adve cb8b5af572 Several fixes:
(1) Applied patch from Casey to implement iterator::operator= correctly:
    it should use a pointer, not a reference.
(2) Added operators == and !=, and method all().
(3) Important bug fix: excess bits need to be ignored in operations
    like ==, count(), and all().  We do this by ensuring excess bits
    in the last bitset are always 0.

llvm-svn: 4837
2002-11-27 17:46:38 +00:00
Vikram S. Adve 0b5b784922 Added flags to CloneFlags to strip/keep Mod/Ref bits when cloning a graph.
llvm-svn: 4835
2002-11-27 17:39:37 +00:00
Vikram S. Adve 9409087108 No longer need local graph to find call sites.
Also some major fixes within IPModRef.cpp.

llvm-svn: 4834
2002-11-27 17:38:56 +00:00
Misha Brukman ec6b8e9fad Added virtual functions for storing and retrieving values from the stack.
llvm-svn: 4824
2002-11-22 22:41:23 +00:00
Misha Brukman 5bed2faf6b Instead of checking op.getType() against MO_VirtualRegister and
MO_MachineRegister, we no longer distinguish Virtual vs. Machine registers
externally, they're ALL registers, all equal.

Registers are only differentiated whether they are >=
MRegisterInfo::FirstVirtual or not.

llvm-svn: 4823
2002-11-22 22:40:52 +00:00
Misha Brukman 31457f066d Set SSARegMap to NULL after deleting it.
llvm-svn: 4822
2002-11-22 22:32:15 +00:00