1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
Commit Graph

1418 Commits

Author SHA1 Message Date
Chris Lattner
6046dda16e Add dump method for loops
llvm-svn: 5670
2003-02-28 16:54:37 +00:00
Chris Lattner
cffe1c533c Add graph traits specializations for loop nesting information...
llvm-svn: 5666
2003-02-28 03:05:15 +00:00
Chris Lattner
e6443c72fe Add new Loop::hasExitBlock helper method
llvm-svn: 5663
2003-02-27 22:48:28 +00:00
Chris Lattner
c37308604f 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
db73d0ceab Make the interface to update a little more efficient
llvm-svn: 5651
2003-02-27 20:24:17 +00:00
Chris Lattner
4efef545d2 * 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
5baf8bb966 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
374168a56e BasicAA doesn't need a public header
llvm-svn: 5639
2003-02-26 19:41:46 +00:00
Chris Lattner
f3a3d13d24 Tweak to work with new AA implementation
llvm-svn: 5632
2003-02-26 19:25:04 +00:00
Chris Lattner
8a8dc5b686 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
7f0e8c4d31 * 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
38e874dd6e Add new helper template function
llvm-svn: 5622
2003-02-25 00:00:50 +00:00
Chris Lattner
497c0d443c Rename Instruction::hasSideEffects() -> mayWriteToMemory()
llvm-svn: 5620
2003-02-24 20:48:32 +00:00
Chris Lattner
f2009dbddb 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
caba6cfcf5 Initial checkin of CallSite wrapper for Call/Invoke instructions
llvm-svn: 5618
2003-02-24 20:35:45 +00:00
Chris Lattner
74aa1f8c03 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
120d135f05 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
522cb6d282 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
d4faf8a5da Fix uninitialized member problem
llvm-svn: 5534
2003-02-11 06:36:00 +00:00
Chris Lattner
fade2f7d18 Bugfix for calling dump() after the links vector has been cleared
llvm-svn: 5533
2003-02-10 22:46:47 +00:00
Chris Lattner
723795113f Move getNode() out of line
llvm-svn: 5531
2003-02-10 18:19:41 +00:00
Chris Lattner
4528fd1e2a 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
b86f27cc1f TD Pass now does not cause globals to mark nodes incomplete.
llvm-svn: 5512
2003-02-09 18:40:25 +00:00
Chris Lattner
5f3ef2f0e7 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
e8381114ef Add sanity check
llvm-svn: 5489
2003-02-04 00:03:57 +00:00
Chris Lattner
102e619864 Hack to work around deficiency in pass infrastructure
llvm-svn: 5485
2003-02-03 22:51:28 +00:00
Chris Lattner
b58c9c95d0 Eliminate unused resolving caller stuff
llvm-svn: 5475
2003-02-03 19:11:04 +00:00
Chris Lattner
1c12ad543d * 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
4bb510896d Remove pool alloc accessor
llvm-svn: 5473
2003-02-03 19:08:33 +00:00
Chris Lattner
cfae77498b Expose information about pool allocation
llvm-svn: 5471
2003-02-03 19:07:46 +00:00
Chris Lattner
58fa654380 Allow modifying a global variables constness property
llvm-svn: 5468
2003-02-02 16:40:40 +00:00
Chris Lattner
7aec6c471b 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
d6b11d83a3 Add new composition mask
llvm-svn: 5454
2003-02-01 03:28:26 +00:00
Joel Stanley
b867c1f059 Added protos for two alternate, convenient CallInst constructors.
llvm-svn: 5453
2003-02-01 00:41:27 +00:00
Chris Lattner
14cc7b4231 Add new function to allow removal of typed named elements
llvm-svn: 5442
2003-01-30 20:54:03 +00:00
Chris Lattner
3acf20f0da New API for traversing graph
llvm-svn: 5430
2003-01-29 21:09:59 +00:00
Chris Lattner
37a2301f9e New helper header
llvm-svn: 5423
2003-01-27 22:08:52 +00:00
Chris Lattner
77e422543e * Eliminate boolean arguments in favor of using enums
llvm-svn: 5420
2003-01-23 22:06:33 +00:00
Chris Lattner
1d35ac61ce 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
301e1307d2 Move sparc specific code into the Sparc backend
llvm-svn: 5317
2003-01-15 21:36:50 +00:00
Chris Lattner
eac243c414 Simplify the interface
llvm-svn: 5313
2003-01-15 21:13:32 +00:00
Chris Lattner
30fbd2d1fe Move private headers into private regalloc directory
llvm-svn: 5308
2003-01-15 20:26:32 +00:00
Chris Lattner
7f85810349 Move private header to private dir
llvm-svn: 5304
2003-01-15 19:50:32 +00:00
Chris Lattner
cfa7a8f9a2 Remove obsolete ctor
llvm-svn: 5301
2003-01-15 19:47:02 +00:00
Chris Lattner
7a5291a0c9 Remove internal helper fn
llvm-svn: 5300
2003-01-15 19:46:39 +00:00
Chris Lattner
d06cd53a81 ADd support for CC registers for Sparc BE
llvm-svn: 5297
2003-01-15 19:22:23 +00:00
Chris Lattner
f254db43cd Add support for the CC registers for Sparc BE
llvm-svn: 5296
2003-01-15 19:22:06 +00:00
Chris Lattner
8c56dc23a5 Remove more unused methods
llvm-svn: 5295
2003-01-15 19:21:50 +00:00
Chris Lattner
e6fb373c01 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
856c3ad41c Add new helper method addRegDef
llvm-svn: 5289
2003-01-15 17:18:22 +00:00
Chris Lattner
14021140c0 * 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
bfd37d4da8 Move to include/llvm/CodeGen
llvm-svn: 5285
2003-01-14 23:05:31 +00:00
Chris Lattner
57b5e8891e Move llvm/Analysis/LiveVar/ValueSet.h to CodeGen/ValueSet.h
llvm-svn: 5282
2003-01-14 22:56:37 +00:00
Chris Lattner
e70dc51f5c New header
llvm-svn: 5280
2003-01-14 22:37:41 +00:00
Chris Lattner
bdf60b4ad8 Move to Instrumentation.h
llvm-svn: 5279
2003-01-14 22:36:15 +00:00
Chris Lattner
1af4a99c43 REmove unused header file
llvm-svn: 5275
2003-01-14 22:29:57 +00:00
Chris Lattner
3fdec63d85 Remove unused header
llvm-svn: 5274
2003-01-14 22:28:22 +00:00
Chris Lattner
b27d60ccf1 Rename MachineInstrInfo -> TargetInstrInfo
llvm-svn: 5272
2003-01-14 22:00:31 +00:00
Chris Lattner
832d7f387d Move llvm/Annotation.h to Support/Annotation.h
llvm-svn: 5271
2003-01-14 21:39:04 +00:00
Chris Lattner
ab69d9da2f Move annotation to support library
llvm-svn: 5268
2003-01-14 21:29:58 +00:00
Chris Lattner
247a13f8d7 Must #include assert.h
llvm-svn: 5267
2003-01-14 21:29:52 +00:00
Chris Lattner
fb1bfc8cde Add new files
llvm-svn: 5259
2003-01-13 01:01:31 +00:00
Chris Lattner
8decb3e453 Rename MachineInstrInfo -> TargetInstrInfo
llvm-svn: 5214
2003-01-13 00:21:32 +00:00
Chris Lattner
5fd0d8f44b * Start renaming MachineInstrInfo -> TargetInstrInfo
* Add new M_TERMINATOR_FLAG

llvm-svn: 5213
2003-01-13 00:21:19 +00:00
Chris Lattner
2117077d8f Add new getName method
llvm-svn: 5212
2003-01-13 00:19:44 +00:00
Chris Lattner
2edf53b7c0 Simplify interface to creating a register
llvm-svn: 5211
2003-01-13 00:19:18 +00:00
Chris Lattner
9d9b72a2c2 * Add support for new types of operands
llvm-svn: 5210
2003-01-13 00:18:44 +00:00
Chris Lattner
1f29ca49c7 * 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
abdcdcb67c * 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
4eda5395e8 * Add utility methods which make common cases easier
llvm-svn: 5207
2003-01-13 00:15:24 +00:00
Chris Lattner
a17e5baf63 * 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
dfa3c21f1c More renamings of Target/Machine*Info to Target/Target*Info
llvm-svn: 5204
2002-12-29 03:13:05 +00:00
Chris Lattner
bff4411f3a Rename MachineOptInfo to TargetoptInfo
Rename MachineCacheInfo to TargetCacheInfo

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

llvm-svn: 5170
2002-12-28 20:13:29 +00:00
Chris Lattner
90d1ea29ab Sparc specific methods default to abort rather than being pure virtual
llvm-svn: 5169
2002-12-28 20:12:54 +00:00
Chris Lattner
51c7c172db 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
b525ce97cc * 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
e1f68f8e08 Descriptor object used to manage abstract frame references
llvm-svn: 5166
2002-12-28 20:07:47 +00:00
Chris Lattner
6c1ee16321 State for frame and constant pool information pulled out of MachineFunction
llvm-svn: 5165
2002-12-28 20:07:33 +00:00
Chris Lattner
84cb1f5dbc * Frame indices are signed
* Cluster modification methods together

llvm-svn: 5164
2002-12-28 20:05:44 +00:00
Chris Lattner
59c301a15a * 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
db5cd8b071 Initial check in of MachineFunctionPass.h
llvm-svn: 5162
2002-12-28 20:03:01 +00:00
Chris Lattner
881ffece47 Simplify spill interface methods
llvm-svn: 5142
2002-12-25 05:02:00 +00:00
Chris Lattner
b44ebe2588 Add comment
llvm-svn: 5141
2002-12-25 05:01:46 +00:00
Chris Lattner
47e342f4bf Add abstract frame index capability
llvm-svn: 5140
2002-12-25 05:01:18 +00:00
Chris Lattner
b898c53b42 Remove default ctor
llvm-svn: 5139
2002-12-25 05:01:05 +00:00
Chris Lattner
aea2f8e9da *** empty log message ***
llvm-svn: 5138
2002-12-25 05:00:49 +00:00
Chris Lattner
a5ba3d9b3d Remove dependency on SSARegMap.h
llvm-svn: 5137
2002-12-25 05:00:16 +00:00
Chris Lattner
bc5e71ef2f Allow the target machines to specify endianness and pointer size
llvm-svn: 5128
2002-12-24 00:02:17 +00:00
Chris Lattner
5fe4097f52 Initial checkin of new LLI with JIT compiler
llvm-svn: 5126
2002-12-24 00:01:05 +00:00
Chris Lattner
079d149fbd Simplify interface to remove virtual function references
llvm-svn: 5100
2002-12-17 04:20:39 +00:00
Chris Lattner
3b7f709ebd Add support for register alias set description
llvm-svn: 5080
2002-12-16 16:39:14 +00:00
Chris Lattner
07cc730ddd Export well known instruction opcodes usable by target independant passes
llvm-svn: 5063
2002-12-15 22:16:08 +00:00
Chris Lattner
7ac77c761c Add new opIsUse method
llvm-svn: 5062
2002-12-15 22:05:02 +00:00
Chris Lattner
4214ac384a Simplify interfaces used by regalloc to insert code
llvm-svn: 5052
2002-12-15 20:06:35 +00:00
Chris Lattner
9b1957fd1e Simplify TargetRegisterClass a bit, also eliminating virtual function call
overhead

llvm-svn: 5049
2002-12-15 19:29:14 +00:00
Chris Lattner
51cf15cf12 * 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
026fa9948b 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
fb02408496 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
74e9df0627 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
329956d9f9 Get rid of deprecated function
llvm-svn: 4997
2002-12-13 07:30:45 +00:00
Misha Brukman
bc60f65211 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
4e607715ce 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
9fbca4e8ea 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
Vikram S. Adve
8ea96d8162 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
c8ea11cf8e 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
c9617fde54 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
90bc3110b6 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
93f7326092 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
183ea76dc4 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
ef10713b0e Added static helper method MergeNodes(). See DataStructure.cpp for more.
llvm-svn: 4946
2002-12-06 21:10:17 +00:00
Chris Lattner
da374a0ade Make sure to print indirect node again
llvm-svn: 4943
2002-12-06 06:40:00 +00:00
Misha Brukman
32ec427192 Added prototypes for emitting prologue and epilogue for function code
generation.

llvm-svn: 4927
2002-12-04 23:55:56 +00:00
Misha Brukman
101076f586 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
6e1c4851ea 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
d0a42dbe95 Add support for direct global references
llvm-svn: 4905
2002-12-04 06:44:27 +00:00
Chris Lattner
aeb454c30e Expose target data through a method for uniformity
llvm-svn: 4901
2002-12-04 05:20:12 +00:00
Misha Brukman
6b9cb74fdc 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
af812d279c Add virtual dtor, expose a debug impl
llvm-svn: 4892
2002-12-03 20:56:20 +00:00
Chris Lattner
866d635098 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
2ebb6f1a57 More support
llvm-svn: 4873
2002-12-02 21:56:28 +00:00
Chris Lattner
ce514e232d Start adding to the meat of MachineCodeEmitter
llvm-svn: 4869
2002-12-02 21:44:13 +00:00
Chris Lattner
54d6377268 Initial version of MachineCodeEmitter interface: empty
llvm-svn: 4864
2002-12-02 21:21:36 +00:00
Chris Lattner
920d619d39 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
b7073c8c07 Add comment about ownership semantics
llvm-svn: 4859
2002-12-02 21:13:45 +00:00
Chris Lattner
9872f53512 Add stub to emit machine code for JIT
llvm-svn: 4856
2002-12-02 21:00:50 +00:00
Vikram S. Adve
2d712e9ff6 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
98df15e927 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
32d007461d Added virtual functions for storing and retrieving values from the stack.
llvm-svn: 4824
2002-11-22 22:41:23 +00:00
Misha Brukman
940cfa8597 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
0f0cc54805 Set SSARegMap to NULL after deleting it.
llvm-svn: 4822
2002-11-22 22:32:15 +00:00
Chris Lattner
29c4cbb5a5 Cloning stuff doesn't modify the source module
llvm-svn: 4787
2002-11-20 20:22:58 +00:00
Misha Brukman
45b9648b91 MRegisterInfo.h - Added prototypes for functions we need to map a register to
an appropriate TargetRegisterClass, also adds TargetRegisterClass definition.
TargetMachine.h - speling.

llvm-svn: 4781
2002-11-20 18:54:53 +00:00
Chris Lattner
b5027095e5 - Eliminated the deferred symbol table stuff in Module & Function, it really
wasn't an optimization and it was causing lots of bugs.

llvm-svn: 4779
2002-11-20 18:36:02 +00:00
Chris Lattner
46b6e30fef Eliminate the concept of a deferred symbol table. The optimization really isn't,
and it causes obscure bugs to show up in passes.

llvm-svn: 4777
2002-11-20 18:07:48 +00:00
Misha Brukman
fbaf9e7ad0 SSARegMap -- the mapping between SSARegisters and their RegisterClasses, which
imply types of SSA Registers. This is on a per-function basis, so the
MachineFunction contains the SSARegMap, and has accessor functions to it.

llvm-svn: 4774
2002-11-20 00:53:10 +00:00
Chris Lattner
e5a05ec13b Minor changes to cloning interface
llvm-svn: 4770
2002-11-19 22:54:01 +00:00
Chris Lattner
01ce78b4e1 Extend function cloning interface to support inlining
llvm-svn: 4767
2002-11-19 21:54:38 +00:00
Chris Lattner
5165195254 This file is supersumed by Utils/Cloning.h
llvm-svn: 4765
2002-11-19 21:00:33 +00:00
Chris Lattner
697f2aac86 Merge cloning and inlining utilities
llvm-svn: 4763
2002-11-19 20:58:38 +00:00
Chris Lattner
6423477181 Move inlining pass to IPO.h
llvm-svn: 4761
2002-11-19 20:43:24 +00:00
Chris Lattner
adea9960ab Move the function extractor pass from tools/extract into lib/Xform/IPO
llvm-svn: 4759
2002-11-19 18:42:59 +00:00
Chris Lattner
bd2cbecb05 Add a new Module::getNamedFunction method
llvm-svn: 4758
2002-11-19 18:41:44 +00:00
Chris Lattner
2253ec7ec9 Ignore options that are ""
llvm-svn: 4757
2002-11-19 17:10:14 +00:00
Chris Lattner
b094535fdf Inline DSTypeRec stuff into DSNode
llvm-svn: 4751
2002-11-18 21:45:30 +00:00
Chris Lattner
e66e649733 Inline DSTypeRec into DSNode
llvm-svn: 4750
2002-11-18 21:45:07 +00:00
Chris Lattner
80445dfe2e Templatize graph traits and iterator to work with const and non-const clients
llvm-svn: 4746
2002-11-18 21:42:19 +00:00
Chris Lattner
6315957999 Add helper method
llvm-svn: 4744
2002-11-18 06:57:05 +00:00
Chris Lattner
3afc487fba Print is const!
llvm-svn: 4737
2002-11-17 23:22:13 +00:00
Chris Lattner
e138d4fbc8 Make sure that print gets a targetmachine
CVS: ----------------------------------------------------------------------

llvm-svn: 4735
2002-11-17 23:21:45 +00:00
Chris Lattner
18cdae7e54 Omit the indirect node when printing call graphs
llvm-svn: 4733
2002-11-17 23:10:27 +00:00
Chris Lattner
9971426ca0 Add machine independant printer interface
llvm-svn: 4729
2002-11-17 22:54:55 +00:00
Chris Lattner
b51a2857f2 Finish enumating code
llvm-svn: 4726
2002-11-17 22:33:54 +00:00
Chris Lattner
4bc444f503 Remove unused methods
llvm-svn: 4720
2002-11-17 22:14:22 +00:00
Chris Lattner
16b1ec97f0 Convert to use an enum to access def/use/use&def information. These make
reading code much easier than just seeing "true, false" especially when
default parameters default one but not both arguments.

llvm-svn: 4717
2002-11-17 21:56:10 +00:00
Chris Lattner
dcfed3413d Return const refefrences to enable default construction
llvm-svn: 4713
2002-11-17 21:02:42 +00:00
Brian Gaeke
492e05ba01 include/llvm/CodeGen/MachineInstrBuilder.h: Add addClobber() inline
convenience method.  Fix typo in comment.
lib/Target/X86/InstSelectSimple.cpp: Explicitly specify some implicit uses.
 Use MOVZX/MOVSX instead of MOV instructions with sign extend instructions.
 Take out LEAVE instructions.
 32-bit IDIV and DIV use CDQ, not CWQ (CWQ is a typo).
 Fix typo in comment and remove some FIXME comments.
lib/Target/X86/Printer.cpp: Include X86InstrInfo.h and llvm/Function.h.
 Add some simple code to Printer::runOnFunction to iterate over
  MachineBasicBlocks and call X86InstrInfo::print().
lib/Target/X86/X86InstrInfo.def: Make some more instructions with
 implicit defs "Void".  Add more sign/zero extending "move" insns
 (movsx, movzx).
lib/Target/X86/X86RegisterInfo.def: Add EFLAGS as a register.

llvm-svn: 4707
2002-11-14 22:32:30 +00:00
Chris Lattner
57e3d39384 Remove dead method, add new method
llvm-svn: 4700
2002-11-12 15:57:28 +00:00
Chris Lattner
2ecb91e1c1 Almost complete rewrite of BU closure code
llvm-svn: 4693
2002-11-11 21:34:34 +00:00
Chris Lattner
47457c43f4 add method
llvm-svn: 4686
2002-11-10 23:47:02 +00:00
Chris Lattner
aaabf591d2 Add code to be able to merge two call sites
llvm-svn: 4685
2002-11-10 23:46:51 +00:00
Chris Lattner
db1822a429 Add hasGraph() methods to all of the passes for the printer
llvm-svn: 4676
2002-11-10 06:53:19 +00:00
Chris Lattner
7cb6ecd396 Implement swapping
llvm-svn: 4674
2002-11-10 06:48:24 +00:00
Chris Lattner
fbfba19b2f Implement support for swapping. Callsites now sort by callee
llvm-svn: 4673
2002-11-10 06:48:11 +00:00
Chris Lattner
667b09146f Add capability to set a preference of what call vector is printed to dot files
llvm-svn: 4672
2002-11-10 06:47:35 +00:00
Chris Lattner
1fe76d2385 eliminate the ability to remove global nodes from deadNodeElminate... for now.
This slows stuff down a bit, but it should get much better before it gets any
worse.

llvm-svn: 4666
2002-11-09 22:07:02 +00:00
Chris Lattner
0752756a6a Add globals graphs to all three passes
llvm-svn: 4663
2002-11-09 21:12:07 +00:00
Chris Lattner
c2eca7c7bc Move maskNodeTypes from cpp file
llvm-svn: 4662
2002-11-09 21:02:30 +00:00
Chris Lattner
e726eb5ea7 Clean up DSGraph::removeDeadNodes interface
llvm-svn: 4660
2002-11-09 21:00:49 +00:00
Chris Lattner
f17ffc0cc5 Make removeTriviallyDeadNodes a private interface
llvm-svn: 4658
2002-11-09 20:55:04 +00:00
Chris Lattner
1c5c03d6f7 Add initial support for a globals graph
llvm-svn: 4656
2002-11-09 20:01:01 +00:00
Chris Lattner
0db8dff751 Remove unneccesary #include
llvm-svn: 4653
2002-11-09 19:24:41 +00:00
Chris Lattner
a81c52f557 Remove GlobalDSGraph delcaration
llvm-svn: 4652
2002-11-09 19:21:56 +00:00
Chris Lattner
fa3cdfdcf7 Fix release build
llvm-svn: 4647
2002-11-09 00:48:52 +00:00
Chris Lattner
15e2b6ddb9 Add new methods
llvm-svn: 4646
2002-11-08 23:22:48 +00:00
Chris Lattner
a6520dea5c Add another option to cloneGraph
llvm-svn: 4641
2002-11-08 22:28:55 +00:00
Chris Lattner
5f0b273a70 - Add support for an "auxillary" call site list
- Original call sites are now never modified after construction by the local
  pass.
- DSGraph::cloneInto can now optionally not clone the call sites
- BUDataStructures no longer has a ton of book-keeping info for a broken
  implementation of the TD data structures

llvm-svn: 4631
2002-11-08 21:24:51 +00:00
Chris Lattner
2698f71007 Add a method "getMainFunction()" that efficiently locates 'main' in a module
llvm-svn: 4629
2002-11-08 20:34:02 +00:00
Chris Lattner
de23b0e031 Use DSNodeHandle for persistent maps
llvm-svn: 4623
2002-11-08 05:03:37 +00:00
Chris Lattner
9330d88b02 Add flag that may be used to determine if dead nodes are used. It's temporary
llvm-svn: 4620
2002-11-08 01:22:26 +00:00
Vikram S. Adve
8ad057e4ec Restore a #include because this header file needs the definitions
of DSCallSite::~DSCallSite and DSNodeHandle::~DSNodeHandle.

llvm-svn: 4616
2002-11-08 00:23:23 +00:00
Chris Lattner
adac673c17 Add interfaces for ResolveCallSiteModRefInfo
llvm-svn: 4601
2002-11-07 07:11:49 +00:00
Chris Lattner
450e1fbc76 Instead of using a bool that constant has to be explained, use a self
explanitory enum instead.

llvm-svn: 4600
2002-11-07 07:06:20 +00:00
Chris Lattner
aa7b1a3e3a Add new method
llvm-svn: 4598
2002-11-07 06:30:17 +00:00
Chris Lattner
48a0cb745d Expose isPointerType to clients of dsanalysis
llvm-svn: 4597
2002-11-07 05:21:15 +00:00
Chris Lattner
9bcd1e1b61 Add a comment
llvm-svn: 4586
2002-11-06 23:26:21 +00:00
Chris Lattner
9870fb032e Allow the ResolveCallSiteModRefInfo method to return a mapping of nodes,
implement the mod/ref bit masking

llvm-svn: 4578
2002-11-06 19:59:33 +00:00
Chris Lattner
f7e839f435 Add a stub to implement the context sensitive mod/ref info for call sites
llvm-svn: 4577
2002-11-06 19:38:43 +00:00
Chris Lattner
00de4338dc Give a back pointer to the IPModRef object to the FunctionModRefInfo object
llvm-svn: 4576
2002-11-06 19:07:13 +00:00
Chris Lattner
a90e3aa6b2 Remove a couple of #includes, move some code to .cpp file
llvm-svn: 4574
2002-11-06 18:38:10 +00:00
Chris Lattner
09a2cc9a4a Make PointerShift/Size be enums so they are constants instead of globals
llvm-svn: 4571
2002-11-06 18:02:26 +00:00
Vikram S. Adve
201d4e3639 Make query operations non-const to allow demand-driven analyses.
llvm-svn: 4569
2002-11-06 17:17:55 +00:00
Vikram S. Adve
2a1c1171e7 An interprocedural analysis pass that computes flow-insensitive
IP Mod and Ref information for every function and every call site.

llvm-svn: 4567
2002-11-06 17:02:03 +00:00
Vikram S. Adve
05cfe7d191 Add const version of function getNodeForValue:
const DSNodeHandle &getNodeForValue(Value *V) const.

llvm-svn: 4566
2002-11-06 17:00:41 +00:00
Chris Lattner
d0387e7e11 Dramatically simplify internal DSNode representation, get implementation
*FULLY OPERATIONAL* and safe.  We are now capable of completely analyzing
at LEAST the Olden benchmarks + 181.mcf

llvm-svn: 4562
2002-11-06 06:20:27 +00:00
Chris Lattner
f1d0314c32 Remove stripscalars argument to cloneInto
llvm-svn: 4561
2002-11-06 06:18:56 +00:00
Chris Lattner
c9dc8840ff Add a bunch of assertions
llvm-svn: 4549
2002-11-04 23:59:41 +00:00
Chris Lattner
facce8e131 Implement methods needed to print out call graph
llvm-svn: 4522
2002-11-04 02:53:39 +00:00
Chris Lattner
aaf17e11b1 Allow the call graph to be called from analyze naturally with print implemented
llvm-svn: 4517
2002-11-04 00:21:19 +00:00