Brian Gaeke
65540b3e58
Correct type of accessor functions.
...
llvm-svn: 16621
2004-09-30 20:14:18 +00:00
Brian Gaeke
90a286872c
Namespacify. Add accessor function.
...
llvm-svn: 16620
2004-09-30 20:14:07 +00:00
Brian Gaeke
c667e351ed
I think this will handle double args.
...
llvm-svn: 16618
2004-09-30 19:44:32 +00:00
Misha Brukman
8a43086705
That should actually be __MING, not __MINGW.
...
llvm-svn: 16617
2004-09-30 18:28:07 +00:00
Misha Brukman
549b3533be
Check for __MINGW define instead of __MINGW_H, patch by Henrik Bach.
...
llvm-svn: 16615
2004-09-30 18:24:58 +00:00
Chris Lattner
db2a0987cc
Use more efficient map operations. Fix a bug that would affect hypothetical
...
targets that supported multiple memory operands.
llvm-svn: 16614
2004-09-30 16:35:08 +00:00
Chris Lattner
8d8b8b05bd
There is no need to call MachineInstr::print directly, just send the MI& to an ostream.
...
llvm-svn: 16613
2004-09-30 16:10:45 +00:00
Chris Lattner
bb425800f5
* Wrap some comments to 80 cols
...
* Add const_iterator stuff
* Add a print method, which means that I can now call dump() from the
debugger.
llvm-svn: 16612
2004-09-30 15:59:17 +00:00
Brian Gaeke
0d4d060dbd
Mark the instructions that have delay slots with the hasDelaySlot flag.
...
Add some comments.
llvm-svn: 16611
2004-09-30 04:04:48 +00:00
Brian Gaeke
738005408e
Use TargetMachine::hasDelaySlot() instead of our old switch statement
...
to find instrs that have delay slots.
llvm-svn: 16610
2004-09-30 04:04:47 +00:00
Chris Lattner
168a4380d9
Simplify the logic in the simple spiller and capitalize some variables
...
llvm-svn: 16609
2004-09-30 02:59:33 +00:00
Chris Lattner
1f61bfb971
Switch from defaulting to the 'local' spiller to the 'simple' spiller. The
...
two spillers produce perfectly identical code (at least on povray and eon),
but the simple spiller is substantially faster than the local spiller. Once
the local spiller is improved, we can switch back.
Switching cuts 5.2% off of the llc time for povray (about 1.3s).
llvm-svn: 16608
2004-09-30 02:40:06 +00:00
Chris Lattner
d716b5739c
Don't use a densemap for keeping track of which vregs are already loaded, just
...
use a simple vector. This speeds up -spiller=simple from taking 22s to taking
.1s on povray (debug build). This change does not modify the generated code.
llvm-svn: 16607
2004-09-30 02:33:48 +00:00
Chris Lattner
d27ff8035e
Use longer and more explicit names for instance vars (particularly important
...
data structures). Fix the print method to send to the right ostream, not
always cerr. Delete typedefs that are only used once.
llvm-svn: 16606
2004-09-30 02:15:18 +00:00
Chris Lattner
962d398430
Free the VirtRegMap at the end of MachineFunction processing instead of at
...
the beginning of processing the next one.
llvm-svn: 16605
2004-09-30 02:02:33 +00:00
Chris Lattner
418207045d
Reindent code, improve comments, move huge nested methods out of classes,
...
prune #includes, add print/dump methods, etc. No functionality changes.
llvm-svn: 16604
2004-09-30 01:54:45 +00:00
Chris Lattner
af68e9a012
Disable the 'WARNING: Found global types that are not compatible' warning
...
that always prints when linking programs to libstdc++ :(
llvm-svn: 16603
2004-09-30 00:12:29 +00:00
Misha Brukman
7c87c6b215
Change the #ifdefs to allow compilation with a V8 compiler, but the JIT still
...
won't work if not compiled in V9 mode, currently by GCC only, because Sun's
system compiler does not tell us if it's a V8 or V9 system.
llvm-svn: 16602
2004-09-29 23:01:17 +00:00
Chris Lattner
8341306cba
Hrm, debugging printouts do not need to be in here
...
llvm-svn: 16598
2004-09-29 21:21:14 +00:00
Chris Lattner
7af052f5c8
Make sure to check select instructions for generic instruction properties
...
llvm-svn: 16597
2004-09-29 21:19:28 +00:00
Brian Gaeke
ee2dab29f9
Update list of shootout programs that should be working.
...
llvm-svn: 16595
2004-09-29 20:45:06 +00:00
Brian Gaeke
d4c38d8c4b
Tell the target description that calls clobber registers O0...O5.
...
llvm-svn: 16594
2004-09-29 20:45:05 +00:00
Chris Lattner
da5c635143
Don't use DominatorSet::dominates for intra-block instruction dom checks.
...
This method is linear time in the size of the basic block, which is very
bad for large basic blocks. On the Assembler/2004-09-29-VerifierIsReallySlow.llx
testcase, the verifier changes from taking 50s to 0.23s with this patch.
llvm-svn: 16593
2004-09-29 20:07:45 +00:00
Brian Gaeke
5bca3b8e5f
FITOD is spelled "fitod", not "fitos". Ouch.
...
llvm-svn: 16591
2004-09-29 19:59:07 +00:00
Brian Gaeke
e9aabee09d
Don't use .quad to output double constants. The assembler must have a bug or
...
something, because the wrong bit patterns get output.
llvm-svn: 16590
2004-09-29 19:59:06 +00:00
Chris Lattner
79ceb6ba53
* Pull range optimization code out into new InsertRangeTest function.
...
* SubOne/AddOne functions always return ConstantInt, declare them as such
* Pull code for handling setcc X, cst, where cst is at the end of the range,
or cc is LE or GE up earlier in visitSetCondInst. This reduces #iterations
in some cases.
* Fold: (div X, C1) op C2 -> range check, implementing div.ll:test6 - test9.
llvm-svn: 16588
2004-09-29 17:40:11 +00:00
Brian Gaeke
b8237dfbb9
Recognize FpMOVD as a move.
...
llvm-svn: 16586
2004-09-29 16:45:47 +00:00
Chris Lattner
778a49acfd
Do not insert trivially dead select instructions, which allows us to
...
potentially fold more in one pass.
llvm-svn: 16583
2004-09-29 05:43:32 +00:00
Chris Lattner
572652718c
Fold binary expressions and casts into PHI nodes that have all constant inputs.
...
This takes something like this:
%A = phi int [ 3, %cond_false.0 ], [ 2, %endif.0.i ], [ 2, %endif.1.i ]
%B = div int %tmp.243, 4
and turns it into:
%A = phi int [ 3/4, %cond_false.0 ], [ 2/4, %endif.0.i ], [ 2/4, %endif.1.i ]
which is later simplified (in this case) into %A = 0.
This triggers thousands of times in spec, for example, 269 times in 176.gcc.
This is tested by InstCombine/add.ll:test23 and set.ll:test18.
llvm-svn: 16582
2004-09-29 05:07:12 +00:00
Nate Begeman
65376f660e
Generate better code by being far less clever when it comes to the select instruction. Don't create overlapping register lifetimes
...
llvm-svn: 16580
2004-09-29 05:00:31 +00:00
Brian Gaeke
25154c9580
add results
...
llvm-svn: 16579
2004-09-29 03:48:55 +00:00
Nate Begeman
a8b079e16a
improve Type::BoolTy codegen by eliminating unnecessary clears and sign extends
...
llvm-svn: 16578
2004-09-29 03:45:33 +00:00
Brian Gaeke
bad755c1d1
Simplify copyConstantToRegister() for longs, using a pair of recursive calls.
...
Copy constant-pool entries' addresses into registers before loading out of them,
to avoid errors from the assembler.
Handle loading call args past the 6th one off the stack.
Add IMPLICIT_DEF pseudo-instrs for double and long arguments passed in register
pairs.
Use FpMOVD to copy doubles around instead of the horrible store-load thing we
were doing before.
Handle 'ret double' and 'ret long'.
Fix a bug in handling 'and/or/xor long'.
llvm-svn: 16577
2004-09-29 03:34:41 +00:00
Brian Gaeke
279e98a3b4
Fix bug recognizing moves: isMoveInstr should only treat ORs with %g0 as
...
moves, not all ORs.
llvm-svn: 16576
2004-09-29 03:28:15 +00:00
Brian Gaeke
86aaed6a34
Use FpMOVD pseudo-instruction to move doubles around.
...
llvm-svn: 16575
2004-09-29 03:27:30 +00:00
Brian Gaeke
02c3d2f588
Add new FpMOVD pseudo-instruction, used to move doubles around.
...
llvm-svn: 16574
2004-09-29 03:27:29 +00:00
Brian Gaeke
42a0b9a05c
Fix double and long alignment.
...
Call the FPMover pass after register allocation.
llvm-svn: 16573
2004-09-29 03:26:27 +00:00
Brian Gaeke
ab7ac780bb
Put quotes around argument to .section directive.
...
llvm-svn: 16572
2004-09-29 03:25:40 +00:00
Brian Gaeke
8d39e108a5
Add createSparcV8FPMoverPass().
...
llvm-svn: 16571
2004-09-29 03:25:39 +00:00
Brian Gaeke
81597f52ff
Pass which converts FpMOVD (double move pseudoinstructions) to pairs
...
of FMOVS instrs.
llvm-svn: 16570
2004-09-29 03:24:34 +00:00
Chris Lattner
4ea03eea49
Hrm, really, all tests passed without this, but it is scary to think how...
...
llvm-svn: 16568
2004-09-29 03:16:24 +00:00
Chris Lattner
1ad393b186
Remove debugging printout
...
Instcombine (setcc (truncate X), C1).
This occurs THOUSANDS of times in many benchmarks. Particularlly common
seem to be things like (seteq (cast bool X to int), int 0)
This turns it into (seteq bool %X, false), which then becomes (not %X).
llvm-svn: 16567
2004-09-29 03:09:18 +00:00
Nate Begeman
dc50ea0d82
To go along with sabre's improved InstCombining, improve recognition of
...
integers that we can use as immediate values in instructions.
Example from yacr2:
- lis r10, -1
- ori r10, r10, 65535
- add r28, r28, r10
+ addi r28, r28, -1
addi r7, r7, 1
addi r9, r9, 1
b .LBB_main_9 ; loopentry.1.i214
llvm-svn: 16566
2004-09-29 02:35:05 +00:00
Reid Spencer
3d434887d4
Improve validity checking of windows path names and fix file creation
...
problems.
Patch contributed by Jeff Cohen. Thanks Jeff!
llvm-svn: 16565
2004-09-29 00:01:17 +00:00
Reid Spencer
6a072ccbb0
Use llvm::sys::Path to destroy the file.
...
Patch contributed by Jeff Cohen. Thanks Jeff!
llvm-svn: 16564
2004-09-28 23:58:03 +00:00
Reid Spencer
e2e85bd507
Win32 implementation of TimeValue::now().
...
Patch contributed by Jeff Cohen. Thanks Jeff!
llvm-svn: 16563
2004-09-28 23:56:20 +00:00
Reid Spencer
9ef91b3145
FreeBSD implementation of the TimeValue::now() method.
...
Patch kindly contributed by Jeff Cohen. Thanks Jeff!
llvm-svn: 16562
2004-09-28 23:54:12 +00:00
Chris Lattner
0046cec2a2
Fold (X setcc C1) | (X setcc C2)
...
This implements or.ll:test1[89]
llvm-svn: 16561
2004-09-28 22:33:08 +00:00
Chris Lattner
d3cfa5aba5
Fold (and (setcc X, C1), (setcc X, C2))
...
This is important for several reasons:
1. Benchmarks have lots of code that looks like this (perlbmk in particular):
%tmp.2.i = setne int %tmp.0.i, 128 ; <bool> [#uses=1]
%tmp.6343 = seteq int %tmp.0.i, 1 ; <bool> [#uses=1]
%tmp.63 = and bool %tmp.2.i, %tmp.6343 ; <bool> [#uses=1]
we now fold away the setne, a clear improvement.
2. In the more important cases, such as (X >= 10) & (X < 20), we now produce
smaller code: (X-10) < 10.
3. Perhaps the nicest effect of this patch is that it really helps out the
code generators. In particular, for a 'range test' like the above,
instead of generating this on X86 (the difference on PPC is even more
pronounced):
cmp %EAX, 50
setge %CL
cmp %EAX, 100
setl %AL
and %CL, %AL
cmp %CL, 0
we now generate this:
add %EAX, -50
cmp %EAX, 50
Furthermore, this causes setcc's to be folded into branches more often.
These combinations trigger dozens of times in the spec benchmarks, particularly
in 176.gcc, 186.crafty, 253.perlbmk, 254.gap, & 099.go.
llvm-svn: 16559
2004-09-28 21:48:02 +00:00
Nate Begeman
18d4f04e0a
Add support for the isLoad and isStore flags, needed by the instruction scheduler
...
llvm-svn: 16555
2004-09-28 21:29:00 +00:00
Chris Lattner
bd2d966db6
Capture delay slot info
...
llvm-svn: 16551
2004-09-28 18:34:14 +00:00
Chris Lattner
d7b9ededb4
Implement X / C1 / C2 folding
...
Implement (setcc (shl X, C1), C2) folding.
The second one occurs several dozen times in spec. The first was added
just in case. :)
These are tested by shift.ll:test2[12], and div.ll:test5
llvm-svn: 16549
2004-09-28 18:22:15 +00:00
Chris Lattner
a4e0ed87bc
shl is always zero extending, so always use a zero extending shift right.
...
This latent bug was exposed by recent changes, and is tested as:
llvm/test/Regression/Transforms/InstCombine/2004-09-28-BadShiftAndSetCC.llx
llvm-svn: 16546
2004-09-28 17:54:07 +00:00
Misha Brukman
a31e841080
Fix doxygen comment
...
llvm-svn: 16542
2004-09-28 16:57:46 +00:00
Alkis Evlogimenos
4f5920aaef
Add includes and use std:: for standard library calls to make code
...
compile on windows. This patch was contributed by Paolo Invernizzi.
llvm-svn: 16539
2004-09-28 14:42:44 +00:00
Alkis Evlogimenos
192cc2e3aa
Since we use alloca now make sure we include the proper headers for it.
...
llvm-svn: 16536
2004-09-28 02:53:15 +00:00
Alkis Evlogimenos
a10f96d417
Use alloca instead of a C99 style array. This should fix the
...
compilation problem in windows.
llvm-svn: 16535
2004-09-28 02:47:38 +00:00
Alkis Evlogimenos
7ff66b2884
Pull assignment out of for loop conditional in order for this to
...
compile under windows. Patch contributed by Paolo Invernizzi!
llvm-svn: 16534
2004-09-28 02:40:37 +00:00
Alkis Evlogimenos
95cc7f115a
Fix includes. Patch contributed by Paolo Invernizzi!
...
llvm-svn: 16533
2004-09-28 02:38:58 +00:00
Chris Lattner
f953091075
Fix two bugs: one where a condition was mistakenly swapped, and another
...
where we folded (X & 254) -> X < 1 instead of X < 2. These problems were
latent problems exposed by the latest patch.
llvm-svn: 16528
2004-09-27 19:29:18 +00:00
Misha Brukman
88a1e0aba4
SparcV8 int regs are not only 32-bits in width, but they are 32-bit aligned!
...
llvm-svn: 16526
2004-09-27 18:22:18 +00:00
Chris Lattner
047daf6261
The system ranlib on darwin occasionally adds two extra newlines to the
...
end of files, breaking the CFE build. As a gross hack around this,
ignore any trailing garbage on bytecode files. Thanks to Brian for digging
in and identifying the problem.
llvm-svn: 16525
2004-09-27 16:59:06 +00:00
Chris Lattner
a715ffded3
Fold: (setcc (shr X, ShAmt), CI), where 'cc' is eq or ne. This xform
...
triggers often, for example:
6x in povray, 1x in gzip, 279x in gcc, 1x in crafty, 8x in eon, 11x in perlbmk,
362x in gap, 4x in vortex, 14 in m88ksim, 211x in 126.gcc, 1x in compress,
11x in ijpeg, and 4x in 147.vortex.
llvm-svn: 16521
2004-09-27 16:18:50 +00:00
Nate Begeman
921a44443d
Correct some BuildMI arguments for the upcoming simple scheduler
...
llvm-svn: 16519
2004-09-27 05:08:17 +00:00
Misha Brukman
84e238e5ed
Fix the copy-pasto that Brian noticed: V8 int regs are 32-bits wide, not 64.
...
llvm-svn: 16518
2004-09-26 21:07:43 +00:00
Reid Spencer
4c3cda9e95
Updated to reflect changes in the interface of TimeValue::now().
...
llvm-svn: 16515
2004-09-25 08:32:37 +00:00
Reid Spencer
78e20a7f60
Added stub implementations of TimeValue concept for remaining platforms.
...
llvm-svn: 16513
2004-09-25 05:03:54 +00:00
Reid Spencer
07d5fa1312
Wrap to 80 cols.
...
llvm-svn: 16512
2004-09-25 05:03:22 +00:00
Reid Spencer
894f394594
Initial implementation of the TimeValue abstraction.
...
llvm-svn: 16511
2004-09-24 23:25:19 +00:00
Chris Lattner
9d4748d32d
Implement shift-and combinations, implementing InstCombine/and.ll:test19-21
...
These combinations trigger 4 times in povray, 7x in gcc, 4x in gap, and 2x in bzip2.
llvm-svn: 16508
2004-09-24 15:21:34 +00:00
Chris Lattner
7e603bfc67
Move LHSI->hasOneUse() into the arms of the conditional, reindenting code.
...
No functionality changes here.
llvm-svn: 16505
2004-09-23 21:52:49 +00:00
Chris Lattner
00ea30c3c5
Implement Transforms/InstCombine/and.ll:test18, a case that occurs 20 times
...
in perlbmk
llvm-svn: 16504
2004-09-23 21:46:38 +00:00
Chris Lattner
6409a166e8
Implement select.ll:test16: fold load (select C, X, null) -> load X
...
llvm-svn: 16499
2004-09-23 15:46:00 +00:00
Reid Spencer
6210b04509
Patch for MINGW. Patch provided by Henrik Bach.
...
llvm-svn: 16495
2004-09-23 14:47:10 +00:00
Nate Begeman
75f0d35dc6
Fix the last of the major PPC GEP folding deficiencies. This will allow
...
the ISel to use indexed and non-zero immediate offsets for GEPs that have
more than one use. This is common for instruction sequences such as a load
followed by a modify and store to the same address.
llvm-svn: 16493
2004-09-23 05:31:33 +00:00
Misha Brukman
a59d95f2ed
Use the V8/V9 shared register file description
...
llvm-svn: 16485
2004-09-22 21:48:50 +00:00
Misha Brukman
72c0988b77
Combine the F2 and F3 instruction classes into one file for simplicity
...
llvm-svn: 16484
2004-09-22 21:38:42 +00:00
Misha Brukman
5290581b39
Fix file header path
...
llvm-svn: 16483
2004-09-22 21:29:12 +00:00
Misha Brukman
3f8390a72f
Prettify formatting of the file, adjust paths to making V8 a subdir of Sparc
...
llvm-svn: 16482
2004-09-22 20:09:29 +00:00
Misha Brukman
f8a2aee058
V8 is now a subdirectory of Sparc; adjust paths accordingly
...
llvm-svn: 16481
2004-09-22 20:08:52 +00:00
Nate Begeman
61d1797c03
add optimized code sequences for setcc x, 0
...
llvm-svn: 16478
2004-09-22 04:40:25 +00:00
Chris Lattner
537636bb55
Do not fold (X + C1 != C2) if there are other users of the add. Doing
...
this transformation used to take a loop like this:
int Array[1000];
void test(int X) {
int i;
for (i = 0; i < 1000; ++i)
Array[i] += X;
}
Compiled to LLVM is:
no_exit: ; preds = %entry, %no_exit
%indvar = phi uint [ 0, %entry ], [ %indvar.next, %no_exit ] ; <uint> [#uses=2]
%tmp.4 = getelementptr [1000 x int]* %Array, int 0, uint %indvar ; <int*> [#uses=2]
%tmp.7 = load int* %tmp.4 ; <int> [#uses=1]
%tmp.9 = add int %tmp.7, %X ; <int> [#uses=1]
store int %tmp.9, int* %tmp.4
*** %indvar.next = add uint %indvar, 1 ; <uint> [#uses=2]
*** %exitcond = seteq uint %indvar.next, 1000 ; <bool> [#uses=1]
br bool %exitcond, label %return, label %no_exit
and turn it into a loop like this:
no_exit: ; preds = %entry, %no_exit
%indvar = phi uint [ 0, %entry ], [ %indvar.next, %no_exit ] ; <uint> [#uses=3]
%tmp.4 = getelementptr [1000 x int]* %Array, int 0, uint %indvar ; <int*> [#uses=2]
%tmp.7 = load int* %tmp.4 ; <int> [#uses=1]
%tmp.9 = add int %tmp.7, %X ; <int> [#uses=1]
store int %tmp.9, int* %tmp.4
*** %indvar.next = add uint %indvar, 1 ; <uint> [#uses=1]
*** %exitcond = seteq uint %indvar, 999 ; <bool> [#uses=1]
br bool %exitcond, label %return, label %no_exit
Note that indvar.next and indvar can no longer be coallesced. In machine
code terms, this patch changes this code:
.LBBtest_1: # no_exit
mov %EDX, OFFSET Array
mov %ESI, %EAX
add %ESI, DWORD PTR [%EDX + 4*%ECX]
mov %EDX, OFFSET Array
mov DWORD PTR [%EDX + 4*%ECX], %ESI
mov %EDX, %ECX
inc %EDX
cmp %ECX, 999
mov %ECX, %EDX
jne .LBBtest_1 # no_exit
into this:
.LBBtest_1: # no_exit
mov %EDX, OFFSET Array
mov %ESI, %EAX
add %ESI, DWORD PTR [%EDX + 4*%ECX]
mov %EDX, OFFSET Array
mov DWORD PTR [%EDX + 4*%ECX], %ESI
inc %ECX
cmp %ECX, 1000
jne .LBBtest_1 # no_exit
We need better instruction selection to get this:
.LBBtest_1: # no_exit
add DWORD PTR [Array + 4*%ECX], EAX
inc %ECX
cmp %ECX, 1000
jne .LBBtest_1 # no_exit
... but at least there is less register juggling
llvm-svn: 16473
2004-09-21 21:35:23 +00:00
Alkis Evlogimenos
3f8f30bcb8
The real x87 floating point registers should not be allocatable. They
...
are only used by the stackifier when transforming FPn register
allocations to the real stack file x87 registers.
llvm-svn: 16472
2004-09-21 21:22:11 +00:00
Misha Brukman
bd9f406b0b
s/ISel/PPC64ISel/ to have unique class names for debugging via gdb because the
...
C++ front-end in gcc does not mangle classes in anonymous namespaces correctly.
llvm-svn: 16471
2004-09-21 18:22:33 +00:00
Misha Brukman
6ad6dd2ab9
s/ISel/PPC32ISel/ to have unique class names for debugging via gdb because the
...
C++ front-end in gcc does not mangle classes in anonymous namespaces correctly.
llvm-svn: 16470
2004-09-21 18:22:19 +00:00
Misha Brukman
e877aacbaa
s/ISel/X86ISel/ to have unique class names for debugging via gdb because the C++
...
front-end in gcc does not mangle classes in anonymous namespaces correctly.
llvm-svn: 16469
2004-09-21 18:21:21 +00:00
Chris Lattner
55d0f3ae97
Make sure to set the operand list
...
llvm-svn: 16466
2004-09-21 17:30:54 +00:00
Chris Lattner
b64bfebc25
Fix potential miscompilations: InstCombine/2004-09-20-BadLoadCombine*.llx
...
llvm-svn: 16447
2004-09-20 10:15:10 +00:00
Alkis Evlogimenos
a3a9fa1d80
Fix loop condition so that we don't decrement off the beginning of the
...
list.
llvm-svn: 16440
2004-09-20 06:42:58 +00:00
Chris Lattner
43c0372c0b
'Pass' should now not be derived from by clients. Instead, they should derive
...
from ModulePass. Instead of implementing Pass::run, then should implement
ModulePass::runOnModule.
llvm-svn: 16436
2004-09-20 04:48:05 +00:00
Chris Lattner
3acc541d97
'Pass' should now not be derived from by clients. Instead, they should derive
...
from ModulePass. Instead of implementing Pass::run, then should implement
ModulePass::runOnModule.
Also, fix some undefined behavior, expecting | on booleans to evaluate
left-to-right.
llvm-svn: 16435
2004-09-20 04:47:19 +00:00
Chris Lattner
01bbefa96c
Finegrainify namespacification
...
'Pass' should now not be derived from by clients. Instead, they should derive
from ModulePass. Instead of implementing Pass::run, then should implement
ModulePass::runOnModule.
llvm-svn: 16434
2004-09-20 04:44:31 +00:00
Chris Lattner
b65d7c65d6
Prototype more accurately
...
llvm-svn: 16433
2004-09-20 04:43:57 +00:00
Chris Lattner
c137c9ac39
Prototype these functions more accurately
...
llvm-svn: 16432
2004-09-20 04:43:15 +00:00
Reid Spencer
046d7d920a
Put in a #error in the event that we don't have an mmap that can map a file
...
into memor. This is just a reminder that the ReadFileIntoAddressSpace
function needs to be properly converted to lib/System and implemented via
read/write if there's no mmap of file support.
llvm-svn: 16428
2004-09-20 04:13:43 +00:00
Chris Lattner
f607a26457
Make isSafeToLoadUnconditionally a bit smarter, implementing PR362 and
...
Regression/Transforms/InstCombine/CPP_min_max.llx
llvm-svn: 16409
2004-09-19 19:18:10 +00:00
Chris Lattner
e6755fe307
Fix a nasty iterator invalidation problem I introduced yesterday. This
...
unfortunately is the cause of a bunch of failures from tonight, and the
reason the tester is running so slow :(
llvm-svn: 16407
2004-09-19 19:01:06 +00:00
Chris Lattner
98d434988e
Remove a whole bunch of horrible hacky code that was used to promote allocas
...
whose addresses where used by trivial phi nodes and select instructions. This
is now performed by the instcombine pass, which is more powerful, is much
simpler, and is faster. This allows the deletion of a bunch of code, two
FIXME's and two gotos.
llvm-svn: 16406
2004-09-19 18:51:51 +00:00
Chris Lattner
f45dc6dae6
Make instruction combining a bit more aggressive in the face of volatile
...
loads, and implement two new transforms: InstCombine/load.ll:test[56].
llvm-svn: 16404
2004-09-19 18:43:46 +00:00
Reid Spencer
5eee940491
Minor correction to Signals implementation.
...
Patch submitted by Jeff Cohen. Thanks Jeff!
llvm-svn: 16401
2004-09-19 05:37:39 +00:00
Chris Lattner
188b4e4983
Add comment
...
llvm-svn: 16400
2004-09-19 01:05:16 +00:00
Chris Lattner
12bcdf2e01
Fix the inliner to always delete any edges from the external call node to
...
a function being deleted. Due to optimizations done while inlining, there
can be edges from the external call node to a function node that were not
apparent any longer.
This fixes the compiler crash while compiling 175.vpr
llvm-svn: 16399
2004-09-18 21:37:03 +00:00
Chris Lattner
110bbafcf7
Add CallGraphNode::removeAnyCallEdgeTo method
...
llvm-svn: 16398
2004-09-18 21:34:34 +00:00
Reid Spencer
b503c250a3
Use the /dev/zero device as the device on which the pages are mapped.
...
Patch contributed by Henrik Bach. Thanks Henrik!
llvm-svn: 16397
2004-09-18 19:34:09 +00:00
Reid Spencer
fb3c25ded9
Porting of Unix implementation to Win32.
...
Patch contributed by Jeff Cohen. Thanks Jeff!
llvm-svn: 16396
2004-09-18 19:29:16 +00:00
Reid Spencer
9717ec42eb
Get rid of file descriptor leak in create_file.
...
llvm-svn: 16395
2004-09-18 19:25:11 +00:00
Chris Lattner
223e9d38b5
Convert this pass to be a CallGraphSCCPass instead of a Pass, which eliminates
...
the worklist and makes it more efficient. This does not change functionality
at all.
llvm-svn: 16390
2004-09-18 00:34:13 +00:00
Chris Lattner
f31ae4da07
Make sure to remove the Select instruction as well
...
llvm-svn: 16389
2004-09-18 00:32:40 +00:00
Chris Lattner
53dea1ce37
When changing a function, make sure to update the CallGraphNode for the
...
function, not just the CallGraph.
llvm-svn: 16388
2004-09-18 00:27:20 +00:00
Chris Lattner
a9b80a3258
Implement new changeFunction method, nuke a never implemented one.
...
llvm-svn: 16386
2004-09-18 00:22:13 +00:00
Chris Lattner
228e66d208
Fix typo in comment
...
llvm-svn: 16384
2004-09-17 03:58:39 +00:00
Reid Spencer
fe3656ecc6
Make sure critical sections are entered before trying to leave them.
...
Add some additional commentary about the workings of this module.
Patch contributed by Jeff Cohen. Thanks Jeff!
llvm-svn: 16383
2004-09-17 03:02:27 +00:00
Reid Spencer
08cba3070b
Allow "bc" as suffix for bytecode files.
...
llvm-svn: 16381
2004-09-16 16:36:10 +00:00
Reid Spencer
c7ed215028
Implement the signals interface for Win32.
...
Patch provided by Jeff Cohen. Thanks Jeff!
llvm-svn: 16380
2004-09-16 15:53:16 +00:00
Chris Lattner
e54e70266e
Add a newline
...
llvm-svn: 16369
2004-09-15 17:53:52 +00:00
Reid Spencer
c6a8d70cff
Convert code to compile with vc7.1.
...
Patch contributed by Paolo Invernizzi. Thanks Paolo!
llvm-svn: 16368
2004-09-15 17:06:42 +00:00
Chris Lattner
f1a0bf88c5
Add some assertions
...
llvm-svn: 16366
2004-09-15 16:59:47 +00:00
Reid Spencer
b985bbc08d
Patches to make this file actually compile under windows.
...
Patches submitted by Jeff Cohen. Thanks Jeff!
llvm-svn: 16362
2004-09-15 05:49:50 +00:00
Reid Spencer
f8a8c7dd06
Initial version of the SysConfig abstraction for Win32.
...
llvm-svn: 16361
2004-09-15 05:48:49 +00:00
Reid Spencer
32525ca7db
First version of a common header file for Win32 implementations.
...
llvm-svn: 16360
2004-09-15 05:48:11 +00:00
Reid Spencer
64076f59a3
Initial implementation of the Process abstraction for Win32.
...
llvm-svn: 16359
2004-09-15 05:47:40 +00:00
Reid Spencer
78f98e5b49
Fix the interface to ReleaseRWX to take MemoryBlock& not Memory&
...
llvm-svn: 16356
2004-09-15 03:55:45 +00:00
Chris Lattner
5751f19d86
Fix a bug in the previous checkin that broke 255.vortex
...
llvm-svn: 16355
2004-09-15 02:34:40 +00:00
Alkis Evlogimenos
95075646ab
When creating constant arrays check that the initializer vector is the
...
same size as the one in the array type.
llvm-svn: 16354
2004-09-15 02:32:15 +00:00
Misha Brukman
9e5af08ef9
Fit long lines into 80 cols via creative space elimination
...
llvm-svn: 16353
2004-09-15 01:40:18 +00:00
Misha Brukman
20c26ca53b
Wrap long line
...
llvm-svn: 16352
2004-09-15 01:34:42 +00:00
Misha Brukman
90cc1b0ed2
Targets are independent of each other, so compile them in parallel
...
llvm-svn: 16351
2004-09-15 01:34:25 +00:00
Chris Lattner
6833186048
Make sure to update alias analysis information as we transform the function.
...
This fixes PR420 and Regression/Transforms/LICM/2004-09-14-AliasAnalysisInvalidate.llx
llvm-svn: 16348
2004-09-15 01:04:07 +00:00
Chris Lattner
1d9b957384
If given an AliasSetTracker object to update, update it.
...
llvm-svn: 16347
2004-09-15 01:02:54 +00:00
Chris Lattner
606caa617e
Implement an AliasSetTracker::copyValue method
...
llvm-svn: 16344
2004-09-14 19:15:32 +00:00
Chris Lattner
a7635e78c2
Remove a long-dead pass. Actually, this pass was never used at all.
...
llvm-svn: 16337
2004-09-14 16:33:01 +00:00
Reid Spencer
73742a57c4
Fix a compilation error.
...
llvm-svn: 16335
2004-09-14 15:42:11 +00:00
Reid Spencer
7bd9d86b65
Okay, the list of link-time passes wasn't such a hot idea. Its prone to
...
error. We'll strategize on this when we have multiple front ends to deal
with. For now llvm-ld just runs a standard set of transforms.
llvm-svn: 16333
2004-09-14 05:43:23 +00:00
Chris Lattner
99d5ceac0d
Don't print newlines between passes in the pass list.
...
Note to self: sentences end with ".", not "...".
Note to reid: sentences end with ".", not "". :)
llvm-svn: 16332
2004-09-14 05:06:58 +00:00
Chris Lattner
c131f05ebb
Don't print newlines between each library in the deplibs list.
...
llvm-svn: 16331
2004-09-14 04:51:44 +00:00
Chris Lattner
aee36bb527
Revamp the Register class, and allow the use of the RegisterGroup class to
...
specify aliases directly in register definitions.
Patch contributed by Jason Eckhardt!
llvm-svn: 16330
2004-09-14 04:17:02 +00:00
Reid Spencer
d7f00c68ef
Implement the GetLibraryPath function.
...
llvm-svn: 16323
2004-09-14 00:16:39 +00:00
Reid Spencer
4a1593ebd2
Add support for the link-time pass list to Modules.
...
llvm-svn: 16321
2004-09-13 23:44:23 +00:00
Reid Spencer
ce7c15737a
Simplify the sys::Memory interface per Chris' request.
...
llvm-svn: 16318
2004-09-13 22:38:11 +00:00
Reid Spencer
2114c143cf
Clean up the interface and implementation of sys::Program so that it is
...
cleanly dissociated from the sys::Path class.
llvm-svn: 16315
2004-09-13 21:48:44 +00:00
Chris Lattner
3cfb801817
Changes to make this work with Jason's patch. I checked this by hand, but
...
would appreciate if others would also look at this to make sure I didn't
botch something obvious
llvm-svn: 16312
2004-09-13 21:32:03 +00:00
Misha Brukman
ec87a61944
Fix filename: Printer.cpp has become X86AsmPrinter.cpp
...
llvm-svn: 16299
2004-09-12 21:26:04 +00:00
Misha Brukman
e0998a1df8
Unbreak doxygen, according to Reid.
...
llvm-svn: 16298
2004-09-12 20:56:38 +00:00
Misha Brukman
7554de4ba6
Fix code spacing/alignment
...
llvm-svn: 16297
2004-09-12 20:47:33 +00:00
Reid Spencer
ab5442eccc
Fix typo: sterror -> strerror
...
llvm-svn: 16294
2004-09-11 20:18:08 +00:00
Reid Spencer
8496e508e2
Correct the dynamic lib suffix on Darwin.
...
llvm-svn: 16293
2004-09-11 07:35:01 +00:00
Reid Spencer
6920555959
Provide initial implementations of Memory and Process concepts for various
...
platforms.
Implement GetLLVMSuffix function for the Path concept.
llvm-svn: 16292
2004-09-11 04:59:30 +00:00
Reid Spencer
513f442c67
Provide a generic Unix implementation of the Memory concept.
...
llvm-svn: 16291
2004-09-11 04:57:25 +00:00
Reid Spencer
04d8abc147
Provide a generic unix implementation of the Process abstraction.
...
llvm-svn: 16290
2004-09-11 04:56:56 +00:00
Reid Spencer
aad677983e
Implemented support for detecting file types by magic number, stripping
...
path and suffix to leave basename, and getting the DLL suffix.
llvm-svn: 16289
2004-09-11 04:55:08 +00:00
Reid Spencer
94b2c61caa
Implementation of Process concept for SUSv2 platforms.
...
llvm-svn: 16288
2004-09-11 04:54:06 +00:00
Reid Spencer
b1df891777
Convert the Emitter to use the lib/System "Memory" interface instead of the
...
old SystemUtils.h interface to allocate RWX blocks of memory.
llvm-svn: 16286
2004-09-11 04:31:03 +00:00
Reid Spencer
870976f573
Implement support for dependent libraries. The "source" module's dependent
...
libraries list is merged into the "destination" module's list. Also, if the
source module is one of the dependent libraries, it is removed from the
list.
llvm-svn: 16282
2004-09-11 04:25:17 +00:00
Reid Spencer
378bdcd409
Change interface to use correct typedef so it will always compile.
...
llvm-svn: 16281
2004-09-11 04:22:58 +00:00
Reid Spencer
f0bec2fe30
Print the dependent libraries when dumping bytecode.
...
llvm-svn: 16275
2004-09-11 04:14:07 +00:00
Misha Brukman
587a924177
Renamed file to SparcV8ISelSimple.cpp
...
llvm-svn: 16267
2004-09-10 18:51:12 +00:00
Brian Gaeke
1e7a5e01e0
Roll back constant printing changes until the problems with larger
...
programs and C++ can be looked at in detail.
llvm-svn: 16266
2004-09-10 18:01:45 +00:00
Alkis Evlogimenos
04207a7cf6
Add assertion descriptiosn on type mismatches when creating
...
ConstantArray and ConstantPacked objects.
llvm-svn: 16261
2004-09-10 04:16:59 +00:00
Alkis Evlogimenos
4117e2a7a9
Grow the map on entry so that we don't crash if joinIntervals never
...
runs (if coalescing is disabled for example).
llvm-svn: 16259
2004-09-09 19:24:38 +00:00
Alkis Evlogimenos
4d2b0a2b5b
Use a shorter form to express implicit use/defs in FpGETRESULT and
...
FpSETRESULT.
llvm-svn: 16247
2004-09-08 18:29:31 +00:00
Alkis Evlogimenos
3540de9ea6
A call instruction should implicitely define ST0 since the return
...
value is returned in that register. The pseudo instructions
FpGETRESULT and FpSETRESULT shold also have an implicity use and def
of ST0 repsecitvely.
llvm-svn: 16246
2004-09-08 16:54:54 +00:00
Brian Gaeke
3229885493
This file does not need <iostream>, I think.
...
llvm-svn: 16245
2004-09-08 04:10:52 +00:00
Alkis Evlogimenos
a5edc58139
Use a DenseMap for mapping reg->reg. This improves the LiveInterval
...
analysis running time from 2.7869secs to 2.5226secs on 176.gcc.
llvm-svn: 16244
2004-09-08 03:01:50 +00:00
Nate Begeman
ce6d62eac7
Add 64 bit divide instructions, and use them
...
llvm-svn: 16198
2004-09-06 18:46:59 +00:00
Alkis Evlogimenos
992cf4f638
Indent to 2 spaces and cleanup excess whitespace.
...
llvm-svn: 16188
2004-09-05 18:41:35 +00:00
Alkis Evlogimenos
d1388a3eae
Indent to 2 spaces.
...
llvm-svn: 16187
2004-09-05 18:39:20 +00:00
Misha Brukman
8e6e187922
* Change PPC32AsmPrinter => PowerPCAsmPrinter since it is now shared between
...
Darwin and AIX and is not 32- or 64-bit specific
* Bring back PowerPC.td as a result, to make it use the `PowerPC' class name
* Adjust Makefile accordingly
llvm-svn: 16174
2004-09-05 02:42:44 +00:00
Misha Brukman
f55a7b3afa
Renamed PPC32AsmPrinter.cpp => PowerPCAsmPrinter.cpp as the Darwin and AIX asm
...
printers are now unified into one file.
llvm-svn: 16173
2004-09-05 02:27:37 +00:00
Nate Begeman
56a134d07a
Include MathExtras.h to fix build breakage, thanks to Vladimir
...
llvm-svn: 16164
2004-09-04 14:51:26 +00:00
Nate Begeman
e816600b3e
All PPC instructions are now auto-printed
...
32 and 64 bit AsmWriters unified
Darwin and AIX specific features of AsmWriter split out
llvm-svn: 16163
2004-09-04 05:00:00 +00:00
Reid Spencer
d5b1443205
Clean up some "clean:" targets so they use $(VERB) and don't print anything
...
by default, like every other "clean" target in LLVM.
llvm-svn: 16161
2004-09-03 23:19:53 +00:00
Misha Brukman
73837314b6
Order #includes alphabetically, local .h files first.
...
llvm-svn: 16153
2004-09-03 18:25:53 +00:00
Alkis Evlogimenos
0c50e0f211
Fixes to make LLVM compile with vc7.1.
...
Patch contributed by Paolo Invernizzi!
llvm-svn: 16152
2004-09-03 18:19:51 +00:00
Alkis Evlogimenos
2676000067
Change the way we choose a free register: instead of picking the first
...
free allocatable register, we prefer the a free one with the most uses
of inactive intervals.
llvm-svn: 16148
2004-09-02 21:24:33 +00:00
Alkis Evlogimenos
999a10318f
Change the way we choose a free register: instead of picking the first
...
free allocatable register, we prefer the a free one with the most uses
of inactive intervals. This causes less spills and performes a bit
better compared to gcc:
Program | GCC/LLC (Before)| GCC/LLC (After)
164.gzip/164.gzip | 0.59 | 0.60
175.vpr/175.vpr | 0.57 | 0.58
176.gcc/176.gcc | 0.59 | 0.61
181.mcf/181.mcf | 0.94 | 0.95
186.crafty/186.crafty | 0.62 | 0.62
197.parser/197.parser | 0.89 | 0.88
252.eon/252.eon | 0.61 | 0.66
253.perlbmk/253.perlbmk | 0.79 | 0.84
254.gap/254.gap | 0.81 | 0.81
255.vortex/255.vortex | 0.92 | 0.93
256.bzip2/256.bzip2 | 0.69 | 0.69
300.twolf/300.twolf | 0.91 | 0.90
llvm-svn: 16147
2004-09-02 21:23:32 +00:00
Alkis Evlogimenos
7a287da6cd
We don't need to sort the added vector as unhandled intervals are
...
stored in a binary heap.
llvm-svn: 16143
2004-09-02 18:00:38 +00:00
Nate Begeman
3bad485eec
Convert remaining X-Form and Pseudo instructions over to asm writer
...
llvm-svn: 16142
2004-09-02 08:13:00 +00:00
Brian Gaeke
79802222d1
Back to compiling land for v8
...
llvm-svn: 16138
2004-09-02 02:37:43 +00:00
Reid Spencer
c4abcbefb1
Changes For Bug 352
...
Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.
llvm-svn: 16137
2004-09-01 22:55:40 +00:00
Alkis Evlogimenos
e7e63c8da4
Be a bit more efficient when processing the active and inactive
...
lists. Instead of scanning the vector backwards, scan it forward and
swap each element we want to erase. Then at the end erase all removed
intervals at once. This doesn't save much: 0.08s out of 4s when
compiling 176.gcc.
llvm-svn: 16136
2004-09-01 22:52:29 +00:00
Alkis Evlogimenos
ad6f0f57fa
Give a better assertion if we see a use before a def.
...
llvm-svn: 16135
2004-09-01 22:34:52 +00:00
Reid Spencer
07837f4d24
mkdtemp doesn't exist on Cygwin. Use tempnam & mkdir instead.
...
llvm-svn: 16133
2004-09-01 20:29:35 +00:00
Reid Spencer
fc74d1fba8
Make CommandLine prefix error output with the name of the program.
...
llvm-svn: 16129
2004-09-01 04:41:28 +00:00
Reid Spencer
866afbdcf9
Add support for FreeBSD
...
llvm-svn: 16127
2004-08-31 18:09:35 +00:00
Reid Spencer
6e79910f16
Add support for Interix and FreeBSD
...
llvm-svn: 16126
2004-08-31 18:03:23 +00:00
Reid Spencer
20defbca69
Actually define PreventCoreFiles in the sys namespace.
...
llvm-svn: 16125
2004-08-31 17:53:41 +00:00
Reid Spencer
31513069db
Add a new abstraction, SysConfig for platform independent system
...
configuration calls. Right now this just contains PreventCoreFiles so that
bugpoint can by platform independent.
llvm-svn: 16124
2004-08-31 17:43:29 +00:00
Alkis Evlogimenos
0513a4d8e1
Minor code clarity changes.
...
llvm-svn: 16123
2004-08-31 17:39:15 +00:00
Nate Begeman
220175aa4d
convert M and MD form instructions to generated asm writer
...
llvm-svn: 16121
2004-08-31 02:28:08 +00:00
Reid Spencer
f50551771b
Move the GetTemporaryDirectory function from "generic Unix" to platform
...
specific.
llvm-svn: 16119
2004-08-30 21:46:55 +00:00
Reid Spencer
bb50ba0d5a
Add inclusion of assert.h
...
llvm-svn: 16118
2004-08-30 16:03:54 +00:00
Nate Begeman
e58512a61c
Move yet more instructions over to being printed by the generated asm writer
...
llvm-svn: 16112
2004-08-30 02:28:06 +00:00
Reid Spencer
b67b467dc9
Abbreviate the long descriptions which are now in docs/SystemLibrary.html.
...
llvm-svn: 16111
2004-08-30 02:03:51 +00:00
Reid Spencer
59cb27bcdc
Reduce the number of arguments in the instruction builder and make some
...
improvements on instruction selection that account for register and frame
index bases.
Patch contributed by Jeff Cohen. Thanks Jeff!
llvm-svn: 16110
2004-08-30 00:13:26 +00:00
Nate Begeman
7792aa1f8b
Convert A-Form instructions to auto-generated asm writer
...
llvm-svn: 16107
2004-08-29 22:45:13 +00:00
Nate Begeman
4a284c7521
Register sizes should be specified in bits
...
llvm-svn: 16106
2004-08-29 22:03:40 +00:00
Nate Begeman
68e2dd66af
Improvements to int->float cast code for PPC-64
...
llvm-svn: 16105
2004-08-29 22:02:43 +00:00
Nate Begeman
efbdaad4b7
Put this change back in after testing from Reid proved its innocence. getSpillSize now returns value in bits
...
llvm-svn: 16102
2004-08-29 22:00:24 +00:00
Reid Spencer
2413fb8988
Add a declaration of environ global for Darwin
...
llvm-svn: 16100
2004-08-29 20:10:07 +00:00
Reid Spencer
0c3bada696
Add an assert to cature null Operands. It is better to catch it here than
...
to SIGSEGV in the bowels of isa<...> later.
llvm-svn: 16098
2004-08-29 19:37:59 +00:00
Reid Spencer
3684d5e557
Signals support has been moved to lib/System
...
llvm-svn: 16097
2004-08-29 19:36:34 +00:00
Reid Spencer
e5793abe5e
Move a warning comment to where it should have been in the first place.
...
llvm-svn: 16088
2004-08-29 19:25:54 +00:00
Reid Spencer
de380840a4
Correct the vim: specification
...
llvm-svn: 16087
2004-08-29 19:24:53 +00:00
Reid Spencer
fd00fa3ad8
Include some additional header files.
...
Fix the banner length.
llvm-svn: 16086
2004-08-29 19:24:20 +00:00
Reid Spencer
49f3c9b9ee
Initial platform independent implementation of operating system concept
...
of "Signals" (cleanup after fatal errors).
llvm-svn: 16085
2004-08-29 19:22:48 +00:00
Reid Spencer
159b0103de
Initial commit of an platform-indepdendent implementation for the
...
"Program" operating system concept (find and execute programs).
llvm-svn: 16084
2004-08-29 19:20:41 +00:00
Nate Begeman
923af3763d
Implement the following missing functionality in the PPC backend:
...
cast fp->bool
cast ulong->fp
algebraic right shift long by non-constant value
These changes tested across most of the test suite. Fixes Regression/casts
llvm-svn: 16081
2004-08-29 08:19:32 +00:00
Reid Spencer
f7b4fa2e24
Revise the design of the Path concept per peer review. Too many changes to
...
note individually but these essence of it is to not derive from
std::string, clarify the interface, and provide better documentation.
There is now also (untested) implementations for AIX, Darwin, and SunOS.
llvm-svn: 16078
2004-08-29 05:24:01 +00:00
Alkis Evlogimenos
4f0c0a1adc
Remove dead code.
...
llvm-svn: 16077
2004-08-28 22:43:31 +00:00
Alkis Evlogimenos
8ae92113d6
Now that LiveIntervals::addIntervalsForSpills is fixed, do not require
...
LiveVariables.
llvm-svn: 16076
2004-08-27 19:00:29 +00:00
Alkis Evlogimenos
eb7256be64
Only update LiveVariables if it is available. addIntervalsForSpills
...
runs after the initial run of the live interval analysis.
llvm-svn: 16075
2004-08-27 18:59:22 +00:00
Alkis Evlogimenos
7c06c0aeee
Back out this change as it broke the build last night. This should be
...
investicated further as the linearscan variants don't really need
LiveVariables...
llvm-svn: 16074
2004-08-27 18:01:21 +00:00
Nate Begeman
ad24578e7d
Back out change to divide getSpillSize by 8 until I figure out why it breaks x86, which has register sizes in bits.
...
llvm-svn: 16073
2004-08-27 16:48:24 +00:00
Alkis Evlogimenos
f18ee1fc99
The linear scan variants do not require the LiveVariables analysis.
...
llvm-svn: 16071
2004-08-27 04:51:13 +00:00
Nate Begeman
c0e42be976
Register sizes are in bits, not bytes
...
llvm-svn: 16070
2004-08-27 04:28:10 +00:00
Reid Spencer
1233a0885a
Correctly compute the number of compaction tables.
...
llvm-svn: 16064
2004-08-27 00:43:51 +00:00
Reid Spencer
54503bf00a
Prevent an empty compaction table from being written to the bytecode file.
...
llvm-svn: 16063
2004-08-27 00:38:44 +00:00
Reid Spencer
6f0fa9867f
Add the CompactionTableIsEmpty function so that we can determine if a
...
CompactionTable really needs to be emitted. This is not a straight forward
computation, hence the need for a member function here.
llvm-svn: 16062
2004-08-26 22:32:00 +00:00
Alkis Evlogimenos
03913413da
Use newly added API in MRegisterInfo and don't expose the allocatable
...
register set anymore. Its users now use the MRegisterInfo API.
llvm-svn: 16061
2004-08-26 22:23:32 +00:00
Alkis Evlogimenos
3bfc6999f2
Use newly added API in MRegisterInfo.
...
llvm-svn: 16060
2004-08-26 22:22:38 +00:00
Alkis Evlogimenos
100c89e9ea
Add getAllocatableSet() function.
...
llvm-svn: 16059
2004-08-26 22:21:04 +00:00
Reid Spencer
43ef1b181f
Fix a typo.
...
llvm-svn: 16055
2004-08-26 07:43:33 +00:00
Reid Spencer
34f15a4aa7
First cut at a README for lib/System explaining the #inclusion rules and
...
design criteria.
llvm-svn: 16054
2004-08-26 07:41:41 +00:00
Reid Spencer
fd2b68b931
Add a README explaining the intended content of this directory.
...
llvm-svn: 16053
2004-08-26 05:58:20 +00:00
Brian Gaeke
69fc098326
Previous checkin broke printf(%a) support for fp constants-- re-fix it.
...
llvm-svn: 16051
2004-08-25 19:37:26 +00:00
Brian Gaeke
8b65b55ec1
New version of Bill Wendling's PR33 patch.
...
llvm-svn: 16050
2004-08-25 19:00:42 +00:00
Reid Spencer
b8dda1bbf1
Fix documentation.
...
Make the library name LLVMsystem instead of just system so as to not
to be confused with other "system" libraries.
llvm-svn: 16049
2004-08-25 06:23:45 +00:00
Reid Spencer
a50f1b794a
Initial implementation of the Path operating system concept.
...
llvm-svn: 16048
2004-08-25 06:20:07 +00:00
Reid Spencer
d17b7d288e
License for this library.
...
llvm-svn: 16047
2004-08-25 00:48:02 +00:00
Reid Spencer
2d1ee6c0d5
Add a wrapper for extraction of the dependent libraries from a bytecode
...
file.
llvm-svn: 16037
2004-08-24 22:46:20 +00:00
Reid Spencer
4691dfb9ba
Rearrange output a little to make it nicer.
...
llvm-svn: 16036
2004-08-24 22:45:32 +00:00
Reid Spencer
1605d22f77
Give the -time-passes tool option a global storage location so that its
...
value can be discovered by the various LLVM tools.
llvm-svn: 16032
2004-08-24 17:52:35 +00:00
Chris Lattner
66d61f3a72
Fix a bug in a previous checkin of mine, correcting
...
Regression.CodeGen.Generic.2004-04-09-SameValueCoalescing.llx and the
code size problem.
This bug prevented us from doing most register coallesces.
llvm-svn: 16031
2004-08-24 17:48:29 +00:00
Chris Lattner
6781bb48eb
Add -sse[,2,3] arguments to LLC
...
llvm-svn: 16018
2004-08-24 08:18:44 +00:00
Chris Lattner
28c7ae5697
Nuke commented out stuff
...
llvm-svn: 16017
2004-08-24 08:18:27 +00:00
Brian Gaeke
e91606291d
This code is dodgy, but the guaranteed assertion failure doesn't help anything.
...
llvm-svn: 16014
2004-08-24 06:41:40 +00:00
Brian Gaeke
ae3378f354
Fix bug in PhyRegAlloc::setCallInterferences() handling call through a
...
null pointer.
llvm-svn: 16013
2004-08-24 06:41:39 +00:00
Brian Gaeke
a4eb36282c
Revise head-of-file comment.
...
Eliminate some excess whitespace.
Fix bug in CallArgsDescriptor::get() handling call through a null pointer.
llvm-svn: 16012
2004-08-24 06:41:38 +00:00
Chris Lattner
05d5a44c02
Do not use .xword and friends to emit zeros on V9. Apparently there are issues
...
with emitting .xwords when not on an 8-byte boundary (.xword 0 is not the
same as 8 .byte 0's). Because we do not know when or when we are not aligned,
just emit bytes like the old V9 asmprinter did.
llvm-svn: 16006
2004-08-24 00:26:11 +00:00
Nate Begeman
0069f07741
Kill a majority of unnecessary sign extensions for byte loads
...
llvm-svn: 15991
2004-08-22 08:10:15 +00:00
Nate Begeman
72ec463dc7
Don't hard code the offset of the saved R31 in functions with frame pointers
...
llvm-svn: 15990
2004-08-22 08:09:17 +00:00
Reid Spencer
7117a132ea
Initial checkin of a pass to lower packed operations to scalars operations.
...
This also registers the pass with opt with a -lower-packed command line
option.
Patch contributed by Brad Jones.
llvm-svn: 15987
2004-08-21 21:39:24 +00:00
Reid Spencer
d7d70bdccb
Bytecode Analyzer Cleanup:
...
- Rearrange output order to make more sense
- Make only the function level output count as "detailed"
- Output dump output directly to stream, don't buffer it.
- Fix counting of block sizes
- Implement new handlers for number of types, dependent libs, target triple
- Compute the size of block headers.
llvm-svn: 15985
2004-08-21 20:58:19 +00:00
Reid Spencer
4c9c991659
Get rid of an extraneous local variable.
...
llvm-svn: 15984
2004-08-21 20:53:56 +00:00
Reid Spencer
84d4e1b105
Two Changes:
...
- Pass the output stream to the analyzer so it can write its output there
directly instead of buffering it.
- Don't pass a boolean to ParseBytecode because its not needed any more.
llvm-svn: 15983
2004-08-21 20:52:03 +00:00
Reid Spencer
c0868628e0
Add boolean file format flags in preparation for version 5 bytecode.
...
Remove the "processFunctions" boolean from ParseBytecode as it is no
longer needed. This is part of avoiding double reading of functions
when analyzing bytecode.
llvm-svn: 15982
2004-08-21 20:50:49 +00:00
Reid Spencer
09976167c1
Bytecode Reader Cleanup:
...
- provide the correct conversion for ModuleBlockID in read_block (a potential
bug but not actually exploited because reading module block ids doesn't
use read_block).
- install support for handleTypeList handler
- install support for handleDependentLibrary handler
- install support for handleTargetTriple handler
- clean up comments, output strings,
- ensure that processing function arguments doesn't SIGSEGV if one of the
arguments is a null pointer (yeah, it happened .. weird)
- prepare for version 5 bytecode by documenting what will change.
llvm-svn: 15981
2004-08-21 20:49:23 +00:00
Nate Begeman
e6aace2ecb
Back out branchless SetCC code. While it helped a lot in some cases, it
...
hurt a lot in others. Instead, improve branching version of SetCC and
Select instructions. The old code will be in CVS should we ever need to
dig it up again.
llvm-svn: 15979
2004-08-21 20:42:14 +00:00
Chris Lattner
15593f74c1
Switch from bytes to bits for alignment.
...
Also, change GPRC for PPC32 to align on 32-bit boundary instead of 64-bit
llvm-svn: 15975
2004-08-21 20:14:40 +00:00
Chris Lattner
64d3bc5e85
Switch from bytes to bits for alignment for consistency
...
llvm-svn: 15974
2004-08-21 20:14:13 +00:00