1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-30 07:22:55 +01:00
Commit Graph

5077 Commits

Author SHA1 Message Date
John Criswell
0659bb0c4a Merged in RELEASE_11.
llvm-svn: 10516
2003-12-18 16:43:17 +00:00
Alkis Evlogimenos
f6e9dd4942 Modify linear scan register allocator to use the two-address
instruction pass. This also fixes all remaining bugs for this new
allocator to pass all tests under test/Programs.

llvm-svn: 10515
2003-12-18 13:15:02 +00:00
Alkis Evlogimenos
9bb0ad1a37 Fix bug in reserved registers. DH actually aliases DX and EDX which
are not reserved registers.

llvm-svn: 10514
2003-12-18 13:12:18 +00:00
Alkis Evlogimenos
48d20cb328 Modify local register allocator to use the two-address instruction pass.
llvm-svn: 10513
2003-12-18 13:08:52 +00:00
Alkis Evlogimenos
90aeecae42 Add TwoAddressInstructionPass to handle instructions that have two or
more operands and the two first operands are constrained to be the
same. The pass takes an instruction of the form:

        a = b op c

and transforms it into:

        a = b
        a = a op c

and also preserves live variables.

llvm-svn: 10512
2003-12-18 13:06:04 +00:00
Alkis Evlogimenos
befef566f6 Rename LiveIntervals::expired() to LiveIntervals::expiredAt().
llvm-svn: 10511
2003-12-18 08:56:11 +00:00
Alkis Evlogimenos
382bfbffeb When a variable is killed and redifined in a basic block only one
killing instruction is tracked. This causes the LiveIntervals to
create bogus intervals. The workaound is to add a range to the
interval from the redefinition to the end of the basic block.

llvm-svn: 10510
2003-12-18 08:53:43 +00:00
Alkis Evlogimenos
8e2fcc7d79 Handle multiple virtual register definitions gracefully.
Move some of the longer LiveIntervals::Interval method out of the
header and add debug information to them. Fix bug and simplify range
merging code.

llvm-svn: 10509
2003-12-18 08:48:48 +00:00
Chris Lattner
17122cbe7b When we delete instructions from the loop, make sure to remove them from the
AliasSetTracker as well.

llvm-svn: 10507
2003-12-18 08:12:32 +00:00
Chris Lattner
457dd0b6c7 Add a new AliassetTracker::remove method. Because we need to be able to remove
a pointer from an AliasSet, maintain the pointer values on a doubly linked
list instead of a singly linked list, to permit efficient removal from the
middle of the list.

llvm-svn: 10506
2003-12-18 08:11:56 +00:00
Misha Brukman
adac37e69b * Converted C-style comments to C++
* Doxygenified comments
* Reordered #includes

llvm-svn: 10503
2003-12-17 22:08:20 +00:00
Misha Brukman
61860852dc Reordered #includes.
llvm-svn: 10502
2003-12-17 22:06:28 +00:00
Misha Brukman
9f2f87bb6b Doxygenified some comments, reduced extraneous space.
llvm-svn: 10501
2003-12-17 22:06:08 +00:00
Misha Brukman
fe533cc4e6 Reorganized the Sparc backend to be more modular -- each different
implementation of a Target{RegInfo, InstrInfo, Machine, etc} now has a separate
header and a separate implementation file.

This means that instead of a massive SparcInternals.h that forces a
recompilation of the whole target whenever a minor detail is changed, you should
only recompile a few files.

Note that SparcInternals.h is still around; its contents should be minimized.

llvm-svn: 10500
2003-12-17 22:04:00 +00:00
Brian Gaeke
81d68517ea Make getObjectType() smarter about ranlibbed Mac OS X archives.
llvm-svn: 10493
2003-12-17 00:18:18 +00:00
Chris Lattner
062d3a4ab5 Fix for PR185 & IndVarsSimplify/2003-12-15-Crash.llx
llvm-svn: 10473
2003-12-15 17:34:02 +00:00
Alkis Evlogimenos
657eb40294 Change preserve all claim to just preserve live variables and phielimination.
llvm-svn: 10469
2003-12-15 04:55:38 +00:00
Chris Lattner
5fc36a496f Refactor code just a little bit, allowing us to implement TailCallElim/return_constant.ll
llvm-svn: 10467
2003-12-14 23:57:39 +00:00
Chris Lattner
9047cde657 Finegrainify namespacification
llvm-svn: 10465
2003-12-14 23:25:48 +00:00
Chris Lattner
2fdf5e32aa Finegrainify namespacification
llvm-svn: 10464
2003-12-14 21:35:53 +00:00
Chris Lattner
30ae898eb7 Finegrainify namespacification
Make the Timer code give correct user/system/user+system times when -track-memory is enabled

llvm-svn: 10463
2003-12-14 21:27:33 +00:00
Alkis Evlogimenos
29127b8825 Change interface of MachineOperand as follows:
a) remove opIsUse(), opIsDefOnly(), opIsDefAndUse()
    b) add isUse(), isDef()
    c) rename opHiBits32() to isHiBits32(),
              opLoBits32() to isLoBits32(),
              opHiBits64() to isHiBits64(),
              opLoBits64() to isLoBits64().

This results to much more readable code, for example compare
"op.opIsDef() || op.opIsDefAndUse()" to "op.isDef()" a pattern used
very often in the code.

llvm-svn: 10461
2003-12-14 13:24:17 +00:00
Alkis Evlogimenos
b96436e679 Change preserve all claim to just preserve live variables and phielimination.
llvm-svn: 10460
2003-12-14 10:14:23 +00:00
Chris Lattner
0d3a8b1cb4 Do not promote volatile alias sets into registers
llvm-svn: 10458
2003-12-14 04:52:31 +00:00
Chris Lattner
a9d238d598 Finegrainify namespacification
Add capability to represent volatile AliasSet's
Propagate this information from loads&stores into the aliassets

llvm-svn: 10457
2003-12-14 04:52:11 +00:00
Alkis Evlogimenos
d58f58b351 When reserving a preallocated register spill the aliases of this
register too.

llvm-svn: 10450
2003-12-13 11:58:10 +00:00
Alkis Evlogimenos
f84f86137b Ignore non-allocatable physical registers in live interval analysis.
llvm-svn: 10449
2003-12-13 11:11:02 +00:00
Alkis Evlogimenos
18bf6b5ad7 Expire any active intervals left when register allocation is done.
llvm-svn: 10448
2003-12-13 05:50:19 +00:00
Alkis Evlogimenos
225fc9c6db Add instruction numbers to debugging output.
llvm-svn: 10447
2003-12-13 05:48:57 +00:00
Alkis Evlogimenos
5ca15c8f5e Add a floating point killer pass. This pass runs before register
allocaton on the X86 to add information to the machine code denoting
that our floating point stackifier cannot handle virtual point
register that are alive across basic blocks. This pass adds an
implicit def of all virtual floating point register at the end of each
basic block.

llvm-svn: 10446
2003-12-13 05:36:22 +00:00
Alkis Evlogimenos
2a41fcbef3 Handle explicit physical register defs.
llvm-svn: 10445
2003-12-13 05:26:39 +00:00
Alkis Evlogimenos
6e511754e5 Remove unecessary if statements when looping on ImplicitDefs.
llvm-svn: 10444
2003-12-13 01:20:58 +00:00
John Criswell
93c209e4ac Modified cast so that it converts the int to a long before casting to
a pointer.  This evades a warning emitted by GCC when we cast from
unsigned int (32 bit) to void * (64 bit) on SparcV9.

llvm-svn: 10435
2003-12-12 19:57:48 +00:00
Brian Gaeke
84101bcdb8 Dynamically get the right-sized member of a GenericValue to hold a size_t, and
use it to return the result of strlen.

llvm-svn: 10433
2003-12-12 15:38:06 +00:00
Chris Lattner
f58e098889 Implement the ExecutionEngine::getPointerToFunctionOrStub by forwarding the
request on to the TargetMachine if it supports the getJITStubForFunction method

llvm-svn: 10431
2003-12-12 07:12:02 +00:00
Chris Lattner
b750a0cf3a Implement the TargetMachine::getJITStubForFunction method for X86, finegrainify
namespacification.

llvm-svn: 10430
2003-12-12 07:11:18 +00:00
Brian Gaeke
fb0c4c3d39 Since we are using a gep_type_iterator, we apparently must get the type
index by using I.getOperand() here. This was failing an assertion on
basically every struct access.

llvm-svn: 10426
2003-12-12 05:13:05 +00:00
Brian Gaeke
94157211b6 Throw better error messages, by calling strerror(errno) when we
get an error inside the bytecode reader.

llvm-svn: 10415
2003-12-12 00:47:44 +00:00
Chris Lattner
f9c24d19cf Factor out some duplicated code, implement the rest of the cases in
BasicAA/2003-12-11-ConstExprGEP.ll

llvm-svn: 10412
2003-12-11 23:20:16 +00:00
Chris Lattner
2185bd56cc Fix PR86. This makes basicaa _SIGNIFICANLY_ more aggressive with getelementptr's
llvm-svn: 10410
2003-12-11 22:44:13 +00:00
Chris Lattner
1f7737b44f Fix LICM/2003-12-11-SinkingToPHI.ll, and quite possibly all of the other known problems in the universe.
llvm-svn: 10409
2003-12-11 22:23:32 +00:00
Chris Lattner
89c05af2e2 Finegrainify namespacification
Add new -print-cfg-only pass

llvm-svn: 10407
2003-12-11 21:48:18 +00:00
Chris Lattner
bba48ffc66 verifyFunction depends on dominator info, which levelraise does not declare
that it needs.  This is pretty scary code!  This fixes

Regression.Transforms.LevelRaise.2002-07-16-SourceAndDestCrash
Regression.Transforms.LevelRaise.2002-07-31-AssertionFailure

llvm-svn: 10406
2003-12-11 21:47:37 +00:00
Chris Lattner
a1ddf56288 Fix a glaring bug
llvm-svn: 10400
2003-12-11 06:06:28 +00:00
Chris Lattner
3245f523d9 Realize the gep P, <zeros> must aliases P.
This is a partial fix for PR 86

llvm-svn: 10399
2003-12-11 06:02:00 +00:00
Chris Lattner
99253d6580 With Brian's change to AA.h we can now clean out this uglyness
llvm-svn: 10398
2003-12-11 05:44:59 +00:00
Brian Gaeke
9b3f9806a2 IncludeFile hack to pull in BasicValueNumbering whenever ValueNumbering.h
is included.

llvm-svn: 10397
2003-12-11 05:05:56 +00:00
Brian Gaeke
e962a55ac5 In getObjectType(), doxygenify comment, and take a pointer to the
beginning of the archive member data as an argument.

Get rid of ParseLongFilenameSection(), which is dead.

In ReadArchiveBuffer(), implement support for 4.4BSD/MacOSX long filenames.
This is kind of invasive, because they prepend the long filename to the archive
member data, and then lie about the size. So we have to keep track of the real
size.

llvm-svn: 10392
2003-12-11 00:38:04 +00:00
Brian Gaeke
89478047a8 Turn off "attribute weak" to pacify Mac OS X's system compiler, which prints a
warning whenever it sees it.

llvm-svn: 10391
2003-12-11 00:24:36 +00:00
Brian Gaeke
7fe399f169 Fix typo in comment. Add prototype for getConstantExprValue().
llvm-svn: 10390
2003-12-11 00:23:28 +00:00
Brian Gaeke
e7599245cb Add support for --debug-only=interpreter, to print out instrs before
interpreting them.

Move support for getting the value of a ConstantExpr into
getConstantExprValue(), and add support for the rest of the different
kinds of ConstantExprs.  (I don't think I like ConstantExprs!)
This requires separate procedures executeShlInst() and executeShrInst().

Reduce the number of references to TheEE.

Get rid of an old comment mentioning annotations.

Fix exitCalled(), which was crashing the Interpreter. This was a
leftover from the return-value code refactoring.

llvm-svn: 10389
2003-12-11 00:22:59 +00:00
John Criswell
ea48d9cd13 This appears to fix Bug 172 and does not break any other feature tests or
regression tests.

llvm-svn: 10388
2003-12-10 22:51:41 +00:00
Chris Lattner
6eae2a120e Fix bug: LICM/sink_multiple_exits.ll
Thanks for pointing this out John  :)

llvm-svn: 10387
2003-12-10 22:35:56 +00:00
Chris Lattner
9b1a0ca03b Don't allow dead instructions to stop sinking early.
llvm-svn: 10386
2003-12-10 20:43:29 +00:00
Chris Lattner
677f1ebb07 Fix bug: IndVarsSimplify/2003-12-10-RemoveInstrCrash.llx
llvm-svn: 10385
2003-12-10 20:43:04 +00:00
Chris Lattner
0b72993a49 Finegrainify namespacification
Fix bug: LowerInvoke/2003-12-10-Crash.llx

llvm-svn: 10382
2003-12-10 20:22:42 +00:00
John Criswell
8ddd42c6c1 Upon Chris's suggestion, moved the #ifdef's to the generated C code.
This makes LLVM and the generated C code more portable.

llvm-svn: 10377
2003-12-10 18:17:57 +00:00
Chris Lattner
2c641008e6 Finegrainify namespacification
Reorder #includes
Implement: IndVarsSimplify/2003-12-10-IndVarDeadCode.ll

llvm-svn: 10376
2003-12-10 18:06:47 +00:00
John Criswell
c299416f67 Fixed the CBE on Solaris/Sparc. We need to define the return value of
the write() system call because it returns 64 bits on Solaris 64 bit,
and an implicit return value of int says it returns 32 bits.
Admittedly, this is a bit of a hack.

llvm-svn: 10375
2003-12-10 18:06:34 +00:00
Chris Lattner
8c7f69563e Finegrainify namespacification
Fix bug: LoopSimplify/2003-12-10-ExitBlocksProblem.ll

llvm-svn: 10373
2003-12-10 17:20:35 +00:00
Chris Lattner
d6d41b5e23 Simplify code
llvm-svn: 10371
2003-12-10 16:58:24 +00:00
Chris Lattner
7eff699231 Avoid performing two identical lookups when one will suffice
llvm-svn: 10370
2003-12-10 16:57:24 +00:00
Chris Lattner
94944ee4aa Make LICM itself a bit more efficient, and make the generated code more efficient too: don't insert a store in every exit block, because a particular block may be exited to more than once by a loop
llvm-svn: 10369
2003-12-10 15:56:24 +00:00
Chris Lattner
035bd2ae32 Finegrainify namespacification
llvm-svn: 10367
2003-12-10 15:34:03 +00:00
Chris Lattner
090dd39b2c Finegrainify namespacification
Provide a context module to WriteAsOperand

llvm-svn: 10366
2003-12-10 15:33:59 +00:00
Chris Lattner
fe8fd04cce Implement instruction sinking out of loops. This still can do a little bit
better job, but this is the majority of the work.  This implements
LICM/sink*.ll

llvm-svn: 10358
2003-12-10 06:41:05 +00:00
Chris Lattner
c49a27b2b6 Do not insert one entry PHI nodes in split exit blocks!
llvm-svn: 10348
2003-12-09 23:12:55 +00:00
Chris Lattner
f5f65c4000 Refactor code a little bit, eliminating the gratuitous InstVisitor, which
should make subsequent changes simpler.  This also allows us to hoist vaarg
and vanext instructions

llvm-svn: 10342
2003-12-09 19:32:44 +00:00
Chris Lattner
2ffca818b6 Fine grainify namespacification
Code cleanups
Make LICM::SafeToHoist marginally more efficient

llvm-svn: 10341
2003-12-09 17:18:00 +00:00
Chris Lattner
a62c29757d Implement: TailCallElim/accum_recursion_constant_arg.ll
Also make sure to clean up any PHI nodes that are inserted which are pointless.

llvm-svn: 10333
2003-12-08 23:37:35 +00:00
Chris Lattner
647b7d8869 Implement: test/Regression/Transforms/TailCallElim/accum_recursion.ll
We now insert accumulator variables as necessary to eliminate tail recursion
more aggressively.  This is still fairly limited, but allows us to transform
fib/factorial, and other functions into nice happy loops.  :)

llvm-svn: 10332
2003-12-08 23:19:26 +00:00
Chris Lattner
369445aaa6 implement method
llvm-svn: 10321
2003-12-08 08:23:04 +00:00
Chris Lattner
23328c5f69 Use the new method, though noone currently implements it any better than before
llvm-svn: 10320
2003-12-08 08:22:48 +00:00
Chris Lattner
ebd5b871e4 Finegrainify namespacification
llvm-svn: 10318
2003-12-08 08:06:28 +00:00
Chris Lattner
be2b3fb417 Cleanup and restructure the code to make it easier to read and maintain.
The only functionality change is that we now implement:
  Regression/Transforms/TailCallElim/intervening-inst.ll

Which is really kinda pointless, because it means that trivially dead code
does not interfere with -tce, but trivially dead code probably wouldn't be
around anytime when this pass is run anyway.

The point of including this change it to support other more aggressive
transformations when we have the analysis capabilities to do so.

llvm-svn: 10312
2003-12-08 05:34:54 +00:00
Chris Lattner
0dbb3822a4 Implement RaiseAllocations/FreeCastConstantExpr.ll
llvm-svn: 10305
2003-12-07 01:42:08 +00:00
Chris Lattner
60dae0e7d9 * Finegrainify namespacification
* Transform: free <ty>* (cast <ty2>* X to <ty>*) into free <ty2>* X

llvm-svn: 10303
2003-12-07 01:24:23 +00:00
Chris Lattner
d4abe8d28a The recalclulate method was a nasty hack that was once used by the -cee pass,
which never worked itself.  The cee pass still doesn't work, but it doesn't use
this method anymore anyway, so eliminate the method.

llvm-svn: 10302
2003-12-07 00:55:32 +00:00
Chris Lattner
9eeb35760f Completely rewrite domset, idom, and domtree implementation. Now it is based
on the algorithm for directly computing immediate dominators presented in this
paper:

  A Fast Algorithm for Finding Dominators in a Flowgraph
  T. Lengauer & R. Tarjan, ACM TOPLAS July 1979, pgs 121-141.

This _substantially_ speeds up construction of all dominator related information.
Post-dominators to follow.

llvm-svn: 10301
2003-12-07 00:38:08 +00:00
Chris Lattner
5f0dc73b86 Finegrainify namespacification
Move method out of generic dominators construction code

llvm-svn: 10299
2003-12-07 00:35:42 +00:00
Alkis Evlogimenos
f3373f7bc9 Make assertion stricter. Since the source operands are allocated at
this point, the second operand must be a physical register (it cannot
be a virtual one).

llvm-svn: 10292
2003-12-05 11:31:39 +00:00
Alkis Evlogimenos
711ebbdd57 Fix bug in register spilling when a preallocated live range overlaps a
potential register assignment.

llvm-svn: 10291
2003-12-05 11:17:55 +00:00
Alkis Evlogimenos
229c2b9181 Move operator<<(std::ostream&, const LiveInterval&) out of the header file.
llvm-svn: 10290
2003-12-05 10:38:28 +00:00
Alkis Evlogimenos
52ec591c66 Sort live intervals by increasing start point.
llvm-svn: 10289
2003-12-05 10:32:01 +00:00
Alkis Evlogimenos
6f8151e202 Improve debugging output and clean up some code.
llvm-svn: 10288
2003-12-04 03:57:28 +00:00
Chris Lattner
0d57e06a37 Finegrainify namespacification
Fix regressions ScalarRepl/basictest.ll & arraytest.ll

llvm-svn: 10287
2003-12-02 17:43:55 +00:00
Brian Gaeke
dba80bde3c Lock abstraction, introduced with a view toward making the JIT thread-safe.
Eventually.

llvm-svn: 10284
2003-12-01 21:33:31 +00:00
Chris Lattner
a2ac517a20 Emit & read more compressed bytecode by not emitting a bytecodeblock for
each basic block in function.  Instead, just emit a stream of instructions,
chopping up basic blocks based on when we find terminator instructions.  This
saves a fairly substantial chunk of bytecode space.  In stripped, sample
cases, for example, we get this reduction in size:

197.parser: 163036 -> 137180:  18.8% reduction
254.gap   : 844936 -> 689392:  22.6%
255.vortex: 621724 -> 528444:  17.7%

...

Not bad for something this simple.  :)  Note that this doesn't require a new
bytecode version number at all, though version 1.1 should not need to support
the old format.

llvm-svn: 10280
2003-12-01 07:05:31 +00:00
Chris Lattner
e9269b7cc5 Add an option to enable the SSA based peephole optimizer.
Eventually this pass will provide substantially better code in the interim between when we
have a crappy isel and nice isel.  Unfortunately doing so requires fixing the backend to
actually SUPPORT all of the fancy addressing modes that we now generate, and writing a DCE
pass for machine code.  Each of these is a fairly substantial job, so this will remain disabled
for the immediate future.  :(

llvm-svn: 10276
2003-12-01 05:18:30 +00:00
Chris Lattner
6f1c35bc68 Add a new SSA-based peephole optimizer which includes copy propagation and
folding of instructions into addressing modes.  This creates lots of dead
instructions, which are currently not deleted.  It also creates a lot of
instructions that the X86 backend currently cannot handle.  :(

llvm-svn: 10275
2003-12-01 05:15:28 +00:00
Chris Lattner
1a915e0a5f generalize the instruction types permitted a bit
llvm-svn: 10274
2003-12-01 05:13:56 +00:00
Alkis Evlogimenos
c1409f46b6 Print instructions before register allocation is performed. Also fix
bug where spill instructions were added to the next basic block
instead of the end of the current one if the instruction that required
the spill was the last in the block.

llvm-svn: 10272
2003-11-30 23:40:39 +00:00
Chris Lattner
f0f44f414b Finegrainify namespacification
llvm-svn: 10270
2003-11-30 06:13:25 +00:00
Alkis Evlogimenos
36630268ae Remove "numReloaded" statistic.
llvm-svn: 10268
2003-11-30 05:15:36 +00:00
Chris Lattner
1a513f2b83 Emit constants to one contiguous block, but this time, respect alignment constraints.
If this doesn't work Misha, feel free to revert it.

llvm-svn: 10267
2003-11-30 04:23:21 +00:00
Misha Brukman
acb0d474e9 Go back to allocating memory for each constant separately. Since SPARCs do not
allow unaligned loads, that is probably the problem I've been seeing in numerous
SPARC test cases failing. X86, on the other hand, just slows down unaligned
accesses, since it must make 2 aligned accesses for each unaligned one.

llvm-svn: 10266
2003-11-30 00:50:53 +00:00
Chris Lattner
a29f6743a1 Fix test: Transforms/LevelRaise/2003-11-28-IllegalTypeConversion.ll
Some gep generalization changes

llvm-svn: 10252
2003-11-29 05:31:25 +00:00
Chris Lattner
fe5dac5c16 To not barf when an error occurs.
llvm-svn: 10236
2003-11-26 07:24:58 +00:00
Chris Lattner
67eb3c7f04 output foo(void) as appropriate
llvm-svn: 10232
2003-11-26 00:09:17 +00:00
Chris Lattner
422381c755 Fix bug in previous checkin
llvm-svn: 10231
2003-11-25 23:44:40 +00:00
Chris Lattner
626abbe58b Fix const correctness
llvm-svn: 10229
2003-11-25 21:28:00 +00:00
Chris Lattner
96d8d9990b Relax constrains on GEP type indexes
llvm-svn: 10228
2003-11-25 21:21:46 +00:00
Chris Lattner
7b895914a2 Do not use index type to determine what it is indexing into!
llvm-svn: 10226
2003-11-25 21:09:18 +00:00
Chris Lattner
1ab588745a Do not depend on the gep index types to determine what flavor of index it is
llvm-svn: 10225
2003-11-25 20:49:55 +00:00
Chris Lattner
50a3a40d5f Do not depend on structure elements being of type UByteTy
llvm-svn: 10224
2003-11-25 20:44:56 +00:00
Chris Lattner
e8a612e92d Do not depend on index type to determine whether it is a structure or sequential index
llvm-svn: 10221
2003-11-25 20:19:55 +00:00
Chris Lattner
96656a16ad Fix file header
llvm-svn: 10219
2003-11-25 20:11:47 +00:00
Chris Lattner
2cc98be419 Remove dead variable
llvm-svn: 10218
2003-11-25 20:11:00 +00:00
Chris Lattner
259524df92 Use gep_type_begin/end instead of looking for ubytes
llvm-svn: 10217
2003-11-25 20:10:07 +00:00
Chris Lattner
8b644ddc5b Finegrainify namespacification
llvm-svn: 10210
2003-11-25 18:33:40 +00:00
Chris Lattner
59f92a51f1 Fix PR147
llvm-svn: 10204
2003-11-25 03:54:16 +00:00
Misha Brukman
87690c938c Fix copy-pasto.
llvm-svn: 10197
2003-11-24 05:36:38 +00:00
Misha Brukman
c63e4ee8ad Add ability to query if a file is a legitimate ELF shared object.
llvm-svn: 10193
2003-11-24 05:28:12 +00:00
Brian Gaeke
29723ca977 Support constant casting constant pointers to ints/uints, and/or
the other way around, instead of failing a large, tumor-like assertion.

llvm-svn: 10171
2003-11-22 07:18:25 +00:00
Brian Gaeke
296546cf0c Constant shift expressions, meet InstSelectSimple. Yow!!
llvm-svn: 10170
2003-11-22 06:49:41 +00:00
Brian Gaeke
8c4c9f6f1e Stub for constant shift expr support.
llvm-svn: 10168
2003-11-22 05:18:35 +00:00
Brian Gaeke
17db893394 Fix PR149 - support constant shift expressions.
llvm-svn: 10167
2003-11-22 05:02:56 +00:00
Chris Lattner
7d794a8431 Delete dead line
llvm-svn: 10164
2003-11-22 02:26:17 +00:00
Chris Lattner
87e444b65b Fix bug: Transforms/PruneEH/2003-11-21-PHIUpdate.llx
llvm-svn: 10163
2003-11-22 02:20:36 +00:00
Chris Lattner
a88e567e00 Do not crash when deleing a region with a dead invoke instruction
llvm-svn: 10161
2003-11-22 02:13:08 +00:00
Chris Lattner
3b71386e30 Finegrainify namespacification
The module stripping pass should not strip symbols on external globals

llvm-svn: 10157
2003-11-22 01:29:35 +00:00
Misha Brukman
1d9ac83d82 * Add code to flush the ICache, which any self-respecting SMC must do
* Restore registers *after* everything else to avoid any possible side effects

This fixes McCat-imp.

llvm-svn: 10147
2003-11-21 23:48:54 +00:00
Chris Lattner
f987c67a53 Check return types of functions
llvm-svn: 10146
2003-11-21 22:32:23 +00:00
Chris Lattner
c837881d43 Considering that CI is not even IN SCOPE here, I wooda thought the compiler
would have caught this.  *sigh*

llvm-svn: 10142
2003-11-21 21:57:29 +00:00
Chris Lattner
9ae9c45d43 Finegrainify namespacification
llvm-svn: 10138
2003-11-21 21:54:22 +00:00
Chris Lattner
ebbe1376b3 Get rid of using decls, finegrainify namespacification
llvm-svn: 10137
2003-11-21 21:52:10 +00:00
Chris Lattner
5f38817de9 * Finegrainify namespacification
* Make the cost metric for passing constants in as arguments to functions MUCH
  more accurate, by actually estimating the amount of code that will be constant
  propagated away.

llvm-svn: 10136
2003-11-21 21:46:09 +00:00
Chris Lattner
4a92f545ba Finegrainify namespacification
Print out the costs for functions that AREN'T inlined as well

llvm-svn: 10135
2003-11-21 21:45:31 +00:00
Chris Lattner
1901b23d5d Fix problem Reid was having with external globals and nonexternal linkage
llvm-svn: 10133
2003-11-21 20:33:27 +00:00
Chris Lattner
70c6fff394 Don't crash on bogus source value
llvm-svn: 10132
2003-11-21 20:27:35 +00:00
Chris Lattner
a1da49a55c Finegrainify namespacification
llvm-svn: 10131
2003-11-21 20:23:48 +00:00
Chris Lattner
797e88aee9 Fix some problems with assertions printing
llvm-svn: 10129
2003-11-21 17:35:51 +00:00
Chris Lattner
acd028d92a improve error message
llvm-svn: 10128
2003-11-21 17:06:29 +00:00
Chris Lattner
2b7309dd1c Minor cleanups and simplifications
llvm-svn: 10127
2003-11-21 16:52:05 +00:00
Chris Lattner
01ab0d2d7b * Finegrainify namespacification
* Implement FuncResolve/2003-11-20-BogusResolveWarning.ll
   ... which eliminates a large number of annoying warnings.  I know misha
   will miss them though!

llvm-svn: 10123
2003-11-20 21:21:31 +00:00
Chris Lattner
feeb3261f2 Start using the nicer terminator auto-insertion API
llvm-svn: 10111
2003-11-20 18:25:24 +00:00
Chris Lattner
071bf19ef5 Spew symbolic types!
llvm-svn: 10110
2003-11-20 18:23:14 +00:00
Chris Lattner
0128ea6e23 When spewing out warnings during function resolution, do not vomit out pages
and pages of non-symbolic types.

llvm-svn: 10109
2003-11-20 18:19:35 +00:00
Chris Lattner
310dac2b01 Somehow I forgot poor little UnwindInst
*sniff*

llvm-svn: 10108
2003-11-20 18:11:56 +00:00
Chris Lattner
3aaa812969 * Finegrainify namespacification
* Add new constructors to allow insertion of terminator instructions at the
  end of basic blocks.
* Move a ReturnInst method out-of-line, so that the vtable and type info don't
  need to be emitted to every translation unit that uses the class.

llvm-svn: 10107
2003-11-20 17:45:12 +00:00
Alkis Evlogimenos
6627a32ff9 Merging the linear scan register allocator in trunk. It currently passes most tests under test/Programs/SingleSource/Benchmarks/Shootout so development will continue on trunk. The allocator is not enabled by default. You will need to pass -regallo=linearscan to lli or llc to use it.
llvm-svn: 10103
2003-11-20 03:32:25 +00:00
Chris Lattner
5ac68ed1bf Don't crash if we are printing an orphaned basic block!
llvm-svn: 10100
2003-11-20 00:09:43 +00:00
Chris Lattner
8c11d31e35 Fine grainify namespaceification
llvm-svn: 10093
2003-11-19 21:08:57 +00:00
Chris Lattner
072ae8be8f Really, there was a reason for me factoring that out
llvm-svn: 10089
2003-11-19 19:20:20 +00:00
Chris Lattner
54a3f2b134 *** Significantly speed up type resultion
This change speeds up type resolution by checking to see if a type is
  recursive, and if it's not, using a more efficient algorithm.

  This dramatically reduces bytecode loading time of kc++, reducing time-to-jit
  kc++ --version to 17s from 33s

llvm-svn: 10088
2003-11-19 19:10:23 +00:00
Chris Lattner
60d2a51347 * Finegrainify namespacification
* Strength reduce several data structures which were left over from the
  "bad old days"
* Minor efficiency improvements
* Major efficiency improvement: In BytecodeParser::insertValue, do not allocate
  a new ValueTab entry just because some value exists with a large type.  This
  dramatically reduces the number of allocations/deallocations performed by the
  bytecode reader, and speeds up parsing of Kimwitu++ from 34s to 17s.  This is
  to help address PR127

llvm-svn: 10085
2003-11-19 17:27:18 +00:00
Chris Lattner
4bb9013bb6 Minor efficiency improvements, finegrainify namespacification
llvm-svn: 10084
2003-11-19 17:21:11 +00:00
Chris Lattner
af14b55e1b In the future, these slabs can be null...
llvm-svn: 10083
2003-11-19 17:20:42 +00:00
Chris Lattner
417f92b621 Minor efficiency improvements all over. Finegrainify Namespacification
llvm-svn: 10082
2003-11-19 17:17:36 +00:00
Chris Lattner
4c0e027b28 Fine grainify namespacification, #include file that defines the interface!
llvm-svn: 10081
2003-11-19 16:06:55 +00:00
Chris Lattner
9ac58534a0 Finegrainify namespacification
llvm-svn: 10080
2003-11-19 06:14:38 +00:00
Chris Lattner
e5b1d0a66d Minor speedup to do less linear time searches of information we already have.
speeds up disassembly of kc++ by .6s

llvm-svn: 10079
2003-11-19 06:01:12 +00:00
Chris Lattner
4bdd0d5d93 Fix PR130, and testcase test/Regression/Linker/2003-11-18-TypeResolution.ll
llvm-svn: 10075
2003-11-19 01:02:52 +00:00
Chris Lattner
6677af8dee Fix PR123
llvm-svn: 10069
2003-11-18 17:47:05 +00:00
Brian Gaeke
b62fb0d7ef Only use -Wl,-R. if HAVE_LINK_R.
llvm-svn: 10066
2003-11-18 06:31:17 +00:00
Misha Brukman
0b639e381c Emit the MachineConstantPool constants in one contiguous memory `pool'.
llvm-svn: 10060
2003-11-17 20:40:07 +00:00
Misha Brukman
023ada1793 * Order #includes as per style guide
* Delete blank comment lines
* Eliminate space between function name and open-paren ( to be consistent

llvm-svn: 10059
2003-11-17 20:37:02 +00:00
Chris Lattner
7c9bfad92c Implement == and != correctly. Before they would incorrectly return !=
for some constant exprs when they could really be the same value

llvm-svn: 10058
2003-11-17 20:19:35 +00:00
Chris Lattner
1f762c7571 The ConstantPointer class is now gone.
llvm-svn: 10057
2003-11-17 19:47:21 +00:00
Misha Brukman
4eedd560a6 This file was somehow missing a top-level comment line.
llvm-svn: 10055
2003-11-17 19:35:17 +00:00
Chris Lattner
3bbeca259c No REALLY, get rid of ConstantPointer references
llvm-svn: 10054
2003-11-17 19:21:04 +00:00
Chris Lattner
dc40851a23 Eliminate use of the ConstantPointer class
llvm-svn: 10053
2003-11-17 19:19:32 +00:00
Chris Lattner
daee0fa51f Constant folding shalt not be built on annotations
llvm-svn: 10052
2003-11-17 19:05:17 +00:00
Chris Lattner
b660dfb79a Remove usage of ConstantPointer
llvm-svn: 10051
2003-11-17 17:28:29 +00:00
Chris Lattner
31a03e3207 Be a bit more tolerant of broken code
llvm-svn: 10050
2003-11-17 01:17:04 +00:00
Brian Gaeke
e2e424701a Implement skeletal support for __.SYMDEF (ranlib) sections in archives.
Correctly parse the Long Filename section of the archive.
When reading in archive members, set their ModuleIDs to
 "ARCHIVENAME(MEMBERNAME)", as is traditional.

llvm-svn: 10043
2003-11-16 23:08:48 +00:00
Brian Gaeke
675cab8d52 When you hand WriteAsOperand a type, it now prints out its symbolic name.
llvm-svn: 10042
2003-11-16 23:08:27 +00:00
Brian Gaeke
5db96ead48 When failing a Verifier assertion, use WriteAsOperand to print out the
offending types and/or values.

llvm-svn: 10041
2003-11-16 23:07:42 +00:00
Chris Lattner
21c40d8641 Don't print 'No predecessors!' on the entry block
llvm-svn: 10038
2003-11-16 22:59:57 +00:00
Chris Lattner
7164a8a7ea ISO 9899 7.13.2.1 (3) says that "[...] the values of objects of automatic
storage duration that are local to the function containing the invocation of the
[...] setjmp macro that do not have volatile-qualified type and have been
changed between the setjmp invocation and longjmp call are indeterminate."

As such, we have to mark all variables in a function that uses 'invoke' as
volatile.

This fixes PR77

llvm-svn: 10035
2003-11-16 22:06:14 +00:00
Chris Lattner
04d122be8f Fix PR116
llvm-svn: 10032
2003-11-16 21:39:27 +00:00
Chris Lattner
7485243e7a Implement a small optimization to handling of GEP's that are equivalent to casts.
This results in substantially reduced collapsing for some testcases

llvm-svn: 10002
2003-11-14 17:09:46 +00:00
Chris Lattner
ccac6e36fb I can't believe the incompetence of the people I have to deal with around here.
These fools don't even wrap code at 80 columns.

Oh wait, _I_ wrote that.  That explains a lot!!

llvm-svn: 9999
2003-11-14 16:34:25 +00:00
Chris Lattner
0ba2cec700 Fix PR 110: the constant folding code assumes that if something is not a
constant expression, but is of (for example) ubyte type, then it is a
ConstantUInt.  This was not true for placeholders.

llvm-svn: 9994
2003-11-14 06:38:46 +00:00
Chris Lattner
34b44fd809 Expose the verifier to opt
llvm-svn: 9984
2003-11-13 19:47:29 +00:00
Chris Lattner
fe4e3f7108 Implement feature: InstCombine/2003-11-13-ConstExprCastCall.ll
llvm-svn: 9981
2003-11-13 19:17:02 +00:00
Chris Lattner
ca8f3561c2 Trying to get the dsgraph for an external function is bad for DSA's health
llvm-svn: 9979
2003-11-13 18:48:11 +00:00
Brian Gaeke
d966bbe9bf Change LLI's internal representation of va_list to a pointer to the next
argument to be returned by va_arg. This allows va_lists to be passed
between different LLVM procedures (though it is unlikely that an LLI
va_list would make sense to an external function, except by chance.)

llvm-svn: 9965
2003-11-13 06:06:01 +00:00
Chris Lattner
88bf4d25a0 Implement the CompleteBU pass
llvm-svn: 9964
2003-11-13 05:05:41 +00:00
Chris Lattner
547205d4bc Minor code cleanup
llvm-svn: 9962
2003-11-13 05:04:19 +00:00
Chris Lattner
8508dec429 Disable integer tracking by default
llvm-svn: 9960
2003-11-13 03:10:49 +00:00
Chris Lattner
55ad096ff8 Add an initial version of the CompleteBUDataStructures class, which is currently
identical to the BU pass, but has an accurate call graph

llvm-svn: 9956
2003-11-13 01:43:00 +00:00
Misha Brukman
1c95e95551 Include the file before we close the llvm namespace.
llvm-svn: 9954
2003-11-13 00:23:05 +00:00
Misha Brukman
58f9d30da4 Substantially re-organized this file:
* There is now only one pass to print out assembly instead of two
* It is a FunctionPass
* The Module-level printing of globals is now in doFinalization() method of the
  FunctionPass
* The code has been reformatted to follow LLVM coding standards
* Some comments, not all, were doxygenified
* Last but not least, the function to create an instance of this pass is also no
  longer a method in the UltraSparc class.

llvm-svn: 9953
2003-11-13 00:22:19 +00:00
Misha Brukman
5c858a33cb The function to create an instance of this pass is no longer a method of
the UltraSparc class.

llvm-svn: 9952
2003-11-13 00:19:02 +00:00
Misha Brukman
e3afd442f1 The functions to create new instances of passes are no longer methods in the
UltraSparc class. Comments are also doxygen-compatible now.

llvm-svn: 9951
2003-11-13 00:17:20 +00:00
Misha Brukman
aa553825b1 * Put command-line switches in their own namespace
* Pass creation functions are no longer in the UltraSparc class

llvm-svn: 9950
2003-11-13 00:16:28 +00:00
Misha Brukman
310200f573 Force a dependency on the .inc file, which must be generated!
llvm-svn: 9949
2003-11-13 00:05:09 +00:00
Chris Lattner
b60823472a Fine-grainify namespaces for this library
llvm-svn: 9948
2003-11-12 23:11:14 +00:00
Chris Lattner
95d0b541c1 Add new argument to disable checking
llvm-svn: 9922
2003-11-12 17:58:22 +00:00
Chris Lattner
e72202b5b8 Detect problems with PHI node operands!
llvm-svn: 9916
2003-11-12 07:13:37 +00:00
Chris Lattner
e73452b42d Print return nodes for graphs with multiple functions in them correctly
llvm-svn: 9914
2003-11-12 04:58:19 +00:00
Chris Lattner
87ad20251a Don't crash if no gg
llvm-svn: 9913
2003-11-12 04:57:58 +00:00
Chris Lattner
be56c11ccc Fix bug PR107, patch contributed by Reid Spencer!
llvm-svn: 9911
2003-11-12 04:40:30 +00:00
Chris Lattner
a08ef02e96 Cleanups
llvm-svn: 9907
2003-11-12 00:40:34 +00:00
Brian Gaeke
d25f86d683 Put all LLVM code into the llvm namespace, as per bug 109.
llvm-svn: 9903
2003-11-11 22:41:34 +00:00
Brian Gaeke
ba8e968641 Move IsArchive and IsBytecode here from gccld. Refactor into CheckMagic.
llvm-svn: 9901
2003-11-11 21:53:50 +00:00
Chris Lattner
6deb20046e Compute node offsets correctly
llvm-svn: 9895
2003-11-11 20:12:32 +00:00
Brian Gaeke
9384aa95cc Add implementation of FileOpenable().
Refactor MakeFileExecutable() & MakeFileExecutable() into AddPermissionsBits().

llvm-svn: 9892
2003-11-11 18:27:21 +00:00
Chris Lattner
365bda897c Add new method for computing node mappings. This is used by the pool allocator
llvm-svn: 9880
2003-11-11 05:08:59 +00:00
Brian Gaeke
612254327c Fix problems linking against the reoptimizer; _llvm_regAllocState must have
externally-visible linkage, and SaveStateToModule must default to true for llc.
I don't remember why I made it const; perhaps it should be deconstified.

llvm-svn: 9858
2003-11-10 07:12:01 +00:00
Chris Lattner
7dd63c59d1 Reorganize code for locality, improve comments
llvm-svn: 9857
2003-11-10 04:42:42 +00:00
Chris Lattner
e0d83d79e4 Adjust to new critical edge interface
llvm-svn: 9853
2003-11-10 04:10:50 +00:00
Brian Gaeke
490bf81152 Operand numbers are now ints. Save the register allocation of the value
each instruction produces as "operand" -1, and the other operands as 0
.. n, as before. PhyRegAlloc::saveState() is refactored into
PhyRegAlloc::saveStateForValue().

llvm-svn: 9842
2003-11-10 00:05:26 +00:00
Chris Lattner
b63e179816 More additions
llvm-svn: 9834
2003-11-09 19:54:30 +00:00
Chris Lattner
f40566184d Fix PR95. I'm checking this patch in for Reid Spencer, who figured it out
and wrote it up.  Thanks!!

llvm-svn: 9832
2003-11-09 19:39:48 +00:00
Chris Lattner
95e79d0097 Add an assertion
llvm-svn: 9831
2003-11-09 15:51:07 +00:00
Brian Gaeke
d542ca6af1 Fix PR103
llvm-svn: 9830
2003-11-09 07:08:34 +00:00
Chris Lattner
953f23925f Do NOT inline self recursive calls into other functions. This is causing the
pool allocator no end of trouble, and doesn't make a lot of sense anyway.  This
does not solve the problem with mutually recursive functions, but they are much less common.

llvm-svn: 9828
2003-11-09 05:05:36 +00:00
Chris Lattner
a1040ce57e Untypo
llvm-svn: 9827
2003-11-09 05:04:25 +00:00
Chris Lattner
a3444ad7e0 Add more functions
llvm-svn: 9826
2003-11-09 04:10:41 +00:00
Chris Lattner
6e7ff9a44d None of the __llvm_* functions call into the program. This makes the
callgraph MUCH simpler for eh using program.

llvm-svn: 9825
2003-11-09 04:00:59 +00:00
Chris Lattner
e63e580e56 Add support for memmove
llvm-svn: 9824
2003-11-09 03:32:52 +00:00
Brian Gaeke
46510fbed5 Remove #include of PassManager.h which was marked FIXME, and apparently is no
longer used.

llvm-svn: 9823
2003-11-09 03:15:40 +00:00
Chris Lattner
eb36733092 Handle bzero and memset in the local analysis, because we were missing the fact
that memset returns its argument!!

llvm-svn: 9811
2003-11-08 21:55:50 +00:00
Chris Lattner
28d77c2122 This doesn't use DSCallSiteIterator
llvm-svn: 9809
2003-11-08 21:17:37 +00:00
Brian Gaeke
5159888ea4 Fix two typos I found in comments.
llvm-svn: 9806
2003-11-08 18:12:24 +00:00
Misha Brukman
feb806084d For some reason, LICM and GCSE like to crash the FunctionPassManager when they
are being added as FunctionPasses... Sigh.

llvm-svn: 9798
2003-11-08 00:01:39 +00:00
Brian Gaeke
d246e0be30 Implement vaarg instruction. This is not quite perfect: 2003-08-11-VaListArg
still causes a crash. But it's better than before.

llvm-svn: 9794
2003-11-07 21:20:47 +00:00
Misha Brukman
9ddec59660 Implement branching to a PC-relative constant (not a BasicBlock).
llvm-svn: 9793
2003-11-07 21:07:30 +00:00
Brian Gaeke
22bfc41ae1 popStackAndReturnValueToCaller() must advance instruction pointer to normal
destination, if returning from an invoke.

Implement 'unwind' instruction.

llvm-svn: 9792
2003-11-07 20:44:58 +00:00
Misha Brukman
fbd3f16961 PreSelection is not optional, it performs a necessary and vital transformation
for the Sparc backend: breaking up constant expressions. Thus, we cannot have it
guarded by a conditional, it should never be disabled.

Also, it's now available for the JIT since it is a FunctionPass.

llvm-svn: 9791
2003-11-07 20:33:25 +00:00
Misha Brukman
4b82908055 Remove the *BIG UGLY HACK* from the JIT: PreSelection is now a FunctionPass.
llvm-svn: 9790
2003-11-07 20:32:08 +00:00
Brian Gaeke
88a4c1b68b Add stub version of unwind support
llvm-svn: 9789
2003-11-07 20:07:06 +00:00
Brian Gaeke
059af2222a visitCallInst --> visitCallSite.
Use visitCallSite to implement both CallInsts and InvokeInsts.

llvm-svn: 9788
2003-11-07 20:04:22 +00:00
Brian Gaeke
f7f7310b47 Make the operation of visitCallInst() only depend on the CallSite.
llvm-svn: 9787
2003-11-07 19:59:08 +00:00
Brian Gaeke
29d6325ca3 Use CallSites for call sites, instead of CallInsts. A revolutionary concept.
llvm-svn: 9784
2003-11-07 19:26:23 +00:00
Misha Brukman
d04d2ef54d Switch to emitting MachineConstantPool the way it was meant to be done.
llvm-svn: 9777
2003-11-07 18:06:26 +00:00
Misha Brukman
8fe318a705 Switch to using the standard representation of the constant pool -- namely, the
MachineConstantPool. This involved refactoring the two classes involved in
printing out Sparc assembly. In fact, they should share all this code anyway.

llvm-svn: 9776
2003-11-07 17:45:28 +00:00
Misha Brukman
3f43ed6586 We accept TargetMachine as a const reference.
llvm-svn: 9775
2003-11-07 17:44:18 +00:00
Misha Brukman
c866cfb251 PreSelection and PeepholeOpts are now FunctionPasses.
llvm-svn: 9774
2003-11-07 17:43:43 +00:00
Misha Brukman
1c726348d1 * Stop making a global for each constant that cannot live in an instruction;
it will be converted to a MachineConstantPool index during instruction
  selection
* This is now eligible to become a FunctionPass since it does not have any side
  effects outside of the function it is processing.

llvm-svn: 9773
2003-11-07 17:31:22 +00:00
Misha Brukman
575a02e8db * Use the MachineConstantPool for storing constants instead of a hash_set;
* Do not create new globals for constants!

Also, order #includes as per coding style guide

llvm-svn: 9772
2003-11-07 17:29:48 +00:00
Misha Brukman
ccdf8e85e0 Use basename $< to get just the filename, not full path, for ease of reading.
llvm-svn: 9770
2003-11-07 17:26:27 +00:00
Misha Brukman
acc53cc7c6 Declare FunctionPasses as such so that they can be used in FunctionPassManager.
llvm-svn: 9768
2003-11-07 17:20:18 +00:00
Brian Gaeke
252fd99794 Refactor the return-from-function code into popStackAndReturnValueToCaller().
Make external function calls slightly less special; now they get a stack frame.

llvm-svn: 9765
2003-11-07 05:22:49 +00:00
Chris Lattner
8f8109ebdb Hopefully this will fix PR98
llvm-svn: 9762
2003-11-07 00:38:09 +00:00
Chris Lattner
ca7a346fce Hopefully fix the objdir != srcdir issue
llvm-svn: 9761
2003-11-07 00:34:33 +00:00
Chris Lattner
e060df5b2c Fix warnings building on sparc
llvm-svn: 9758
2003-11-06 21:30:05 +00:00
Chris Lattner
8e2385eb4d Various cleanups and efficiency improvements
llvm-svn: 9753
2003-11-06 19:46:29 +00:00
Chris Lattner
8321e79ea6 Fix bug: PR93
llvm-svn: 9752
2003-11-06 19:18:49 +00:00
Misha Brukman
de3f241f5f * Make the comment header 80 columns long
* Alphabetize #includes

llvm-svn: 9751
2003-11-06 18:06:13 +00:00
Misha Brukman
6667a74caf Let's not forget about our friends -- Constant Pool indices.
llvm-svn: 9750
2003-11-06 00:04:11 +00:00
Chris Lattner
58016b49ef Fix the problem with running cleanups in bugpoint: We were deleting arguments
of intrinsic functions, causing the verifier to fail.

llvm-svn: 9745
2003-11-05 21:53:41 +00:00
Chris Lattner
f7304f3379 Split behavior into two pieces
llvm-svn: 9741
2003-11-05 21:43:02 +00:00
Chris Lattner
a8d3699eb3 Yet more fixes for constant expr shifts
llvm-svn: 9739
2003-11-05 20:43:58 +00:00
Chris Lattner
dba798775b Further fixes for PR93
llvm-svn: 9738
2003-11-05 20:37:01 +00:00
Chris Lattner
2df84a62cd no need for endl
llvm-svn: 9736
2003-11-05 19:53:32 +00:00
Chris Lattner
352ad83271 Add support for constant expr shifts
llvm-svn: 9735
2003-11-05 19:53:03 +00:00
Chris Lattner
530eb1ffb5 If we're not checking, don't check!
llvm-svn: 9732
2003-11-05 19:09:40 +00:00