Commit Graph

1273 Commits

Author SHA1 Message Date
Chris Lattner
f6d12fbd9c Add entries to track information about implicit uses and definitions of
the instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4875 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 05:41:32 +00:00
Chris Lattner
8562d4ec7c More support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4873 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-02 21:56:28 +00:00
Chris Lattner
d1c45a6633 Start adding to the meat of MachineCodeEmitter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4869 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-02 21:44:13 +00:00
Chris Lattner
928e23f9ba Initial version of MachineCodeEmitter interface: empty
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4864 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-02 21:21:36 +00:00
Chris Lattner
b7a2d2256f The hopefully final version of addPassesToEmitMachineCode which does not
have any question about ownership


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4863 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-02 21:15:42 +00:00
Chris Lattner
dc095240c9 Add comment about ownership semantics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4859 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-02 21:13:45 +00:00
Chris Lattner
9f729a30b2 Add stub to emit machine code for JIT
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4856 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-02 21:00:50 +00:00
Vikram S. Adve
0e2cf7606d 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4837 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-27 17:46:38 +00:00
Vikram S. Adve
e127a14991 Added flags to CloneFlags to strip/keep Mod/Ref bits when cloning a graph.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4835 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-27 17:39:37 +00:00
Vikram S. Adve
f443e6698f No longer need local graph to find call sites.
Also some major fixes within IPModRef.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4834 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-27 17:38:56 +00:00
Misha Brukman
f6a132c7a0 Added virtual functions for storing and retrieving values from the stack.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4824 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-22 22:41:23 +00:00
Misha Brukman
35880f394f 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4823 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-22 22:40:52 +00:00
Misha Brukman
7b8ba17761 Set SSARegMap to NULL after deleting it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4822 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-22 22:32:15 +00:00
Chris Lattner
d4fd397805 Cloning stuff doesn't modify the source module
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4787 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-20 20:22:58 +00:00
Misha Brukman
282ec57c4c MRegisterInfo.h - Added prototypes for functions we need to map a register to
an appropriate TargetRegisterClass, also adds TargetRegisterClass definition.
TargetMachine.h - speling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4781 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-20 18:54:53 +00:00
Chris Lattner
6e6026b465 - Eliminated the deferred symbol table stuff in Module & Function, it really
wasn't an optimization and it was causing lots of bugs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4779 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-20 18:36:02 +00:00
Chris Lattner
2c08dcc276 Eliminate the concept of a deferred symbol table. The optimization really isn't,
and it causes obscure bugs to show up in passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4777 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-20 18:07:48 +00:00
Misha Brukman
1617e6c997 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4774 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-20 00:53:10 +00:00
Chris Lattner
d18015599c Minor changes to cloning interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4770 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-19 22:54:01 +00:00
Chris Lattner
1c9985067b Extend function cloning interface to support inlining
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4767 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-19 21:54:38 +00:00
Chris Lattner
b499419def This file is supersumed by Utils/Cloning.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4765 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-19 21:00:33 +00:00
Chris Lattner
84bf9880ea Merge cloning and inlining utilities
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4763 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-19 20:58:38 +00:00
Chris Lattner
8f51da42e7 Move inlining pass to IPO.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4761 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-19 20:43:24 +00:00
Chris Lattner
5113eb0c52 Move the function extractor pass from tools/extract into lib/Xform/IPO
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4759 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-19 18:42:59 +00:00
Chris Lattner
9a641b4bce Add a new Module::getNamedFunction method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4758 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-19 18:41:44 +00:00
Chris Lattner
af43b64d12 Ignore options that are ""
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4757 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-19 17:10:14 +00:00
Chris Lattner
44a92675e4 Add facility to compute peak memory usage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4752 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-18 21:45:55 +00:00
Chris Lattner
a1cf699b50 Inline DSTypeRec stuff into DSNode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4751 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-18 21:45:30 +00:00
Chris Lattner
686a6f5c13 Inline DSTypeRec into DSNode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4750 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-18 21:45:07 +00:00
Chris Lattner
c59a1ba33b Templatize graph traits and iterator to work with const and non-const clients
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4746 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-18 21:42:19 +00:00
Chris Lattner
ce3d3eadef Add helper method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4744 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-18 06:57:05 +00:00
Chris Lattner
af55be15df Print is const!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4737 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-17 23:22:13 +00:00
Chris Lattner
fe30dd3f23 Make sure that print gets a targetmachine
CVS: ----------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4735 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-17 23:21:45 +00:00
Chris Lattner
e9c04aedca Omit the indirect node when printing call graphs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4733 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-17 23:10:27 +00:00
Chris Lattner
9bca50d6dd Add machine independant printer interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4729 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-17 22:54:55 +00:00
Chris Lattner
23e6bba592 Finish enumating code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4726 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-17 22:33:54 +00:00
Chris Lattner
7e1a53b404 Remove unused methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4720 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-17 22:14:22 +00:00
Chris Lattner
32f3d08cde 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4717 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-17 21:56:10 +00:00
Chris Lattner
5494c7ed9d Return const refefrences to enable default construction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4713 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-17 21:02:42 +00:00
Chris Lattner
d8a947e233 Fix warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4708 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-15 18:04:16 +00:00
Brian Gaeke
6559bb96a9 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4707 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-14 22:32:30 +00:00
Chris Lattner
21f3663c06 Remove dead method, add new method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4700 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-12 15:57:28 +00:00
Chris Lattner
cf69bb494a Almost complete rewrite of BU closure code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4693 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-11 21:34:34 +00:00
Chris Lattner
947b10c167 add method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4686 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-10 23:47:02 +00:00
Chris Lattner
b0dfcbf584 Add code to be able to merge two call sites
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4685 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-10 23:46:51 +00:00
Chris Lattner
169f8b838b Add tarj_end() method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4684 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-10 23:46:31 +00:00
Chris Lattner
8013f9eb65 Add hasGraph() methods to all of the passes for the printer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4676 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-10 06:53:19 +00:00
Chris Lattner
5c533ae837 Implement swapping
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4674 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-10 06:48:24 +00:00
Chris Lattner
a3590f2496 Implement support for swapping. Callsites now sort by callee
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4673 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-10 06:48:11 +00:00
Chris Lattner
431412735b Add capability to set a preference of what call vector is printed to dot files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4672 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-10 06:47:35 +00:00
Chris Lattner
d8d97ce857 Fix a problem where bad graphs could be generated
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4671 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-10 06:47:03 +00:00
Chris Lattner
f40f0a39bd 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4666 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 22:07:02 +00:00
Chris Lattner
aa0b468f6d Add globals graphs to all three passes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4663 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 21:12:07 +00:00
Chris Lattner
dc26d45c71 Move maskNodeTypes from cpp file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4662 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 21:02:30 +00:00
Chris Lattner
65f2897f2c Clean up DSGraph::removeDeadNodes interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4660 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 21:00:49 +00:00
Chris Lattner
3ce235a161 Make removeTriviallyDeadNodes a private interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4658 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 20:55:04 +00:00
Chris Lattner
2e4f9bf86e Add initial support for a globals graph
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4656 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 20:01:01 +00:00
Chris Lattner
b07869b386 Remove unneccesary #include
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4653 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 19:24:41 +00:00
Chris Lattner
24b3a880df Remove GlobalDSGraph delcaration
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4652 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 19:21:56 +00:00
Chris Lattner
1fa48e9d32 Fix release build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4647 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 00:48:52 +00:00
Chris Lattner
2c8b1f6fc6 Add new methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4646 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 23:22:48 +00:00
Chris Lattner
02fd6870c1 Add another option to cloneGraph
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4641 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 22:28:55 +00:00
Chris Lattner
fb39933b75 - 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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4631 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 21:24:51 +00:00
Chris Lattner
a9a93f3777 Add a method "getMainFunction()" that efficiently locates 'main' in a module
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4629 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 20:34:02 +00:00
Vikram S. Adve
691cd891e3 Include HashExtras.h since it is almost always needed anyway.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4626 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 14:07:33 +00:00
Chris Lattner
b16fb0db91 Use DSNodeHandle for persistent maps
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4623 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 05:03:37 +00:00
Chris Lattner
df2f35ee2b Add flag that may be used to determine if dead nodes are used. It's temporary
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4620 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 01:22:26 +00:00
Vikram S. Adve
2e4f37ac42 Restore a #include because this header file needs the definitions
of DSCallSite::~DSCallSite and DSNodeHandle::~DSNodeHandle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4616 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 00:23:23 +00:00
Chris Lattner
0ed8e2a862 Add interfaces for ResolveCallSiteModRefInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4601 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 07:11:49 +00:00
Chris Lattner
460ea29b45 Instead of using a bool that constant has to be explained, use a self
explanitory enum instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4600 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 07:06:20 +00:00
Chris Lattner
cee3a4ef10 Add new method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4598 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 06:30:17 +00:00
Chris Lattner
04781177b9 Expose isPointerType to clients of dsanalysis
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4597 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 05:21:15 +00:00
Chris Lattner
17e43de579 Add a comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4586 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 23:26:21 +00:00
Chris Lattner
4476ceb414 Allow the ResolveCallSiteModRefInfo method to return a mapping of nodes,
implement the mod/ref bit masking


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4578 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 19:59:33 +00:00
Chris Lattner
268748a0d8 Add a stub to implement the context sensitive mod/ref info for call sites
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4577 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 19:38:43 +00:00
Chris Lattner
2110808fd8 Give a back pointer to the IPModRef object to the FunctionModRefInfo object
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4576 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 19:07:13 +00:00
Chris Lattner
76351e9bab Remove a couple of #includes, move some code to .cpp file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4574 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 18:38:10 +00:00
Chris Lattner
45a9116e0a Make maxSize a private variable, add a size() accessor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4573 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 18:34:40 +00:00
Chris Lattner
ce4a2e1132 Make PointerShift/Size be enums so they are constants instead of globals
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4571 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 18:02:26 +00:00
Vikram S. Adve
75310d59c9 Make query operations non-const to allow demand-driven analyses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4569 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 17:17:55 +00:00
Vikram S. Adve
5f76054a79 An implementation of the bit-vector representation of sets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4568 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 17:14:14 +00:00
Vikram S. Adve
895c0bd3fb An interprocedural analysis pass that computes flow-insensitive
IP Mod and Ref information for every function and every call site.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4567 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 17:02:03 +00:00
Vikram S. Adve
db7ab14434 Add const version of function getNodeForValue:
const DSNodeHandle &getNodeForValue(Value *V) const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4566 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 17:00:41 +00:00
Chris Lattner
08db719c4b 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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4562 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 06:20:27 +00:00
Chris Lattner
4268c93b00 Remove stripscalars argument to cloneInto
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4561 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 06:18:56 +00:00
Chris Lattner
55d77d9a3f Add a bunch of assertions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4549 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-04 23:59:41 +00:00
Chris Lattner
b7843a4f57 Allow memory sizes to be negative, eliminate TmpRSS
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4539 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-04 19:20:09 +00:00
Vikram S. Adve
5fe9171b38 Generic graph iterator to enumerate the SCCs of a graph
in linear time using Tarjan's DFS algorithm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4531 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-04 14:15:57 +00:00
Chris Lattner
7e5f46a441 Implement methods needed to print out call graph
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4522 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-04 02:53:39 +00:00
Chris Lattner
1650015822 Allow the call graph to be called from analyze naturally with print implemented
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4517 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-04 00:21:19 +00:00
Chris Lattner
c875f023d4 Rename ValueMap to ScalarMap
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4516 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-03 21:27:48 +00:00
Chris Lattner
d18f342af8 Rename NewNode flag to HeapNode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4515 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-03 21:24:04 +00:00
Chris Lattner
36aff6ec2d Check in header file that was missing, thus broke the build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4513 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-03 19:24:49 +00:00
Misha Brukman
0d05e6d942 Fixed comment on top of DSNode.h, added note to DSSupport.h as to why
functions were split out from DSNode class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4509 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-02 21:18:53 +00:00
Chris Lattner
5af344d79d Implement the "unknown flag" which mainly consists of aligning printing code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4490 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-02 00:36:03 +00:00
Chris Lattner
332043264e * Eliminate Scalar node type (renumber other node types)
* Allow DSNodeHandle::mergeWith to work if a node handle isn't pointing to a node yet


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4487 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-02 00:11:12 +00:00
Chris Lattner
e3aa8aa08f Eliminate some unneccesary #includes and forward decls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4475 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-31 21:24:10 +00:00
Misha Brukman
caf18622c5 Refactored DSGraph.h:
* DSGraph.h   contains DSGraph
* DSNode.h    contains DSNode (soon UDSNode and MDSNode)
* DSSupport.h contains DSCallsite, DSTypeRec, and DSNodeHandler


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4466 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-31 06:34:18 +00:00
Chris Lattner
8f0a16eac6 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4465 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-31 05:45:02 +00:00
Chris Lattner
f2da7241f5 New isAssociative/isCommutative inspection methods, graciously contributed by
Casey Carter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4459 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-31 04:14:01 +00:00