Duncan Sands
e54f64899f
Often GCC can see that NumBuckets is zero here, resulting in a warning
...
about possibly swapped memset parameters. Avoid the warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127170 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-07 19:38:38 +00:00
Argyrios Kyrtzidis
a36be82664
Try fixing mingw build.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127153 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-07 05:35:01 +00:00
Argyrios Kyrtzidis
128ccbb8e5
Do a compiler check that we use one of the types from PointerUnion[N], instead of a runtime check.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127145 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-07 01:30:20 +00:00
Benjamin Kramer
88b0c6a59a
Avoid zero-sized allocations when copying a fresh DenseMap.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127110 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-05 22:00:28 +00:00
Benjamin Kramer
49d443053b
Lazily allocate DenseMaps.
...
This makes lookup slightly more expensive but it's worth it, unused
DenseMaps are common in LLVM code apparently.
1% speedup on clang -O3 bzip2.c
4% speedup on clang -O3 oggenc.c (Release build of clang on i386/linux)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127088 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-05 16:43:41 +00:00
Chris Lattner
fa09685a9a
add some slice helper methods.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126878 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-02 20:55:51 +00:00
Dan Gohman
181436f11b
Simplify this code.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126785 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-01 22:07:32 +00:00
Chris Lattner
cdac46d18e
add the ability to walk the scope tree and insert at not-the-current
...
scope.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126591 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-27 22:51:57 +00:00
Chris Lattner
878ad7afa5
add a data() method.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126590 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-27 22:51:37 +00:00
Daniel Dunbar
0aa00f9110
Support: Add llvm::AreStatisticsEnabled().
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126558 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-26 23:17:12 +00:00
Cameron Zwarich
9b6af8de58
Add a getNumSignBits() method to APInt.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126379 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-24 10:00:20 +00:00
Frits van Bommel
438208e8cb
Implement TODO for implicit C-array-to-ArrayRef conversion.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126311 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-23 13:43:06 +00:00
Nick Lewycky
2d76ad6df9
Fix C++0x incompatibility. The signature of std::make_pair<> changes from:
...
template <class T1, class T2> pair<T1,T2> make_pair(const T1&, const T2&);
to
template <class T1, class T2> pair<V1, V2> make_pair(T1&&, T2&&);
so explicitly specifying the template arguments to make_pair<> is going to break
when C++0x rolls through. Replace them with equivalent std::pair<>. Patch by
James Dennett!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126256 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-22 22:48:47 +00:00
Argyrios Kyrtzidis
38297f5f76
Allow getting the address of the value in a PointerUnion or PointerIntPair if one is
...
confident enough that he knows what he is doing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126019 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-19 03:55:58 +00:00
Ted Kremenek
3f912adeae
Add ImmutableMap methods 'manualRetain()', 'manualRelease()', and 'getRootWithoutRetain()' to help more aggressively reclaim memory in the static analyzer.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126011 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-19 01:59:21 +00:00
Nadav Rotem
093399cbf3
Enhance constant folding of bitcast operations on vectors of floats.
...
Add getAllOnesValue of FP numbers to Constants and APFloat.
Add more tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125776 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-17 21:22:27 +00:00
NAKAMURA Takumi
6904f05e60
Triple::MinGW64 is deprecated and removed. We can use Triple::MinGW32 generally.
...
No one uses *-mingw64. mingw-w64 is represented as {i686|x86_64}-w64-mingw32. In llvm side, i686 and x64 can be treated as similar way.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125747 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-17 12:24:17 +00:00
Duncan Sands
ab4c366274
Spelling fix: consequtive -> consecutive.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125563 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-15 09:23:02 +00:00
Chris Lattner
04b2f0d99f
fix comments
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125543 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-15 00:23:53 +00:00
Chris Lattner
04df049014
fix some typos.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125536 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-15 00:06:37 +00:00
Chris Lattner
7583190422
revert my ConstantVector patch, it seems to have made the llvm-gcc
...
builders unhappy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125504 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-14 18:15:46 +00:00
Chris Lattner
283c8caccd
Switch ConstantVector::get to use ArrayRef instead of a pointer+size
...
idiom. Change various clients to simplify their code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125487 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-14 07:55:32 +00:00
Chris Lattner
2b9bc422a5
add a new ArrayRef class. This is intended to replace the idiom we
...
use in many places where we pass a pointer and size to abstract APIs
that can take C arrays, std::vector, SmallVector, etc. It is to arrays
what StringRef is to strings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125486 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-14 07:35:09 +00:00
Nick Lewycky
551b6751a0
Fix typo in comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125480 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-14 06:14:20 +00:00
Chris Lattner
16e036fa8f
add a helper method.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125453 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-13 08:04:16 +00:00
Douglas Gregor
78b9649d46
Poison the relational operators ==, !=, <, <=, >=, > on llvm::Optional
...
objects, since they'll end up using the implicit conversion to "bool"
and causing some very "fun" surprises.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125380 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-11 18:13:20 +00:00
Dan Gohman
697ffd61a4
Optimize po_iterator: don't do redundant lookups.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125211 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09 19:25:31 +00:00
Duncan Sands
ae200c60c3
Remove NoVendor and NoOS, added in commit 123990, from Triple. While it
...
may be useful to understand "none", this is not the place for it. Tweak
the fix to Normalize while there: the fix added in 123990 works correctly,
but I like this way better. Finally, now that Triple understands some
non-trivial environment values, teach the unittests about them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124720 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-02 10:08:38 +00:00
Evan Cheng
2bffee2ee7
Patches to build EFI with Clang/LLVM. By Carl Norum.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124639 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-01 01:14:13 +00:00
Nick Lewycky
989e7c4d0f
Add DenseSet::resize for API parity with DenseMap::resize.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124370 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-27 09:10:42 +00:00
Renato Golin
859f818363
Clang was not parsing target triples involving EABI and was generating wrong IR (wrong PCS) and passing the wrong information down llc via the target-triple printed in IR. I've fixed this by adding the parsing of EABI into LLVM's Triple class and using it to choose the correct PCS in Clang's Tools. A Clang patch is on its way to use this infrastructure.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123990 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-21 18:25:47 +00:00
Jakob Stoklund Olesen
42e9c96392
Remove MachineRegisterInfo::getLastVirtReg(), it was giving wrong results
...
when no virtual registers have been allocated.
It was only used to resize IndexedMaps, so provide an IndexedMap::resize()
method such that
Map.grow(MRI.getLastVirtReg());
can be replaced with the simpler
Map.resize(MRI.getNumVirtRegs());
This works correctly when no virtuals are allocated, and it bypasses the to/from
index conversions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123130 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-09 21:58:20 +00:00
Jakob Stoklund Olesen
994c727b57
Use IndexedMap for MachineRegisterInfo as well. No functional change.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123106 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-09 03:05:46 +00:00
Jakob Stoklund Olesen
358de24dc1
Use an IndexedMap for LiveOutRegInfo to hide its dependence on TargetRegisterInfo::FirstVirtualRegister.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123096 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-08 23:10:50 +00:00
Chris Lattner
152096275a
add a handy typedef.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122726 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-03 03:16:20 +00:00
Chris Lattner
4f20c6d354
really get this working with a custom allocator.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122722 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-03 01:38:29 +00:00
Chris Lattner
61a10a0dc9
Enhance ScopedHashTable to allow it to take an allocator argument.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122721 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-03 01:29:37 +00:00
Jakob Stoklund Olesen
b907e8a2d4
Use IntEqClasses to compute connected components of live intervals.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122296 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-21 00:48:17 +00:00
Jakob Stoklund Olesen
2a6899c539
Add ADT/IntEqClasses.h as a light-weight implementation of EquivalenceClasses.h.
...
This implementation already exists as ConnectedVNInfoEqClasses in
LiveInterval.cpp, and it seems to be generally useful to have a light-weight way
of forming equivalence classes of small integers.
IntEqClasses doesn't allow enumeration of the elements in a class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122293 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-21 00:04:46 +00:00
Nick Lewycky
9d38acb254
Use the new way of silencing this warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122195 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-19 20:57:14 +00:00
Nick Lewycky
476b242fe7
Add missing standard headers. Patch by Joerg Sonnenberger!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122193 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-19 20:43:38 +00:00
Jakob Stoklund Olesen
d715e07efe
Add more checks to IntervalMapOverlaps::advance() to ensure that advanceTo sees
...
monotonic keys.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122093 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-17 22:07:54 +00:00
Jakob Stoklund Olesen
5049ee5b11
It is allowed to call IntervalMap::const_iterator::advanceTo() with a key that
...
moves the iterator to end(), and it is valid to call it on end().
That means it is valid to call advanceTo() with any monotonic key sequence.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122092 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-17 22:07:51 +00:00
Michael J. Spencer
965841cfe4
Support/Path: Deprecate PathV1::isAbsolute.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122086 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-17 21:21:31 +00:00
Jakob Stoklund Olesen
4aec85ae01
Fix crash when IntervalMapOverlaps::advanceTo moves past the last overlap.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122081 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-17 19:18:38 +00:00
Jakob Stoklund Olesen
ff2e9b4225
Provide LiveIntervalUnion::Query::checkLoopInterference.
...
This is a three-way interval list intersection between a virtual register, a
live interval union, and a loop. It will be used to identify interference-free
loops for live range splitting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122034 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-17 04:09:47 +00:00
Jakob Stoklund Olesen
460ee0fd19
Add basic test exposing many bugs.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121995 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-16 19:46:09 +00:00
Jakob Stoklund Olesen
cb9e08f328
Add IntervalMapOverlaps - An iterator for overlapping intervals in two
...
IntervalMaps.
The IntervalMaps can have different template parameters, but the KeyT and Traits
types must be the same.
Tests are forthcoming.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121935 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-16 01:18:29 +00:00
Jakob Stoklund Olesen
2ece4dead7
Remove debugging code.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121738 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-14 00:37:52 +00:00
Michael J. Spencer
58fe86dc0e
Support: Move c_str from SmallVector back to SmallString and add a free standing
...
templated c_str in Windows.h to replace it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121381 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-09 17:37:18 +00:00