| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 48995
|
|
|
|
| |
llvm-svn: 48692
|
|
|
|
| |
llvm-svn: 47375
|
|
|
|
| |
llvm-svn: 46930
|
|
|
|
| |
llvm-svn: 46877
|
|
|
|
| |
llvm-svn: 46655
|
|
|
|
|
|
| |
llvm.dbg.func.start implies a stoppoint is set. SelectionDAGISel records a new source line but does not create a ISD::LABEL node for this special stoppoint. Asm printer will magically print this label. This ensures nothing is emitted before.
llvm-svn: 46635
|
|
|
|
|
|
| |
or misc labels. This fixes the EH breakage. However I am not convinced this is *the* solution.
llvm-svn: 46609
|
|
|
|
|
|
| |
info.
llvm-svn: 46598
|
|
|
|
|
|
|
|
|
|
| |
dbg_func_start label. Make sure nothing else is inserted before them.
Note this solution might be somewhat fragile since ISD::LABEL may be used for other
purposes. If that ends up to be an issue, we may need to introduce a different node
for debug labels.
llvm-svn: 46571
|
|
|
|
|
|
| |
inserting prologue code.
llvm-svn: 46546
|
|
|
|
|
|
|
|
| |
x86-32/Darwin.
This should fix bunch of issues.
llvm-svn: 46337
|
|
|
|
|
|
|
| |
Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.
llvm-svn: 45695
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that it is cheap and efficient to get.
Move a variety of predicates from TargetInstrInfo into
TargetInstrDescriptor, which makes it much easier to query a predicate
when you don't have TII around. Now you can use MI->getDesc()->isBranch()
instead of going through TII, and this is much more efficient anyway. Not
all of the predicates have been moved over yet.
Update old code that used MI->getInstrDescriptor()->Flags to use the
new predicates in many places.
llvm-svn: 45674
|
|
|
|
|
|
| |
Some day I'll get it all moved over...
llvm-svn: 45672
|
|
|
|
| |
llvm-svn: 45603
|
|
|
|
| |
llvm-svn: 45484
|
|
|
|
|
|
| |
Machine-level API cleanup instigated by Chris.
llvm-svn: 45470
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that "machine" classes are used to represent the current state of
the code being compiled. Given this expanded name, we can start
moving other stuff into it. For now, move the UsedPhysRegs and
LiveIn/LoveOuts vectors from MachineFunction into it.
Update all the clients to match.
This also reduces some needless #includes, such as MachineModuleInfo
from MachineFunction.
llvm-svn: 45467
|
|
|
|
|
|
|
|
|
|
|
|
| |
e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on
switching everything over, so new clients should just start using the
shorter names.
Remove old long accessors, switching everything over to use the short
accessor: getMachineBasicBlock() -> getMBB(),
getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc.
llvm-svn: 45464
|
|
|
|
|
|
|
|
|
|
| |
- Eliminate the static "print" method for operands, moving it
into MachineOperand::print.
- Change various set* methods for register flags to take a bool
for the value to set it to. Remove unset* methods.
- Group methods more logically by operand flavor in MachineOperand.h
llvm-svn: 45461
|
|
|
|
| |
llvm-svn: 45433
|
|
|
|
| |
llvm-svn: 45418
|
|
|
|
|
|
| |
shuffle bugs.
llvm-svn: 45058
|
|
|
|
|
|
| |
MOVQI2PQIrm.
llvm-svn: 45041
|
|
|
|
| |
llvm-svn: 44869
|
|
|
|
|
|
| |
the stored register is killed.
llvm-svn: 44600
|
|
|
|
| |
llvm-svn: 44517
|
|
|
|
|
|
| |
-> cmpl [mem], 0.
llvm-svn: 44479
|
|
|
|
|
|
|
|
|
|
|
| |
MachineOperand auxInfo. Previous clunky implementation uses an external map
to track sub-register uses. That works because register allocator uses
a new virtual register for each spilled use. With interval splitting (coming
soon), we may have multiple uses of the same register some of which are
of using different sub-registers from others. It's too fragile to constantly
update the information.
llvm-svn: 44104
|
|
|
|
|
|
|
|
| |
to use different mappings for EH and debug info;
no functional change yet.
Fix warning in X86CodeEmitter.
llvm-svn: 44056
|
|
|
|
| |
llvm-svn: 44048
|
|
|
|
|
|
|
|
| |
This makes DwarfRegNum to accept list of numbers instead.
Added three different "flavours", but only slightly tested on x86-32/linux.
Please check another subtargets if possible,
llvm-svn: 43997
|
|
|
|
| |
llvm-svn: 43950
|
|
|
|
| |
llvm-svn: 43918
|
|
|
|
|
|
|
|
| |
Would somebody not on Darwin please make sure this
doesn't break anything. Exception handling failures
would be the most likely symptom.
llvm-svn: 43844
|
|
|
|
|
|
| |
Much improvement in exception handling.
llvm-svn: 43794
|
|
|
|
|
|
|
| |
less than 16. This is a temporary solution until dynamic stack alignment is
implemented.
llvm-svn: 43703
|
|
|
|
|
|
|
|
| |
registers in case, when FP pointer was eliminated. This should fixes misc. random
EH-related crahses, when stuff is compiled with -fomit-frame-pointer.
Thanks Duncan for nailing this bug!
llvm-svn: 43381
|
|
|
|
| |
llvm-svn: 43212
|
|
|
|
| |
llvm-svn: 43194
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Turn a store folding instruction into a load folding instruction. e.g.
xorl %edi, %eax
movl %eax, -32(%ebp)
movl -36(%ebp), %eax
orl %eax, -32(%ebp)
=>
xorl %edi, %eax
orl -36(%ebp), %eax
mov %eax, -32(%ebp)
This enables the unfolding optimization for a subsequent instruction which will
also eliminate the newly introduced store instruction.
llvm-svn: 43192
|
|
|
|
|
|
|
|
| |
only returns the opcode of the instruction post unfolding.
- Fix some copy+paste bugs.
llvm-svn: 43153
|
|
|
|
|
|
| |
public interface.
llvm-svn: 43150
|
|
|
|
|
|
|
| |
register used by the unfolded instructions. User can also specify whether to
unfold the load, the store, or both.
llvm-svn: 42946
|
|
|
|
| |
llvm-svn: 42895
|
|
|
|
|
|
|
|
|
|
|
| |
enabled by passing -tailcallopt to llc. The optimization is
performed if the following conditions are satisfied:
* caller/callee are fastcc
* elf/pic is disabled OR
elf/pic enabled + callee is in module + callee has
visibility protected or hidden
llvm-svn: 42870
|
|
|
|
|
|
| |
infinite looping.
llvm-svn: 42739
|
|
|
|
| |
llvm-svn: 42738
|
|
|
|
| |
llvm-svn: 42700
|