Commit Graph

474 Commits

Author SHA1 Message Date
Evan Cheng
60b75f462e Fix for PR2578. Do not split off a block whose size is less than FreeRangeHeader::getMinBlockSize(). Patch by Damien.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54152 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-29 07:38:32 +00:00
Dan Gohman
eccfb6a165 Use empty() instead of size().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53178 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 17:52:43 +00:00
Dan Gohman
ce3c413e07 Correct a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53064 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-03 00:51:05 +00:00
Dan Gohman
2dad0250f6 Prune a few dependencies on MachineFunction.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52976 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-01 18:15:35 +00:00
Dan Gohman
4406604047 Split ISD::LABEL into ISD::DBG_LABEL and ISD::EH_LABEL, eliminating
the need for a flavor operand, and add a new SDNode subclass,
LabelSDNode, for use with them to eliminate the need for a label id
operand.

Change instruction selection to let these label nodes through
unmodified instead of creating copies of them. Teach the MachineInstr
emitter how to emit a MachineInstr directly from an ISD label node.

This avoids the need for allocating SDNodes for the label id and
flavor value, as well as SDNodes for each of the post-isel label,
label id, and label flavor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52943 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-01 00:05:16 +00:00
Chris Lattner
18e0459837 Implement JIT support for global aliases, patch by David Chisnall!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52738 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-25 20:21:35 +00:00
Chris Lattner
bc52cada09 Switch the PPC backend and target-independent JIT to use the libsystem
InvalidateInstructionCache method instead of calling through
a hook on the JIT.  This is a host feature, not a target feature.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52734 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-25 17:18:44 +00:00
Dan Gohman
719de53742 Use back() instead of [size()-1].
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52600 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 22:00:54 +00:00
Dan Gohman
933e51c5e3 Use static_cast instead of reinterpret_cast for casting void*.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52592 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-21 20:17:03 +00:00
Anton Korobeynikov
210539ebc4 Provide generic hooks for icache invalidation. Add PPC implementation.
Patch by Gary Benson!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52418 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-17 17:30:05 +00:00
Chris Lattner
e846db6675 Add a new flag that disables symbol lookup with dlsym when set. This allows
a JIT client to completely control symbol lookup with the LazyFunctionCreator
interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52335 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-16 17:44:14 +00:00
Dan Gohman
ee335e35ac Add #includes to make some dependencies explicit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51496 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-23 20:40:06 +00:00
Nate Begeman
f049e07eb8 Fix a couple issues with the JIT and multiple modules:
1. The "JITState" object creates a PassManager with the ModuleProvider that the
   jit is created with.  If the ModuleProvider is removed and deleted, the
   PassManager is invalid.

2. The Global maps in the JIT were not invalidated with a ModuleProvider was 
   removed.  This could lead to a case where the Module would be freed, and a 
   new Module with Globals at the same addresses could return invalid results.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51384 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-21 16:34:48 +00:00
Nate Begeman
f44085a86a Fix a backwards check in the JIT symbol table code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51229 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-18 19:09:10 +00:00
Evan Cheng
bdb6ca178c Disable JIT symbol table for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51152 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-15 17:31:35 +00:00
Gabor Greif
b1dbcd886a Fix a bunch of 80col violations that arose from the Create API change. Tweak makefile targets to find these better.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51143 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-15 10:04:30 +00:00
Dan Gohman
844731a7f1 Clean up the use of static and anonymous namespaces. This turned up
several things that were neither in an anonymous namespace nor static
but not intended to be global.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51017 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-13 00:00:25 +00:00
Nicolas Geoffray
580631a73a Be pessimistic in computing the buffer size when aligning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50008 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-20 23:39:44 +00:00
Nicolas Geoffray
5913e6c5db Cosmetic changes, as suggested by Evan. No functionality changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49993 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-20 17:44:19 +00:00
Nicolas Geoffray
fd7d99120b Do not hold the JIT lock when materializing a function and verify if the
function has already been codegen'd. This is required by the Java class loading
mechanism which executes Java code when materializing a function.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49988 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-20 08:33:02 +00:00
Chris Lattner
02a260aa11 Switch to using Simplified ConstantFP::get API.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49977 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-20 00:41:09 +00:00
Nicolas Geoffray
dc17ab2bf0 Enable jitting with a known memory size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49924 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-18 20:59:31 +00:00
Nicolas Geoffray
51cc3c13ea Correlate stubs with functions in JIT: when emitting a stub, the JIT tells the memory manager which function
the stub will resolve.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49814 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-16 20:46:05 +00:00
Chris Lattner
3b37448904 Fix some serious logic errors that broke the jit on darwin/x86-64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49606 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-13 07:04:56 +00:00
Evan Cheng
97b8c40d09 Add debugging code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49566 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-12 00:22:01 +00:00
Chris Lattner
6098e4be94 Reenable JIT symbol table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49548 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-11 18:11:56 +00:00
Gabor Greif
051a950000 API changes for class Use size reduction, wave 1.
Specifically, introduction of XXX::Create methods
for Users that have a potentially variable number of
Uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49277 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-06 20:25:17 +00:00
Chris Lattner
e52419147a disable this for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49248 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-05 04:12:01 +00:00
Chris Lattner
8ac66c122b Provide an initial cut at exposing JIT compiled symbols to performance
tools.  This is currently only enabled on the mac, but could easily be
supported by other hosts that are interested.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49207 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-04 05:51:42 +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
299d9d74e9 Register EH frames emitted in JIT when using gcc unwinding runtime
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48688 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-22 08:53:09 +00:00
Chris Lattner
0fdaa0b8f1 fix 80 col violations
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48019 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-07 20:05:43 +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
Nicolas Geoffray
afe6c2b001 Enable exception handling int JIT
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47079 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-13 18:39:37 +00:00
Duncan Sands
d102593b42 Use getPreferredAlignmentLog or getPreferredAlignment
to get the alignment of global variables, rather than
using hand-made versions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46495 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-29 06:23:44 +00:00
Chris Lattner
1910e2f3ec JITEmitter.cpp was trying to sync the icache for function stubs, but
was actually passing a completely incorrect size to sys_icache_invalidate.
Instead of having the JITEmitter do this (which doesn't have the correct 
size), just make the target sync its own stubs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46354 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-25 16:41:09 +00:00
Evan Cheng
2a3e08b596 X86 JIT PIC jumptable support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45616 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 02:26:58 +00:00
Evan Cheng
be8c03fc66 X86 PIC JIT support fixes: encoding bugs, add lazy pointer stubs support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45575 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 10:46:51 +00:00
Chris Lattner
c45f5c7652 Remove symbols that don't exist, remove tabs, fix comment typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45553 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-03 22:15:32 +00:00
Chris Lattner
76327d9cf5 Fix PR1873, a problem finding stat-related symbols on linux, due to
"libc_nonshared.a". Patch by Edwin Török!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45532 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-03 07:10:51 +00:00
Evan Cheng
02aabbf96b Change MachineRelocation::DoesntNeedFnStub to NeedStub. This fields will be used
for non-function GV relocations that require function address stubs (e.g. Mac OS X in non-static mode).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45527 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-03 02:56:28 +00:00
Chris Lattner
4ee451de36 Remove attribution from file headers, per discussion on llvmdev.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-29 20:36:04 +00:00
Chris Lattner
fc643c5e88 remove attribution from lib Makefiles.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45415 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-29 20:09:26 +00:00
Chuck Rose III
3012ac63d3 Adjust VStudio files to add JITMemoryManager files + include <cassert> from same.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44651 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-06 02:03:01 +00:00
Chris Lattner
34c9433004 add a new ExecutionEngine::createJIT which can be used if you only want
to create a JIT.  This lets you specify JIT-specific configuration items
like the JITMemoryManager to use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44647 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-06 01:34:04 +00:00
Chris Lattner
9f2f142d25 simplify creation of the interpreter, make ExecutionEngine ctor protected,
delete one ExecutionEngine ctor, minor cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44646 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-06 01:08:09 +00:00
Chris Lattner
8907b4ba47 split the JIT memory management code out from the main JIT logic into its
own JITMemoryManager interface.  There is no functionality change with 
this patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44640 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-05 23:39:57 +00:00
Chris Lattner
5e037fce2b for consistency, allow a fallthrough if the final check returns null.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44406 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-28 18:30:18 +00:00
Chris Lattner
a8d700138a Make this actually work on systems that support ppc long double.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44374 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-27 20:45:25 +00:00
Chris Lattner
1c8f374a3b Unbreak all of the darwin/ppc32 JIT failures having to do
with not being able to find printf.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44373 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-27 20:41:32 +00:00
Duncan Sands
514ab348fd Executive summary: getTypeSize -> getTypeStoreSize / getABITypeSize.
The meaning of getTypeSize was not clear - clarifying it is important
now that we have x86 long double and arbitrary precision integers.
The issue with long double is that it requires 80 bits, and this is
not a multiple of its alignment.  This gives a primitive type for
which getTypeSize differed from getABITypeSize.  For arbitrary precision
integers it is even worse: there is the minimum number of bits needed to
hold the type (eg: 36 for an i36), the maximum number of bits that will
be overwriten when storing the type (40 bits for i36) and the ABI size
(i.e. the storage size rounded up to a multiple of the alignment; 64 bits
for i36).

This patch removes getTypeSize (not really - it is still there but
deprecated to allow for a gradual transition).  Instead there is:

(1) getTypeSizeInBits - a number of bits that suffices to hold all
values of the type.  For a primitive type, this is the minimum number
of bits.  For an i36 this is 36 bits.  For x86 long double it is 80.
This corresponds to gcc's TYPE_PRECISION.

(2) getTypeStoreSizeInBits - the maximum number of bits that is
written when storing the type (or read when reading it).  For an
i36 this is 40 bits, for an x86 long double it is 80 bits.  This
is the size alias analysis is interested in (getTypeStoreSize
returns the number of bytes).  There doesn't seem to be anything
corresponding to this in gcc.

(3) getABITypeSizeInBits - this is getTypeStoreSizeInBits rounded
up to a multiple of the alignment.  For an i36 this is 64, for an
x86 long double this is 96 or 128 depending on the OS.  This is the
spacing between consecutive elements when you form an array out of
this type (getABITypeSize returns the number of bytes).  This is
TYPE_SIZE in gcc.

Since successive elements in a SequentialType (arrays, pointers
and vectors) need to be aligned, the spacing between them will be
given by getABITypeSize.  This means that the size of an array
is the length times the getABITypeSize.  It also means that GEP
computations need to use getABITypeSize when computing offsets.
Furthermore, if an alloca allocates several elements at once then
these too need to be aligned, so the size of the alloca has to be
the number of elements multiplied by getABITypeSize.  Logically
speaking this doesn't have to be the case when allocating just
one element, but it is simpler to also use getABITypeSize in this
case.  So alloca's and mallocs should use getABITypeSize.  Finally,
since gcc's only notion of size is that given by getABITypeSize, if
you want to output assembler etc the same as gcc then getABITypeSize
is the size you want.

Since a store will overwrite no more than getTypeStoreSize bytes,
and a read will read no more than that many bytes, this is the
notion of size appropriate for alias analysis calculations.

In this patch I have corrected all type size uses except some of
those in ScalarReplAggregates, lib/Codegen, lib/Target (the hard
cases).  I will get around to auditing these too at some point,
but I could do with some help.

Finally, I made one change which I think wise but others might
consider pointless and suboptimal: in an unpacked struct the
amount of space allocated for a field is now given by the ABI
size rather than getTypeStoreSize.  I did this because every
other place that reserves memory for a type (eg: alloca) now
uses getABITypeSize, and I didn't want to make an exception
for unpacked structs, i.e. I did it to make things more uniform.
This only effects structs containing long doubles and arbitrary
precision integers.  If someone wants to pack these types more
tightly they can always use a packed struct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43620 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-01 20:53:16 +00:00
Chris Lattner
d958a5a9fe add a mechanism for the JIT to invoke a function to lazily create functions as they are referenced.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43210 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 02:50:12 +00:00
Chris Lattner
ec2fcafbea llvm-gcc3 is dead, along with it __main.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43209 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 02:39:47 +00:00
Gordon Henriksen
4b2b9402c5 Switching TargetMachineRegistry to use the new generic Registry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43094 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-17 21:28:48 +00:00
Dale Johannesen
1abac0d725 Implement x86 long double in jit (not really
complete, but common cases work)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42043 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 18:44:13 +00:00
Dale Johannesen
43421b3dd7 Next round of APFloat changes.
Use APFloat in UpgradeParser and AsmParser.
Change all references to ConstantFP to use the
APFloat interface rather than double.  Remove
the ConstantFP double interfaces.
Use APFloat functions for constant folding arithmetic
and comparisons.
(There are still way too many places APFloat is
just a wrapper around host float/double, but we're
getting there.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41747 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-06 18:13:44 +00:00
Chris Lattner
17f218e001 move assertion into mutex guard, a partial fix for PR1606.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41050 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-13 20:08:16 +00:00
Chris Lattner
79e038a16d eliminate redundant conditions from the signless types conversion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40927 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-08 16:19:57 +00:00
David Greene
52eec54820 New CallInst interface to address GLIBCXX_DEBUG errors caused by
indexing an empty std::vector.

Updates to all clients.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40660 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-01 03:43:44 +00:00
Anton Korobeynikov
3b30a6e92d Add detection of __dso_handle presence during configure. Use this information in the
JITer (short path is added for darwin). This is needed to properly JIT llvm-gcc-4.2-built
binaries, since cxa_atexit is enabled by default on much more targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40600 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-30 20:02:02 +00:00
Reid Spencer
087b72d1bc Hush a noisy warning from GCC 4.2 about overflow during conversion by using
the type "unsigned" instead of uintptr_t for a 1-bit structure field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40066 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 21:05:30 +00:00
Gabor Greif
e510b3af3a fix typos
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38453 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-09 12:00:59 +00:00
Gabor Greif
a99be51bf5 Here is the bulk of the sanitizing.
Almost all occurrences of "bytecode" in the sources have been eliminated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37913 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-05 17:07:56 +00:00
Evan Cheng
9da60f92d9 (For Chris): Fix failure where we rejected compiling stubs when lazy compilation is disabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37825 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-30 00:10:37 +00:00
Chris Lattner
108ec4b1ca avoid mutating a global in an accessor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36289 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-20 22:57:20 +00:00
Chris Lattner
f7e968a2a2 fit in 80 cols
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36288 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-20 22:40:40 +00:00
Chris Lattner
2c639add5f rename JIT::state -> JIT::jitstate to avoid shadowing ExecutionEngine::state
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36286 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-20 22:40:05 +00:00
Anton Korobeynikov
c6551ffdd5 Implement PR1240
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34959 91177308-0d34-0410-b5e6-96231b3b80d8
2007-03-06 05:32:48 +00:00
Reid Spencer
38f6a15df6 Simplify code as a result of the change in GenericValue to have a single
integer field of type APInt instead of different sized integer fields.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34952 91177308-0d34-0410-b5e6-96231b3b80d8
2007-03-06 03:11:31 +00:00
Reid Spencer
d4c0e62413 Deal with error handling better.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34887 91177308-0d34-0410-b5e6-96231b3b80d8
2007-03-03 18:19:18 +00:00
Chris Lattner
e748401b18 Fix PR1216 by cleaning up the ownership of JITResolver.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34552 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-24 02:57:03 +00:00
Chris Lattner
d2b7cec527 Generalize TargetData strings, to support more interesting forms of data.
Patch by Scott Michel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34266 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-14 05:52:17 +00:00
Chris Lattner
990b849abc eliminate vector-related allocations
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34223 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-13 06:01:22 +00:00
Reid Spencer
5cbf985dcb For PR1136: Rename GlobalVariable::isExternal as isDeclaration to avoid
confusion with external linkage types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33663 91177308-0d34-0410-b5e6-96231b3b80d8
2007-01-30 20:08:39 +00:00
Anton Korobeynikov
fd58e6e2ec Moved disassembler to libSystem
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33461 91177308-0d34-0410-b5e6-96231b3b80d8
2007-01-23 10:26:08 +00:00
Chris Lattner
58092e35a3 Teach TargetData to handle 'preferred' alignment for each target, and use
these alignment amounts to align scalars when we can.  Patch by Scott Michel!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33409 91177308-0d34-0410-b5e6-96231b3b80d8
2007-01-20 22:35:55 +00:00
Chris Lattner
c5633c235e DOUT still evaluates side effects, even though it doesn't print. This means
that disassembleBuffer will be called even if NDEBUG, but the result will
be ignored.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33408 91177308-0d34-0410-b5e6-96231b3b80d8
2007-01-20 20:51:43 +00:00
Andrew Lenharth
a9ebd2b91f fix build on amd64
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33367 91177308-0d34-0410-b5e6-96231b3b80d8
2007-01-19 20:17:59 +00:00
Anton Korobeynikov
8cd4c3e653 Adding disassembler interface and external hook to udis86 library.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33358 91177308-0d34-0410-b5e6-96231b3b80d8
2007-01-19 17:25:17 +00:00
Reid Spencer
a54b7cbd45 For PR1064:
Implement the arbitrary bit-width integer feature. The feature allows
integers of any bitwidth (up to 64) to be defined instead of just 1, 8,
16, 32, and 64 bit integers.

This change does several things:
1. Introduces a new Derived Type, IntegerType, to represent the number of
   bits in an integer. The Type classes SubclassData field is used to
   store the number of bits. This allows 2^23 bits in an integer type.
2. Removes the five integer Type::TypeID values for the 1, 8, 16, 32 and
   64-bit integers. These are replaced with just IntegerType which is not
   a primitive any more.
3. Adjust the rest of LLVM to account for this change.

Note that while this incremental change lays the foundation for arbitrary
bit-width integers, LLVM has not yet been converted to actually deal with
them in any significant way. Most optimization passes, for example, will
still only deal with the byte-width integer types.  Future increments
will rectify this situation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33113 91177308-0d34-0410-b5e6-96231b3b80d8
2007-01-12 07:05:14 +00:00
Reid Spencer
579dca12c2 Implement review feedback for the ConstantBool->ConstantInt merge. Chris
recommended that getBoolValue be replaced with getZExtValue and that
get(bool) be replaced by get(const Type*, uint64_t). This implements
those changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33110 91177308-0d34-0410-b5e6-96231b3b80d8
2007-01-12 04:24:46 +00:00
Reid Spencer
4fe16d607d Rename BoolTy as Int1Ty. Patch by Sheng Zhou.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33076 91177308-0d34-0410-b5e6-96231b3b80d8
2007-01-11 18:21:29 +00:00
Zhou Sheng
6b6b6ef167 For PR1043:
Merge ConstantIntegral and ConstantBool into ConstantInt.
Remove ConstantIntegral and ConstantBool from LLVM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33073 91177308-0d34-0410-b5e6-96231b3b80d8
2007-01-11 12:24:14 +00:00
Reid Spencer
e49661bdf5 For PR950:
Convert signed integer types to signless ones.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32787 91177308-0d34-0410-b5e6-96231b3b80d8
2006-12-31 05:51:36 +00:00
Chris Lattner
36343735cb remove static ctors from Statistic objects
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32700 91177308-0d34-0410-b5e6-96231b3b80d8
2006-12-19 22:43:32 +00:00
Chris Lattner
c1f400ccdd Fix PR1057 (compilation on macos 10.3), patch by Scott Michel!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32644 91177308-0d34-0410-b5e6-96231b3b80d8
2006-12-17 21:04:02 +00:00
Jim Laskey
b92767afd4 Simplify the fetching of relocation mode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32588 91177308-0d34-0410-b5e6-96231b3b80d8
2006-12-14 22:53:42 +00:00
Jim Laskey
acd80ac7bb 1. Tidy up jump table info.
2. Allow the jit to handle PIC relocable jump tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32581 91177308-0d34-0410-b5e6-96231b3b80d8
2006-12-14 19:17:33 +00:00
Reid Spencer
15f46d6c28 Change inferred cast creation calls to more specific cast creations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32460 91177308-0d34-0410-b5e6-96231b3b80d8
2006-12-12 01:17:41 +00:00
Bill Wendling
832171cb97 Removing even more <iostream> includes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32320 91177308-0d34-0410-b5e6-96231b3b80d8
2006-12-07 20:04:42 +00:00
Chris Lattner
ac0b6ae358 Detemplatize the Statistic class. The only type it is instantiated with
is 'unsigned'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32279 91177308-0d34-0410-b5e6-96231b3b80d8
2006-12-06 17:46:33 +00:00
Evan Cheng
9a1e9b9140 Allow target to specify alignment for function stub.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31788 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-16 20:04:54 +00:00
Chris Lattner
9cab56d59e if lazy compilation is disabled, print an error message and abort if
lazy compilation is ever attempted


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31602 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-09 19:32:13 +00:00
Reid Spencer
3ed469ccd7 For PR786:
Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting
fall out by removing unused variables. Remaining warnings have to do with
unused functions (I didn't want to delete code without review) and unused
variables in generated code. Maintainers should clean up the remaining
issues when they see them. All changes pass DejaGnu tests and Olden.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31380 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-02 20:25:50 +00:00
Reid Spencer
b83eb6447b For PR950:
This patch implements the first increment for the Signless Types feature.
All changes pertain to removing the ConstantSInt and ConstantUInt classes
in favor of just using ConstantInt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31063 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-20 07:07:24 +00:00
Chris Lattner
c6336273d9 Unbreak the JIT
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30384 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-15 04:56:11 +00:00
Anton Korobeynikov
b74ed07bfd Adding dllimport, dllexport and external weak linkage types.
DLL* linkages got full (I hope) codegeneration support in C & both x86
assembler backends.
External weak linkage added for future use, we don't provide any
codegeneration, etc. support for it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30374 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-14 18:23:27 +00:00
Chris Lattner
8a650095fc Fix a ton of jit failures
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30292 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-13 16:21:10 +00:00
Evan Cheng
cd5731d98b Reflect MachineConstantPoolEntry changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30277 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-12 20:59:59 +00:00
Nate Begeman
019f851ab2 Behold, more work on relocations. Things are looking pretty good now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30240 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-10 23:03:44 +00:00
Chris Lattner
1911fd4f85 Completely rearchitect the interface between targets and the pass manager.
This pass:

1. Splits TargetMachine into TargetMachine (generic targets, can be implemented
any way, like the CBE) and LLVMTargetMachine (subclass of TM that is used by
things using libcodegen and other support).
2. Instead of having each target fully populate the passmgr for file or JIT
   output, move all this to common code, and give targets hooks they can
   implement.
3. Commonalize the target population stuff between file emission and JIT
   emission.
4. All (native code) codegen stuff now happens in a FunctionPassManager, which
   paves the way for "fast -O0" stuff in the CFE later, and now LLC could
   lazily stream .bc files from disk to use less memory.
5. There are now many fewer #includes and the targets don't depend on the
   scalar xforms or libanalysis anymore (but codegen does).
6. Changing common code generator pass ordering stuff no longer requires
   touching all targets.
7. The JIT now has the option of "-fast" codegen or normal optimized codegen,
   which is now orthogonal to the fact that JIT'ing is being done.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30081 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-04 04:14:57 +00:00
Chris Lattner
c50b76f61d eliminate use of TM.getName()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30068 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-03 18:37:12 +00:00
Evan Cheng
b5aaee0027 Remove extra spaces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30025 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-01 18:45:22 +00:00
Evan Cheng
78050d6cbe Last check-in was a mistake...
I've been told apple gcc version number is not guaranteed to increase
monotonically. Change the preprocess condition to make it less risky.

The configuration change is done during the middle 10.4 life cycle so we have
to check __APPLE_CC. For future OS X release, we should be able to assume
-fenable-cxa-atexit is the default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30024 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-01 18:42:59 +00:00
Evan Cheng
4f260b4efa *** empty log message ***
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30023 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-01 18:40:46 +00:00
Evan Cheng
fb9c0d7e31 Better comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30017 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-01 07:09:56 +00:00
Evan Cheng
5f271aff5c Yikes. This requires checking apple gcc version.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30016 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-01 07:00:46 +00:00
Chris Lattner
fe85403467 initial changes to support JIT'ing from multiple module providers, implicitly
linking the program on the fly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29721 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-16 01:24:12 +00:00
Chris Lattner
513748dfc1 Fix handling of asm specifiers for external globals. This unbreaks many programs
on leopard in the jit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29391 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-28 21:11:31 +00:00
Evan Cheng
f141cc46fa Resolve BB references with relocation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29351 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-27 18:21:10 +00:00
Jim Laskey
2e9f3686f8 Fixed a typo in Evan's submisson.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29345 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-27 13:40:34 +00:00
Evan Cheng
55b5053b8e Move synchronizeICache from TargetJITInfo into a static function in JITEmitter.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29334 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-27 06:33:55 +00:00
Chris Lattner
35a14467ed Fix warning on linux
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29314 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-27 00:04:14 +00:00
Evan Cheng
55fc28076f - Refactor the code that resolve basic block references to a TargetJITInfo
method.
- Added synchronizeICache() to TargetJITInfo. It is called after each block
  of code is emitted to flush the icache. This ensures correct execution
  on targets that have separate dcache and icache.
- Added PPC / Mac OS X specific code to do icache flushing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29276 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-25 20:40:54 +00:00
Nate Begeman
b76ea74845 Fix the build on my old and busted version of OS X
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29266 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-22 16:59:38 +00:00
Evan Cheng
b82ab94e20 Forgot to #ifdef __APPLE__
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29264 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-22 00:42:03 +00:00
Evan Cheng
5f42c55030 Resolve __dso_handle.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29259 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-21 23:06:20 +00:00
Chris Lattner
21c39a6520 Remove non-portable optimization that isn't worth it
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29115 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-12 00:31:47 +00:00
Chris Lattner
c1780d2a0a Change AllocateRWX/DeallocateRWX do not throw an exception.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29057 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-07 17:31:41 +00:00
Chris Lattner
5c72a3ae10 Adapt to new interface function materialization interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29051 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-07 17:18:09 +00:00
Evan Cheng
52b510b4c4 Added jump table address relocation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28908 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-23 01:02:37 +00:00
Chris Lattner
a827953c32 Only count instructions as code size, not constant pools and other per-function stuff.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28827 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-16 18:09:26 +00:00
Chris Lattner
870286aa33 Fix -pedantic warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28636 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-01 17:29:22 +00:00
Chris Lattner
fea34a1f11 Silence some -pedantic warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28629 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-01 17:12:14 +00:00
Chris Lattner
f3af4ff005 Make this print the right start pointer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28321 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-16 06:45:50 +00:00
Chris Lattner
bbea1245a1 Fix a hypothetical memory leak, identified by Coverity. In practice, this
object is never deleted though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28256 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-12 18:10:12 +00:00
Owen Anderson
07000c6f01 Refactor a bunch of includes so that TargetMachine.h doesn't have to include
TargetData.h.  This should make recompiles a bit faster with my current
TargetData tinkering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28238 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-12 06:33:49 +00:00
Chris Lattner
a5f0419b4e For extra sanity checking, fill free'd memory with garbage so we know that
people aren't reusing machine code buffers at all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28228 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-12 00:03:12 +00:00
Chris Lattner
9f3d1ba9ad Fix some bugs in the freelist manipulation code.
Finally, implement ExecutionEngine::freeMachineCodeForFunction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28227 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-11 23:56:57 +00:00
Chris Lattner
e993cc27ad Significantly revamp allocation of machine code to use free lists, real
allocation policies and much more.  All this complexity, and we have no
functionality change, woo! :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28225 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-11 23:08:08 +00:00
Chris Lattner
e7fd553b3b Move some methods out of line so that MutexGuard.h isn't needed in a public header.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28179 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-08 22:00:52 +00:00
Chris Lattner
b93b0347d8 Adjust to use proper TargetData copy ctor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28112 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-04 21:18:40 +00:00
Chris Lattner
d2d5c76753 minor cleanups, no functionality change
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28087 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-03 18:55:56 +00:00
Chris Lattner
b4432f3d47 Suck block address tracking out of targets into the JIT Emitter. This
simplifies the MachineCodeEmitter interface just a little bit and makes
BasicBlocks work like constant pools and jump tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28082 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-03 17:10:41 +00:00
Owen Anderson
a69571c799 Refactor TargetMachine, pushing handling of TargetData into the target-specific subclasses. This has one caller-visible change: getTargetData() now returns a pointer instead of a reference.
This fixes PR 759.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28074 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-03 01:29:57 +00:00
Chris Lattner
0eb4d6b52e Align function bodies correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28073 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-03 01:03:20 +00:00
Chris Lattner
e6fdcbfc47 Simplify some code. Don't add memory blocks to the Blocks list twice.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28071 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-03 00:54:49 +00:00
Chris Lattner
af1563fb62 Change the BasicBlockAddrs map to be a vector, indexed by MBB number.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28069 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-03 00:32:55 +00:00
Chris Lattner
32ca55f3bc Simplify some code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28066 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-03 00:13:06 +00:00
Chris Lattner
f75f9be3fb Several related changes:
1. Change several methods in the MachineCodeEmitter class to be pure virtual.
2. Suck emitConstantPool/initJumpTableInfo into startFunction, removing them
   from the MachineCodeEmitter interface, and reducing the amount of target-
   specific code.
3. Change the JITEmitter so that it allocates constantpools and jump tables
   *right* next to the functions that they belong to, instead of in a separate
   pool of memory.  This makes all memory for a function be contiguous, and
   means the JITEmitter only tracks one block of memory now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28065 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-02 23:22:24 +00:00
Chris Lattner
f5d438c1f0 Do not make the JIT memory manager manage the memory for globals. Instead
just have the JIT malloc them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28062 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-02 21:57:51 +00:00
Chris Lattner
a726c7f1fd Minor cleanups, no functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28061 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-02 21:44:14 +00:00
Chris Lattner
43b429b059 Refactor the machine code emitter interface to pull the pointers for the current
code emission location into the base class, instead of being in the derived classes.

This change means that low-level methods like emitByte/emitWord now are no longer
virtual (yaay for speed), and we now have a framework to support growable code
segments.  This implements feature request #1 of PR469.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28059 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-02 18:27:26 +00:00
Chris Lattner
b0cc79d45b Remove dead method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28055 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-02 17:20:28 +00:00
Nate Begeman
c34b22716b Fix a warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27967 91177308-0d34-0410-b5e6-96231b3b80d8
2006-04-25 17:46:32 +00:00
Nate Begeman
37efe67645 JumpTable support! What this represents is working asm and jit support for
x86 and ppc for 100% dense switch statements when relocations are non-PIC.
This support will be extended and enhanced in the coming days to support
PIC, and less dense forms of jump tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27947 91177308-0d34-0410-b5e6-96231b3b80d8
2006-04-22 18:53:45 +00:00
Jeff Cohen
2f51914d82 Get JIT/Interpreter working on Windows again.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27037 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-24 02:53:49 +00:00
Chris Lattner
ef98691ca3 remove always-null IntrinsicLowering argument.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26971 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-23 05:28:02 +00:00
Chris Lattner
726c1ef2bd remove the intrinsiclowering hook
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26970 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-23 05:22:51 +00:00
Chris Lattner
2fe4bb06c6 Eliminate the dependency of ExecutionEngine on the JIT/Interpreter libraries.
Now you can build a tool with just the JIT or just the interpreter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26946 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-22 06:07:50 +00:00
Reid Spencer
9dce2b3380 Convert llvm.cs.uiuc.edu -> llvm.org
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26748 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-14 05:54:52 +00:00
Chris Lattner
239862ce99 simplify this code now that each constant pool entry is not separately allocated
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26079 91177308-0d34-0410-b5e6-96231b3b80d8
2006-02-09 04:49:59 +00:00
Chris Lattner
3029f92051 Adjust to MachineConstantPool interface change: instead of keeping a
value/alignment pair for each constant, keep a value/offset pair.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26078 91177308-0d34-0410-b5e6-96231b3b80d8
2006-02-09 04:46:04 +00:00
Chris Lattner
fa77d43ba1 rename fields of constant pool entries
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26076 91177308-0d34-0410-b5e6-96231b3b80d8
2006-02-09 04:22:52 +00:00
Evan Cheng
b8973bd8f5 Allow the specification of explicit alignments for constant pool entries.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25855 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-31 22:23:14 +00:00
Chris Lattner
ca26180d39 Add #include of <iostream>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25516 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-22 23:41:42 +00:00
Chris Lattner
2199877563 Wrap long lines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25140 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-07 06:20:51 +00:00
Chris Lattner
51e6a38b86 wrap long line
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25139 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-07 06:12:07 +00:00
Chris Lattner
667eeca19d Shrinkify to match llc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23912 91177308-0d34-0410-b5e6-96231b3b80d8
2005-10-23 22:39:01 +00:00
Jim Laskey
839615a510 Add help support for -mcpu and -mattr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23222 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-02 19:27:43 +00:00
Jim Laskey
b1e1180ca0 1. Use SubtargetFeatures in llc/lli.
2. Propagate feature "string" to all targets.

3. Implement use of SubtargetFeatures in PowerPCTargetSubtarget.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23192 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-01 21:38:21 +00:00
Andrew Lenharth
2b3b89c28e one cannot allocate a global, until one is done initializing the global pointers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22568 91177308-0d34-0410-b5e6-96231b3b80d8
2005-08-01 17:35:40 +00:00
Jeff Cohen
d29b6aa608 Keep tabs and trailing spaces out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22565 91177308-0d34-0410-b5e6-96231b3b80d8
2005-07-30 18:33:25 +00:00
Andrew Lenharth
a00269bc3e support near allocations for the JIT
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22554 91177308-0d34-0410-b5e6-96231b3b80d8
2005-07-29 23:40:16 +00:00
Andrew Lenharth
6a9746127a Like constants, globals on some platforms are GOT relative. This means they have to be allocated
near the GOT, which new doesn't do.  So break out the allocate into a new function.

Also move GOT index handling into JITResolver.  This lets it update the mapping when a Lazy
function is JITed.  It doesn't managed the table, just the mapping.  Note that this is
still non-ideal, as any function that takes a function address should also take a GOT
index, but that is a lot of changes.  The relocation resolve process updates any GOT entry
it sees is out of date.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22537 91177308-0d34-0410-b5e6-96231b3b80d8
2005-07-28 12:44:13 +00:00
Jeff Cohen
00b16889ab Eliminate all remaining tabs and trailing spaces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22523 91177308-0d34-0410-b5e6-96231b3b80d8
2005-07-27 06:12:32 +00:00
Chris Lattner
d6bbac500b fix a warning on 32-bit systems
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22513 91177308-0d34-0410-b5e6-96231b3b80d8
2005-07-25 23:42:58 +00:00
Andrew Lenharth
16ec33c6ef the JIT memory manager will construct a GOT if you want it too. Also, it places the constants in the allocated memory, rather than a malloc area
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22497 91177308-0d34-0410-b5e6-96231b3b80d8
2005-07-22 20:48:12 +00:00
Chris Lattner
e884dc2c58 count the number of relocations performed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22480 91177308-0d34-0410-b5e6-96231b3b80d8
2005-07-20 16:29:20 +00:00
Reid Spencer
ee448630bd For PR540:
This patch completes the changes for making lli thread-safe. Here's the list
of changes:
* The Support/ThreadSupport* files were removed and replaced with the
  MutexGuard.h file since all ThreadSupport* declared was a Mutex Guard.
  The implementation of MutexGuard.h is now based on sys::Mutex which hides
  its implementation and makes it unnecessary to have the -NoSupport.h and
  -PThreads.h versions of ThreadSupport.

* All places in ExecutionEngine that previously referred to "Mutex" now
  refer to sys::Mutex

* All places in ExecutionEngine that previously referred to "MutexLocker"
  now refer to MutexGuard (this is frivolous but I believe the technically
  correct name for such a class is "Guard" not a "Locker").

These changes passed all of llvm-test. All we need now are some test cases
that actually use multiple threads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22404 91177308-0d34-0410-b5e6-96231b3b80d8
2005-07-12 15:51:55 +00:00
Chris Lattner
a471e045b7 Make the stub functions be tail calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21738 91177308-0d34-0410-b5e6-96231b3b80d8
2005-05-06 06:48:54 +00:00
Misha Brukman
3c94497ec7 Convert tabs to spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21440 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-22 04:08:30 +00:00
Misha Brukman
f976c856fc Remove trailing whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21422 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-21 22:55:34 +00:00
Chris Lattner
d91ff7cd3b Add support for targets that require stubs for external functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21313 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-18 01:44:27 +00:00
Chris Lattner
5b3a4553c1 Fix the missing symbols problem Bill was hitting. Patch contributed by
Bill Wendling!!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20649 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-17 15:38:16 +00:00
Chris Lattner
6943570f3a Fix problems running the HowToUseJIT on powerpc, and probably problems with
ANY program that does not have all functions internalized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20258 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-20 18:43:35 +00:00
Chris Lattner
281a601198 Rework constant pool handling so that function constant pools are no longer
leaked to the system.  Now they are destroyed with the JITMemoryManager is
destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19434 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-10 18:23:22 +00:00
Chris Lattner
a8101c163d Silence VS warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19390 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-08 20:07:03 +00:00
Reid Spencer
099557b629 Be double sure about including sys/stat.h by wrapping the inclusion in
an "#if defined(HAVE_SYS_STAT_H)".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19069 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-20 06:34:02 +00:00
Reid Spencer
6b4bd6b35c Move the #include of sys/stat.h inside the linux "hack" for the stat
family of functions so it gets noticed if we ever remove this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19022 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-17 19:09:16 +00:00
Reid Spencer
382343d78f Only #include sys/stat.h if we're on linux where we have the PR274 problem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19020 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-17 18:56:29 +00:00
Reid Spencer
4af3da6e6b Get rid of some leaks found by VC leak detector.
Patch contributed by Morten Ofsted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18889 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-13 16:04:04 +00:00
Chris Lattner
e518b7170b Properly implement a fix for PR475
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18537 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-05 07:19:16 +00:00
Chris Lattner
6d316f85ba Revert this patch, it broke a ton of programs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18535 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-05 06:59:59 +00:00
Alkis Evlogimenos
9d272d4953 Fix PR475.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18515 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-05 01:51:20 +00:00
Chris Lattner
b929de2a2c Remove darwin specific majik
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18467 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-03 23:02:55 +00:00
Chris Lattner
33306c0b8c Do not look here for elegance.
This fixes the ugly darwin "cannot find symbols starting with __" issue.

Thanks for Owen/resistor for testing this out for me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18454 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-03 07:16:51 +00:00
Chris Lattner
f71755dc56 Remove unneeded cast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18405 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-01 17:13:05 +00:00
Chris Lattner
532343b24e Fix the JIT when being used from llvm-db
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18391 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-30 17:41:49 +00:00
Reid Spencer
df5a37efc9 Use System/DynamicLibrary instead of Support/DynamicLinker
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18357 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-29 14:11:29 +00:00
Chris Lattner
166f2269f5 Rename Emitter.cpp -> JITEmitter.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18132 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 22:00:25 +00:00
Chris Lattner
cf88d324a8 Fix the FIXME, nuke the JIT specific forceCompilationOf method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18131 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:54:35 +00:00
Chris Lattner
6f71720be3 These methods are obsolete
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18129 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:48:33 +00:00
Chris Lattner
b43dbdcb20 Support targets that require stubs for external functions better
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18098 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 07:24:43 +00:00
Chris Lattner
cb47941556 Clean up DEBUG output
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18081 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 03:44:32 +00:00
Chris Lattner
5e22558853 Allow targets to avoid emitting a stub for EVERY lazily resolved call. In
most cases (e.g. direct calls) no stub is needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18080 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 03:37:42 +00:00
Chris Lattner
5426652c25 Implement relocation support by adding a target independent resolver interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18069 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:57:07 +00:00
Chris Lattner
3c600c8346 This method does not exist any longer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18061 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:51:03 +00:00
Chris Lattner
5be478f360 Add getCurrentPCOffset() and addRelocation() methods.
Add stub support for relocations to finishFunction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18035 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 03:46:14 +00:00
Chris Lattner
890b4bd3c0 Add accessor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18030 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 03:11:07 +00:00