Commit Graph

1474 Commits

Author SHA1 Message Date
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
Chris Lattner a35d7412c6 Cloning stuff doesn't modify the source module
llvm-svn: 4787
2002-11-20 20:22:58 +00:00
Misha Brukman 45f6b8410e 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 98cf1f5d64 - 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 b251c3d727 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 a5381b4932 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 c362618f2a Minor changes to cloning interface
llvm-svn: 4770
2002-11-19 22:54:01 +00:00
Chris Lattner 3aecfe8f61 Extend function cloning interface to support inlining
llvm-svn: 4767
2002-11-19 21:54:38 +00:00
Chris Lattner 891bbab848 This file is supersumed by Utils/Cloning.h
llvm-svn: 4765
2002-11-19 21:00:33 +00:00
Chris Lattner 36d074aac6 Merge cloning and inlining utilities
llvm-svn: 4763
2002-11-19 20:58:38 +00:00
Chris Lattner 9c1e935711 Move inlining pass to IPO.h
llvm-svn: 4761
2002-11-19 20:43:24 +00:00
Chris Lattner 58f9002b4a 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 b2e46c0714 Add a new Module::getNamedFunction method
llvm-svn: 4758
2002-11-19 18:41:44 +00:00
Chris Lattner 831f94c5a4 Ignore options that are ""
llvm-svn: 4757
2002-11-19 17:10:14 +00:00
Chris Lattner a3ddb9b5ce Add facility to compute peak memory usage
llvm-svn: 4752
2002-11-18 21:45:55 +00:00
Chris Lattner 2a254b6aa6 Inline DSTypeRec stuff into DSNode
llvm-svn: 4751
2002-11-18 21:45:30 +00:00
Chris Lattner 6d6b48b005 Inline DSTypeRec into DSNode
llvm-svn: 4750
2002-11-18 21:45:07 +00:00
Chris Lattner 11dbd0ff35 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 ee285c1df9 Add helper method
llvm-svn: 4744
2002-11-18 06:57:05 +00:00
Chris Lattner d8ea18b695 Print is const!
llvm-svn: 4737
2002-11-17 23:22:13 +00:00
Chris Lattner 02fd454f07 Make sure that print gets a targetmachine
CVS: ----------------------------------------------------------------------

llvm-svn: 4735
2002-11-17 23:21:45 +00:00
Chris Lattner 7d413cdb2b Omit the indirect node when printing call graphs
llvm-svn: 4733
2002-11-17 23:10:27 +00:00
Chris Lattner 4a22fb1fe9 Add machine independant printer interface
llvm-svn: 4729
2002-11-17 22:54:55 +00:00
Chris Lattner be5ef9028b Finish enumating code
llvm-svn: 4726
2002-11-17 22:33:54 +00:00
Chris Lattner 618c92908c Remove unused methods
llvm-svn: 4720
2002-11-17 22:14:22 +00:00
Chris Lattner 76a95ecad0 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 9fbccc672d Return const refefrences to enable default construction
llvm-svn: 4713
2002-11-17 21:02:42 +00:00
Chris Lattner fb1855921c Fix warning
llvm-svn: 4708
2002-11-15 18:04:16 +00:00
Brian Gaeke e74543584a 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 01f00ca60d Remove dead method, add new method
llvm-svn: 4700
2002-11-12 15:57:28 +00:00
Chris Lattner f8172fa67e Almost complete rewrite of BU closure code
llvm-svn: 4693
2002-11-11 21:34:34 +00:00
Chris Lattner 7bb4144def add method
llvm-svn: 4686
2002-11-10 23:47:02 +00:00
Chris Lattner b16b332280 Add code to be able to merge two call sites
llvm-svn: 4685
2002-11-10 23:46:51 +00:00
Chris Lattner c0a07a4631 Add tarj_end() method
llvm-svn: 4684
2002-11-10 23:46:31 +00:00
Chris Lattner 6fa433344d Add hasGraph() methods to all of the passes for the printer
llvm-svn: 4676
2002-11-10 06:53:19 +00:00
Chris Lattner f4850d6484 Implement swapping
llvm-svn: 4674
2002-11-10 06:48:24 +00:00
Chris Lattner 69494867d8 Implement support for swapping. Callsites now sort by callee
llvm-svn: 4673
2002-11-10 06:48:11 +00:00
Chris Lattner 4525e7899d 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 628b23ab1d Fix a problem where bad graphs could be generated
llvm-svn: 4671
2002-11-10 06:47:03 +00:00
Chris Lattner 715a3a3b5c 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 4b1be35569 Add globals graphs to all three passes
llvm-svn: 4663
2002-11-09 21:12:07 +00:00
Chris Lattner ac64873403 Move maskNodeTypes from cpp file
llvm-svn: 4662
2002-11-09 21:02:30 +00:00
Chris Lattner 380d1ad4ab Clean up DSGraph::removeDeadNodes interface
llvm-svn: 4660
2002-11-09 21:00:49 +00:00
Chris Lattner 71381c4f34 Make removeTriviallyDeadNodes a private interface
llvm-svn: 4658
2002-11-09 20:55:04 +00:00
Chris Lattner e742f31e0c Add initial support for a globals graph
llvm-svn: 4656
2002-11-09 20:01:01 +00:00
Chris Lattner ba421d7fa4 Remove unneccesary #include
llvm-svn: 4653
2002-11-09 19:24:41 +00:00
Chris Lattner 352879d022 Remove GlobalDSGraph delcaration
llvm-svn: 4652
2002-11-09 19:21:56 +00:00
Chris Lattner 99cffdf379 Fix release build
llvm-svn: 4647
2002-11-09 00:48:52 +00:00
Chris Lattner 944dd0b1db Add new methods
llvm-svn: 4646
2002-11-08 23:22:48 +00:00
Chris Lattner 27ad48cdc8 Add another option to cloneGraph
llvm-svn: 4641
2002-11-08 22:28:55 +00:00
Chris Lattner 79a6ab809d - 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 1f985e0d3c Add a method "getMainFunction()" that efficiently locates 'main' in a module
llvm-svn: 4629
2002-11-08 20:34:02 +00:00
Vikram S. Adve 1b72f8cd28 Include HashExtras.h since it is almost always needed anyway.
llvm-svn: 4626
2002-11-08 14:07:33 +00:00
Chris Lattner 05788d4b82 Use DSNodeHandle for persistent maps
llvm-svn: 4623
2002-11-08 05:03:37 +00:00
Chris Lattner 90d5c39415 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 88d2821555 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 58f10cb88d Add interfaces for ResolveCallSiteModRefInfo
llvm-svn: 4601
2002-11-07 07:11:49 +00:00
Chris Lattner 5e865cdbe2 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 8d493b51db Add new method
llvm-svn: 4598
2002-11-07 06:30:17 +00:00
Chris Lattner 312afcafaf Expose isPointerType to clients of dsanalysis
llvm-svn: 4597
2002-11-07 05:21:15 +00:00
Chris Lattner 7f6d8dd144 Add a comment
llvm-svn: 4586
2002-11-06 23:26:21 +00:00
Chris Lattner bac5fec8b9 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 2b23bf16e3 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 3cf08cc08a 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 4167780062 Remove a couple of #includes, move some code to .cpp file
llvm-svn: 4574
2002-11-06 18:38:10 +00:00
Chris Lattner 21d8b9f0d6 Make maxSize a private variable, add a size() accessor
llvm-svn: 4573
2002-11-06 18:34:40 +00:00
Chris Lattner 468e98e64e 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 075a8d7341 Make query operations non-const to allow demand-driven analyses.
llvm-svn: 4569
2002-11-06 17:17:55 +00:00
Vikram S. Adve e781ba560e An implementation of the bit-vector representation of sets.
llvm-svn: 4568
2002-11-06 17:14:14 +00:00
Vikram S. Adve 36da63f19f 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 85cbece4a3 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 48e37d9b97 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 4c74bd8936 Remove stripscalars argument to cloneInto
llvm-svn: 4561
2002-11-06 06:18:56 +00:00
Chris Lattner 4331647781 Add a bunch of assertions
llvm-svn: 4549
2002-11-04 23:59:41 +00:00
Chris Lattner 745b8516d2 Allow memory sizes to be negative, eliminate TmpRSS
llvm-svn: 4539
2002-11-04 19:20:09 +00:00
Vikram S. Adve a9c3afbe4f Generic graph iterator to enumerate the SCCs of a graph
in linear time using Tarjan's DFS algorithm.

llvm-svn: 4531
2002-11-04 14:15:57 +00:00
Chris Lattner 0ac3e3c039 Implement methods needed to print out call graph
llvm-svn: 4522
2002-11-04 02:53:39 +00:00
Chris Lattner b9d55473b5 Allow the call graph to be called from analyze naturally with print implemented
llvm-svn: 4517
2002-11-04 00:21:19 +00:00
Chris Lattner a20fabc7ec Rename ValueMap to ScalarMap
llvm-svn: 4516
2002-11-03 21:27:48 +00:00
Chris Lattner bd7af8e664 Rename NewNode flag to HeapNode
llvm-svn: 4515
2002-11-03 21:24:04 +00:00
Chris Lattner 64b4ee3abc Check in header file that was missing, thus broke the build
llvm-svn: 4513
2002-11-03 19:24:49 +00:00
Misha Brukman 5ab3a23f2e Fixed comment on top of DSNode.h, added note to DSSupport.h as to why
functions were split out from DSNode class.

llvm-svn: 4509
2002-11-02 21:18:53 +00:00
Chris Lattner 63ba1aca7c Implement the "unknown flag" which mainly consists of aligning printing code
llvm-svn: 4490
2002-11-02 00:36:03 +00:00
Chris Lattner a19a7bccc0 * Eliminate Scalar node type (renumber other node types)
* Allow DSNodeHandle::mergeWith to work if a node handle isn't pointing to a node yet

llvm-svn: 4487
2002-11-02 00:11:12 +00:00
Chris Lattner 5ef09c401b Eliminate some unneccesary #includes and forward decls
llvm-svn: 4475
2002-10-31 21:24:10 +00:00
Misha Brukman d88a3c3c93 Refactored DSGraph.h:
* DSGraph.h   contains DSGraph
* DSNode.h    contains DSNode (soon UDSNode and MDSNode)
* DSSupport.h contains DSCallsite, DSTypeRec, and DSNodeHandler

llvm-svn: 4466
2002-10-31 06:34:18 +00:00
Chris Lattner 7d5f19886d This fixes all kinds of problems with array handling. There are still bugs to
be fixed, but we are getting much closer now.

    * Make DSNode::TypeRec a full fledged DSTypeRec type.
    * Add methods used to update and access the typerecords elements
    * Add methods to query if and to cause a node to be completely folded
    * DSGraph construction doesn't use the allocation type for anything at all,
      now nodes get their type information based on how they are used.
    * Fixed a bug with global value handling introduced in the last checkin
    * GEP support is now much better, arrays are handled correctly.  The array
      flag is now updated in type records.  There are still cases that are not
      handled yet (we do not detect pessimizations), but getting much closer.

llvm-svn: 4465
2002-10-31 05:45:02 +00:00
Chris Lattner cab6c33811 New isAssociative/isCommutative inspection methods, graciously contributed by
Casey Carter.

llvm-svn: 4459
2002-10-31 04:14:01 +00:00