Chris Lattner
0427dd4f4f
rename selection library to selectiondag
...
llvm-svn: 7878
2003-08-15 04:56:09 +00:00
Chris Lattner
25f5c7bbb3
Implement a _REAL_ memory manager for the code generated by the JIT. This
...
speeds up program execution by 15% pretty consistently for large programs
llvm-svn: 7845
2003-08-14 18:35:27 +00:00
Brian Gaeke
2e59087317
Deconstify parameter to getPointerToFunction().
...
llvm-svn: 7822
2003-08-13 18:17:54 +00:00
Brian Gaeke
39ff839ca3
Deconstify parameter to getPointerToFunction().
...
Use a FunctionPassManager instead of a PassManager.
llvm-svn: 7820
2003-08-13 18:16:50 +00:00
Brian Gaeke
a6ca67ed4a
Deconstify parameter to getPointerToFunction().
...
Run passes on single function (hey, just-in-time compilation!)
instead of the entire module that contains it.
llvm-svn: 7819
2003-08-13 18:16:34 +00:00
Brian Gaeke
f162b11e38
In ExecutionEngine::getPointerToGlobal(), throw away const qualifier
...
on Function * when passing it to getPointerToFunction().
llvm-svn: 7818
2003-08-13 18:16:14 +00:00
Chris Lattner
6cc411cb24
Incorporate mapping library into the sparc library
...
llvm-svn: 7800
2003-08-13 02:28:20 +00:00
Chris Lattner
a0d327277d
Include the new selection library for the X86 target
...
llvm-svn: 7720
2003-08-11 14:59:53 +00:00
Chris Lattner
7e9e83e817
Specify DEBUG_TYPE's for the JIT debug messages
...
llvm-svn: 7604
2003-08-05 17:00:32 +00:00
Chris Lattner
64fade1536
DEBUG got moved to Debug.h
...
llvm-svn: 7491
2003-08-01 22:13:59 +00:00
Misha Brukman
442175ec3b
* Stop hard-coding a value for beginning of emitted code on Sparc since we can
...
now handle far calls (i.e., beyond the 30-bit limit in call instructions).
* As a side-effect, this allows us to unify and clean up the mmap() call and
code around it.
llvm-svn: 7381
2003-07-29 16:57:16 +00:00
Misha Brukman
c77e286633
Add rationale for the MAP_ANONYMOUS vs. MAP_ANON flags.
...
llvm-svn: 7368
2003-07-28 19:26:19 +00:00
Misha Brukman
c0193ca460
Add ability for external C code to get pointers to functions given their name.
...
This us used by bugpoint -- when code is compiled to a shared object to be
JITted, it must use the JIT's lazy resolution method to find function addresses,
because some functions will not be available at .so load time, as they are in
the bytecode file.
llvm-svn: 7363
2003-07-28 19:09:06 +00:00
Misha Brukman
752c6f4548
Clean up code dealing with RTLD_SELF differences on Sparc and X86.
...
llvm-svn: 7362
2003-07-28 19:07:30 +00:00
Misha Brukman
cd6e03cb52
Fix reference to architecture.
...
llvm-svn: 7361
2003-07-28 19:06:50 +00:00
Misha Brukman
f4702ed4d1
Add in support to load shared objects (-load is provided by Support library).
...
llvm-svn: 7360
2003-07-28 19:06:19 +00:00
Chris Lattner
fc4a57d904
Fix space
...
llvm-svn: 7273
2003-07-23 20:21:06 +00:00
Chris Lattner
dd48c4b1e4
Remove redundant const qualifier
...
llvm-svn: 7254
2003-07-23 15:30:32 +00:00
Misha Brukman
755aa86ca3
Cleaned up the code which chooses the appropriate value for the file descriptor
...
to pass to dlsym() -- Linux/x86 wants 0 while Sparc/Solaris wants RTLD_SELF,
which is not zero. Thanks to Chris for the suggestion.
llvm-svn: 7204
2003-07-18 18:33:38 +00:00
Misha Brukman
45dc28808e
Clean up my last checkin: code is easier to read and explains the differences in
...
usage of the special file handle RTLD_SELF on Sparc/Solaris vs. 0 on Linux/x86.
llvm-svn: 7177
2003-07-15 15:58:26 +00:00
Misha Brukman
6a087a3a2f
On Sparc/Solaris, the special handle RTLD_SELF is used as a handle referring to
...
the program's executing image, not 0 as it is on Linux/x86 and possibly other
systems.
llvm-svn: 7176
2003-07-15 15:55:32 +00:00
Misha Brukman
009e42dd43
* If compiling on X86 or Sparc, automagically enable the JIT for that arch
...
* Setting ENABLE_X86_JIT or ENABLE_SPARC_JIT on the `make' command-line will
force the inclusion of that JIT on a different architecture
* If neither JIT is enabled (e.g., compiling on a different architecture), the
-march option will not be available to LLI.
* As a side effect of the $ARCH variable, the Sparc LLI can now link just a bit
faster by not including the x86 library.
llvm-svn: 7070
2003-07-02 17:53:19 +00:00
John Criswell
258dfc0319
Merged in autoconf branch. This provides configuration via the autoconf
...
system.
llvm-svn: 7014
2003-06-30 21:59:07 +00:00
Brian Gaeke
a00e8c6732
Get rid of the duplicate '0x' in debug mode.
...
llvm-svn: 7012
2003-06-30 18:06:20 +00:00
Brian Gaeke
af128adb0a
Include <cmath> instead of <math.h>
...
Remove isnan; it's too unportable to handle cleanly at this point.
llvm-svn: 6866
2003-06-23 19:41:55 +00:00
Brian Gaeke
04d082abe5
Add #ifdef hack for MAP_ANONYMOUS being spelled MAP_ANON on some platforms.
...
(We're already talking about autoconf'ing this, so I'm assuming this hack
will be short-lived...I just don't want it to get lost in my working files.)
llvm-svn: 6761
2003-06-17 23:14:06 +00:00
Brian Gaeke
17f041ba98
Use $(PLATFORMLIBDL) to selectively bring in -ldl only on those platforms where
...
it is needed.
llvm-svn: 6753
2003-06-17 20:09:18 +00:00
Brian Gaeke
db4d9c9bd8
Use std::isnan instead of isnan. Brought back to you from the
...
future, by the reconciliation of the C++ and C99 standards. Someday.
llvm-svn: 6751
2003-06-17 19:59:17 +00:00
Chris Lattner
6d0553444b
Life is too short. Link in too much stuff on Linux to make building on sun easier
...
llvm-svn: 6748
2003-06-17 19:14:59 +00:00
Chris Lattner
0fc18257a9
The never-ending odyssey trying to get sparc to link
...
llvm-svn: 6747
2003-06-17 18:19:52 +00:00
Chris Lattner
85f1b38638
Make sure to get the value of ARCH before we use it
...
llvm-svn: 6746
2003-06-17 17:53:35 +00:00
Chris Lattner
0c7e4fdfa2
Do not link in the Sparc JIT when building on X86. Eventually the sparc will not
...
link in the X86 JIT either, but this makes testing easier.
For some reason, the sparc JIT was breaking the X86 JIT when it was linked in. :(
llvm-svn: 6745
2003-06-17 15:54:52 +00:00
Chris Lattner
0aa503a72d
Apparently "sparc" is a macro on sparcs. Ugh. :)
...
llvm-svn: 6744
2003-06-17 15:54:02 +00:00
Chris Lattner
ed38cd7aa9
Whoops, didn't mean to check that in :(
...
llvm-svn: 6743
2003-06-17 15:46:34 +00:00
Chris Lattner
1afd194a33
Use more structured command line option processing
...
llvm-svn: 6742
2003-06-17 15:43:13 +00:00
Chris Lattner
1f384965af
#ifdef out code that only applies when the HOSTARCH = sparc
...
llvm-svn: 6741
2003-06-17 15:32:38 +00:00
Chris Lattner
66f5f27dcb
Add #include for older GCC's
...
llvm-svn: 6670
2003-06-08 06:43:57 +00:00
Misha Brukman
1a3c1a6208
::: HACK ALERT ::: HACK ALERT ::: HACK ALERT ::: HACK ALERT ::: HACK ALERT :::
...
The JIT is designed to code-generate a function at-a-time. That means that any
pass can only make local changes to its function. Period.
Because the Sparc PreSelection pass claims to be a BasicBlock pass while adding
globals to the Module, it cannot be run with the other passes, because by this
time, the globals have been output already by the JIT, and the addresses of any
globals appearing AFTER this point are not recognized.
However, the PreSelection pass is a requirement for correctness in the Sparc
codegen path, so it MUST be run.
::: HACK ALERT ::: HACK ALERT ::: HACK ALERT ::: HACK ALERT ::: HACK ALERT :::
llvm-svn: 6650
2003-06-06 06:59:55 +00:00
Misha Brukman
6762302093
Output function address as hex.
...
llvm-svn: 6649
2003-06-06 06:52:35 +00:00
Misha Brukman
999c7802ab
Removed debug print statement.
...
llvm-svn: 6641
2003-06-06 00:00:54 +00:00
Misha Brukman
b2cf47cfc1
* Institute a hack for the Sparc call to mmap() to get our generated code to be
...
laid out closer to the VM so that calls to library functions (e.g. puts()) and
callback (e.g. JITResolver::CompilationCallback) fit into 30 bits of the call
instruction.
* Abort if architecture is not yet supported (not X86 or Sparc) because it
likely requires a different set of parameters to mmap() .
* Stop using hard-coded values for page size; use sysconf(_SC_PAGESIZE) instead.
llvm-svn: 6610
2003-06-04 19:45:25 +00:00
Misha Brukman
6e22f0fa52
Sparc's dlsym() requires the special operand RTLD_SELF to find a symbol in the
...
currently-running process.
llvm-svn: 6592
2003-06-04 01:57:22 +00:00
Misha Brukman
1c70c3f7a3
* Removed SparcEmitter.cpp; rolled into lib/Target/Sparc/SparcV9CodeEmitter.cpp
...
* No more createX86Emitter() vs. createSparcEmitter() -- there can be only one
* As a result, the memory management semantics must be handled according to
platform -- the parameters to mmap() are particularly sensitive to the host
architecture.
llvm-svn: 6527
2003-06-02 03:23:16 +00:00
Brian Gaeke
bbbe5d71d2
The flag modifications weren't picking up the old values of the
...
flags before. Save them in a temporary variable, then restore them from the
temporary after creating the new constant.
llvm-svn: 6520
2003-06-02 02:10:31 +00:00
Chris Lattner
1136441fcf
Remove obsolete code
...
llvm-svn: 6518
2003-06-02 00:09:00 +00:00
Chris Lattner
a87f53efca
Move target specific code to target files. The new MachineCodeEmitter
...
class is actually target independent!
llvm-svn: 6517
2003-06-01 23:24:36 +00:00
Brian Gaeke
495826a0e5
Fix induction variable name clash in for loops, in finishFunction().
...
Modify new MachineOperand so that its flags match the old MachineOperand's
flags, for the flags that matter.
llvm-svn: 6513
2003-06-01 22:08:29 +00:00
Misha Brukman
afa8e60f9f
Fixed rewriting of branches -- they now work forward and backward.
...
llvm-svn: 6463
2003-05-31 06:26:48 +00:00
Misha Brukman
a9a5c77dd4
Since malloc is no longer used, no need to free() memory.
...
Fixed BasicBlock patching by supplying correct type for the displacement.
llvm-svn: 6453
2003-05-30 20:39:37 +00:00
Brian Gaeke
ad23dd697f
Fix call to mmap, so that it can be used on sparc.
...
llvm-svn: 6424
2003-05-30 03:37:13 +00:00