Commit Graph

1206 Commits

Author SHA1 Message Date
Misha Brukman
44662a783b RegisterInfo now supports handing out caller- and callee-save registers, as
well as building a map from a physical register to its register class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4896 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 23:09:53 +00:00
Chris Lattner
ffc2d6f485 Add virtual dtor, expose a debug impl
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4892 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-03 20:56:20 +00:00
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