Misha Brukman [Mon, 28 Jul 2003 19:09:06 +0000 (19:09 +0000)]
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7363
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Mon, 28 Jul 2003 19:07:30 +0000 (19:07 +0000)]
Clean up code dealing with RTLD_SELF differences on Sparc and X86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7362
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Mon, 28 Jul 2003 19:06:50 +0000 (19:06 +0000)]
Fix reference to architecture.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7361
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Mon, 28 Jul 2003 19:06:19 +0000 (19:06 +0000)]
Add in support to load shared objects (-load is provided by Support library).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7360
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Mon, 28 Jul 2003 16:53:28 +0000 (16:53 +0000)]
Removed extra parenthesis and fixed spelling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7359
91177308-0d34-0410-b5e6-
96231b3b80d8
Tanya Lattner [Mon, 28 Jul 2003 16:42:33 +0000 (16:42 +0000)]
Need to include <string> to fix compile error on Sun
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7358
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 28 Jul 2003 04:25:36 +0000 (04:25 +0000)]
Specify the value type for the register, not just the size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7357
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 28 Jul 2003 04:24:59 +0000 (04:24 +0000)]
Instead of specifying the SIZE of the register, go so far as to specify
what value type it is.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7356
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 28 Jul 2003 03:49:40 +0000 (03:49 +0000)]
Add support for Set statements without {}'s. Now we can just say
set Foo = bar in
def blah: blahclass {}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7355
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 28 Jul 2003 03:39:57 +0000 (03:39 +0000)]
Allow initializing variable initializers with variables
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7354
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 27 Jul 2003 00:28:10 +0000 (00:28 +0000)]
Somehow "simplest" test became a hello world test. Rectify this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7353
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 26 Jul 2003 23:49:58 +0000 (23:49 +0000)]
Rename function to be more consistent with filename
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7352
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 26 Jul 2003 23:30:37 +0000 (23:30 +0000)]
Code generation phases are not allowed to modify the LLVM representation.
Because of this, we'll make the MBB->BB mapping const as it should be
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7351
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 26 Jul 2003 23:29:51 +0000 (23:29 +0000)]
Making this code const-correct would be a pain, so I'll hack it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7350
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 26 Jul 2003 23:24:56 +0000 (23:24 +0000)]
Const correctness fixes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7349
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 26 Jul 2003 23:23:41 +0000 (23:23 +0000)]
Be const correct
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7348
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 26 Jul 2003 23:22:19 +0000 (23:22 +0000)]
Hrm, another necesary one :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7347
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 26 Jul 2003 23:18:11 +0000 (23:18 +0000)]
Whoops, this one was needed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7346
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 26 Jul 2003 23:06:00 +0000 (23:06 +0000)]
We don't modify the LLVM rep, remain const correct
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7345
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 26 Jul 2003 23:05:37 +0000 (23:05 +0000)]
If the pass changes _anything_ it must return true
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7344
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 26 Jul 2003 23:04:00 +0000 (23:04 +0000)]
This code doesn't modify the LLVM structure, keep stuff const
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7343
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 26 Jul 2003 23:01:04 +0000 (23:01 +0000)]
Remove #include
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7342
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 26 Jul 2003 23:00:29 +0000 (23:00 +0000)]
Remove extraneous #includes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7341
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 26 Jul 2003 23:00:05 +0000 (23:00 +0000)]
Fix another minor bug
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7340
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 26 Jul 2003 22:56:46 +0000 (22:56 +0000)]
Remove #includes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7339
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 22:26:17 +0000 (22:26 +0000)]
Simplify some makefile magic, no functional changes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7336
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 21:13:16 +0000 (21:13 +0000)]
Add fixmes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7335
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Fri, 25 Jul 2003 21:12:15 +0000 (21:12 +0000)]
(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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7334
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 21:09:42 +0000 (21:09 +0000)]
This test has been automatized
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7333
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 21:09:20 +0000 (21:09 +0000)]
Update to use more modern graph checker
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7332
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 21:09:11 +0000 (21:09 +0000)]
New testcase, an automatized version of Vikrams ggcollapse.c file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7331
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Fri, 25 Jul 2003 21:08:58 +0000 (21:08 +0000)]
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7330
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Fri, 25 Jul 2003 21:06:09 +0000 (21:06 +0000)]
(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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7329
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Fri, 25 Jul 2003 21:01:43 +0000 (21:01 +0000)]
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7328
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Fri, 25 Jul 2003 21:00:13 +0000 (21:00 +0000)]
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).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7327
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Fri, 25 Jul 2003 20:58:57 +0000 (20:58 +0000)]
Add an assertion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7326
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 20:55:08 +0000 (20:55 +0000)]
Remove testcase which has been automatized
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7325
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 20:53:58 +0000 (20:53 +0000)]
Checkin of Vikram's ggfuncptr.c test adapted for automatic checking
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7324
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 20:49:29 +0000 (20:49 +0000)]
Dont' try to parse the colon
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7323
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 20:45:40 +0000 (20:45 +0000)]
Add a more general check-flags which can be used to ensure arbitrary flags are set
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7322
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Fri, 25 Jul 2003 20:21:20 +0000 (20:21 +0000)]
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7321
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Fri, 25 Jul 2003 20:21:06 +0000 (20:21 +0000)]
Don't include llvm/SlotCalculator.h, or <set>.
Move up the inclusion of llvm/Support/Mangler.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7320
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Fri, 25 Jul 2003 20:20:53 +0000 (20:20 +0000)]
Forward-declare class Module to make the header file self-contained.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7319
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 18:06:53 +0000 (18:06 +0000)]
More cassert inclusion for GCC 3.3
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7318
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 18:05:51 +0000 (18:05 +0000)]
Change reference to assert.h to mention cassert
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7317
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 18:05:38 +0000 (18:05 +0000)]
Brian implemented the static compiler, take it off the list
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7316
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 17:58:41 +0000 (17:58 +0000)]
#include <cassert> as necessary...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7315
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 17:49:28 +0000 (17:49 +0000)]
Fix another accessibility problem illuminated by GCC 3.3
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7314
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 17:46:25 +0000 (17:46 +0000)]
Fix visibility problem exposed by GCC 3.3
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7313
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 17:39:33 +0000 (17:39 +0000)]
Remove inline declarations that GCC 3.3 doesn't like without a body
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7312
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 17:35:03 +0000 (17:35 +0000)]
Regardless of whether C provides assert.h, C++ source can always include
<cassert>, making this header unneeded.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7311
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 17:34:17 +0000 (17:34 +0000)]
Use the C++ <cassert> header, not the C <assert.h> header
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7310
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 17:33:45 +0000 (17:33 +0000)]
This header works with GCC 3.3
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7309
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 17:32:51 +0000 (17:32 +0000)]
Use C++ headers, not C headers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7308
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 17:23:27 +0000 (17:23 +0000)]
Add includes of assert
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7307
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 17:23:13 +0000 (17:23 +0000)]
Fix accessibility problems GCC 3.3
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7306
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 16:47:07 +0000 (16:47 +0000)]
Add assert.h include
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7305
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 25 Jul 2003 15:08:08 +0000 (15:08 +0000)]
Convert to C++ style comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7304
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Fri, 25 Jul 2003 14:06:13 +0000 (14:06 +0000)]
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7303
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Thu, 24 Jul 2003 21:59:10 +0000 (21:59 +0000)]
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
Brian Gaeke [Thu, 24 Jul 2003 21:37:57 +0000 (21:37 +0000)]
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>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7301
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Thu, 24 Jul 2003 20:20:58 +0000 (20:20 +0000)]
Factor out name-mangling from X86/Printer, which is derived from CWriter,
into this new support class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7300
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Thu, 24 Jul 2003 20:20:44 +0000 (20:20 +0000)]
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.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7299
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 24 Jul 2003 19:44:51 +0000 (19:44 +0000)]
More testcases, which I'll implement later
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7298
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 24 Jul 2003 19:42:28 +0000 (19:42 +0000)]
Modernize testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7297
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 24 Jul 2003 19:31:08 +0000 (19:31 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7296
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 24 Jul 2003 18:38:56 +0000 (18:38 +0000)]
Instcombine: (A >> c1) << c2 for signed integers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7295
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 24 Jul 2003 18:38:09 +0000 (18:38 +0000)]
New testcases for signed shifts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7294
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Thu, 24 Jul 2003 18:17:43 +0000 (18:17 +0000)]
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
Chris Lattner [Thu, 24 Jul 2003 17:52:58 +0000 (17:52 +0000)]
Reorganization of code, no functional changes.
Now it shoudl be a bit more efficient
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7292
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Thu, 24 Jul 2003 17:48:53 +0000 (17:48 +0000)]
It doesn't appear that we need to #include these.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7291
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 24 Jul 2003 17:35:25 +0000 (17:35 +0000)]
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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7290
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 24 Jul 2003 17:31:56 +0000 (17:31 +0000)]
Minor cleanups
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7289
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Thu, 24 Jul 2003 17:30:45 +0000 (17:30 +0000)]
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7288
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 23:28:57 +0000 (23:28 +0000)]
Disable sample project until it works
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7287
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 23:21:08 +0000 (23:21 +0000)]
Add new tests, make existing tests more difficult
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7286
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 22:03:18 +0000 (22:03 +0000)]
Fix bug: FunctionResolve/2003-07-23-CPR-Reference.ll
This fixes a long time annoyance which caused prototypes for bzero, bcopy,
bcmp, fputs, and fputs_unlocked to never get deleted. Grr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7285
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 22:02:39 +0000 (22:02 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7284
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 21:41:57 +0000 (21:41 +0000)]
Add comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7283
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 21:37:07 +0000 (21:37 +0000)]
Remove explicit check for: not (not X) = X, it is already handled because xor is commutative
- InstCombine: (X & C1) ^ C2 --> (X & C1) | C2 iff (C1&C2) == 0
- InstCombine: (X | C1) ^ C2 --> (X | C1) & ~C2 iff (C1&C2) == C2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7282
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 21:36:01 +0000 (21:36 +0000)]
New testcases
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7281
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 21:11:56 +0000 (21:11 +0000)]
Renumber tests sequentially
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7280
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 21:10:55 +0000 (21:10 +0000)]
Split the or and xor tests into two separate files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7279
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 21:06:34 +0000 (21:06 +0000)]
Remove obscure test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7278
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 20:48:03 +0000 (20:48 +0000)]
Check in old testcase sitting in my tree
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7277
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 20:45:31 +0000 (20:45 +0000)]
Fix program: SingleSource/UnitTests/2003-07-09-SignedArgs with the CBE
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7276
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Wed, 23 Jul 2003 20:25:08 +0000 (20:25 +0000)]
Printer.cpp: Ditch addRequired/getAnalysis, because they leave
Printer::doFinalization() out in the cold. Now we pass in a TargetMachine
to Printer's constructor and get the TargetData from the TargetMachine.
Don't pass TargetMachine or MRegisterInfo objects around in the Printer.
Constify TargetData references.
X86.h: Update comment and prototype of createX86CodePrinterPass().
X86TargetMachine.cpp: Update callers of createX86CodePrinterPass().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7275
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 20:21:30 +0000 (20:21 +0000)]
Make Module::getNamedFunction prefer non-external functions if there is more than
one function of the same name
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7274
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 20:21:06 +0000 (20:21 +0000)]
Fix space
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7273
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 19:36:21 +0000 (19:36 +0000)]
InstCombine: (X ^ C1) & C2 --> (X & C2) iff (C1&C2) == 0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7272
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 19:35:51 +0000 (19:35 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7271
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 19:25:52 +0000 (19:25 +0000)]
- InstCombine: (X | C1) & C2 --> X & C2 iff C1 & C1 == 0
- InstCombine: (X | C) & C --> C
- InstCombine: (X | C1) & C2 --> (X | (C1&C2)) & C2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7269
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 19:24:34 +0000 (19:24 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7267
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 19:05:29 +0000 (19:05 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7266
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Wed, 23 Jul 2003 18:37:06 +0000 (18:37 +0000)]
Add, rewrite, and/or reformat many comments.
Stop passing ostreams around: we already have one perfectly good ostream
and we can all share it.
Stop stashing a pointer to TargetData in the Pass object, because that will
lead to a crash if there are no functions in the module (ouch!) Instead,
use addRequired() and getAnalysis(), like we always should have done.
Move the check for ConstantExpr up before the check for isPrimitiveType,
because we need to be able to catch e.g. ubyte (cast bool false to ubyte),
whose type is primitive but which is nevertheless a ConstantExpr, by calling
our specialized handler instead of the AsmWriter. This would result in
assembler errors when we would try to output something like ".byte (cast
bool false to ubyte)".
GC some unused variable declarations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7265
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 18:29:44 +0000 (18:29 +0000)]
IC: (X & C1) | C2 --> (X | C2) & (C1|C2)
IC: (X ^ C1) | C2 --> (X | C2) ^ (C1&~C2)
We are now guaranteed that all 'or's will be inside of 'and's, and all 'and's
will be inside of 'xor's, if the second operands are constants.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7264
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 18:28:42 +0000 (18:28 +0000)]
New testcases
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7263
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 17:57:01 +0000 (17:57 +0000)]
IC: (X ^ C1) & C2 --> (X & C2) ^ (C1&C2)
Minor code cleanup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7262
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 17:56:34 +0000 (17:56 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7261
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 23 Jul 2003 17:26:36 +0000 (17:26 +0000)]
InstCombine: (X ^ 4) == 8 --> X == 12
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7260
91177308-0d34-0410-b5e6-
96231b3b80d8