- Sep 24, 2009
-
-
Chris Lattner authored
unconditionally compute MMI even if the target doesn't support EH or Debug info, because the target may use it for other things, this fixes PR5036 llvm-svn: 82684
-
Chris Lattner authored
llvm-svn: 82683
-
Evan Cheng authored
LiveVariables add implicit kills to correctly track partial register kills. This works well enough and is fairly accurate. But coalescer can make it impossible to maintain these markers. e.g. BL <ga:sss1>, %R0<kill,undef>, %S0<kill>, %R0<imp-def>, %R1<imp-def,dead>, %R2<imp-def,dead>, %R3<imp-def,dead>, %R12<imp-def,dead>, %LR<imp-def,dead>, %D0<imp-def>, ... ... %reg1031<def> = FLDS <cp#1>, 0, 14, %reg0, Mem:LD4[ConstantPool] ... %S0<def> = FCPYS %reg1031<kill>, 14, %reg0, %D0<imp-use,kill> When reg1031 and S0 are coalesced, the copy (FCPYS) will be eliminated the the implicit-kill of D0 is lost. In this case it's possible to move the marker to the FLDS. But in many cases, this is not possible. Suppose %reg1031<def> = FOO <cp#1>, %D0<imp-def> ... %S0<def> = FCPYS %reg1031<kill>, 14, %reg0, %D0<imp-use,kill> When FCPYS goes away, the definition of S0 is the "FOO" instruction. However, transferring the D0 implicit-kill to FOO doesn't work since it is the def of D0 itself. We need to fix this in another time by introducing a "kill" pseudo instruction to track liveness. Disabling the assertion is not ideal, but machine verifier is doing that job now. It's important to know double-def is not a miscomputation since it means a register should be free but it's not tracked as free. It's a performance issue instead. llvm-svn: 82677
-
Evan Cheng authored
Clean up LiveVariables and change how it deals with partial updates and kills. This also eliminate the horrible check which scan forward to the end of the basic block. It should be faster and more accurate. llvm-svn: 82676
-
Jeffrey Yasskin authored
a trivial unittest would have caught. This revision also adds the trivial unittest. llvm-svn: 82675
-
Dale Johannesen authored
computation, and some cosmetics. llvm-svn: 82660
-
- Sep 23, 2009
-
-
David Goodwin authored
llvm-svn: 82657
-
Dan Gohman authored
llvm-svn: 82656
-
Dan Gohman authored
is also the name of their type, as declarations like "EVT EVT" look really odd. llvm-svn: 82654
-
Jakob Stoklund Olesen authored
The machine code verifier did not check for explicit operands correctly. It used MachineInstr::getNumExplicitOperands, but that method may cheat and use the declared count in the TargetInstrDesc. Now we check the explicit operands one at a time in visitMachineOperand. llvm-svn: 82652
-
Bob Wilson authored
default implementation. Update comment on the default version, which made it sound like most targets override it. Currently only X86 and SystemZ override this method. llvm-svn: 82651
-
Devang Patel authored
llvm-svn: 82647
-
Anton Korobeynikov authored
This fixes PR5031. Unfortunately, there is no small testcase :( llvm-svn: 82643
-
Bob Wilson authored
llvm-svn: 82641
-
Devang Patel authored
llvm-svn: 82638
-
David Goodwin authored
Fix bug in kill flag updating for post-register-allocation scheduling. When the kill flag of a superreg needs to be cleared because there are one or more subregs live, we instead add implicit-defs of those subregs and leave the kill flag on the superreg. This allows us to end the live-range of the superreg without ending the live-ranges of the subregs. llvm-svn: 82629
-
Benjamin Kramer authored
llvm-svn: 82622
-
Evan Cheng authored
of the defs are processed. Also fix a implicit_def propagation bug: a implicit_def of a physical register should be applied to uses of the sub-registers. llvm-svn: 82616
-
Evan Cheng authored
llvm-svn: 82610
-
Chris Lattner authored
"the jit has not been linked in" if the interpreter failed. This fixes a unit test failure. llvm-svn: 82601
-
Chris Lattner authored
llvm-svn: 82600
-
Dan Gohman authored
two different places for printing MachineMemOperands. Drop the virtual from Value::dump and instead give Value a protected virtual hook that can be overridden by subclasses to implement custom printing. This lets printing be more consistent, and simplifies printing of PseudoSourceValue values. llvm-svn: 82599
-
Dan Gohman authored
llvm-svn: 82597
-
Mike Stump authored
llvm-svn: 82591
-
- Sep 22, 2009
-
-
Victor Hernandez authored
llvm-svn: 82561
-
David Goodwin authored
llvm-svn: 82554
-
Daniel Dunbar authored
llvm-svn: 82552
-
Daniel Dunbar authored
llvm-svn: 82551
-
Mikhail Glushenkov authored
GetProcessId() was introduced only in Windows XP, and we want to support earlier versions. llvm-svn: 82548
-
Daniel Dunbar authored
llvm-svn: 82544
-
Daniel Dunbar authored
Add a magic LLVM_DISABLE_CRT_DEBUG environment variable which we check in RegisterHandler and use to disable the Win32 crash dialogs. These are a major blocker to any kind of automated testing. Also, tweak the 'lit' test runner to set this variable unconditionally. llvm-svn: 82537
-
Evan Cheng authored
Fix PR5024. LiveVariables::FindLastPartialDef should return a set of sub-registers that were defined by the last partial def, not just a single sub-register. llvm-svn: 82535
-
Daniel Dunbar authored
llvm-svn: 82532
-
Daniel Dunbar authored
ExecuteAndWait. llvm-svn: 82522
-
Daniel Dunbar authored
- This also fixes a dereference of std::string::end, which makes MSVC unhappy and was causing all the static analyzer clang tests to fail. llvm-svn: 82517
-
Daniel Dunbar authored
static const class member into each translation unit, with external linkage??? - If someone understands this issue better, please clue me in, I haven't consulted the standard yet. llvm-svn: 82516
-
Daniel Dunbar authored
Switch DIDescriptor to use a TrackingVH. - This makes it much safer to work with debug info, since it was extraordinarily easy to have dangling pointers thanks to MDNode uniquing. llvm-svn: 82507
-
Daniel Dunbar authored
This is designed for tracking a value even when it might move (like WeakVH), but it is an error to delete the referenced value (unlike WeakVH0. TrackingVH is templated like AssertingVH on the tracked Value subclass, it is an error to RAUW a tracked value to an incompatible type. For implementation reasons the latter error is only diagnosed on accesses to a mis-RAUWed TrackingVH, because we don't want a virtual interface in a templated class. The former error is also only diagnosed on access, so that clients are allowed to delete a tracked value, as long as they don't use it. This makes it easier for the client to reason about destruction. llvm-svn: 82506
-
Evan Cheng authored
llvm-svn: 82505
-
Evan Cheng authored
%S0<def> = EXTRACT_SUBREG %Q0<kill>, 1 to %S0<def> = IMPLICIT_DEF %Q0<imp-use,kill> Implicit_def does not *read* any register so the operand should be marked "implicit". The missing "implicit" marker on the operand is wrong, but it doesn't actually break anything. llvm-svn: 82503
-