Commit Graph

266348 Commits

Author SHA1 Message Date
Chris Lattner 25dc00904c Remove #includes
llvm-svn: 7339
2003-07-26 22:56:46 +00:00
Chris Lattner bb234685ec Simplify some makefile magic, no functional changes
llvm-svn: 7336
2003-07-25 22:26:17 +00:00
Chris Lattner b8d6e590f1 Add fixmes
llvm-svn: 7335
2003-07-25 21:13:16 +00:00
Vikram S. Adve 536b19220c (1) Major fix to the way unused regs. are marked and found for the FP
Single and FP double reg types (which share the same reg class).
    Now all methods marking/finding unused regs consider the regType
    within the reg class, and SparcFloatRegClass specializes this code.
(2) Remove machine-specific regalloc. methods that are no longer needed.
    In particular, arguments and return value from a call do not need
    machine-specific code for allocation.
(3) Rename TargetRegInfo::getRegType variants to avoid unintentional
    overloading when an include file is omitted.

llvm-svn: 7334
2003-07-25 21:12:15 +00:00
Chris Lattner 995a97c3ef This test has been automatized
llvm-svn: 7333
2003-07-25 21:09:42 +00:00
Chris Lattner 62d02dc33a Update to use more modern graph checker
llvm-svn: 7332
2003-07-25 21:09:20 +00:00
Chris Lattner 6533e211d2 New testcase, an automatized version of Vikrams ggcollapse.c file
llvm-svn: 7331
2003-07-25 21:09:11 +00:00
Vikram S. Adve 9b17ad16c4 1. Fix a case that was marking the invalid reg. num. (-1) as used,
causing a nasty array bound error later.
2. Fix silly typo causing logical shift of unsigned long to use
   SRL instead of SRLX.

llvm-svn: 7330
2003-07-25 21:08:58 +00:00
Vikram S. Adve 45766ab682 (1) Change the way unused regs. are marked and found to consider regType
info (since multiple reg types may share the same reg class).
(2) Remove machine-specific regalloc. methods that are no longer needed.
    In particular, arguments and return value from a call do not need
    machine-specific code for allocation.
(3) Rename TargetRegInfo::getRegType variants to avoid unintentional
    overloading when an include file is omitted.

llvm-svn: 7329
2003-07-25 21:06:09 +00:00
Vikram S. Adve a33b1d1d74 Change the way unused regs. are marked and found to consider regType
info (since multiple reg types may share the same reg class).
Remove machine-specific regalloc. methods that are no longer needed.

llvm-svn: 7328
2003-07-25 21:01:43 +00:00
Vikram S. Adve abcd8d75ff Remove unused field. Change the way unused regs. are marked and
found to consider regType info (since multiple reg types may share
the same reg class, e.g., single and double on Sparc).

llvm-svn: 7327
2003-07-25 21:00:13 +00:00
Vikram S. Adve 51fca80cc5 Add an assertion.
llvm-svn: 7326
2003-07-25 20:58:57 +00:00
Chris Lattner d1945f896b Remove testcase which has been automatized
llvm-svn: 7325
2003-07-25 20:55:08 +00:00
Chris Lattner 561d1e6e1d Checkin of Vikram's ggfuncptr.c test adapted for automatic checking
llvm-svn: 7324
2003-07-25 20:53:58 +00:00
Chris Lattner d504c33746 Dont' try to parse the colon
llvm-svn: 7323
2003-07-25 20:49:29 +00:00
Chris Lattner 39e89fe443 Add a more general check-flags which can be used to ensure arbitrary flags are set
llvm-svn: 7322
2003-07-25 20:45:40 +00:00
Brian Gaeke b0078fabea Include llvm/Support/Mangler.h first. Don't include <iostream>, <set>,
<string>, or llvm/Value.h.  Move up the inclusion of llvm/Support/Mangler.h.

llvm-svn: 7321
2003-07-25 20:21:20 +00:00
Brian Gaeke 3d35fad525 Don't include llvm/SlotCalculator.h, or <set>.
Move up the inclusion of llvm/Support/Mangler.h.

llvm-svn: 7320
2003-07-25 20:21:06 +00:00
Brian Gaeke bc1f6f59a1 Forward-declare class Module to make the header file self-contained.
llvm-svn: 7319
2003-07-25 20:20:53 +00:00
Chris Lattner 980e4253bc More cassert inclusion for GCC 3.3
llvm-svn: 7318
2003-07-25 18:06:53 +00:00
Chris Lattner 68bb8f00c0 Change reference to assert.h to mention cassert
llvm-svn: 7317
2003-07-25 18:05:51 +00:00
Chris Lattner 4cd484f562 Brian implemented the static compiler, take it off the list
llvm-svn: 7316
2003-07-25 18:05:38 +00:00
Chris Lattner 29e525a33f #include <cassert> as necessary...
llvm-svn: 7315
2003-07-25 17:58:41 +00:00
Chris Lattner 33d5102f54 Fix another accessibility problem illuminated by GCC 3.3
llvm-svn: 7314
2003-07-25 17:49:28 +00:00
Chris Lattner 659ad62df1 Fix visibility problem exposed by GCC 3.3
llvm-svn: 7313
2003-07-25 17:46:25 +00:00
Chris Lattner e66e7d75bf Remove inline declarations that GCC 3.3 doesn't like without a body
llvm-svn: 7312
2003-07-25 17:39:33 +00:00
Chris Lattner 0c09a89bda Regardless of whether C provides assert.h, C++ source can always include
<cassert>, making this header unneeded.

llvm-svn: 7311
2003-07-25 17:35:03 +00:00
Chris Lattner 7a8412cc95 Use the C++ <cassert> header, not the C <assert.h> header
llvm-svn: 7310
2003-07-25 17:34:17 +00:00
Chris Lattner 88ee89f4a9 This header works with GCC 3.3
llvm-svn: 7309
2003-07-25 17:33:45 +00:00
Chris Lattner 5526a4468a Use C++ headers, not C headers
llvm-svn: 7308
2003-07-25 17:32:51 +00:00
Chris Lattner b917db15f1 Add includes of assert
llvm-svn: 7307
2003-07-25 17:23:27 +00:00
Chris Lattner 8918af9b0f Fix accessibility problems GCC 3.3
llvm-svn: 7306
2003-07-25 17:23:13 +00:00
Chris Lattner 893d0b86df Add assert.h include
llvm-svn: 7305
2003-07-25 16:47:07 +00:00
Chris Lattner 707ececebc Convert to C++ style comments
llvm-svn: 7304
2003-07-25 15:08:08 +00:00
Vikram S. Adve 49155b50ba Include vector into these two files to ensure that specializations like
stl_bvector.h are correctly included into *anything* that includes hash_map
or hash_set.  ext/hash_map includes stl_vector.h directly and leaves
out the specializations, causing truly nasty bugs due to inconsistent
versions of vector<> being used for vector<bool> in different files.

llvm-svn: 7303
2003-07-25 14:06:13 +00:00
Misha Brukman 0fd3172754 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.

llvm-svn: 7302
2003-07-24 21:59:10 +00:00
Brian Gaeke 356f3289fe Cleanups:
Mangler.cpp: Constify parameter to makeNameProper, and use const_iterator.
 Make Count an unsigned int, and use utostr().
 Don't name parameters things that start with underscore.
Mangler.h: All of the above, and also: Add Emacs mode-line.  Include <set>.

llvm-svn: 7301
2003-07-24 21:37:57 +00:00
Brian Gaeke d4dff190a4 Factor out name-mangling from X86/Printer, which is derived from CWriter,
into this new support class.

llvm-svn: 7300
2003-07-24 20:20:58 +00:00
Brian Gaeke 46f8b71376 Use unified CWriter-X86/Printer name mangler. Do not bother using
SlotCalculator in CWriter.  (Unfortunately, all this means a lot of
X86/Printer's methods have to be de-constified again.  Oh well.)

llvm-svn: 7299
2003-07-24 20:20:44 +00:00
Chris Lattner daff644d47 More testcases, which I'll implement later
llvm-svn: 7298
2003-07-24 19:44:51 +00:00
Chris Lattner 4f6a4119c3 Modernize testcase
llvm-svn: 7297
2003-07-24 19:42:28 +00:00
Chris Lattner 6dc37abe72 New testcase
llvm-svn: 7296
2003-07-24 19:31:08 +00:00
Chris Lattner ab780dfab5 Instcombine: (A >> c1) << c2 for signed integers
llvm-svn: 7295
2003-07-24 18:38:56 +00:00
Chris Lattner 9e2dc8924a New testcases for signed shifts
llvm-svn: 7294
2003-07-24 18:38:09 +00:00
Misha Brukman d792c9bb46 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.

llvm-svn: 7293
2003-07-24 18:17:43 +00:00
Chris Lattner 3204d4ed4e Reorganization of code, no functional changes.
Now it shoudl be a bit more efficient

llvm-svn: 7292
2003-07-24 17:52:58 +00:00
Brian Gaeke 0054c3b5b3 It doesn't appear that we need to #include these.
llvm-svn: 7291
2003-07-24 17:48:53 +00:00
Chris Lattner dfae8be3c9 Allow folding several instructions into casts, which can simplify a lot
of codes.  For example,
short kernel (short t1) {
  t1 >>= 8; t1 <<= 8;
  return t1;
}

became:

short %kernel(short %t1.1) {
        %tmp.3 = shr short %t1.1, ubyte 8               ; <short> [#uses=1]
        %tmp.5 = cast short %tmp.3 to int               ; <int> [#uses=1]
        %tmp.7 = shl int %tmp.5, ubyte 8                ; <int> [#uses=1]
        %tmp.8 = cast int %tmp.7 to short               ; <short> [#uses=1]
        ret short %tmp.8
}

before, now it becomes:
short %kernel(short %t1.1) {
        %tmp.3 = shr short %t1.1, ubyte 8               ; <short> [#uses=1]
        %tmp.8 = shl short %tmp.3, ubyte 8              ; <short> [#uses=1]
        ret short %tmp.8
}

which will become:
short %kernel(short %t1.1) {
        %tmp.3 = and short %t1.1, 0xFF00
        ret short %tmp.3
}

This implements cast-set.ll:test4 and test5

llvm-svn: 7290
2003-07-24 17:35:25 +00:00
Chris Lattner 727c03a665 Minor cleanups
llvm-svn: 7289
2003-07-24 17:31:56 +00:00
Brian Gaeke 391f69b0ff Constify most methods. We could have constified doInitialization and
doFinalization too except that would have made them shadow, not override,
the parent class :-P.

Allow *any* constant cast expression between pointers and longs,
or vice-versa, or any widening (not just same-size) conversion that
isLosslesslyConvertibleTo approves. This fixes oopack.

llvm-svn: 7288
2003-07-24 17:30:45 +00:00