| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
| |
this fixes a crash on CodeGen/Generic/externally_available.ll
on ppc hosts. Thanks to Nicholas L for pointing this out.
llvm-svn: 69333
|
| |
|
|
| |
llvm-svn: 69284
|
| |
|
|
| |
llvm-svn: 69204
|
| |
|
|
| |
llvm-svn: 69203
|
| |
|
|
| |
llvm-svn: 69127
|
| |
|
|
|
|
| |
the local register allocator.
llvm-svn: 69115
|
| |
|
|
|
|
|
|
| |
either the source or destination is a physical h register.
This fixes sqlite3 with the post-RA scheduler enabled.
llvm-svn: 69111
|
| |
|
|
|
|
| |
REX prefixes.
llvm-svn: 69108
|
| |
|
|
|
|
| |
any non-address uses of the address value. This fixes 186.crafty.
llvm-svn: 69094
|
| |
|
|
| |
llvm-svn: 69049
|
| |
|
|
| |
llvm-svn: 69022
|
| |
|
|
|
|
|
| |
it accordingly. Thanks to Jakob Stoklund Olesen for pointing
out how this might be useful.
llvm-svn: 68986
|
| |
|
|
|
|
| |
Now debug_inlined section is covered by TAI->doesDwarfUsesInlineInfoSection(), which is false by default.
llvm-svn: 68964
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Add patterns for h-register extract, which avoids a shift and mask,
and in some cases a temporary register.
- Add address-mode matching for turning (X>>(8-n))&(255<<n), where
n is a valid address-mode scale value, into an h-register extract
and a scaled-offset address.
- Replace X86's MOV32to32_ and related instructions with the new
target-independent COPY_TO_SUBREG instruction.
On x86-64 there are complicated constraints on h registers, and
CodeGen doesn't currently provide a high-level way to express all of them,
so they are handled with a bunch of special code. This code currently only
supports extracts where the result is used by a zero-extend or a store,
though these are fairly common.
These transformations are not always beneficial; since there are only
4 h registers, they sometimes require extra move instructions, and
this sometimes increases register pressure because it can force out
values that would otherwise be in one of those registers. However,
this appears to be relatively uncommon.
llvm-svn: 68962
|
| |
|
|
|
|
|
|
| |
ISD::SIGN_EXTEND_INREG. Tablegen-generated code can handle
these cases, and the scheduling issues observed earlier
appear to be resolved now.
llvm-svn: 68959
|
| |
|
|
| |
llvm-svn: 68958
|
| |
|
|
| |
llvm-svn: 68954
|
| |
|
|
| |
llvm-svn: 68951
|
| |
|
|
| |
llvm-svn: 68950
|
| |
|
|
|
|
| |
This unbreaks the JIT on x86-64.
llvm-svn: 68948
|
| |
|
|
| |
llvm-svn: 68947
|
| |
|
|
|
|
| |
getting passed. We couldn't catch this as we did not have tests that were passing an int value larger than 256.
llvm-svn: 68946
|
| |
|
|
|
|
|
|
| |
to support C99 inline, GNU extern inline, etc. Related bugzilla's
include PR3517, PR3100, & PR2933. Nothing uses this yet, but it
appears to work.
llvm-svn: 68940
|
| |
|
|
|
|
| |
only if symbolic addresses are RIP relatives.
llvm-svn: 68924
|
| |
|
|
| |
llvm-svn: 68915
|
| |
|
|
|
|
| |
See comment for details. This fixes rdar://6772169
llvm-svn: 68890
|
| |
|
|
| |
llvm-svn: 68887
|
| |
|
|
|
|
|
| |
hasImplicitDefOfPhysReg methods. Use them to remove a
look in X86 fast isel.
llvm-svn: 68886
|
| |
|
|
|
|
|
| |
from the assembler:
Error: unknown pseudo-op: `.debug_inlined'
llvm-svn: 68863
|
| |
|
|
|
|
|
|
| |
collected when nested llvm.dbg.func.start intrinsics are seen. (Right now, inliner removes nested llvm.dbg.func.start intrinisics during inlining.)
Create debug_inlined dwarf section using these information. This info is used by gdb, at least on Darwin, to enable better experience debugging inlined functions. See DwarfWriter.cpp for more information on structure of debug_inlined section.
llvm-svn: 68847
|
| |
|
|
| |
llvm-svn: 68783
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
With this we generate
movl %gs:0, %eax
leal i@NTPOFF(%eax), %eax
instead of
movl $i@NTPOFF, %eax
addl %gs:0, %eax
llvm-svn: 68778
|
| |
|
|
|
|
| |
It turns out that there are still several problems with this, will file a bugzilla.
llvm-svn: 68749
|
| |
|
|
| |
llvm-svn: 68747
|
| |
|
|
|
|
| |
code that uses it by using SelectionDAG::getVTList instead.
llvm-svn: 68744
|
| |
|
|
| |
llvm-svn: 68730
|
| |
|
|
|
|
|
|
|
|
|
|
| |
register destinations that are tied to source operands. The
TargetInstrDescr::findTiedToSrcOperand method silently fails for inline
assembly. The existing MachineInstr::isRegReDefinedByTwoAddr was very
close to doing what is needed, so this revision makes a few changes to
that method and also renames it to isRegTiedToUseOperand (for consistency
with the very similar isRegTiedToDefOperand and because it handles both
two-address instructions and inline assembly with tied registers).
llvm-svn: 68714
|
| |
|
|
|
|
| |
different results for different type of insns. This will eventually need to be changed but currently let us prevent the crash in cases of incorrect detection of banksel operand.
llvm-svn: 68713
|
| |
|
|
|
|
| |
fixed to start after return value.
llvm-svn: 68705
|
| |
|
|
| |
llvm-svn: 68690
|
| |
|
|
|
|
| |
custom lowering an ADD to ADDC.
llvm-svn: 68671
|
| |
|
|
|
|
| |
hash table just like subregister checking does.
llvm-svn: 68669
|
| |
|
|
| |
llvm-svn: 68666
|
| |
|
|
|
|
| |
Tested by bootstrapping llvm-gcc and using that to build llvm.
llvm-svn: 68645
|
| |
|
|
|
|
| |
ARMTargetLowering::isLegalAddressingMode.
llvm-svn: 68619
|
| |
|
|
| |
llvm-svn: 68603
|
| |
|
|
|
|
| |
by the MachineInstr itself, rather than by custom handling the DBG_STOPPOINT nodes.
llvm-svn: 68602
|
| |
|
|
|
|
|
| |
Every function has the address of its frame in the beginning of code section.
The frame address is retrieved and used to pass arguments.
llvm-svn: 68597
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
with SUBREG_TO_REG, teach SimpleRegisterCoalescing to coalesce
SUBREG_TO_REG instructions (which are similar to INSERT_SUBREG
instructions), and teach the DAGCombiner to take advantage of this on
targets which support it. This eliminates many redundant
zero-extension operations on x86-64.
This adds a new TargetLowering hook, isZExtFree. It's similar to
isTruncateFree, except it only applies to actual definitions, and not
no-op truncates which may not zero the high bits.
Also, this adds a new optimization to SimplifyDemandedBits: transform
operations like x+y into (zext (add (trunc x), (trunc y))) on targets
where all the casts are no-ops. In contexts where the high part of the
add is explicitly masked off, this allows the mask operation to be
eliminated. Fix the DAGCombiner to avoid undoing these transformations
to eliminate casts on targets where the casts are no-ops.
Also, this adds a new two-address lowering heuristic. Since
two-address lowering runs before coalescing, it helps to be able to
look through copies when deciding whether commuting and/or
three-address conversion are profitable.
Also, fix a bug in LiveInterval::MergeInClobberRanges. It didn't handle
the case that a clobber range extended both before and beyond an
existing live range. In that case, multiple live ranges need to be
added. This was exposed by the new subreg coalescing code.
Remove 2008-05-06-SpillerBug.ll. It was bugpoint-reduced, and the
spiller behavior it was looking for no longer occurrs with the new
instruction selection.
llvm-svn: 68576
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
builds.
--- Reverse-merging (from foreign repository) r68552 into '.':
U test/CodeGen/X86/tls8.ll
U test/CodeGen/X86/tls10.ll
U test/CodeGen/X86/tls2.ll
U test/CodeGen/X86/tls6.ll
U lib/Target/X86/X86Instr64bit.td
U lib/Target/X86/X86InstrSSE.td
U lib/Target/X86/X86InstrInfo.td
U lib/Target/X86/X86RegisterInfo.cpp
U lib/Target/X86/X86ISelLowering.cpp
U lib/Target/X86/X86CodeEmitter.cpp
U lib/Target/X86/X86FastISel.cpp
U lib/Target/X86/X86InstrInfo.h
U lib/Target/X86/X86ISelDAGToDAG.cpp
U lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
U lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
U lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h
U lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.h
U lib/Target/X86/X86ISelLowering.h
U lib/Target/X86/X86InstrInfo.cpp
U lib/Target/X86/X86InstrBuilder.h
U lib/Target/X86/X86RegisterInfo.td
llvm-svn: 68560
|