- Oct 19, 2009
-
-
Chris Lattner authored
All of these "subreg32" modifier instructions are handled explicitly by the MCInst lowering phase. If they got to the asmprinter, they would explode. They should eventually be replace with correct use of subregs. llvm-svn: 84526
-
Chris Lattner authored
llvm-svn: 84510
-
Chris Lattner authored
llvm-svn: 84509
-
Nate Begeman authored
llvm-svn: 84506
-
Torok Edwin authored
LLC was scheduling compares before the adds causing wrong branches to be taken in programs, resulting in misoptimized code wherever atomic adds where used. llvm-svn: 84485
-
Nate Begeman authored
llvm-svn: 84459
-
- Oct 18, 2009
-
-
Evan Cheng authored
llvm-svn: 84431
-
Evan Cheng authored
llvm-svn: 84425
-
Evan Cheng authored
stack slots and giving them different PseudoSourceValue's did not fix the problem of post-alloc scheduling miscompiling llvm itself. - Apply Dan's conservative workaround by assuming any non fixed stack slots can alias other memory locations. This means a load from spill slot #1 cannot move above a store of spill slot #2. - Enable post-alloc scheduling for x86 at optimization leverl Default and above. llvm-svn: 84424
-
Evan Cheng authored
llvm-svn: 84411
-
- Oct 17, 2009
-
-
Evan Cheng authored
Distinquish stack slots from other stack objects. They (and fixed objects) get FixedStack PseudoSourceValues. llvm-svn: 84326
-
Evan Cheng authored
llvm-svn: 84321
-
Evan Cheng authored
necessarily fixed. Only those will negative frame indices are "fixed." llvm-svn: 84315
-
- Oct 16, 2009
-
-
Evan Cheng authored
llvm-svn: 84273
-
Anton Korobeynikov authored
1. Emit external function type information for all COFF targets since it's a feature of object format 2. Emit linker directives only for cygming (since this is ld-specific stuff) llvm-svn: 84214
-
- Oct 15, 2009
-
-
Evan Cheng authored
llvm-svn: 84200
-
- Oct 14, 2009
-
-
Dan Gohman authored
(for uses marked kill and defs marked dead) a few instructions in addition to forwards. Also, increase the maximum number of instructions to scan, as it appears to help in a fair number of cases. llvm-svn: 84061
-
- Oct 13, 2009
-
-
Ted Kremenek authored
llvm-svn: 84008
-
- Oct 12, 2009
-
-
Dan Gohman authored
it to hold the address of an sret return value, for x86-64 ABI purposes. Also, fix the test that was originally intended to test this to actually test it, using FileCheck. llvm-svn: 83853
-
Chris Lattner authored
llvm-svn: 83822
-
- Oct 10, 2009
-
-
Dan Gohman authored
llvm-svn: 83697
-
Dan Gohman authored
MachineInstr::isInvariantLoad instead, which has the benefit of being more complete. llvm-svn: 83696
-
- Oct 09, 2009
-
-
Dan Gohman authored
when one of the bits being tested would end up being the sign bit in the narrower type, and a signed comparison is being performed, since this would change the result of the signed comparison. This fixes PR5132. llvm-svn: 83670
-
Dan Gohman authored
information when unfolding memory references. llvm-svn: 83656
-
- Oct 08, 2009
-
-
Dale Johannesen authored
llvm-svn: 83499
-
- 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
-
Jim Grosbach authored
a virtual register to eliminate a frame index, it can return that register and the constant stored there to PEI to track. When scavenging to allocate for those registers, PEI then tracks the last-used register and value, and if it is still available and matches the value for the next index, reuses the existing value rather and removes the re-materialization instructions. Fancier tracking and adjustment of scavenger allocations to keep more values live for longer is possible, but not yet implemented and would likely be better done via a different, less special-purpose, approach to the problem. eliminateFrameIndex() is modified so the target implementations can return the registers they wish to be tracked for reuse. ARM Thumb1 implements and utilizes the new mechanism. All other targets are simply modified to adjust for the changed eliminateFrameIndex() prototype. llvm-svn: 83467
-
- Oct 06, 2009
-
-
Dan Gohman authored
verbose-asm mode, print comments instead. This eliminates a non-comment difference between verbose-asm mode and non-verbose-asm mode. Also, factor out the relevant code out of all the targets and into target-independent code. llvm-svn: 83392
-
Devang Patel authored
Update processDebugLoc() so that it can be used to process debug info before and after printing an instruction. llvm-svn: 83363
-
- Oct 05, 2009
-
-
Dan Gohman authored
they make it less convenient to add new entries. llvm-svn: 83308
-
Dan Gohman authored
is used in an operand which requires GR64_NOREX. llvm-svn: 83307
-
Chris Lattner authored
the new predicates I added) instead of going through a context and doing a pointer comparison. Besides being cheaper, this allows a smart compiler to turn the if sequence into a switch. llvm-svn: 83297
-
- Oct 01, 2009
-
-
Devang Patel authored
This will allow processDebugLoc() to handle scopes for DWARF debug info. llvm-svn: 83183
-
- Sep 28, 2009
-
-
Jakob Stoklund Olesen authored
unused DECLARE instruction. KILL is not yet used anywhere, it will replace TargetInstrInfo::IMPLICIT_DEF in the places where IMPLICIT_DEF is just used to alter liveness of physical registers. llvm-svn: 83006
-
- Sep 25, 2009
-
-
Dan Gohman authored
- Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions. This eliminates MachineInstr's std::list member and allows the data to be created by isel and live for the remainder of codegen, avoiding a lot of copying and unnecessary translation. This also shrinks MemSDNode. - Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated fields for MachineMemOperands. - Change MemSDNode to have a MachineMemOperand member instead of its own fields with the same information. This introduces some redundancy, but it's more consistent with what MachineInstr will eventually want. - Ignore alignment when searching for redundant loads for CSE, but remember the greatest alignment. Target-specific code which previously used MemOperandSDNodes with generic SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range so that the SelectionDAG framework knows that MachineMemOperand information is available. llvm-svn: 82794
-
Dan Gohman authored
naming scheme used in SelectionDAG, where there are multiple kinds of "target" nodes, but "machine" nodes are nodes which represent a MachineInstr. llvm-svn: 82790
-
- Sep 24, 2009
-
-
Chris Lattner authored
llvm-svn: 82716
-
- Sep 23, 2009
-
-
Dan Gohman authored
is also the name of their type, as declarations like "EVT EVT" look really odd. llvm-svn: 82654
-
Dan Gohman authored
llvm-svn: 82597
-
- Sep 21, 2009
-
-
Dan Gohman authored
loads in order to reduce register pressure. llvm-svn: 82470
-