Commit Graph

10841 Commits

Author SHA1 Message Date
Devang Patel 53a40df6ea Remove DW_AT_start_scope support. It is incomplete and superseeded by location entries support.
llvm-svn: 118940
2010-11-12 23:20:42 +00:00
Andrew Trick 6cbf6c1db5 typo (4th checkin for one fix)
llvm-svn: 118913
2010-11-12 18:36:03 +00:00
Andrew Trick 116efac780 Fixes PR8287: SD scheduling time. The fix is a failsafe that prevents
catastrophic compilation time in the event of unreasonable LLVM
IR. Code quality is a separate issue--someone upstream needs to do a
better job of reducing to llvm.memcpy. If the situation can be reproduced with
any supported frontend, then it will be a separate bug.

llvm-svn: 118904
2010-11-12 17:50:46 +00:00
Chris Lattner 64634c36dd tidy up.
llvm-svn: 118896
2010-11-12 17:24:29 +00:00
Lang Hames c702ba6ca1 Fix some style issues in PBQP. Patch by David Blaikie.
llvm-svn: 118883
2010-11-12 05:47:21 +00:00
Dan Gohman 4162e3e213 Add a FIXME comment.
llvm-svn: 118803
2010-11-11 18:08:43 +00:00
Andrew Trick f11344d770 Check TRI->getReservedRegs because other allocators do it. Even though
it makes no sense for allocation_order iterators to visit reserved regs.
The inline spiller depends on AliasAnalysis.
Manage the Query state to avoid uninitialized or stale results.

llvm-svn: 118800
2010-11-11 17:46:29 +00:00
Dan Gohman 6cf9bb45ad Remove the memmove->memcpy optimization from CodeGen. MemCpyOpt does this.
llvm-svn: 118789
2010-11-11 16:24:49 +00:00
Jakob Stoklund Olesen 9a2c6b8f3e Delete SplittingSpiller. It was not being used by anyone, and it is being
superceded by SplitKit.

llvm-svn: 118754
2010-11-11 00:52:44 +00:00
Jakob Stoklund Olesen c400670bf1 Insert two blank SlotIndexes between basic blocks instead of just one.
This is the first small step towards using closed intervals for liveness instead
of the half-open intervals we're using now.

We want to be able to distinguish between a SlotIndex that represents a variable
being live-out of a basic block, and an index representing a variable live-in to
its successor.

That requires two separate indexes between blocks. One for live-outs and one for
live-ins.

With this change, getMBBEndIdx(MBB).getPrevSlot() becomes stable so it stays
greater than any instructions inserted at the end of MBB.

llvm-svn: 118747
2010-11-11 00:19:20 +00:00
Jakob Stoklund Olesen 3cb87f4c31 No need to add liveness that's already there.
llvm-svn: 118742
2010-11-10 23:56:00 +00:00
Jakob Stoklund Olesen 868dd4e66a Hook up AliasAnalysis in InlineSpiller. This is used for rematerializing
constant loads.

llvm-svn: 118741
2010-11-10 23:55:56 +00:00
Devang Patel 364bf04267 Take care of special characters while creating named MDNode name to hold function specific local variable's info.
This fixes radar 8653152. I am checking in testcase as a separate check-in.

llvm-svn: 118726
2010-11-10 22:19:21 +00:00
Jakob Stoklund Olesen 6ee7d9aade Basic rematerialization during splitting.
Whenever splitting wants to insert a copy, it checks if the value can be
rematerialized cheaply instead.

Missing features:
- Delete instructions when all uses have been rematerialized.
- Truncate live ranges to the remaining uses after rematerialization.

llvm-svn: 118702
2010-11-10 19:31:50 +00:00
Andrew Trick 89eb6a8b94 RABasic is nearly functionally complete. There are a few remaining
benchmarks hitting an assertion.
Adds LiveIntervalUnion::collectInterferingVRegs.
Fixes "late spilling" by checking for any unspillable live vregs among
all physReg aliases.

llvm-svn: 118701
2010-11-10 19:18:47 +00:00
Jakob Stoklund Olesen de5c4dc24b Simplify the LiveRangeEdit::canRematerializeAt() interface a bit.
llvm-svn: 118661
2010-11-10 01:05:12 +00:00
Rafael Espindola 9bb44a5ce8 Fixed version of 118639 with an extra assert to catch similar problems
earlier. Implicit bool -> int conversions are evil!

llvm-svn: 118651
2010-11-09 23:42:07 +00:00
Andrew Trick 488660554e Adds RABasic verification and tracing.
(retry now that the windows build is green)

llvm-svn: 118630
2010-11-09 21:04:34 +00:00
Matt Beaumont-Gay 7c1fddb531 Add a trivial virtual dtor to AbstractRegisterDescription to appease
-Wnon-virtual-dtor.

llvm-svn: 118616
2010-11-09 19:56:25 +00:00
Andrew Trick 42d50e920b Reverting r118604. Windows build broke.
llvm-svn: 118613
2010-11-09 19:47:51 +00:00
Andrew Trick 85064c17be Adds RABasic verification and tracing.
llvm-svn: 118604
2010-11-09 19:01:17 +00:00
Dan Gohman 5db8921422 Fix DAGCombiner to avoid folding a sext-in-reg or similar through a shl
in order to fold it into a load.

llvm-svn: 118471
2010-11-09 01:54:35 +00:00
Dale Johannesen f11ea9ce61 Fix an inline asm pasto from 117667; was preventing
{i64, i64} from matching i128.

llvm-svn: 118465
2010-11-09 01:15:07 +00:00
Andrew Trick 3528465232 Adds support for spilling previously allocated live intervals to
handle cases in which a register is unavailable for spill code.
Adds LiveIntervalUnion::extract. While processing interferences on a
live virtual register, reuses the same Query object for each
physcial reg.

llvm-svn: 118423
2010-11-08 18:02:08 +00:00
Che-Liang Chiou 345b98eddd Add registry hook for assembly text output
llvm-svn: 118394
2010-11-08 02:21:17 +00:00