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