Commit Graph

3158 Commits

Author SHA1 Message Date
Chris Lattner
51a4ad475b new helper method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20491 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-06 20:55:34 +00:00
Chris Lattner
bf4515e218 move some method declarations around to make it clear that users should
not call insert(Value *Val), remove(Value* Val), or
changeName(Value *V, const std::string &Name)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20488 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-06 06:03:44 +00:00
Chris Lattner
c0d369d879 this method is never called.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20487 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-06 06:00:24 +00:00
Chris Lattner
73091bcebe the only caller of insertEntry is insert, inline it and remove insertEntry
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20485 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-06 05:56:02 +00:00
Chris Lattner
58b004c2a3 remove this method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20482 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-06 05:50:49 +00:00
Chris Lattner
1327c5ab99 Delete the really inefficient method: void remove(const Type* Typ);
Get rid of removeEntry(type_iterator), since 'remove' is exactly the same
operation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20480 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-06 05:46:00 +00:00
Chris Lattner
c9a33cefb8 InternallyInconsistent is dead!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20478 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-06 05:22:05 +00:00
Chris Lattner
84ceb33f92 remove these dead methods.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20475 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-06 02:38:24 +00:00
Chris Lattner
ea8186ad62 nuke some dead methods.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20470 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-06 02:25:02 +00:00
Chris Lattner
eaadf58276 Add a new method, allow symtab to poke name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20468 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-06 02:10:40 +00:00
Chris Lattner
d81b691ea0 remove extraneous spaces from argument lists.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20465 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-05 19:58:40 +00:00
Chris Lattner
0d1e40728d remove all of the various setName implementations, consolidating them into
Value::setName, which is no longer virtual.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20464 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-05 19:51:50 +00:00
Chris Lattner
d0478744b3 Remove the second argument to Value::setName, it is never needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20457 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-05 18:59:36 +00:00
Jeff Cohen
2f3c9b7562 Add support for not strength reducing GEPs where the element size is a small
power of two.  This emphatically includes the zeroeth power of two.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20429 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-04 04:04:26 +00:00
Chris Lattner
7dd732bf80 Add an argument.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20413 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-03 01:03:10 +00:00
Chris Lattner
e4666594d0 Now that type does not derive from Value, these do not need to be virtual.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20393 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-02 03:43:55 +00:00
Chris Lattner
f9d27a8967 Add a prefetch intrinsic, patch contributed by Justin Wick!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20374 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-28 19:25:57 +00:00
Chris Lattner
a97cf21383 Fix this to create a recursive mutex. Patch by Evan Jones!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20355 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-27 19:07:36 +00:00
Chris Lattner
210bef19ef Rename include guard, patch contributed by Evan Jones!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20353 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-27 19:05:24 +00:00
Chris Lattner
f8db8a0432 Fix spelling, patch contributed by Gabor Greif
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20342 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-27 06:15:51 +00:00
Reid Spencer
eaa06bb979 Implement an isBytecodeArchive method to determine if an archive contains
bytecode file members or not.
Patch Contributed By Adam Treat


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20338 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-26 22:00:32 +00:00
Chris Lattner
803513b364 Fix a case where we incorrectly returned hasComputableLoopEvolution for
a ternary commutative expr.  Remove FIXME that does not need to be fixed
(can't happen).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20335 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-26 18:40:02 +00:00
Chris Lattner
d1a326006d switch instructions only allow constantints for their values, be more specific.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20298 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-24 05:32:09 +00:00
Chris Lattner
ad993cbb77 add a new method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20293 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-24 02:37:26 +00:00
Chris Lattner
977a39570f Add new method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20287 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-23 16:50:59 +00:00
Chris Lattner
6c2997f5b9 remove some more dead templates and a dead macro.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20279 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-22 23:36:37 +00:00
Chris Lattner
127a8a7764 Remove a bunch of dead templates.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20275 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-22 23:19:42 +00:00
Jeff Cohen
23a1cf3e08 Change __MINGW to __MINGW32__. Patch submitted by Henrik Bach.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20243 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-19 03:01:13 +00:00
Chris Lattner
b29cb29364 Map doubles from integers, not the double itself.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20229 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-17 20:16:58 +00:00
Chris Lattner
d672ab936f Add a new method to make it easy to update graphs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20194 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-15 18:40:55 +00:00
Chris Lattner
0c09e5fb91 Move private helper function into the only .cpp file that uses it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20169 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-13 23:14:06 +00:00
Chris Lattner
8a1573f823 Do not replace ostream << Module*, only ostream << Module&.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20157 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-13 19:15:01 +00:00
Chris Lattner
afc0dc7184 Add a new replaceSymbolicValuesWithConcrete method to the SCEV class,
adjust const'ness a bit to be more correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20145 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-13 04:34:51 +00:00
Chris Lattner
748ca4de2c Add some iterators that should have come in long ago
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20085 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-09 03:14:29 +00:00
Chris Lattner
ddf5a35eed Hopefully fix the build on Darwin with GCC 3.3
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20064 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-07 16:09:01 +00:00
Chris Lattner
eecfea4da6 Eliminate the explicit opcode field in ConstantExpr, using the SubclassData
field to hold it instead.  This shrinks memory usage for 176.gcc from
57628728 to 57598144 bytes, a small reduction of about 30K.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20047 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-05 02:00:12 +00:00
Chris Lattner
88fe29a1da Eliminate the explicit volatile fields in LoadInst and StoreInst. This shrinks
LoadInst from 60 -> 56 bytes and StoreInst from 76 -> 72 bytes.

Note however, that this doesn't actually save any memory on common systems
where 'malloc' returns 8-byte aligned memory, as the saved space is replaced
by useless alignment padding.  :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20046 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-05 01:44:18 +00:00
Chris Lattner
8f0d403926 SubclassID is really a small field. Split it into half and let subclasses
play with the unused part.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20043 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-05 01:37:44 +00:00
Chris Lattner
eefc71be20 Add some new members
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20034 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-04 19:58:06 +00:00
Chris Lattner
fbafcb7468 add new member
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20033 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-04 19:57:57 +00:00
Chris Lattner
3a826203c7 Add a new method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20017 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-03 18:40:05 +00:00
Chris Lattner
321f68306f remove dead method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19977 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-01 21:37:06 +00:00
Chris Lattner
a266197489 Switch from using an ilist for uses to using a custom doubly linked list.
This list does not provide the ability to go backwards in the list (its
more of an unordered collection, stored in the shape of a list).

This change means that use iterators are now only forward iterators, not
bidirectional.

This improves the memory usage of use lists from '5 + 4*#use' per value to
'1 + 4*#use'.  While it would be better to reduce the multiplied factor,
I'm not smart enough to do so.  This list also has slightly more efficient
operators for manipulating list nodes (a few less loads/stores), due to not
needing to be able to iterate backwards through the list.

This change reduces the memory footprint required to hold 176.gcc from
66.025M -> 57.687M, a 14% reduction.  It also speeds up the compiler,
7.73% in the case of bytecode loading alone (release build loading 176.gcc).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19956 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-01 01:22:06 +00:00
Chris Lattner
a9548d9fd9 * Make some methods more const correct.
* Change the FunctionCalls and AuxFunctionCalls vectors into std::lists.
  This makes many operations on these lists much more natural, and avoids
  *exteremely* expensive copying of DSCallSites (e.g. moving nodes around
  between lists, erasing a node from not the end of the vector, etc).

With a profile build of analyze, this speeds up BU DS from 25.14s to
12.59s on 176.gcc.  I expect that it would help TD even more, but I don't
have data for it.

This effectively eliminates removeIdenticalCalls and children from the
profile, going from 6.53 to 0.27s.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19939 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-30 23:51:02 +00:00
Chris Lattner
bbec41dbac Improve spelling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19931 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-30 00:13:34 +00:00
Chris Lattner
bca81448ac Improve conformance with the Misha spelling benchmark suite
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19930 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-30 00:09:23 +00:00
Chris Lattner
02accaeb17 Adjust to ilist changes.
Based on the ilist changes avoid allocating an entire Use object for the
end of the Use chain.  This saves 8 bytes of memory for each Value allocated
in the program.  For 176.gcc, this reduces us from 69.5M -> 66.0M, a 5.3%
memory savings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19925 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 18:43:28 +00:00
Chris Lattner
3cf8e6857e Adjust to ilist changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19923 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 18:41:12 +00:00
Chris Lattner
38653f0ac8 Adjust to changes in ilist
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19922 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 18:41:00 +00:00
Chris Lattner
ed4d467c69 Rename createNode -> createSentinal.
Add a new method, destroySentinal, that is used to delete it (instead of
requiring use of delete.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19921 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 18:40:19 +00:00
Chris Lattner
74a77cd985 There is no reason to include ostream here, include iosfwd instead.
This file was schizophrenic when it came to representing sizes.  In some
cases it represented them as 'unsigneds', which are not enough for 64-bit
hosts.  In other cases, it represented them as uint64_t's, which are
inefficient for 32-bit hosts.

This patch unifies all of the sizes to use size_t instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19917 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 17:16:07 +00:00
Chris Lattner
8b80ecd5ca Fix quotes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19909 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 06:29:45 +00:00
Jeff Cohen
2cc2ab96e0 Unbreak VC++ build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19908 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 06:27:16 +00:00
Chris Lattner
6cfbd62680 Memory used is a delta between memuse at the start of the time and the
memuse at the end, thus it is signed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19904 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 05:21:16 +00:00
Chris Lattner
5181ac8081 Adjust to changes in the User class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19888 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:33:00 +00:00
Chris Lattner
ec285706ae Adjust to changes in the User class. Introduce a new UnaryInstruction
class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19887 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:32:51 +00:00
Chris Lattner
519ccafc18 Adjust to user changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19886 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:32:00 +00:00
Chris Lattner
454928eda4 Many changes to cope with the User.h changes. Instructions now generally
directly embed their operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19885 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:31:36 +00:00
Chris Lattner
b8d5b1211f Adjust to User.h changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19884 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:30:52 +00:00
Chris Lattner
f718e70c7e Instead of storing operands as std::vector<Use>, just maintain a pointer
and num operands in the User class.  this allows us to embed the operands
directly in the subclasses if possible.  For example, for binary operators
we store the two operands in the derived class.

The has several effects:
  1. it improves locality because the operands and instruction are together
  2. it makes accesses to operands faster (one less load) if you access them
     through the derived class pointer.  For example this:

Value *GetBinaryOperatorOp(BinaryOperator *I, int i) {
  return I->getOperand(i);
}

Was compiled to:

_Z19GetBinaryOperatorOpPN4llvm14BinaryOperatorEi:
        movl    4(%esp), %edx
        movl    8(%esp), %eax
        sall    $4, %eax
        movl    24(%edx), %ecx
        addl    %ecx, %eax
        movl    (%eax), %eax
        ret

and is now compiled to:

_Z19GetBinaryOperatorOpPN4llvm14BinaryOperatorEi:
        movl    8(%esp), %eax
        movl    4(%esp), %edx
        sall    $4, %eax
        addl    %edx, %eax
        movl    44(%eax), %eax
        ret

Accesses through "Instruction*" are unmodified.

   3. This reduces memory consumption (by about 3%) by eliminating 1 word of
      vector overhead and a malloc header on a seperate object.
   4. This speeds up gccas about 10% (both debug and release builds) on
      large things (such as 176.gcc).  For example, it takes a debug build
      from 172.9 -> 155.6s and a release gccas from 67.7 -> 61.8s


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19883 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:29:39 +00:00
Chris Lattner
e6585ab601 Do not clean up if the MappedFile was never used or if the client already
closed the file.  This unbreaks the build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19871 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 16:08:23 +00:00
Jeff Cohen
a5ba89421e Get VC++ compiling again
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19869 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 07:29:32 +00:00
Reid Spencer
be4922a28a Convert some old C-style casts to C++ style.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19868 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 07:22:20 +00:00
Chris Lattner
d5af7c4df6 Add some methods.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19817 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-24 19:55:34 +00:00
Misha Brukman
bcb18fa612 primitive' has no a'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19808 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-24 16:28:03 +00:00
Chris Lattner
49266b2afa Do not return true from isSized for things without a size (like functions and
labels) even though they are concrete.  This fixes the DSA regressions from
last night.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19807 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-24 16:00:52 +00:00
Chris Lattner
d23a298f28 This giant patch speeds up Type::isSized(). Before, this would have to search
large nested types over and over again to determine if they are sized or not.
Now, isSized() is able to make snap decisions about all concrete types, which
are a common occurance (and includes all primitives).

On 177.mesa, this speeds up DSE from 39.5s -> 21.3s and GCSE from
13.2s -> 11.3s, reducing gccas time from 80s -> 61s (this is a debug build).

DSE and GCSE are still too slow on this testcase, but this is a simple
improvement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19800 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-24 02:08:34 +00:00
Chris Lattner
471f09090d Add an accessor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19794 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 22:57:27 +00:00
Chris Lattner
d6b210ca38 Expose more information from register allocation to passes that run after
it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19788 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 22:13:36 +00:00
Chris Lattner
063287a76b Give SelectionDAG a TargetLowering instance instead of TM instance.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19778 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 04:36:06 +00:00
Chris Lattner
f61c001673 Remove two dead methods and improve the comments for DiffFilesWithTolerance.
Also, make DiffFilesWithTolerance take sys::Path objects instead of std::strings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19770 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 03:30:39 +00:00
Chris Lattner
fc54a35956 New method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19765 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 03:11:38 +00:00
Jeff Cohen
83881957ed Fix VC++ complaint
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19747 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-22 16:30:58 +00:00
Chris Lattner
0442fbfadb Keep track of node depth for each node
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19732 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-21 21:39:38 +00:00
Chris Lattner
fb01550ace Apparently destroyFile() now throws an exception. Since this class is
designed to be put on the stack, that's not cool.  Catch and ignore the
exception.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19723 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-20 23:31:35 +00:00
Chris Lattner
5880b9fa3e Eliminate the unimplemented ADDC/SUBB operations, add ADD_PARTS/SUB_PARTS instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19713 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-20 18:50:39 +00:00
Chris Lattner
02b86f52ed Add an accessor for targets that pass args in regs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19702 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19 20:19:58 +00:00
Chris Lattner
d7e2fe40e4 Add a new method, described in the comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19683 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19 06:53:02 +00:00
Jeff Cohen
8e1971bda2 Add missing data types for VC++
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19680 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19 05:08:31 +00:00
Chris Lattner
6147a7aa17 Move all data members to the end of the class.
Add a hook to find out how the target handles shift amounts that are out of
range.  Either they are undefined (the default), they mask the shift amount
to the size of the register (X86, Alpha, etc), or they extend the shift (PPC).

This defaults to undefined, which is conservatively correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19676 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19 03:36:03 +00:00
Chris Lattner
c7ba0eb5eb Keep track of the returned value type as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19669 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-18 19:26:18 +00:00
Chris Lattner
30c0fc23c5 Allow setcc operations to have non-bool types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19655 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-18 02:51:41 +00:00
Chris Lattner
80d8a93489 Make methods private, add a method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19634 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-17 17:14:43 +00:00
Chris Lattner
7ece380440 Add methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19627 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-17 02:24:59 +00:00
Chris Lattner
6ae76fcc06 Add comments
Add fields to hold the result type of setcc operations and shift amounts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19618 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-16 23:59:30 +00:00
Chris Lattner
7e5ee40979 Revamp supported ops. Instead of just being supported or not, we now keep
track of how to deal with it, and provide the target with a hook that they
can use to legalize arbitrary operations in arbitrary ways.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19609 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-16 07:27:49 +00:00
Reid Spencer
8085cff7eb Provide support for HP/UX aCC compiler's variant of hash_map and hash_set
(RogueWave). These are implemented in rw/stdex/hash_map.h and
rw/stdex/hash_set.h on HP/UX.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19600 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-16 02:58:39 +00:00
Chris Lattner
638559aaa3 Improve compatiblity with HPUX on Itanium, patch by Duraid Madina
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19586 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-16 01:31:31 +00:00
Chris Lattner
3eb223eaf7 Improve compatibility with aCC on HPUX. Patch by Duraid Madina
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19585 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-16 01:22:18 +00:00
Chris Lattner
bb97d81cc8 Move some information out of LegalizeDAG into the generic Target interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19581 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-16 01:10:58 +00:00
Chris Lattner
3e68b41872 Add some helper methods.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19570 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-15 06:52:18 +00:00
Chris Lattner
859157daee Add new SIGN_EXTEND_INREG, ZERO_EXTEND_INREG, and FP_ROUND_INREG operators.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19568 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-15 06:17:04 +00:00
Chris Lattner
45554a61f2 Add a new target-independent code generator flag.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19567 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-15 06:00:32 +00:00
Chris Lattner
60e4878f94 Change CopyFromReg to take and produce a chain node, allowing it to be used
with physregs that are not live across the entire block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19560 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-14 22:37:20 +00:00
Chris Lattner
1cff05c7c2 Start adding some new operators, give IMPLICIT_DEF a chain operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19558 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-14 22:07:46 +00:00
Chris Lattner
79bda7fbe2 Add a method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19540 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-13 23:26:28 +00:00
Chris Lattner
a44f4aeca7 Add a method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19538 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-13 22:58:50 +00:00
Chris Lattner
18c2f13e0f Add new ImplicitDef node, rename CopyRegSDNode class to RegSDNode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19535 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-13 20:50:02 +00:00
Chris Lattner
8a496fcffd Add a new node type, add comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19525 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-13 17:58:35 +00:00
Chris Lattner
b18a2f816c New method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19516 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-12 18:37:33 +00:00
Chris Lattner
9ffdfb6bae Update comments to indicate CopyFrom/ToReg take physregs as well as vregs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19514 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-12 18:11:36 +00:00
Reid Spencer
1aa2649fdc Fix the documentation for executeAndWait so the argument comments are
actually attributed to the arguments by doxygen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19473 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-11 06:37:27 +00:00
Chris Lattner
ef36aa75d7 Add MEMSET/MEMCPY/MEMMOVE operations. Fix a really bad bug in the vector
SDNode ctor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19462 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-11 05:56:17 +00:00
Chris Lattner
89a1ed5839 Add support for bottom-up graphs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19446 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-11 00:24:59 +00:00
Chris Lattner
6e6e3ceb08 Add a helper method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19442 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-10 23:25:04 +00:00
Chris Lattner
1080b9ee53 Add support for graph operations, and add a viewGraph method to SelectionDAG.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19440 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-10 23:05:53 +00:00
Chris Lattner
ce393a609b Add a helper method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19439 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-10 23:05:07 +00:00
Jeff Cohen
ecc1cef8bf Apply feedback from Chris.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19432 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-10 04:23:32 +00:00
Jeff Cohen
6e400f76e6 Apply feed back from Chris:
1. Rename createLoaderPass to CreateProfileLoaderPass
  2. Opt shouldn't use the pass registered in CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19431 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-10 03:56:27 +00:00
Jeff Cohen
1d7b5de7ee Add last four createXxxPass functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19424 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-09 20:42:52 +00:00
Jeff Cohen
2611dd4448 Get lib/Analysis/DataStructure to compile with VC++
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19412 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-09 04:18:28 +00:00
Chris Lattner
f19ae7df65 Add interfaces to lower varargs and return/frame address intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19406 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-09 00:00:31 +00:00
Jeff Cohen
906b20a1d7 Fix VC++ compilation error
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19403 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-08 22:44:06 +00:00
Jeff Cohen
534927d82d Add even more missing createXxxPass functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19402 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-08 22:01:16 +00:00
Chris Lattner
723a912261 Allow array types to have 64-bit size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19394 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-08 20:19:27 +00:00
Jeff Cohen
e269a1ac1c Use size_t instead of long to represent memory usage. long is 32 bits
on 64-bit Windows.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19393 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-08 20:15:57 +00:00
Chris Lattner
190f3ba2aa Adjust prototype
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19387 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-08 19:57:49 +00:00
Chris Lattner
f26bc8ef48 Silence VS warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19384 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-08 19:52:31 +00:00
Chris Lattner
d4b1c9a938 Make LowerCallTo more generic and useful.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19373 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-08 19:25:39 +00:00
Jeff Cohen
06deda2d9c Add a few more passes to LinkAllPasses.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19371 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-08 18:15:23 +00:00
Jeff Cohen
bf65268def Add more missing createXxxPass functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19370 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-08 17:21:40 +00:00
Chris Lattner
1645ed0b93 Add operators for FP -> INT conversions and back.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19368 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-08 08:08:49 +00:00
Chris Lattner
d1fc96499b Add a new SelectionDAG::RemoveDeadNodes method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19344 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-07 21:08:55 +00:00
Jeff Cohen
39931a3dba Fix include. Too easy to make mistakes like this on Windows :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19343 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-07 19:21:49 +00:00
Jeff Cohen
bb66a9f960 Get new SelectionDAG stuff building with Visual Studio.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19340 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-07 15:52:36 +00:00
Jeff Cohen
e89c7c616b But not the identation of THAT line
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19328 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-07 07:46:40 +00:00
Chris Lattner
c3aae25116 Complete rewrite of the SelectionDAG class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19327 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-07 07:46:32 +00:00
Chris Lattner
cc524ca1c1 Common base class for SelectionDAG-based instruction selectors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19326 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-07 07:46:03 +00:00
Chris Lattner
63b570d49b Initial implementation of the nodes in a SelectionDAG.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19325 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-07 07:45:27 +00:00
Chris Lattner
75c2d0a351 First draft of a new Target interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19323 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-07 07:44:22 +00:00
Jeff Cohen
b99468d718 Correct indentation levels
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19322 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-07 07:44:02 +00:00
Chris Lattner
fe59d36c45 Add convenience method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19321 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-07 07:40:32 +00:00
Jeff Cohen
d9ed8c8880 Add missing createXxxPass functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19319 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-07 06:57:28 +00:00
Misha Brukman
3e4c46fbd6 Fix spelling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19317 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-07 06:45:07 +00:00
Jeff Cohen
c313932693 Update list of passes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19316 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-07 06:12:41 +00:00
Jeff Cohen
835ca25de6 Fix return type
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19314 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-07 05:41:39 +00:00
Jeff Cohen
e67bc1384a Get the #ifdef right on LinkAllPasses.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19310 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-06 07:01:08 +00:00
Jeff Cohen
00f3db6a4c Fix minor mistakes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19309 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-06 06:29:42 +00:00
Jeff Cohen
d1c452b501 Get rid of those pesky tabs...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19308 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-06 06:06:35 +00:00
Jeff Cohen
4b807e0381 Add project opt to Visual Studio.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19307 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-06 06:02:53 +00:00
Jeff Cohen
466d9398c5 Fix incorrect return type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19304 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-06 05:45:45 +00:00
Chris Lattner
13259f8b0f Add required #include
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19302 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-06 03:25:27 +00:00
Chris Lattner
15afefbe94 Add a useful method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19301 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-06 03:23:59 +00:00
Chris Lattner
b66144c1e1 Add a list end sentinal
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19299 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-05 22:14:14 +00:00
Chris Lattner
d34b257692 add an assertion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19290 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-05 16:27:34 +00:00
Chris Lattner
67cb2f6eb5 Do not let 'ftostr' return a string that starts with spaces. This allows
the AsmWriter to emit FP constants like 1.0 in normal exponential notation
instead of hex notation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19279 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-04 01:56:28 +00:00
Chris Lattner
15f63ad2e5 Add some bits that can be set on instructions. Renumber existing bits so
they are dense.  Add a virtual method that targets can choose to implement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19242 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-02 02:28:31 +00:00
Reid Spencer
52b50a64ec Make printing a warning message optional in CheckBytecodeOutputToConsole.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19240 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-02 00:10:03 +00:00
Reid Spencer
436f23ebf5 Implement a function to print a warning if bytecode output is to be sent to
a terminal/console.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19237 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-01 23:56:20 +00:00
Reid Spencer
a01aade75d Add functions for determining if the stdin/out/err is connected to a
console or not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19233 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-01 22:29:26 +00:00