Commit Graph

13207 Commits

Author SHA1 Message Date
Owen Anderson
35bf4d6d80 Second attempt at fixing the performance regressions introduced
by my recent GVN improvement.  Looking through a single layer of
PHI nodes when attempting to sink GEPs, we need to iteratively
look through arbitrary PHI nests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120202 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-27 08:15:55 +00:00
Daniel Dunbar
4581dae9ea ADT/InMemoryStruct: Add an experimental helper class intended for use in
situations where on the common path an API can return a pointer to some direct
memory, but which on an exceptional path may need to return a pointer to a
temporary struct.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120201 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-27 08:11:02 +00:00
Daniel Dunbar
10a049e6cf raw_ostream::write_escaped: Add a UseHexEscapes argument.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120200 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-27 07:59:50 +00:00
Daniel Dunbar
a956d8b717 Object/Mach-O: Add header and load command information.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120198 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-27 07:19:41 +00:00
Daniel Dunbar
95369163f5 Object/Mach-O: Validate Mach-O magic and initialize format info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120195 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-27 06:39:22 +00:00
Daniel Dunbar
fbd25b7d1d MC/Mach-O: Start stubbing out a Mach-O object file wrapper.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120190 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-27 05:38:50 +00:00
Daniel Dunbar
f52788f4e6 MC/Mach-O: Migrate more constants into MachOFormat.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120188 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-27 04:59:14 +00:00
Daniel Dunbar
821ecd7c90 MC/Mach-O: Introduce Object/MachOFormat for describing purely platform / machine
independent information on the Mach object format, and move some stuff from
MachObjectWriter.cpp there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120186 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-27 04:19:38 +00:00
Benjamin Kramer
28116c9f49 BitVector tweaks.
- Double the vector's capacity when growing to avoid unneeccesary reallocation.
- Do the reallocation with realloc(3) which can expand the memory in place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120183 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-26 18:25:20 +00:00
Benjamin Kramer
847d2f93ca StringRefs are POD-like.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120181 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-26 14:36:54 +00:00
Jakob Stoklund Olesen
53bb5c009b Add B+-tree test case that creates a height 3 tree with a smaller root node.
Change temporary debugging code to write a dot file directly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120171 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-26 06:54:20 +00:00
Jakob Stoklund Olesen
bf77baf19c Extract template function adjustSiblingSizes(), allowing instances to be shared
between B+-trees using the same KeyT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120170 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-26 06:54:17 +00:00
Rafael Espindola
fd46797d0d Remove the unused TheTarget member.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120168 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-26 04:24:21 +00:00
Michael J. Spencer
052f1eebdb Fix spelling!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120167 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-26 04:16:20 +00:00
Michael J. Spencer
326990f1eb Fix Whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120166 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-26 04:16:08 +00:00
Jakob Stoklund Olesen
706da9d8ca Move tree navigation to a new Path class that doesn't have to be a template.
The path also holds a reference to the root node, and that allows important
iterator accessors like start() and stop() to have no conditional code. (When
the compiler is clever enough to remove it.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120165 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-26 01:39:40 +00:00
Benjamin Kramer
dd1fc8cbf1 SDep is POD-like. Shave off a few bytes from SUnit by moving a member around.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120150 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-25 17:50:19 +00:00
Michael J. Spencer
109f4cbc7f system_error: Even more unsupported error numbers :(.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120139 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-25 01:53:59 +00:00
Michael J. Spencer
8b4e60c276 80 col.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120111 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-24 20:07:14 +00:00
Michael J. Spencer
f9100d44aa Path Version 2.
Based on TR2/boost filesystem (v3) API, but modified to remove exceptions.

Do not include this file directly, when it is ready, it will be included by
include/llvm/System/Path.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120102 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-24 19:20:19 +00:00
NAKAMURA Takumi
bcc3678a4a include/llvm/System/system_error.h: ECANCELED is undefined on Cygwin-1.5.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120072 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-24 01:29:45 +00:00
Ted Kremenek
9c336fabd5 Tweak ImmutableMap/ImmutableSet/ImmutableList APIs
to use lowercase letters for the start of most
method names and to replace some method names
with more descriptive names (e.g., "getLeft()"
instead of "Left()").  No real functionality
change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120070 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-24 00:54:28 +00:00
Jakob Stoklund Olesen
6c76f5fa2f Generalize overflowLeaf to also handle overflows in branch nodes.
This doesn't quite work yet because the calls to treeDecrement and treeIncrement
operate at the leaf level, not on pathNode(Level) as required.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120068 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-24 00:03:32 +00:00
Chris Lattner
7cf705461c add a MemoryBuffer::getOpenFile method, which turns an open
file descriptor into a MemoryBuffer (and closes the FD).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120065 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23 22:20:27 +00:00
Michael J. Spencer
67ff104e7e system_error: Add fixme.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120059 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23 21:09:11 +00:00
Jason W Kim
13534672de Move the ARM reloc constants to Support/ELF.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120035 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23 19:40:36 +00:00
Duncan Sands
4cd2ad15b4 Expand a little on the description of what InstructionSimplify does.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120016 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23 10:50:08 +00:00
Duncan Sands
b9b369fa99 Clarify that constant folding of instructions applies when all operands
are constant.  There was in fact one exception to this (phi nodes) - so
remove that exception (InstructionSimplify handles this so there should
be no loss).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120015 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23 10:16:18 +00:00
Rafael Espindola
a9d4281cc0 Invalidate the layout on any relaxation, not just Instructions. Bug found by David Meyer.
While here, remove unused argument and rename UpdateForSlide to Invalidate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120009 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23 08:08:33 +00:00
Cameron Zwarich
2974b6ffbc Optimize a common case in the Lengauer-Tarjan dominators algorithm. This gives a
9.7% speedup running domtree on test-suite.

Reviewed by Chris Lattner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120003 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23 06:32:37 +00:00
Chris Lattner
9f9bd8e4af Revert functionality doug added in r98575 that was never
documented and only used by some clang stuff I just removed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120002 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23 06:09:51 +00:00
Rafael Espindola
0e11dfc4a6 Reuse data fragments while lowering. Patch by David Meyer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119999 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23 05:49:35 +00:00
Chris Lattner
92267bb35a fix this harder.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119994 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23 04:26:12 +00:00
Chris Lattner
e57016ab1f fix a bug I introduced on the other side of the #ifdef
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119993 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23 04:19:56 +00:00
Chris Lattner
3afc385042 reimplement SwapByteOrder.h in terms of overloading instead of
being in terms of excessively complex template logic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119992 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23 04:04:25 +00:00
Wesley Peck
bf17cfa3f9 Renaming ISD::BIT_CONVERT to ISD::BITCAST to better reflect the LLVM IR concept.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119990 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23 03:31:01 +00:00
Chris Lattner
5400570097 add a 'LLVMConstIntOfArbitraryPrecision' api to the C api,
patch by Greg Pfeil!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119989 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23 02:47:22 +00:00
Rafael Espindola
cdfecc8759 Add basic CFI methods to the streamer interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119972 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-22 14:27:24 +00:00
Rafael Espindola
ad8aaa069c Remove some #includes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119967 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-22 11:53:17 +00:00
Wesley Peck
4b04713423 Implement ELF object file writing support for the MBlaze backend. Its not perfect yet, but it works for many tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119952 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-21 22:06:28 +00:00
Chris Lattner
cbd323ad52 add some helper methods for asmprinter flags, from PR8417
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119932 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-21 08:30:55 +00:00
Chris Lattner
16f7993e0d the getLocationForSource/Dest methods can be static.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119929 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-21 08:05:25 +00:00
Chris Lattner
e90c5cb747 add "getLocation" method to AliasAnalysis for getting the source and
destination location of a memcpy/memmove.  I'm not clear about whether
TBAA works on these, so I'm leaving it out for now.  Dan, please revisit
this when convenient.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119928 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-21 07:51:27 +00:00
Chris Lattner
f6f1f062cc implement PR8576, deleting dead stores with intervening may-alias stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119927 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-21 07:34:32 +00:00
Chris Lattner
2f5f90ad3e Implement PR8644: forwarding a memcpy value to a byval,
allowing the memcpy to be eliminated.

Unfortunately, the requirements on byval's without explicit 
alignment are really weak and impossible to predict in the 
mid-level optimizer, so this doesn't kick in much with current
frontends.  The fix is to change clang to set alignment on all
byval arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119916 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-21 00:28:59 +00:00
Frits van Bommel
1c3f050309 Test commit: Fix two -Asserts mode warnings in StringMap.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119907 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-20 18:37:24 +00:00
Anton Korobeynikov
82f58740c7 Move some more hooks to TargetFrameInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119904 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-20 15:59:32 +00:00
Duncan Sands
59d2dad59e On X86, MEMBARRIER, MFENCE, SFENCE, LFENCE are not target memory intrinsics,
so don't claim they are.  They are allocated using DAG.getNode, so attempts
to access MemSDNode fields results in reading off the end of the allocated
memory.  This fixes crashes with "llc -debug" due to debug code trying to
print MemSDNode fields for these barrier nodes (since the crashes are not
deterministic, use valgrind to see this).  Add some nasty checking to try
to catch this kind of thing in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119901 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-20 11:25:00 +00:00
Jakob Stoklund Olesen
487a5b786f Fix old GCC build error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119884 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-20 01:24:43 +00:00
Jakob Stoklund Olesen
ddd0e65dba Detemplatize NodeRef.
It is now possible to navigate the B+-tree using NodeRef::subtree() and
NodeRef::size() without knowing the key and value template types used in the
tree.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119880 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-20 00:49:00 +00:00