- Feb 12, 2009
-
-
Evan Cheng authored
Remove a bogus assertion. It's possible a live-in available value is used by a previous instruction. llvm-svn: 64339
-
- Feb 11, 2009
-
-
Dan Gohman authored
llvm-svn: 64328
-
Dan Gohman authored
unless they actually have data successors, and likewise for nodes with no data successors unless they actually have data precessors. llvm-svn: 64327
-
Dan Gohman authored
is determined by whether the node has a Flag operand. However, if the node does have a Flag operand, it will be glued to its register's def, so the heuristic would end up spuriously applying to whatever node is the def. llvm-svn: 64319
-
Dale Johannesen authored
It was transforming (x&y)==y to (x&y)!=0 in the case where y is variable and known to have at most one bit set (e.g. z&1). This is not correct; the expressions are not equivalent when y==0. I believe this patch salvages what can be salvaged, including all the cases in bt.ll. Dan, please review. Fixes gcc.c-torture/execute/20040709-[12].c llvm-svn: 64314
-
Evan Cheng authored
Implement PR3495: local spiller optimization. The local spiller can now keep availability information over BB boundaries. It visits BB's in depth first order. After visiting a BB if it find a successor which has a single predecessor it visits the successor next without clearing the availability information. This allows the successor to omit reloads or change them into copies. llvm-svn: 64298
-
Dan Gohman authored
instruction index across each part. Instruction indices are used to make live range queries, and live ranges can extend beyond scheduling region boundaries. Refactor the ScheduleDAGSDNodes class some more so that it doesn't have to worry about this additional information. llvm-svn: 64288
-
Dan Gohman authored
an index. This code is on the hot-path because the current way SDep edges are uniqued has quadratic complexity. llvm-svn: 64262
-
Dan Gohman authored
a scheduling region boundary. This isn't necessary for correctness; it helps with compile time, as it avoids the need for data- and anti-dependencies from all spills and reloads on the stack-pointer modification. llvm-svn: 64255
-
Dan Gohman authored
scheduling, and generalize is so that preserves state across scheduling regions. This fixes incorrect live-range information around terminators and labels, which are effective region boundaries. In place of looking for terminators to anchor inter-block dependencies, introduce special entry and exit scheduling units for this purpose. llvm-svn: 64254
-
- Feb 10, 2009
-
-
Evan Cheng authored
Fix PR3457: Ignore control successors when looking for closest scheduled successor. A control successor doesn't read result(s) produced by the scheduling unit being evaluated. llvm-svn: 64210
-
Devang Patel authored
llvm-svn: 64204
-
- Feb 09, 2009
-
-
Evan Cheng authored
If the target cannot issue a copy for the given source and dest registers, abort instead of silently continue. llvm-svn: 64184
-
Evan Cheng authored
llvm-svn: 64164
-
Evan Cheng authored
llvm-svn: 64163
-
Evan Cheng authored
llvm-svn: 64126
-
Evan Cheng authored
Fix another case ShortenDeadCopySrcLiveRange is shortening too much. No test case possible since I don't know what to grep for. :-( llvm-svn: 64125
-
Evan Cheng authored
suprise to some callers, e.g. register coalescer. For now, add an parameter that tells AnalyzeBranch whether it's safe to modify the mbb. A better solution is out there, but I don't have time to deal with it right now. llvm-svn: 64124
-
- Feb 08, 2009
-
-
Evan Cheng authored
Fix PR3486. Fix a bug in code that manually patch physical register live interval after its sub-register is coalesced with a virtual register. llvm-svn: 64082
-
Evan Cheng authored
llvm-svn: 64076
-
Evan Cheng authored
Right now if the coalesced copy def is dead and its src is a kill, and that there are now other uses within the live range, the coalescer would mark the def of the source register as dead. But it should also check if there are other kills which means the value has other uses not in the live range. llvm-svn: 64075
-
Evan Cheng authored
llvm-svn: 64073
-
Bill Wendling authored
llvm-svn: 64062
-
- Feb 07, 2009
-
-
Chris Lattner authored
llvm-svn: 64040
-
Dale Johannesen authored
No functional change. llvm-svn: 64026
-
Dan Gohman authored
ScheduleDAG's TLI member to use const. llvm-svn: 64018
-
Dale Johannesen authored
Adjust derived classes to pass UnknownLoc where a DebugLoc does not make sense. Pick one of DebugLoc and non-DebugLoc variants to survive for all such classes. llvm-svn: 64000
-
Evan Cheng authored
llvm-svn: 63999
-
Dale Johannesen authored
llvm-svn: 63995
-
Evan Cheng authored
Don't sink the instruction if TargetRegisterInfo::isSafeToMoveRegClassDefs doesn't think it's safe. This works around PR1911. llvm-svn: 63994
-
Dale Johannesen authored
Many targets build placeholder nodes for special operands, e.g. GlobalBaseReg on X86 and PPC for the PIC base. There's no sensible way to associate debug info with these. I've left them built with getNode calls with explicit DebugLoc::getUnknownLoc operands. I'm not too happy about this but don't see a good improvement; I considered adding a getPseudoOperand or something, but it seems to me that'll just make it harder to read. llvm-svn: 63992
-
Dale Johannesen authored
getCALLSEQ_{END,START} to permit passing no DebugLoc there. UNDEF doesn't logically have DebugLoc; add getUNDEF to encapsulate this. llvm-svn: 63978
-
- Feb 06, 2009
-
-
Dale Johannesen authored
llvm-svn: 63971
-
Dale Johannesen authored
llvm-svn: 63969
-
Bill Wendling authored
llvm-svn: 63967
-
Dale Johannesen authored
llvm-svn: 63951
-
Dan Gohman authored
SelectionDAGISel::CreateScheduler, and make it just create the scheduler. Leave running the scheduler to the higher-level code. This makes the higher-level code a little more explicit and easier to follow, and will help enable some future refactoring. llvm-svn: 63944
-
Dan Gohman authored
llvm-svn: 63941
-
Evan Cheng authored
llvm-svn: 63938
-
Dan Gohman authored
that previously included this header should include SchedulerRegistry.h instead. llvm-svn: 63937
-