- Oct 11, 2010
-
-
Jakob Stoklund Olesen authored
LocalRewriter. This is a bit of a hack that adds an implicit use operand to model the read-modify-write nature of a partial redef. Uses and defs are rewritten in separate passes, and a single operand would never be processed twice. <rdar://problem/8518892> llvm-svn: 116210
-
Chris Lattner authored
it comes back, it will be largely a rewrite, so keeping the old codebase in tree isn't helping anyone. llvm-svn: 116190
-
- Oct 09, 2010
-
-
Jakob Stoklund Olesen authored
are still way too long, but it's a start. No functional change intended. llvm-svn: 116116
-
- Sep 08, 2010
-
-
Jakob Stoklund Olesen authored
LiveIntervals already adds <imp-def> operands for super-registers when a subreg def defines the whole register. Thus, it is not necessary to do it again when rewriting. In fact, the super-register imp-defs caused miscompilations because the late scheduler couldn't see that the super-register was read. We still add super-reg <imp-use,kill> operands when rewriting virtuals to physicals. llvm-svn: 113299
-
- Sep 03, 2010
-
-
Jakob Stoklund Olesen authored
slot. Teach it to also check for early clobbered aliases, and early clobber operands following the current operand. This fixes the miscompilation in PR8044 where EC registers eax and ecx were being used for inputs. llvm-svn: 112988
-
- Aug 05, 2010
-
-
Jakob Stoklund Olesen authored
we sometimes compare singular iterators, reported by ENABLE_EXPENSIVE_CHECKS. This fixes PR7825. llvm-svn: 110355
-
- Jul 27, 2010
-
-
Jim Grosbach authored
llvm-svn: 109513
-
Jim Grosbach authored
llvm-svn: 109511
-
- Jul 16, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 108556
-
- Jul 12, 2010
-
-
Rafael Espindola authored
getMinimalPhysRegClass. It was used to produce spills, and it is better to use the most specific class if possible. Update getLoadStoreRegOpcode to handle GR32_AD. llvm-svn: 108115
-
- Jul 11, 2010
-
-
Rafael Espindola authored
The first one was used just to call isSafeToMoveRegClassDefs. In general, using a more specific reg class is better, in practice only x86 implements that method and the results are always the same. The second one is in FindFreeRegister and is used to check if a register is in a register class, a much more direct call to contains is better as it should cover more cases and is faster. llvm-svn: 108093
-
Jakob Stoklund Olesen authored
llvm-svn: 108062
-
- Jul 09, 2010
-
-
Jakob Stoklund Olesen authored
inserted in a MBB, and return an already inserted MI. This target API change is necessary to allow foldMemoryOperand to call storeToStackSlot and loadFromStackSlot when folding a COPY to a stack slot reference in a target independent way. The foldMemoryOperandImpl hook is going to change in the same way, but I'll wait until COPY folding is actually implemented. Most targets only fold copies and won't need to specialize this hook at all. llvm-svn: 107991
-
Jakob Stoklund Olesen authored
llvm-svn: 107949
-
- Jul 08, 2010
-
-
Jakob Stoklund Olesen authored
EXTRACT_SUBREG no longer appears as a machine instruction. Use COPY instead. Add isCopy() checks in many places using isMoveInstr() and isExtractSubreg(). The isMoveInstr hook will be removed later. llvm-svn: 107879
-
- Jun 25, 2010
-
-
Dale Johannesen authored
llvm-svn: 106865
-
Dale Johannesen authored
is reused as an input. PR 4118. Testcase is too big, as usual with bugs in this area, but there's one in the PR. llvm-svn: 106816
-
- Jun 03, 2010
-
-
Jakob Stoklund Olesen authored
instruction defines subregisters. Any existing subreg indices on the original instruction are preserved or composed with the new subreg index. Also substitute multiple operands mentioning the original register by using the new MachineInstr::substituteRegister() function. This is necessary because there will soon be <imp-def> operands added to non read-modify-write partial definitions. This instruction: %reg1234:foo = FLAP %reg1234<imp-def> will reMaterialize(%reg3333, bar) like this: %reg3333:bar-foo = FLAP %reg333:bar<imp-def> Finally, replace the TargetRegisterInfo pointer argument with a reference to indicate that it cannot be NULL. llvm-svn: 105358
-
- May 21, 2010
-
-
Jakob Stoklund Olesen authored
definitions of the virtual register. This happens when spilling the registers produced by REG_SEQUENCE: %reg1047:5<def>, %reg1047:6<def>, %reg1047:7<def> = VLD3d8 %reg1033, 0, pred:14, pred:%reg0 The rewriter would spill the register multiple times, dead store elimination tried to keep up, but ended up cutting the branch it was sitting on. llvm-svn: 104321
-
- May 11, 2010
-
-
Evan Cheng authored
llvm-svn: 103450
-
- May 06, 2010
-
-
Dan Gohman authored
doesn't have to guess. llvm-svn: 103194
-
Evan Cheng authored
llvm-svn: 103193
-
- Apr 29, 2010
-
-
Evan Cheng authored
llvm-svn: 102654
-
- Apr 07, 2010
-
-
John McCall authored
solution. The only reason these don't fire with gcc-4.2 is that gcc turns off part of -Wsign-compare in C++ on accident. llvm-svn: 100581
-
- Apr 06, 2010
-
-
Evan Cheng authored
llvm-svn: 100532
-
- Mar 30, 2010
-
-
Evan Cheng authored
llvm-svn: 99879
-
- Mar 26, 2010
-
-
Dale Johannesen authored
llvm-svn: 99637
-
- Mar 12, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 98295
-
- Mar 11, 2010
-
-
Jakob Stoklund Olesen authored
Move methods out of line and M-x whitespace-cleanup. Promote common method arguments to member variables. llvm-svn: 98207
-
- Feb 18, 2010
-
-
Duncan Sands authored
Russell Wallace. llvm-svn: 96580
-
- Feb 13, 2010
-
-
Jakob Stoklund Olesen authored
When coalescing with a physreg, remember to add imp-def and imp-kill when dealing with sub-registers. Also fix a related bug in VirtRegRewriter where substitutePhysReg may reallocate the operand list on an instruction and invalidate the reg_iterator. This can happen when a register is mentioned twice on the same instruction. llvm-svn: 96072
-
- Feb 10, 2010
-
-
Chris Lattner authored
llvm-svn: 95748
-
Chris Lattner authored
llvm-svn: 95745
-
- 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 06, 2010
-
-
Jakob Stoklund Olesen authored
An instruction like this: %reg1097:1<def> = VMOVSR %R3<kill>, 14, %reg0 Must be replaced with this when substituting physical registers: %S0<def> = VMOVSR %R3<kill>, 14, %reg0, %D0<imp-def> llvm-svn: 92812
-
- Jan 05, 2010
-
-
David Greene authored
llvm-svn: 92590
-
- Dec 03, 2009
-
-
Chris Lattner authored
Patch by Howard Hinnant! llvm-svn: 90365
-
- Nov 20, 2009
-
-
Jakob Stoklund Olesen authored
Fix debug code that assumes getBasicBlock never returns NULL. llvm-svn: 89428
-
- Nov 18, 2009
-
-
Lang Hames authored
Fixed the in-place spiller and trivial rewriter, which had been broken by the recent SlotIndexes work. llvm-svn: 89238
-
- Nov 14, 2009
-
-
Evan Cheng authored
Added getSubRegIndex(A,B) that returns subreg index of A to B. Use it to replace broken code in VirtRegRewriter. llvm-svn: 88753
-