Commit Graph

804 Commits

Author SHA1 Message Date
Chris Lattner
0fbdfc3664 add an operator= to assign to smallstring.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59715 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20 07:09:17 +00:00
Zhongxing Xu
69e3bd10ec move partial template specialization to FoldingSet.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59434 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-17 02:40:00 +00:00
Zhongxing Xu
0cf717d6b8 Fix 80-col violation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59394 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-16 04:44:41 +00:00
Zhongxing Xu
f5b55475b3 Add partial specialization of FoldingSetTrait for ImmutableList.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59387 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-16 04:23:49 +00:00
Zhongxing Xu
2c228834fc Fix 80-column violation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59385 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-16 04:14:33 +00:00
Zhongxing Xu
2ef5d4cd6a Add Profile method to ImmutableList.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59362 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-15 09:26:02 +00:00
Duncan Sands
c04b6917c1 Work around PR1000.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58984 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-10 10:05:09 +00:00
Chris Lattner
886645a3c3 split out the functionality of utohexstr into a new utohex_buffer
helper.  This allows us to convert numbers to hex without necessarily
needing to make a std::string to hold the result.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58961 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-10 04:22:46 +00:00
Dan Gohman
20cd13f54f Overload AddInteger on int/long/long long instead of on int/int64_t,
to avoid overload ambiguities. This fixes build errors introduced
by r58623.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58632 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-03 19:40:18 +00:00
Nick Lewycky
b90c37f64c Typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58594 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-03 03:50:40 +00:00
Daniel Dunbar
9a40d3361a Return bool (inserted) from StringSet::insert as for StringMap::insert.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58268 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-27 20:50:02 +00:00
David Greene
13e781ebe7 Add STL-style typedefs and default constructors to make it possible to
use DenseMap in more contexts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58256 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-27 18:15:15 +00:00
Ted Kremenek
30f100e140 Fix incorrect testing for the end of the both strings in CStrInCStrNoCase. This could cause a read-out-of-bounds error if s2 is smaller than s1.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58009 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-22 23:16:52 +00:00
Ted Kremenek
e06e91122f constify some methods and variables in ImmutableList.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57894 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-21 05:59:33 +00:00
Dan Gohman
254a886057 Implement a SmallVector insert method that can insert multiple
copies of a value, and add several additional utilities to make
SmallVector better conform to the Container concept.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57616 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-16 00:15:24 +00:00
Dan Gohman
3d4227bec5 Fix several places that called mapped_iterator's constructor without
passing in a function object.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57615 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-16 00:12:39 +00:00
Daniel Dunbar
c9debfbf06 Add llvm::hexdigit to StringExtras (number -> hexadecimal char)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57536 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-14 23:26:20 +00:00
Chris Lattner
75d53d6bd0 this was to be removed after 2.4 branched.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57422 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-12 18:57:09 +00:00
Chris Lattner
71f95b8531 random cleanup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57383 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-11 22:06:50 +00:00
Dale Johannesen
23a98551ab Add a "loses information" return value to APFloat::convert
and APFloat::convertToInteger.  Restore return value to
IEEE754.  Adjust all users accordingly.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57329 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-09 23:00:39 +00:00
Dale Johannesen
7111b02c73 Rename APFloat::convertToAPInt to bitcastToAPInt to
make it clearer what the function does.  No functional
change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57325 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-09 18:53:47 +00:00
Rafael Espindola
73c3a94df9 Add bound checks in SmallVector
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56432 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-22 10:06:26 +00:00
Oscar Fuentes
3d01fc7de8 Initial support for the CMake build system.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56419 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-22 01:08:49 +00:00
Ted Kremenek
ed871805f7 Added static methods to APSInt: getMinValue and getMaxValue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56355 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-19 18:01:14 +00:00
Daniel Dunbar
7b75fbf224 Add DenseMap::lookup:
/// lookup - Return the entry for the specified key, or a default
  /// constructed value if no such entry exists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55523 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-29 00:48:44 +00:00
Chris Lattner
944fac71e0 Switch the asmprinter (.ll) and all the stuff it requires over to
use raw_ostream instead of std::ostream.  Among other goodness,
this speeds up llvm-dis of kc++ with a release build from 0.85s
to 0.49s (88% faster).

Other interesting changes:
 1) This makes Value::print be non-virtual.
 2) AP[S]Int and ConstantRange can no longer print to ostream directly, 
    use raw_ostream instead.
 3) This fixes a bug in raw_os_ostream where it didn't flush itself 
    when destroyed.
 4) This adds a new SDNode::print method, instead of only allowing "dump".


A lot of APIs have both std::ostream and raw_ostream versions, it would
be useful to go through and systematically anihilate the std::ostream 
versions.

This passes dejagnu, but there may be minor fallout, plz let me know if
so and I'll fix it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55263 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-23 22:23:09 +00:00
Dan Gohman
535de1a8c1 Add a clear() method to FoldingSet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55210 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-23 00:42:16 +00:00
Dan Gohman
55beb6ded8 Add an empty() member to FoldingSet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55182 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 16:14:23 +00:00
Dan Gohman
1501cdbf63 Fix SmallVector's size calculation so that a size of 0 is
handled correctly, and change a few SmallVector uses to use
size 0 to more clearly reflect their intent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55181 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 16:07:55 +00:00
Chris Lattner
2dba6a1bdb consolidate DenseMapInfo implementations, and add one for std::pair.
Patch contributed by m-s.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55167 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 05:08:25 +00:00
Chris Lattner
55767f69c5 remove redundant include
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55116 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 06:41:07 +00:00
Chris Lattner
aac0513ed0 Fix the build with gcc 4.3 as the host, patch by Zhongxing Xu!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55115 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 06:25:28 +00:00
Nick Lewycky
cbd56db62b Fix build on GCC 4.3.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55110 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 05:36:03 +00:00
Chris Lattner
98f8ccfad0 Move the fast-path (<=i64) cases of various APInt methods inline
and the slow-path cases out of line.  This speeds up instcombine
a bit in real world cases.  Patch contributed by m-s.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55063 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20 17:02:31 +00:00
Chris Lattner
fad86b003a Rework the routines that convert AP[S]Int into a string. Now, instead of
returning an std::string by value, it fills in a SmallString/SmallVector
passed in.  This significantly reduces string thrashing in some cases.

More specifically, this:
 - Adds an operator<< and a print method for APInt that allows you to 
   directly send them to an ostream.
 - Reimplements APInt::toString to be much simpler and more efficient
   algorithmically in addition to not thrashing strings quite as much.

This speeds up llvm-dis on kc++ by 7%, and may also slightly speed up the
asmprinter.  This also fixes a bug I introduced into the asmwriter in a
previous patch w.r.t. alias printing.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54873 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17 07:19:36 +00:00
Chris Lattner
9f17eb0b79 remove a dead APInt ctor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54869 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17 04:58:58 +00:00
Owen Anderson
0c5a560b03 Add a value_type typedef to SmallVector, to make it more compatible with STL adapters.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54819 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-15 18:45:51 +00:00
Ted Kremenek
183cc32e49 Removed redundant ctor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54789 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-14 21:17:07 +00:00
Daniel Dunbar
7fb842420a Add default constructor to APSInt
- Creates uninitialized APInt. 
 - Prevents need for embedding arbitrary constants when used as an out
   parameter, for example.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54757 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-13 20:53:17 +00:00
Bill Wendling
eb4ab60bed Removed unused parameters.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54262 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-01 05:50:13 +00:00
Dan Gohman
fed90b6d09 Fold the useful features of alist and alist_node into ilist, and
a new ilist_node class, and remove them. Unlike alist_node,
ilist_node doesn't attempt to manage storage itself, so it avoids
the associated problems, including being opaque in gdb.

Adjust the Recycler class so that it doesn't depend on alist_node.
Also, change it to use explicit Size and Align parameters, allowing
it to work when the largest-sized node doesn't have the greatest
alignment requirement.

Change MachineInstr's MachineMemOperand list from a pool-backed
alist to a std::list for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54146 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-28 21:51:04 +00:00
Anton Korobeynikov
4aad12c9cd Remove bogus assertion. This unbreaks mingw, where ConstantSDNode
has alignment 8 and LoadSDNode (used as LargestT template) - 4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53782 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-19 05:52:44 +00:00
Ted Kremenek
a052246590 Inline typedef for alist_iterator::pointer to work with MSVC++.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53517 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-12 18:28:46 +00:00
Nick Lewycky
066075030a operator[] is not defined for list::iterator. Overload it in ilist::iterator
to prevent silly things from happening accidentally. PR2171


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53507 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-12 07:00:52 +00:00
Ted Kremenek
eca64f0980 Minor tweaks to the ImmutableList iterator interface.
Added partial specialization of DenseMapInfo<T> for ImmutableList.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53485 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-11 22:43:07 +00:00
Ted Kremenek
0ebf14c4bb Make typedef public to make MSVC++ happy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53433 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-10 23:24:20 +00:00
Ted Kremenek
3000357ab5 Make some typedefs public to make MSVC++ happy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53432 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-10 23:09:45 +00:00
Ted Kremenek
ccaa6540fc Make typedefs in ilist public (Visual C++ errors out when they are private).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53431 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-10 22:58:10 +00:00
Bill Wendling
98fd7f6b2f Pull r53428 from Gaz into mainline:
Remove warnings about unused/shadowed variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53430 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-10 22:57:49 +00:00
Ted Kremenek
07f3cf76c6 Added ImmutableMap constructor that accepts a const TreeTy*.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53429 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-10 22:57:10 +00:00
Dan Gohman
4f4b348437 Tidy up #includes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53426 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-10 22:26:19 +00:00
Duncan Sands
df99c29e7b Correct a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53401 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-10 11:21:59 +00:00
Dan Gohman
e14d81deeb Add some basic Pool-allocation infrastructure. This adds a Recycler class,
for handling bookkeeping for deleted objects, as well as the alist class
template, for keeping lists of objects allocated from Recyclers, and some
related utilities.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53210 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 22:58:06 +00:00
Dan Gohman
9ff0f0ea39 Make ilist noncopyable too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53190 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 18:43:32 +00:00
Dan Gohman
f178700829 Don't use std::advance just to increment or decrement by one.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53189 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 18:39:33 +00:00
Dan Gohman
d24c62c67e Remove unnecessary static_casts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53181 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 18:08:20 +00:00
Dan Gohman
ccd95b5f9c Remove an unnecessary reinterpret_cast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53180 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 18:07:36 +00:00
Dan Gohman
1002c02034 Add explicit keywords.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53179 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 18:00:37 +00:00
Dan Gohman
6b345ee9b2 Make DenseMap's insert return a pair, to more closely resemble std::map.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53177 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 17:46:23 +00:00
Ted Kremenek
aa5044d3ce Removed ImmutableMap::SlimFind and replaced it with ImmutableMap::lookup. The new method does the same thing, except that it returns a pointer to the mapped data type, and not to an internal tree node.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53171 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 16:20:55 +00:00
Dan Gohman
08c09496c2 Use operator new instead of new char[].
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53067 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-03 00:59:36 +00:00
Owen Anderson
93ee2fd7da Have DenseSet::insert return a bool indicating whether the insertion succeeded or not.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53033 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-02 17:29:59 +00:00
Chris Lattner
509e4f30e8 optimize StringMap::clear
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53009 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-02 05:30:45 +00:00
Chris Lattner
fce6e546aa Add a new (simple) StringMap::clear method, patch by Pratik
Solanki!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53008 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-02 05:26:32 +00:00
Ted Kremenek
445723bfb0 Implemented operator!= for the ImmutableList iterator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52998 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-02 00:06:55 +00:00
Owen Anderson
72e61b8501 Add a version of AddString that takes a const char* so we can avoid extraneous
conversions to std::string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52995 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-01 23:49:59 +00:00
Ted Kremenek
e1bf7fdcb4 Added partial specialization of FoldingSetTrait for pointers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52989 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-01 22:30:13 +00:00
Seo Sanghyeon
ff4d609ec5 Compilation fix
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52950 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-01 05:27:28 +00:00
Dan Gohman
f4d7708972 Make SmallVector's grow use memcpy in common cases
instead of std::uninitialized_copy, which uses memmove.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52928 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-30 21:45:13 +00:00
Dan Gohman
7c6618926a Use plain operator new instead of new char[].
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52927 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-30 21:33:02 +00:00
Ted Kremenek
30389141c9 Added some comments and some cleanups.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52922 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-30 20:41:22 +00:00
Ted Kremenek
3771902e92 Added ImmutableList, a companion ADT to ImmutableSet and ImmutableMap that is used to represent a purely functional list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52911 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-30 18:07:38 +00:00
Chris Lattner
f25381ed35 add convenience 'constructors'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52908 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-30 18:02:44 +00:00
Bill Wendling
8032020cf2 Remove warnings about shadowed and unused variables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52791 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-26 18:11:45 +00:00
Dan Gohman
2b08676ca8 Pass std::string by reference. Thanks Chris!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52678 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-24 16:40:22 +00:00
Dan Gohman
caf746aa5a Add a clear() method to PriorityQueue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52656 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 23:47:46 +00:00
Dan Gohman
2904538fc3 Simplify erase_one slightly. It's not necessary to preserve
the value of the element to be erased while the heap is
being updated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52646 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 21:46:21 +00:00
Dan Gohman
84701836bf Add methods to StringMap to erase entries by key.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52640 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 21:07:03 +00:00
Wojciech Matyjewicz
300c6c5167 First step to fix PR2088. Implement routine to compute the
multiplicative inverse of a given number. Modify udivrem to allow input and 
output pairs of arguments to overlap. Patch is based on the work by Chandler
Carruth.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52638 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-23 19:39:50 +00:00
Dan Gohman
3627e34486 Add a priority queue class, which is a wrapper around std::priority_queue
and provides fairly efficient removal of arbitrary elements. Switch
ScheduleDAGRRList from std::set to this new priority queue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52582 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 18:35:25 +00:00
Owen Anderson
2b7470eb54 Fix use of placement new to actually use an address.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52423 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-17 18:07:43 +00:00
Duncan Sands
8eab8a2798 Remove some DAG combiner assumptions about sizes
of integer types.  Fix the isMask APInt method to
actually work (hopefully) rather than crashing
because it adds apints of different bitwidths.
It looks like isShiftedMask is also broken, but
I'm leaving that one to the APInt people (it is
not used anywhere).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52142 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-09 11:32:28 +00:00
Chris Lattner
d10e467ad9 Add a simple, but efficient, generic scoped hash table
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52112 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-09 00:42:10 +00:00
Chris Lattner
b8d0b807fc add a predicate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51842 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-01 18:09:04 +00:00
Dan Gohman
11bf2ace55 Add an operator< for SmallVector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51791 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 22:37:47 +00:00
Dan Gohman
cdff51cabc Fix an error in the comment for APInt::getMinSignedBits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51720 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 00:46:49 +00:00
Anton Korobeynikov
81fb27cc3a Remove guard, so *each* inclusion will result in a warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51708 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 21:57:11 +00:00
Dan Gohman
1baa88e3de Prune and tidy #includes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51697 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 19:52:31 +00:00
Anton Korobeynikov
b372d59a11 Add file with warning for backward comptibility. Should be removed after 2.4
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51693 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 18:18:15 +00:00
Anton Korobeynikov
1ff4ed726b Update guards
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51692 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 18:17:53 +00:00
Anton Korobeynikov
43d1fd449f For PR1338: rename include/llvm/ADT/ilist and friends to end with ".h"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51687 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 17:41:17 +00:00
Matthijs Kooijman
8e1cddc11d Use an explicit llvm:: prefix in the STATISTIC macro, so STATISTIC can still be
used when "using namespace llvm" is not in effect.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51592 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-27 12:41:24 +00:00
Bill Wendling
13d57320bd Remove warnings about unused parameters and shadowed variables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51266 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-19 20:15:12 +00:00
Anton Korobeynikov
e269f434b1 Add thin layer over StringMap to form StringSet. By Mikhail Glushenkov.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51048 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-13 15:03:16 +00:00
Ted Kremenek
1fd2e6d84e Make the interface of CStrInCStrNoCase be the same as strcasestr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50828 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-07 20:04:18 +00:00
Ted Kremenek
fdedd5397d Fix some serious logical errors in CStrInCStrNoCase pointed out by Bill.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50826 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-07 19:22:36 +00:00
Ted Kremenek
fbd15899b3 Guard for empty strings in CStrInCStrNoCase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50823 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-07 18:49:31 +00:00
Ted Kremenek
6925f5074f Added CStrInCStrNoCase, a portable implementation of strcasestr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50821 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-07 18:35:46 +00:00
Nick Lewycky
094aa6ce47 Typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50805 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-07 06:39:04 +00:00
Evan Cheng
34cd4a484e Fix more -Wshorten-64-to-32 warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50659 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-05 18:30:58 +00:00
Ted Kremenek
7a07428ad1 Implement operator-> for ImmutableMap iterators.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50603 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-03 01:05:46 +00:00
Evan Cheng
48e8c80e17 Suppress -Wshorten-64-to-32 warnings for 64-bit hosts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50590 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-02 21:15:08 +00:00
Chris Lattner
b606dba13b Remove the SmallVector ctor that converts from a SmallVectorImpl. This
conversion open the door for many nasty implicit conversion issues, and
can be easily solved by initializing with (V.begin(), V.end()) when 
needed.

This patch includes many small cleanups for sdisel also.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50340 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-28 06:44:42 +00:00
Chris Lattner
e49e52d856 restore the copy ctor in SmallVector. This fixes serious
errors I introduced in my last patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50338 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-28 06:32:08 +00:00
Chris Lattner
5da0b73aa1 generalize SmallVector copy ctor, there is no requirement for
the initialization vector to have the same fixed size, just the
same element type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50334 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-28 06:01:06 +00:00
Ted Kremenek
13f7a40508 Implement != for DenseSet iterators.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50236 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-24 23:49:45 +00:00
Ted Kremenek
ea33c8fed6 Added iterator support for DenseSet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50235 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-24 23:48:12 +00:00
Argyrios Kyrtzidis
0861d1fa5c Bring in uint32_t, uint64_t, and int64_t types for MSVC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49854 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-17 13:56:31 +00:00
Chris Lattner
036a94ed61 fix off by one error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49766 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-16 04:10:37 +00:00
Chris Lattner
c0814dc606 give smallstring some methods to do 'itoa'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49765 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-16 04:05:02 +00:00
Chris Lattner
30ac7df857 improvements for IntrusiveRefCntPtr, patch by Mikhail Glushenkov
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49538 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-11 16:42:06 +00:00
Owen Anderson
412821284f Add operator= implementations to SparseBitVector, allowing it to be used in GVN. This results
in both time and memory savings for GVN.  For example, one testcase went from 10.5s to 6s with
this patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49345 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 17:38:23 +00:00
David Greene
a022e3fc2f Iterators folloring a SmallVector erased element are invalidated so
don't access cached iterators from after the erased element.

Re-apply 49056 with SmallVector support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49106 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02 18:24:46 +00:00
Chris Lattner
d27c991ceb Fix "Control reaches the end of non-void function" warnings,
patch by David Chisnall.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48963 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-30 18:22:13 +00:00
Chris Lattner
2896652be2 when a node is removed from an ilist, set its next/prev pointers to
null.  This means that uses of invalidated iterators will explode violently
with:
ilist:143: failed assertion `NodePtr && "++'d off the end of an ilist!"'

instead of happening to work "most of the time".



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48859 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27 02:43:03 +00:00
Dan Gohman
950a4c40b8 Add explicit keywords.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48801 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25 22:06:05 +00:00
Anton Korobeynikov
ac67b7ea8f Add first proof-of-concept universal compiler driver framework based
on ideas mentioned in PR686.
Written by Mikhail Glushenkov and contributed by Codedgers, Inc.

Old llvmc will be removed soon after new one will have all its properties.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48699 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-23 08:57:20 +00:00
Duncan Sands
c35595fd2a Fix comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48543 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-19 10:59:59 +00:00
Scott Michel
acddf9d019 Dial down gcc's warnings: don't use 0UL when 0U suffices (and when the
variables and methods themselves only use unsigned.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48492 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-18 16:55:06 +00:00
Dan Gohman
59746c2516 No need for typedefs with enums in C++.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48312 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-13 01:07:53 +00:00
Dan Gohman
cf609575ef Add support to APInt for shift and rotate operations with APInt
instead of uint32_t for the shift/rotate count operand type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47741 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-29 01:40:47 +00:00
Dan Gohman
93c276e1c9 Add a method to APFloat to convert directly from APInt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47738 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-29 01:26:11 +00:00
Anton Korobeynikov
95e78348f0 Update per review. Patch by Mikhail Glushenkov!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47628 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 21:44:24 +00:00
Bill Wendling
e85fe660e4 Detabify
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47597 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 10:49:39 +00:00
Eli Friedman
faa999565f Add missing include (for ptrdiff_t).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47576 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25 23:35:32 +00:00
Anton Korobeynikov
567a273370 Add smart refcounting pointer class to ADT back (known before as IntrusiveSPtr.h).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47482 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 17:26:05 +00:00
Anton Korobeynikov
602d1c51e0 Unbreak build for VC2008. Patch by Argiris Kirtzidis!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47480 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22 10:11:21 +00:00
Dan Gohman
c9525263f6 Remove inline keywords from in-class function definitions, for
consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47393 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 19:29:58 +00:00
Dan Gohman
bd99917892 Add an intersects method to APInt, to capture a common idiom.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47379 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 16:08:11 +00:00
Anton Korobeynikov
ae9f3a3b7c Unbreak build with gcc 4.3: provide missed includes and silence most annoying warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47367 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 11:08:44 +00:00
Scott Michel
0123b7dcfa Make tblgen a little smarter about constants smaller than i32. Currently,
tblgen will complain if a sign-extended constant does not fit into a
data type smaller than i32, e.g., i16. This causes a problem when certain
hex constants are used, such as 0xff for byte masks or immediate xor
values.

tblgen will try the sign-extended value first and, if the sign extended
value would overflow, it tries to see if the unsigned value will fit.
Consequently, a software developer can now safely incant:

	(XORHIr16 R16C:$rA, 0xffff)

which is somewhat clearer and more informative than incanting:

	(XORHIr16 R16C:$rA, (i16 -1))

even if the two are bitwise equivalent.

Tblgen also outputs the 64-bit unsigned constant in the generated ISel code
when getTargetConstant() is invoked.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47188 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-15 23:05:48 +00:00
Dan Gohman
cd2ad1df5d Fix a typo in a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47097 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-13 22:32:12 +00:00
Dan Gohman
7649127ec1 Rename APInt's isPositive to isNonNegative, to reflect what it
actually does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47090 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-13 22:09:18 +00:00
Dan Gohman
42dd77f207 Add countTrailingOnes member functions to APInt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47086 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-13 21:11:05 +00:00
Dan Gohman
b5cfaaedbe Fix a typo in a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47085 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-13 20:56:53 +00:00
Dan Gohman
ffe3e2514a Change APInt::getBitsSet to accept a "half-open" range, where the
hiBit parameter marks the index one past the last desired set bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47032 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-12 21:47:33 +00:00
Dan Gohman
d3993d13be Correct the order of the arguments in the examples in the comments
for APInt::getBitsSet. And fix an off-by-one bug in "wrapping" mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46978 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-11 23:45:14 +00:00
Ted Kremenek
a618f82c9f The factories for ImutAVLTree/ImmutableSet/ImmutableMap now take an (optional)
BumpPtrAllocator argument to their constructors.  This BumpPtrAllocator
will be used to allocate trees.  If no BumpPtrAllocator is provided, one
is created (as before).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46975 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-11 23:11:12 +00:00
Ted Kremenek
1f801fa5ad Added "Profile" method to APFloat for use with FoldingSet.
Added member template "Add" to FoldingSetNodeID that allows "adding" arbitrary
objects to a profile via dispatch to FoldingSetTrait<T>::Profile().

Removed FoldingSetNodeID::AddAPFloat and FoldingSetNodeID::APInt, as their
functionality is now replaced using the above mentioned member template.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46957 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-11 17:24:50 +00:00
Dan Gohman
ec646cfd07 Add an isSignedIntN, like isIntN but for signed integer values instead of
unsigned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46894 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-08 21:58:15 +00:00
Ted Kremenek
86383e1f7c Constified operator<< in APSInt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46882 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-08 07:14:19 +00:00
Dan Gohman
167b8bc24d Add support to FoldingSet for hashing APInt objects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46833 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-06 23:09:15 +00:00
Anton Korobeynikov
5c4fb22809 Don't dereference an invalid pointer if string is empty.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46781 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-05 23:34:40 +00:00
Ted Kremenek
9dc7ab538e Added FoldingSet profiling support to ImmutableSet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46757 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-05 18:50:25 +00:00
Ted Kremenek
95da16e288 Changed profiling method for ImmutableMap to once again just use its
unique ImutAVLTree* for profiling.

Modified ImutAVLTree:
 (1) changed ComputeHash() to ComputeDigest() and
 (2) changed Profile() to use the computed digest and
 (3) modified insertion of IMutAVLTree into the FoldingSet owned by
     the ImutAVLTreeFactory object to use profiling instead of computing
     a direct hash.  This fixes a bug where our abuse of the FoldingSet would
     not work when the FoldingSet was resized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46753 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-05 17:30:43 +00:00
Ted Kremenek
c695ea9e8d Modified 'Profile' method of ImmutableMap to use the 'Profile' method
of the contained ImutAVLTree root.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46719 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-04 21:17:02 +00:00
Ted Kremenek
f357afb404 Modified node creation of ImutAVLTree to do a hash lookup for an existing
node in the FoldingSet of nodes held by the Factory object.  If we
we find a node with a matching hash, we do a full structural comparison.
Nodes are also now inserted into the FoldingSet only when we mark them
Immutable, as their children can change during intermediate-rebalancing.

The 'Profile' method for ImutAVLTree is no longer used when looking up
existing ImutAVLTrees with a given set of contents; instead the Profile method
is used by other clients that wish to insert such a tree into a folding set.
This means that we are not using FoldingSet in ImutAVLTreeFactory in the way
it was intended, but instead are using it as an opaque hashtable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46717 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-04 21:15:24 +00:00
Ted Kremenek
26e3c445fc Added "bucket_iterators" to FoldingSet. Bucket iterators allow iteration
over all the nodes in a particular bucket.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46716 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-04 21:11:17 +00:00
Ted Kremenek
d9719495c3 constified operator~().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46707 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-04 16:57:26 +00:00
Anton Korobeynikov
ec3e5c8a39 Add convenient std::string helpers to StringMap. Patch by Mikhail Glushenkov!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46625 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-31 23:02:33 +00:00