Commit Graph

506 Commits

Author SHA1 Message Date
Misha Brukman
de9720ffce * Disambiguate symbols before we start splitting module by functions
* Moved DisambiguateGlobalSymbols() out of the ReduceMisCodegenFunctions class
* Added an assert to have a cleaner exit if `main' is not found in the module


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7380 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-29 16:02:28 +00:00
Misha Brukman
c1e39ee659 Implemented cleanups as suggested by Chris:
* Use Module::getNamedFunction() to delete "main" instead of using a loop
* Compare function pointers instead of function names to determine equivalence
* Simplified creation of a 2-element vector containing zeroes
* Manually performed LICM on code
* Added an abort() in case a function we're considering occurs in something that
  is not an instruction
* Use DEBUG() around code sections instead of just in a statement in a loop,
  because GCC's DCE may not be good enough to completely remove it in a release
  build
* Print out a command that can be directly copied-and-pasted to re-execute
* Instead of just checking if a symbol begins with a dot and fixing it
  accordingly, use Mangler and fix all the problems (invalid chars in C symbol
  names) entirely
* The new `main' function has external linkage


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7371 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-28 21:07:39 +00:00
Misha Brukman
fe04db890b Added comment to function isExecutingJIT()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7370 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-28 20:59:16 +00:00
Misha Brukman
91eabc13d3 BugDriver.h:
* Added method to query if BugDriver is executing the JIT currently.
  This provides the ability in adding code that is conditionally executed in
  codegen debugging phase.

CodeGeneratorBug.cpp:
* Delete test functions from the Safe module
* Code conditionally added when debugging the JIT:
  use the lazy resolver function added to Emitter.cpp to get function pointer
  by name. When compiled into an .so, this is the only way to get a pointer to
  an external function
* Added a symbol disambiguator which will keep symbols uniquely named across
  modules
* Delete generated files by default
* The function `main' *must* stay in the .bc file for the JIT, but that prevents
  debugging it alone. This patch makes the old `main' become `old_main' and adds
  a new function named `main' which just calls the original with the same
  parameters, thereby keeping functionality the same.

ExecutionDriver.cpp:
* Returned to getting unique filenames
* Simplified code choosing between using and not using shared library option


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7364 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-28 19:16:14 +00:00
Misha Brukman
a259c9be2a Made a bunch of cleanups, as per Chris' recommendations:
* Removed unused global and member variables
* Fixed comments (CodeGeneratorBug.cpp)
* Check for possibly failing GCC::create() and CBE::create()
* Remove generated files after diffing the output (e.g., shared object)
* Instead of using std::for_each, use explicit loops as std::for_each may
  duplicate the functor, and ours carries state
* Changed member var from cl::opt<std::string> to just std::string
* Fixed doxygen comments
* Fixed string comparisons to use [ str.empty() ] instead of [ str == "" ]
* Cache instances of CBE and GCC in BugDriver across compilations and executions
  while testing tools.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7302 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-24 21:59:10 +00:00
Misha Brukman
5073336cd4 Major addition to bugpoint: ability to debug code generators (LLC and LLI).
The C backend is assumed correct and is used to generate shared objects to be
loaded by the other two code generators.

LLC debugging should be functional now, LLI needs a few more additions to work,
the major one is renaming of external functions to call the JIT lazy function
resolver.

Bugpoint now has a command-line switch -mode with options 'compile' and
'codegen' to debug appropriate portions of tools.

ExecutionDriver.cpp: Added implementations of AbstractInterpreter for LLC and
GCC, broke out common code within other tools, and added ability to generate C
code with CBE individually, without executing the program, and the GCC tool can
generate executables shared objects or executables.

If no reference output is specified to Bugpoint, it will be generated with CBE,
because it is already assumed to be correct for the purposes of debugging using
this method. As a result, many functions now accept as an optional parameter a
shared object to be loaded in, if specified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7293 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-24 18:17:43 +00:00
Misha Brukman
265789f155 Fixed misspelling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7223 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-21 21:58:16 +00:00
Misha Brukman
bc0e998c49 The word separate' only has one e'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7173 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-14 17:20:40 +00:00
John Criswell
7a73b80b90 Merged in autoconf branch. This provides configuration via the autoconf
system.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7014 91177308-0d34-0410-b5e6-96231b3b80d8
2003-06-30 21:59:07 +00:00
Chris Lattner
898e0e42e3 Try to run cleanups even if nothing was modified in the preview passes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6897 91177308-0d34-0410-b5e6-96231b3b80d8
2003-06-25 04:13:52 +00:00
Chris Lattner
06c818e717 Run dead arg elimination, and tell it that it's ok to hack up non-internal functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6896 91177308-0d34-0410-b5e6-96231b3b80d8
2003-06-25 04:13:36 +00:00
Brian Gaeke
5285270871 Use $(PLATFORMLIBDL) to selectively bring in -ldl only on those platforms where
it is needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6753 91177308-0d34-0410-b5e6-96231b3b80d8
2003-06-17 20:09:18 +00:00
Chris Lattner
2eb9a257c8 Actually, change it to use explicit new/delete, which is more likely to be
optimized INTO an alloca


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6727 91177308-0d34-0410-b5e6-96231b3b80d8
2003-06-16 22:29:09 +00:00
Chris Lattner
5b1688d73b Remove usage of alloca
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6726 91177308-0d34-0410-b5e6-96231b3b80d8
2003-06-16 22:22:11 +00:00
Brian Gaeke
ad95d9ef50 Isolate machine-dependent use of <alloca.h> in "Support/Alloca.h",
so that we can easily change its use to be conditional on the result of
an autoconf test later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6723 91177308-0d34-0410-b5e6-96231b3b80d8
2003-06-16 21:54:01 +00:00
Chris Lattner
b417c795d2 Remove stupid thinko that was preventing bugpoint from working
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6533 91177308-0d34-0410-b5e6-96231b3b80d8
2003-06-02 04:54:29 +00:00
Chris Lattner
24271cf8d7 Give better information about how the passes crash
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6532 91177308-0d34-0410-b5e6-96231b3b80d8
2003-06-02 04:54:16 +00:00
Brian Gaeke
dae7f92366 Clarify BugDriver.cpp:BugDriver::ParseInputFile()'s return values in its
explanatory comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6308 91177308-0d34-0410-b5e6-96231b3b80d8
2003-05-23 05:34:32 +00:00
Chris Lattner
dbe48dcaec Allow disabling final cleanups
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6271 91177308-0d34-0410-b5e6-96231b3b80d8
2003-05-21 20:38:59 +00:00
Chris Lattner
28b8ed90c7 Increase odds that this won't bork things
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6267 91177308-0d34-0410-b5e6-96231b3b80d8
2003-05-21 19:41:31 +00:00
Chris Lattner
3cbacc9047 Print filename correctly
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6119 91177308-0d34-0410-b5e6-96231b3b80d8
2003-05-12 14:32:04 +00:00
Chris Lattner
f479be58f5 Make a comment more accurate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5991 91177308-0d34-0410-b5e6-96231b3b80d8
2003-05-03 03:20:36 +00:00
Chris Lattner
cc876a7421 Add support for debugging miscompilations with the use of the JIT or CBE!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5990 91177308-0d34-0410-b5e6-96231b3b80d8
2003-05-03 03:19:41 +00:00
Chris Lattner
fb74224662 Bugpoint is always verbose, eliminate option
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5989 91177308-0d34-0410-b5e6-96231b3b80d8
2003-05-03 03:18:41 +00:00
Misha Brukman
c8b27318a3 The Grammar Police is out on patrol.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5985 91177308-0d34-0410-b5e6-96231b3b80d8
2003-05-03 02:16:43 +00:00
Chris Lattner
6db70ef879 Add options to disable simplification with passes, in case one of them crashes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5950 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-25 22:08:12 +00:00
Chris Lattner
0c13998775 Rename Kept -> Suffix
FIX problem where we were incorrectly putting the prefix of the list into the "suffix" list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5926 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-25 03:16:33 +00:00
Chris Lattner
06943add8b Rename Kept -> Suffix
Fix problem where we accidentally returned KeepPrefix instead of KeepSuffix!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5925 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-25 03:16:05 +00:00
Chris Lattner
5f73e38548 Big programs have tons of global variable initializers, and most passes don't care
about them.  Try to delete them if it doesn't affect the passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5918 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-25 00:53:05 +00:00
Chris Lattner
16608b4c85 When cleaning up the final bytecode file, make sure to run DTE as well
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5917 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-25 00:52:30 +00:00
Chris Lattner
286921e8d2 Speed up convergence significantly and also reduce the size of testcases by making large portions of a function's CFG dead at a time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5915 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-24 23:51:38 +00:00
Chris Lattner
f607b79bc7 The big fix is this change:
-    if (I->isExternal() && !Functions.count(I))
+    if (!I->isExternal() && !Functions.count(I))

We were not actually deleting any functions from the module!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5914 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-24 22:54:06 +00:00
Chris Lattner
44be257166 Remove dead functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5913 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-24 22:53:24 +00:00
Chris Lattner
473a843f31 Make sure that deleted functions have external linkage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5912 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-24 22:53:01 +00:00
Chris Lattner
aae33f9137 Use the list reducer to improve convergence speed and to support crashes that
only occur when multiple passes interact or when multiple functions exist in a module


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5911 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-24 22:24:58 +00:00
Chris Lattner
39aebca3a2 Adjust to match new ListReducer interface
Move function to generic code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5910 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-24 22:24:22 +00:00
Chris Lattner
b4ebe13643 Allow reducer interfaces to mutate the lists passed in
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5909 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-24 22:23:56 +00:00
Chris Lattner
ff4aaf0010 Move function from Miscompilation.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5908 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-24 22:23:34 +00:00
Chris Lattner
126840f49e Move the ListReducer Class into it's own header file instead of living in Miscompilation.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5907 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-24 20:16:29 +00:00
Chris Lattner
a148ccb158 Allow bugpoint to try new an different methods for pruning down lists
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5905 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-24 19:32:42 +00:00
Chris Lattner
9c3b55ea9f Make sure to create a target data that matches the Module's target properties.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5904 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-24 19:13:02 +00:00
Chris Lattner
c986392c30 Remove support for "target data" pass ctors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5900 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-24 18:36:41 +00:00
Chris Lattner
640f22e66d Implement support for bugpoint to identify which FUNCTION an optimization
is miscompiling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5893 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-24 17:02:17 +00:00
Chris Lattner
eea21dd91c Print where reference output goes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5891 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-23 20:41:18 +00:00
Chris Lattner
3c053a0a98 Allow specifying an input file for the program being executed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5888 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-23 20:31:37 +00:00
Chris Lattner
6e96a99ce3 Remove unnecessary &*
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5873 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-23 16:38:00 +00:00
Chris Lattner
10f22cb1a0 Make sure that intermediate code is verifier clean to avoid wierd problems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5723 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-07 18:17:13 +00:00
Chris Lattner
ba386d943f * Reduce the number of useless bytecode files produced by bugpoint.
- This also speeds it up as the bytecode writer isn't terribly fast.
* Add a new cleanup pass after everything else to run -funcresolve -globaldce


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5668 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-28 16:13:20 +00:00
Chris Lattner
3301b695cb Fix build problem on sparc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5428 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-29 18:15:34 +00:00
Chris Lattner
6520785dcd Make bugpoint *much* more powerful, giving it the capability to delete instructions
out of a large function to reduce it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5408 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-23 02:48:33 +00:00
Chris Lattner
f2bcccfbab Allow creating of passes like levelraise which use a targetdata ctor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5403 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-22 23:24:11 +00:00
Chris Lattner
66de1893bc Link in lots o libraries
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5269 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-14 21:30:30 +00:00
Chris Lattner
e1b52b7656 Fix compilation on GCC 3.2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5136 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:44:34 +00:00
Chris Lattner
4a10645c70 New files for miscompilation detection
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5120 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-23 23:50:16 +00:00
Chris Lattner
218e26ef35 Implement the start of the miscompilation detection stuff
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5119 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-23 23:49:59 +00:00
Chris Lattner
afade9294a Initial checkin of bugpoint
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4789 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-20 22:28:10 +00:00