- Aug 06, 2010
-
-
Owen Anderson authored
llvm-svn: 110410
-
Owen Anderson authored
ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
-
- Jul 22, 2010
-
-
Owen Anderson authored
llvm-svn: 109045
-
- Jun 25, 2010
-
-
Bill Wendling authored
- 2010-06-25-CoalescerSubRegDefDead.ll is the testcase for r106878. llvm-svn: 106880
-
- Jun 23, 2010
-
-
Daniel Dunbar authored
Revert r106066, "Create a more targeted fix for not sinking instructions into a range where it"... it causes bzip2 to be miscompiled by Clang. Conflicts: lib/CodeGen/MachineSink.cpp llvm-svn: 106614
-
- Jun 16, 2010
-
-
Bill Wendling authored
llvm-svn: 106119
-
Bill Wendling authored
will conflict with another live range. The place which creates this scenerio is the code in X86 that lowers a select instruction by splitting the MBBs. This eliminates the need to check from the bottom up in an MBB for live pregs. llvm-svn: 106066
-
- Jun 04, 2010
-
-
Jim Grosbach authored
llvm-svn: 105435
-
- Jun 03, 2010
-
-
Bill Wendling authored
registers it defines then interfere with an existing preg live range. For instance, if we had something like these machine instructions: BB#0 ... = imul ... EFLAGS<imp-def,dead> test ..., EFLAGS<imp-def> jcc BB#2 EFLAGS<imp-use> BB#1 ... ; fallthrough to BB#2 BB#2 ... ; No code that defines EFLAGS jcc ... EFLAGS<imp-use> Machine sink will come along, see that imul implicitly defines EFLAGS, but because it's "dead", it assumes that it can move imul into BB#2. But when it does, imul's "dead" imp-def of EFLAGS is raised from the dead (a zombie) and messes up the condition code for the jump (and pretty much anything else which relies upon it being correct). The solution is to know which pregs are live going into a basic block. However, that information isn't calculated at this point. Nor does the LiveVariables pass take into account non-allocatable physical registers. In lieu of this, we do a *very* conservative pass through the basic block to determine if a preg is live coming out of it. llvm-svn: 105387
-
Bill Wendling authored
llvm-svn: 105359
-
- May 13, 2010
-
-
Dan Gohman authored
when they move instructions. llvm-svn: 103737
-
- Apr 16, 2010
-
-
Jakob Stoklund Olesen authored
MachineLoopInfo is already available when MachineSinking runs, so the check is free. There is no test case because it would require a critical edge into a loop, and CodeGenPrepare splits those. This check is just to be extra careful. llvm-svn: 101420
-
- Apr 13, 2010
-
-
Jakob Stoklund Olesen authored
Sometimes it is desirable to sink instructions along a critical edge: x = ... if (a && b) ... else use(x); The 'a && b' condition creates a critical edge to the else block, but we still want to sink the computation of x into the block. The else block is dominated by the parent block, so we are not pushing instructions into new code paths. llvm-svn: 101165
-
- Apr 05, 2010
-
-
Dan Gohman authored
llvm-svn: 100455
-
- Mar 05, 2010
-
-
Dale Johannesen authored
llvm-svn: 97765
-
- Mar 02, 2010
-
-
Evan Cheng authored
llvm-svn: 97578
-
- Feb 09, 2010
-
-
Chris Lattner authored
into TargetOpcodes.h. #include the new TargetOpcodes.h into MachineInstr. Add new inline accessors (like isPHI()) to MachineInstr, and start using them throughout the codebase. llvm-svn: 95687
-
- Jan 05, 2010
-
-
David Greene authored
llvm-svn: 92593
-
- Oct 25, 2009
-
-
Nick Lewycky authored
VISIBILITY_HIDDEN removal. llvm-svn: 85043
-
Nick Lewycky authored
Chris claims we should never have visibility_hidden inside any .cpp file but that's still not true even after this commit. llvm-svn: 85042
-
- Oct 19, 2009
-
-
Dan Gohman authored
llvm-svn: 84504
-
Dan Gohman authored
llvm-svn: 84503
-
- Oct 10, 2009
-
-
Dan Gohman authored
is trivially rematerializable and integrate it into TargetInstrInfo::isTriviallyReMaterializable. This way, all places that need to know whether an instruction is rematerializable will get the same answer. This enables the useful parts of the aggressive-remat option by default -- using AliasAnalysis to determine whether a memory location is invariant, and removes the questionable parts -- rematting operations with virtual register inputs that may not be live everywhere. llvm-svn: 83687
-
- Oct 07, 2009
-
-
Dan Gohman authored
implementations with a new MachineInstr::isInvariantLoad, which uses MachineMemOperands and is target-independent. This brings MachineLICM and other functionality to targets which previously lacked an isInvariantLoad implementation. llvm-svn: 83475
-
- Sep 26, 2009
-
-
Dan Gohman authored
allocatable. Even if it doesn't appear to have any defs, it may latter on after register allocation. llvm-svn: 82834
-
Dan Gohman authored
which have no defs anywhere in the function. In particular, this fixes sinking of instructions that reference RIP on x86-64, which is currently being modeled as a register. llvm-svn: 82815
-
Dan Gohman authored
and skipping the defs. llvm-svn: 82811
-
- Aug 23, 2009
-
-
Chris Lattner authored
upgrading a few things to use raw_ostream llvm-svn: 79811
-
- Aug 22, 2009
-
-
Bill Wendling authored
llvm-svn: 79755
-
- Aug 05, 2009
-
-
Dan Gohman authored
llvm-svn: 78139
-
- Aug 01, 2009
-
-
Dan Gohman authored
llvm-svn: 77754
-
- Apr 10, 2009
-
-
Chris Lattner authored
1. Sinking would crash when the first instruction of a block was sunk due to iterator problems. 2. Instructions could be sunk to their current block, causing an infinite loop. This fixes PR3968 llvm-svn: 68787
-
- Feb 15, 2009
-
-
Evan Cheng authored
llvm-svn: 64582
-
- Feb 07, 2009
-
-
Evan Cheng authored
Don't sink the instruction if TargetRegisterInfo::isSafeToMoveRegClassDefs doesn't think it's safe. This works around PR1911. llvm-svn: 63994
-
- Jan 05, 2009
-
-
Dan Gohman authored
llvm-svn: 61715
-
- Oct 03, 2008
-
-
Dan Gohman authored
isReg, etc., from isRegister, etc. llvm-svn: 57006
-
- Sep 13, 2008
-
-
Dan Gohman authored
isImmediate(), isRegister(), and friends, to avoid confusion about having two different names with the same meaning. I'm not attached to the longer names, and would be ok with changing to the shorter names if others prefer it. llvm-svn: 56189
-
- Sep 04, 2008
-
-
Dan Gohman authored
llvm-svn: 55779
-
- May 13, 2008
-
-
Dan Gohman authored
several things that were neither in an anonymous namespace nor static but not intended to be global. llvm-svn: 51017
-
- Mar 13, 2008
-
-
Evan Cheng authored
llvm-svn: 48311
-