Lang Hames
0b3720b3c3
Fixed a test that ensures the LocalRewriter does not attempt to
...
avoid reloads by reusing clobbered registers.
This was causing issues in 256.bzip2 when compiled with PIC for
a while (starting at r78217), though the problem has since been masked.
llvm-svn: 80872
2009-09-03 02:52:02 +00:00
Daniel Dunbar
e7e865cf0b
Suppress build warning in -Asserts
...
llvm-svn: 79564
2009-08-20 20:01:34 +00:00
Lang Hames
11732add1e
Added an option to have the PBQP allocator attempt coalescing during allocation.
...
llvm-svn: 79397
2009-08-19 01:36:14 +00:00
Lang Hames
305be0e603
Changes DOUT references in the PBQP allocator to use DEBUG(errs() ...)
...
llvm-svn: 79378
2009-08-18 23:34:50 +00:00
Lang Hames
b4c6965da3
Added RegisterCoalescer to required passes for PBQP.
...
llvm-svn: 78840
2009-08-12 21:04:53 +00:00
Dan Gohman
c7c2bc9663
Remove unnecessary throw() specifications; LLVM doesn't use exceptions.
...
llvm-svn: 78667
2009-08-11 15:35:57 +00:00
Dan Gohman
38484ceec9
Remove unnecessary casts.
...
llvm-svn: 78664
2009-08-11 15:15:10 +00:00
Lang Hames
3b90d973b0
Modified VNInfo. The "copy" member is now a union which holds the copy for a register interval, or the defining register for a stack interval. Access is via getCopy/setCopy and getReg/setReg.
...
llvm-svn: 78620
2009-08-10 23:43:28 +00:00
Owen Anderson
eddff647ac
Remove a bunch of debugging code that was slowing PBQP down by 25% or so.
...
llvm-svn: 78601
2009-08-10 21:49:45 +00:00
Daniel Dunbar
4bfb4c80e0
Fix some -Asserts unused variable warnings.
...
llvm-svn: 78447
2009-08-08 00:40:46 +00:00
Lang Hames
88fae6f9c9
New C++ PBQP solver. Currently about as fast (read _slow_) as the old C based solver, but I'll be working to improve that. The PBQP allocator has been updated to use the new solver.
...
llvm-svn: 78354
2009-08-06 23:32:48 +00:00
Dan Gohman
0402315d41
Use setPreservesAll and setPreservesCFG in CodeGen passes.
...
llvm-svn: 77754
2009-07-31 23:37:33 +00:00
Daniel Dunbar
0dd5e1ed39
More migration to raw_ostream, the water has dried up around the iostream hole.
...
- Some clients which used DOUT have moved to DEBUG. We are deprecating the
"magic" DOUT behavior which avoided calling printing functions when the
statement was disabled. In addition to being unnecessary magic, it had the
downside of leaving code in -Asserts builds, and of hiding potentially
unnecessary computations.
llvm-svn: 77019
2009-07-25 00:23:56 +00:00
Lang Hames
16cab1935e
VNInfo cleanup.
...
llvm-svn: 73634
2009-06-17 21:01:20 +00:00
Evan Cheng
085caf10be
Move register allocation preference (or hint) from LiveInterval to MachineRegisterInfo. This allows more passes to set them.
...
llvm-svn: 73346
2009-06-14 20:22:55 +00:00
Bill Wendling
09f17a8479
Untabification.
...
llvm-svn: 72604
2009-05-30 01:09:53 +00:00
Lang Hames
4030d8122d
Prevented reg0 from being added to MBB live-in set, which was causing issues
...
for PostRAScheduler.
llvm-svn: 71991
2009-05-17 23:50:36 +00:00
Lang Hames
ab68cf24bb
Renamed Spiller classes (plus uses and related files) to VirtRegRewriter.
...
llvm-svn: 71057
2009-05-06 02:36:21 +00:00
Evan Cheng
210fc62a91
In some rare cases, the register allocator can spill registers but end up not utilizing registers at all. The fundamental problem is linearscan's backtracking can end up freeing more than one allocated registers. However, reloads and restores might be folded into uses / defs and freed registers might not be used at all.
...
VirtRegMap keeps track of allocations so it knows what's not used. As a horrible hack, the stack coloring can color spill slots with *free* registers. That is, it replace reload and spills with copies from and to the free register. It unfold instructions that load and store the spill slot and replace them with register using variants.
Not yet enabled. This is part 1. More coming.
llvm-svn: 70787
2009-05-03 18:32:42 +00:00
Evan Cheng
1a99a5f501
It has finally happened. Spiller is now using live interval info.
...
This fixes a very subtle bug. vr defined by an implicit_def is allowed overlap with any register since it doesn't actually modify anything. However, if it's used as a two-address use, its live range can be extended and it can be spilled. The spiller must take care not to emit a reload for the vn number that's defined by the implicit_def. This is both a correctness and performance issue.
llvm-svn: 69743
2009-04-21 22:46:52 +00:00
Sanjiv Gupta
88e15b258f
r66870 missed this out.
...
llvm-svn: 67082
2009-03-17 15:46:15 +00:00
Owen Anderson
d37ddf5b5b
Convert VirtRegMap to a MachineFunctionPass.
...
llvm-svn: 66870
2009-03-13 05:55:11 +00:00
Owen Anderson
aabe06d92a
Reorganization: Move the Spiller out of VirtRegMap.cpp into its own files. No (intended) functionality change.
...
llvm-svn: 66720
2009-03-11 22:31:21 +00:00
Evan Cheng
c544cb0eca
Change TargetInstrInfo::isMoveInstr to return source and destination sub-register indices as well.
...
llvm-svn: 62600
2009-01-20 19:12:24 +00:00
Misha Brukman
572f2646c2
* Moved author attribution to CREDITS.TXT
...
* Removed trailing whitespace
llvm-svn: 61927
2009-01-08 16:40:25 +00:00
Misha Brukman
da46748ad2
* Alphabetized #includes
...
* Removed trailing whitespace
llvm-svn: 61926
2009-01-08 15:50:22 +00:00
Argyrios Kyrtzidis
4172d641d1
Fix compilation error on MSVC.
...
llvm-svn: 59629
2008-11-19 12:56:21 +00:00
Lang Hames
49ab8bc67d
Big PBQP allocator update. Adds coalescing support, stack slot coloring, several bug-fixes.
...
llvm-svn: 59414
2008-11-16 12:12:54 +00:00
Lang Hames
9a91bd82c5
Test commit.
...
llvm-svn: 59293
2008-11-14 06:51:35 +00:00
Dan Gohman
9c4b7d5c4f
Fix command-line option printing to print two spaces where needed,
...
instead of requiring all "short description" strings to begin with
two spaces. This makes these strings less mysterious, and it fixes
some cases where short description strings mistakenly did not
begin with two spaces.
llvm-svn: 57521
2008-10-14 20:25:08 +00:00
Evan Cheng
8428cfc93b
Fix typos pointed out by Duncan. Also untabify these files.
...
llvm-svn: 57018
2008-10-03 17:11:58 +00:00
Dan Gohman
0d1e9a8e04
Switch the MachineOperand accessors back to the short names like
...
isReg, etc., from isRegister, etc.
llvm-svn: 57006
2008-10-03 15:45:36 +00:00
Evan Cheng
b25f4637dd
A Partitioned Boolean Quadratic Programming (PBQP) based register allocator.
...
Contributed by Lang Hames.
llvm-svn: 56959
2008-10-02 18:29:27 +00:00