Commit Graph

4186 Commits

Author SHA1 Message Date
Chris Lattner ad48131254 Reorder #includes to follow LLVM conventions
llvm-svn: 8375
2003-09-05 20:08:15 +00:00
Brian Gaeke 6181cac0dc Correct comments
Don't include InstLoops.h
Don't export factory functions for these passes

llvm-svn: 8373
2003-09-05 19:43:19 +00:00
Brian Gaeke 80343a5c9b Add ExecutionEngine directory.
llvm-svn: 8371
2003-09-05 19:39:49 +00:00
Brian Gaeke f3a300d578 ExecutionEngine.h, GenericValue.h --> include/llvm/ExecutionEngine/
Build ExecutionEngine as library.

llvm-svn: 8370
2003-09-05 19:39:22 +00:00
Brian Gaeke 9b518bc0be Make getOperandValue and executeCastOperation methods of Interpreter.
This lets us protect a few more ExecutionEngine methods.

llvm-svn: 8367
2003-09-05 18:55:03 +00:00
Brian Gaeke a7669038fc Make CreateArgv part of lli rather than part of ExecutionEngine.
Switch Interpreter and JIT's "run" methods to take a Function and a vector of
 GenericValues.
Move (almost all of) the stuff that constructs a canonical call to main()
 into lli (new methods "callAsMain", "makeStringVector").
Nuke getCurrentExecutablePath(), enableTracing(), getCurrentFunction(),
 isStopped(), and many dead decls from interpreter.
Add linux strdup() support to interpreter.
Make interpreter's atexit handler runner and JIT's runAtExitHandlers() look
 more alike, in preparation for refactoring.
atexit() is spelled "atexit", not "at_exit".

llvm-svn: 8366
2003-09-05 18:42:01 +00:00
Chris Lattner 15ad3f07db Fix reading of invoke instrs
llvm-svn: 8365
2003-09-05 18:25:29 +00:00
Chris Lattner 7f8d98776f Whoa, we were misreading invoke instructions "normal" destinations quite badly.
llvm-svn: 8363
2003-09-05 05:27:58 +00:00
Brian Gaeke 33d98aebe7 Remove printOperandInfo(), and simplify run().
llvm-svn: 8362
2003-09-05 05:22:08 +00:00
Chris Lattner 20b98d2c93 Add asserts, move code around. This gets the dropAllTypeUses partially implemented
llvm-svn: 8361
2003-09-05 05:10:04 +00:00
Brian Gaeke ed9917b3f8 Remove support for printing values from a module by name, only used
w/ interactive keyboard entry of names.
With that, Support.cpp is history.

llvm-svn: 8360
2003-09-05 05:04:32 +00:00
Brian Gaeke 8421765778 Remove support for interactive (step finish next) instructions.
Remove printCurrentInstruction, printStackFrame and infoValue
 (only used interactively) and other unused methods of Interpreter.
Fold UserInput.cpp containing only callMainFunction() into Interpreter.cpp.
Remove unused Profile flag.

llvm-svn: 8359
2003-09-05 04:46:26 +00:00
Chris Lattner d15598bfe0 Move functionality preserving changes.
Inline containsEquivalent
Remove some //'s

llvm-svn: 8358
2003-09-05 02:39:52 +00:00
Chris Lattner 5ac07d2221 Refactor what has effectively become copy-and-pasted code
llvm-svn: 8357
2003-09-05 02:30:47 +00:00
Chris Lattner 3f695ff02e Check in a bunch of minor fixes, plus a whole lot of #if 0'd out code, which will hopefully be enabled in the near future
This does not make any functionality changes

llvm-svn: 8355
2003-09-05 02:21:39 +00:00
Chris Lattner e4fdce4235 containsEquivalent never returns its argument
llvm-svn: 8353
2003-09-04 23:49:53 +00:00
Chris Lattner b4520603a4 Non-functional change
llvm-svn: 8352
2003-09-04 23:47:07 +00:00
Chris Lattner cd27235b23 Remove needless usage of getDescription()
llvm-svn: 8351
2003-09-04 23:46:03 +00:00
Chris Lattner 59be7695ef Inline method
llvm-svn: 8350
2003-09-04 23:43:40 +00:00
Chris Lattner b8b10b5c54 Don't try to be sneaky, breaking recursive types in the process
llvm-svn: 8348
2003-09-04 23:41:03 +00:00
Chris Lattner 50745187ef This is now unnecessary
llvm-svn: 8347
2003-09-04 23:38:22 +00:00
Brian Gaeke 411281cc82 Remove support for breakpoints (not used).
Remove some dead code and whitespace.

llvm-svn: 8346
2003-09-04 23:15:40 +00:00
Brian Gaeke 92f8b30d24 Move EE dtor where it belongs
llvm-svn: 8345
2003-09-04 22:57:27 +00:00
Brian Gaeke e80e5ba7f8 Interpreter cleanups:
Get rid of support for DebugMode (make it always off).
Mung some comments.
Get rid of interpreter's PROFILE_STRUCTURE_FIELDS and PerformExitStuff
 which have been disabled forever.
Get rid of -abort-on-exception (make it always on).
Get rid of user interaction stuff (debug mode innards).
Simplify Interpreter's callMainFunction().

llvm-svn: 8344
2003-09-04 22:21:24 +00:00
Brian Gaeke 4bd3bd5b5a ExecutionEngine.cpp: Move execution engine creation stuff into a new
static method here.
 Remove some extra blank lines.
ExecutionEngine.h: Add its prototype.
lli.cpp: Call it.

Make creation method for each type of EE into a static method of its
own subclass.

Interpreter/Interpreter.cpp: ExecutionEngine::createInterpreter -->
 Interpreter::create
Interpreter/Interpreter.h: Likewise.
JIT/JIT.cpp: ExecutionEngine::createJIT --> VM::create
JIT/VM.h: Likewise.

llvm-svn: 8343
2003-09-03 20:34:19 +00:00
Chris Lattner 54d85e389f Avoid printing meaningless numbers
llvm-svn: 8342
2003-09-03 20:25:27 +00:00
Chris Lattner 13651f0c46 Fix bug where we couldn't print a function without a name
llvm-svn: 8341
2003-09-03 17:56:43 +00:00
Chris Lattner 53db94da05 Follow the pattern of all other atu's
llvm-svn: 8340
2003-09-03 16:01:54 +00:00
Chris Lattner b89d2afab1 No need to rescan types when they are created.
llvm-svn: 8339
2003-09-03 14:44:53 +00:00
Chris Lattner cc61a136f7 Another small speedup, this one to: 2.42s
llvm-svn: 8335
2003-09-02 22:52:49 +00:00
Chris Lattner 188afa5feb Don't return bogus references, and don't add an entry to the Concrete map
unless it's not empty!

llvm-svn: 8334
2003-09-02 22:50:02 +00:00
Chris Lattner 39e5095c8e Another optimization, speed up the testcase to 2.7s
llvm-svn: 8333
2003-09-02 22:15:15 +00:00
Chris Lattner 835499277b Removal of explicit stack, which requires the method to be a member (so it can
call setAbstract).  Now that we just compute abstractness we can also return
the computed value by value instead of as an argument.

llvm-svn: 8332
2003-09-02 21:56:34 +00:00
Chris Lattner 9a61bbf1d3 Remove the "recursive bit", not only is it unused by anyone, it was also
not correctly calculated, and calculating it wrong for fun seems rather
pointless.  This also speeds up my favorite testcase by .25 seconds.

llvm-svn: 8330
2003-09-02 21:41:05 +00:00
John Criswell b83a22bd82 Added the MakeFileReadable() method.
llvm-svn: 8327
2003-09-02 21:09:30 +00:00
John Criswell 44375ca7d6 Added a description of the algorithm.
Return failure if the chmod() fails.

llvm-svn: 8326
2003-09-02 20:30:16 +00:00
John Criswell 5357283c7a Added the MakeFileExecutable() method. This method takes a filename and
gives it execute access while respecting the user's umask.

llvm-svn: 8324
2003-09-02 20:14:57 +00:00
Chris Lattner ce35f14050 Don't bother doing an exhaustive recursive walk if we are at the limit of what
we need to know anyway.  This reduces the 2002-07-08-HugePerformanceProblem.llx
down to 3.210u:0.010s, which is back in the acceptable range again

llvm-svn: 8323
2003-09-02 20:06:29 +00:00
Chris Lattner 99b9ddead7 Ugh, fix bugs. Ok, so the last fix wasn't as great as I thought it was.
Now we're back to: 131.730u, 0.330s, which is still quite an improvement,
but still quite unacceptable

llvm-svn: 8322
2003-09-02 19:14:12 +00:00
Chris Lattner 2a36482e74 Further simplifications
llvm-svn: 8321
2003-09-02 16:46:41 +00:00
Chris Lattner e0703ff161 Change the code to no longer compute the "type description" immediately when
the type is analyzed.  Instead, only compute it when requested (with
getDescription), and cached for reuse later.

This dramatically speeds up LLVM in general because these descriptions almost
_never_ need to be constructed.  The only time they are used is when a type is
<<'d.  Printing of modules by themselves uses other code to print symbolic
types when possible, so these descriptions are really only used for debugging.

Also, this fixes the particularly bad case when lots of types get resolved to
each other, such as during linking of large programs.  In these cases, the type
descriptions would be repeatedly recomputed and discarded even though: A. noone
reads the description before it gets resolved, and B. many many resolutions
happen at intermediate steps, causing a HUGE waste of time.

Overall, this makes the getTypeDesc function much more light-weight, and fixes
bug: Assembler/2002-07-08-HugePerformanceProblem.llx, which went from taking
1048.770u/19.150s (which is 17.5 MINUTES, on apoc), to taking 0.020u/0.000s,
which is a nice little speedup.  :)

llvm-svn: 8320
2003-09-02 16:35:17 +00:00
Brian Gaeke e248195b22 Remove assertion which is never reached.
llvm-svn: 8318
2003-09-02 06:45:34 +00:00
Chris Lattner f1f7f2c477 Prototype for creator function got moved
llvm-svn: 8315
2003-09-01 20:45:33 +00:00
Chris Lattner d189277f32 OptInfo is no longer required
llvm-svn: 8312
2003-09-01 20:41:07 +00:00
Chris Lattner b49a8d7e01 No longer provide an optinfo, noone uses it
llvm-svn: 8311
2003-09-01 20:40:59 +00:00
Chris Lattner 825624e954 Inline simple comparison which is sparc specific anyway
llvm-svn: 8309
2003-09-01 20:38:03 +00:00
Chris Lattner 5718a6bf99 Don't build dead directories
llvm-svn: 8308
2003-09-01 20:34:15 +00:00
Chris Lattner 0792315409 Move private interfaces into private .h file
llvm-svn: 8306
2003-09-01 20:33:07 +00:00
Chris Lattner e722930efd Preselection is now integrated into the Sparc target library
llvm-svn: 8305
2003-09-01 20:30:17 +00:00
Chris Lattner c87312a858 Remove dead library makefile
llvm-svn: 8304
2003-09-01 20:29:43 +00:00
Chris Lattner a5b78c68d9 Remove makefile for dead library
llvm-svn: 8303
2003-09-01 20:26:52 +00:00
Chris Lattner c7f87d30ab Sparc peephole optimizer moved out of post-opts library into Sparc target library
llvm-svn: 8302
2003-09-01 20:26:14 +00:00
Chris Lattner 8a3d3d26a5 Simplify code a bit
llvm-svn: 8301
2003-09-01 20:24:06 +00:00
Chris Lattner eefb565449 LiveRange.h is now in lib/CodeGen/RegAlloc
llvm-svn: 8299
2003-09-01 20:17:13 +00:00
Chris Lattner 641ac3ad3b This file is hopelessly out of date
llvm-svn: 8298
2003-09-01 20:14:00 +00:00
Chris Lattner e80612a28e LiveRangeInfo got moved into the lib/CodeGen/RegAlloc directory
llvm-svn: 8297
2003-09-01 20:12:17 +00:00
Chris Lattner f1ab45bdf5 PhyRegAlloc.h got moved to lib/CodeGen/RegAlloc
llvm-svn: 8296
2003-09-01 20:09:04 +00:00
Chris Lattner 7127065f24 Move IGNode from public include directory to here. Minor cleanups like adding std:: namespace qualifiers
llvm-svn: 8295
2003-09-01 20:05:47 +00:00
Chris Lattner 8c50571f12 IGNode got moved to lib/CodeGen/RegAlloc
llvm-svn: 8294
2003-09-01 20:00:08 +00:00
Chris Lattner 69382173e9 This file just needs LiveRange.h not IGNode.h
llvm-svn: 8293
2003-09-01 19:58:02 +00:00
Chris Lattner 3323829ecc No longer include IGNode.h in the Sparc global header
llvm-svn: 8292
2003-09-01 19:56:48 +00:00
Chris Lattner ffc2d16f21 Final cleanup: remove dead code
llvm-svn: 8291
2003-09-01 18:01:36 +00:00
Chris Lattner 267f20475b Not only is this a lot smaller, it actually works if there is already a
function with the right name in the module.

llvm-svn: 8290
2003-09-01 16:53:46 +00:00
Chris Lattner 5b8addab9b Dead files
llvm-svn: 8289
2003-09-01 16:49:57 +00:00
Chris Lattner d4a1af7d49 If "These should be used only by the auto-parallelization pass", we might as
well put them INTO the auto-par pass.

llvm-svn: 8288
2003-09-01 16:49:38 +00:00
Chris Lattner 685dc1ea98 Moved all of the cilkifier stuff into lib/Transforms/IPO, as it really is not
support stuff.

llvm-svn: 8287
2003-09-01 16:45:30 +00:00
Chris Lattner 6c6ba71cea Minor cleanups
Do not #include Parallelize.h, it's just a subset of Cilkifier.h

llvm-svn: 8285
2003-09-01 16:42:16 +00:00
Chris Lattner 667ded9bf8 Remove gross old hacky code that was in there for backwards compatibility
1 year is plenty of migration time!

llvm-svn: 8282
2003-09-01 16:31:28 +00:00
Chris Lattner 8ef1b88aef Change the RaiseAllocations pass to be a Pass instead of a BasicBlock pass.
This makes it more efficient: it doesn't have to scan the whole program, so
it performs work proportional to the number of malloc/free calls in the
program, not the size of the program.

llvm-svn: 8280
2003-09-01 03:14:56 +00:00
Chris Lattner 1c884e18e1 Fix bug: TailDuplicate/2003-08-31-UnreachableBlocks.ll
llvm-svn: 8276
2003-08-31 21:17:44 +00:00
Chris Lattner 6f5e18d696 Replace M with F when refering to functions
llvm-svn: 8274
2003-08-31 20:36:52 +00:00
Chris Lattner 78a5c1aa3c Rename TarjanSCCIterator -> scc_iterator
* Increases consistency with other iterators (e.g. df_iterator, po_iterator...)
  * It's shorter
  * We don't name classes by the implementation, we name it for the interface!

llvm-svn: 8273
2003-08-31 20:01:57 +00:00
Chris Lattner bb6fe251ea Don't explicitly use the SCC class
llvm-svn: 8271
2003-08-31 19:55:06 +00:00
Chris Lattner 6b9d3efb64 Remove dead var
llvm-svn: 8270
2003-08-31 19:54:57 +00:00
Chris Lattner 4336db8d1d The SCC::HasLoop method is now in the main iterator
llvm-svn: 8269
2003-08-31 19:51:38 +00:00
Chris Lattner a687f44559 Remove explicit passing of SCC's around as objects.
llvm-svn: 8267
2003-08-31 19:46:48 +00:00
Chris Lattner 028f248ba8 Move the getAnalysisUsage method from the header file
llvm-svn: 8264
2003-08-31 19:40:57 +00:00
Chris Lattner 7d1a871ede The tarjan iterator now returns a reference to the current SCC, not a possibly null pointer!
llvm-svn: 8262
2003-08-31 19:35:16 +00:00
Chris Lattner 2ee82ff48e Minor cleanups
Iterate from tarj_begin -> tarj_end, not from tarj_begin -> NULL

llvm-svn: 8260
2003-08-31 19:29:52 +00:00
Chris Lattner 2f120bbb95 Indent classes correctly in the namespace
move bodies out-of-line
Add getAnalysisUsage method for SFGSCC

llvm-svn: 8259
2003-08-31 19:27:11 +00:00
Chris Lattner c4caf3ad67 * Cleanups
* Iterate from tarj_begin -> tarj_end, not from tarj_begin -> NULL

llvm-svn: 8258
2003-08-31 19:23:41 +00:00
Chris Lattner d075cc282b Heavily refactor code:
* Separate the policy decisions into a derived class [InlineSimple]
  * Move the inlining mechanics into a base class [Inliner]
  * Change the inliner to be an SCCPass, making it more structured and
    eventually pipelinable with other SCC passes

llvm-svn: 8257
2003-08-31 19:10:30 +00:00
Chris Lattner 75444c751f Add accessor function
llvm-svn: 8253
2003-08-31 16:30:07 +00:00
Chris Lattner 0a3f8d5dcd Initial checkin of the -prune-eh pass, a very simple exception handling removal pass
llvm-svn: 8250
2003-08-31 02:47:32 +00:00
Chris Lattner f7e9594843 Initial checkin of the CallGraphSCCPass class
llvm-svn: 8247
2003-08-31 01:54:59 +00:00
Chris Lattner c817458b66 ScalarRepl does not modify the CFG. Say so!
llvm-svn: 8243
2003-08-31 00:45:13 +00:00
Chris Lattner 2887328770 Use new interface, simplifies code
llvm-svn: 8242
2003-08-31 00:22:27 +00:00
Chris Lattner 25bc3f86de Use the new interface, simplifies code
NOTE that these two files are _BUGGY_ and need to be fixed, just not by me  :)

llvm-svn: 8241
2003-08-31 00:21:59 +00:00
Chris Lattner ea27751e4b Use the new interface, simplifies code
Delete a bunch of commented out code

llvm-svn: 8240
2003-08-31 00:21:05 +00:00
Chris Lattner 8e6ac1bf10 Use the new interface, simplifies code
llvm-svn: 8239
2003-08-31 00:20:36 +00:00
Chris Lattner bd717d897f Implement new method
llvm-svn: 8238
2003-08-31 00:19:28 +00:00
Chris Lattner 5f9be67e07 There is no reason for this to be a pass!
llvm-svn: 8214
2003-08-29 14:43:17 +00:00
Chris Lattner a38adaa88f Fix bug: Linker/2003-08-28-TypeResolvesGlobal3.ll
Use new replaceAllUsesWith stuff in a way that works even though types have not yet been propagated

llvm-svn: 8210
2003-08-29 05:37:22 +00:00
Chris Lattner c27038d7b5 Implement "unsafe" replaceAllUsesWWith stuff for use during type resolution.
llvm-svn: 8209
2003-08-29 05:36:46 +00:00
Chris Lattner 6097d94295 Fix bug: Linker/2003-08-28-TypeResolvesGlobal2.ll
llvm-svn: 8206
2003-08-29 05:11:34 +00:00
Chris Lattner 9f15812e88 Refactor code to make it useful outside of Constants.cpp
llvm-svn: 8205
2003-08-29 05:09:37 +00:00
Chris Lattner ae77242011 Fix bug: Linker/2003-08-28-TypeResolvesGlobal.ll
llvm-svn: 8202
2003-08-29 04:49:54 +00:00
Misha Brukman 9770b83509 * Use alloca() to force GCC not to eliminate frame pointer
* Break apart saving and restoring registers into separate functions
* Instead of saving single and double FP registers, just save the double
  registers -- aliasing helps preserve the single FP registers as well.
* Request just as much memory for a stub as we actually use

llvm-svn: 8200
2003-08-29 04:22:54 +00:00
John Criswell a4b09fe071 Fixed two double free bugs that caused llc to segfault or run forever.
llvm-svn: 8191
2003-08-28 21:43:17 +00:00
Chris Lattner 147b66cd2b Add support for the llvm.unwind intrinsic, which we codegen to just do an abort
until we implement unwinding.
Add support for the invoke instruction, which codegens just like a call with
a branch after it.

The end effect of this change is that programs using the invoke instruction,
but never unwinding, will work fine.  Programs that unwind will abort until
we get unwind support.

llvm-svn: 8187
2003-08-28 21:23:43 +00:00