| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 46605
|
| |
|
|
|
|
|
|
| |
calculate the offset from frame pointer to a stack slot and then storing the delta in a MachineLocation object. The name is bad (it implies a getter), and MRegisterInfo doesn't need to know about MachineLocation.
Replace getLocation() with getFrameIndexOffset() which returns the delta from frame pointer to stack slot. Dwarf writer can then use the information for whatever it wants.
llvm-svn: 46597
|
| |
|
|
|
|
| |
with the real FLT_ROUNDS (defined in <float.h>).
llvm-svn: 46587
|
| |
|
|
| |
llvm-svn: 46586
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in the backend. Introduce a new SDNode type, MemOperandSDNode, for
holding a MemOperand in the SelectionDAG IR, and add a MemOperand
list to MachineInstr, and code to manage them. Remove the offset
field from SrcValueSDNode; uses of SrcValueSDNode that were using
it are all all using MemOperandSDNode now.
Also, begin updating some getLoad and getStore calls to use the
PseudoSourceValue objects.
Most of this was written by Florian Brander, some
reorganization and updating to TOT by me.
llvm-svn: 46585
|
| |
|
|
|
|
| |
val# with previous liverange's.
llvm-svn: 46579
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 46569
|
| |
|
|
|
|
| |
label (i.e. first label in the entry block) take care to insert it at the beginning of the block.
llvm-svn: 46568
|
| |
|
|
|
|
| |
legitimate way of representing global variable GV in debug info.
llvm-svn: 46565
|
| |
|
|
|
|
|
|
| |
proper name. Rename it to EmitInstrWithCustomInserter since it does not necessarily insert
instruction at the end.
llvm-svn: 46562
|
| |
|
|
|
|
|
| |
memory reference information in the backend. Most of this was written by
Florian Brander, cleanup and updating to TOT by me.
llvm-svn: 46556
|
| |
|
|
|
|
|
|
| |
and StoreSDNode into their common base class LSBaseSDNode. Member
functions getLoadedVT and getStoredVT are replaced with the common
getMemoryVT to simplify code that will handle both loads and stores.
llvm-svn: 46538
|
| |
|
|
|
|
|
|
|
|
|
| |
type that matters but the operand type. This fixes
2008-01-08-IllegalCMP.ll which crashed with the new
legalize infrastructure because SETCC with result
type i8 and operand type i64 was being custom expanded
by the X86 backend. With this fix, the gcc build gets
as far as the first libcall.
llvm-svn: 46525
|
| |
|
|
| |
llvm-svn: 46514
|
| |
|
|
| |
llvm-svn: 46513
|
| |
|
|
| |
llvm-svn: 46508
|
| |
|
|
|
|
|
| |
to get the alignment of global variables, rather than
using hand-made versions.
llvm-svn: 46495
|
| |
|
|
| |
llvm-svn: 46488
|
| |
|
|
| |
llvm-svn: 46486
|
| |
|
|
| |
llvm-svn: 46485
|
| |
|
|
| |
llvm-svn: 46424
|
| |
|
|
| |
llvm-svn: 46422
|
| |
|
|
| |
llvm-svn: 46420
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
registers if used by a bitconvert or using a bitconvert. This allows us to
avoid constant pool loads and use cheaper integer instructions when the
values come from or end up in integer regs anyway. For example, we now
compile CodeGen/X86/fp-in-intregs.ll to:
_test1:
movl $2147483648, %eax
xorl 4(%esp), %eax
ret
_test2:
movl $1065353216, %eax
orl 4(%esp), %eax
andl $3212836864, %eax
ret
Instead of:
_test1:
movss 4(%esp), %xmm0
xorps LCPI2_0, %xmm0
movd %xmm0, %eax
ret
_test2:
movss 4(%esp), %xmm0
andps LCPI3_0, %xmm0
movss LCPI3_1, %xmm1
andps LCPI3_2, %xmm1
orps %xmm0, %xmm1
movd %xmm1, %eax
ret
bitconverts can happen due to various calling conventions that require
fp values to passed in integer regs in some cases, e.g. when returning
a complex.
llvm-svn: 46414
|
| |
|
|
|
|
| |
file to make it easier to read.
llvm-svn: 46407
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
from the stack. This allows us to compile stack-align.ll to:
_test:
movsd LCPI1_0, %xmm0
movapd %xmm0, %xmm1
*** andpd 4(%esp), %xmm1
andpd _G, %xmm0
addsd %xmm1, %xmm0
movl 20(%esp), %eax
movsd %xmm0, (%eax)
ret
instead of:
_test:
movsd LCPI1_0, %xmm0
** movsd 4(%esp), %xmm1
** andpd %xmm0, %xmm1
andpd _G, %xmm0
addsd %xmm1, %xmm0
movl 20(%esp), %eax
movsd %xmm0, (%eax)
ret
llvm-svn: 46401
|
| |
|
|
|
|
|
|
|
|
| |
delete a node even if it was not dead in some cases. Instead, just add it to
the worklist. Also, make sure to use the CombineTo methods, as it was doing
things that were unsafe: the top level combine loop could touch dangling memory.
This fixes CodeGen/Generic/2008-01-25-dag-combine-mul.ll
llvm-svn: 46384
|
| |
|
|
|
|
| |
occurs expanding i64 ops.
llvm-svn: 46383
|
| |
|
|
| |
llvm-svn: 46377
|
| |
|
|
| |
llvm-svn: 46355
|
| |
|
|
|
|
|
| |
we can infer it. This will eventually help stuff, though it doesn't
do much right now because all fixed FI's have an alignment of 1.
llvm-svn: 46349
|
| |
|
|
|
|
|
| |
a reference to TargetFrameInfo. Rearrange order of fields in StackObject to
save a word.
llvm-svn: 46348
|
| |
|
|
| |
llvm-svn: 46347
|
| |
|
|
| |
llvm-svn: 46320
|
| |
|
|
| |
llvm-svn: 46313
|
| |
|
|
|
|
|
|
|
|
|
|
| |
1. we already know the value is dead, so don't bother replacing
it with undef.
2. The very case the comment describes actually makes the load
live which asserts in deletenode. If we do the replacement
and the node becomes live, just treat it as new. This fixes
a failure on X86/2008-01-16-InvalidDAGCombineXform.ll with
some local changes in my tree.
llvm-svn: 46306
|
| |
|
|
|
|
|
|
|
|
| |
leaving
dead stuff around. This gets fed into the isel pass and causes certain foldings from
happening because nodes have extraneous uses floating around. For example, if we turned
foo(bar(x)) -> baz(x), we sometimes left bar(x) around.
llvm-svn: 46305
|
| |
|
|
| |
llvm-svn: 46304
|
| |
|
|
|
|
| |
MachineInstr rather than LiveVariables.
llvm-svn: 46295
|
| |
|
|
| |
llvm-svn: 46292
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
precision integers. This won't actually work
(and most of the code is dead) unless the new
legalization machinery is turned on. While
there, I rationalized the handling of i1, and
removed some bogus (and unused) sextload patterns.
For i1, this could result in microscopically
better code for some architectures (not X86).
It might also result in worse code if annotating
with AssertZExt nodes turns out to be more harmful
than helpful.
llvm-svn: 46280
|
| |
|
|
| |
llvm-svn: 46263
|
| |
|
|
|
|
|
|
| |
NDEBUG. This is in response to a really nasty bug I introduced that
Dale tracked down, hopefully this won't happen in the future.
Many thanks Dale.
llvm-svn: 46254
|
| |
|
|
|
|
|
|
| |
integers. Handle truncstore of a legal type to an unusual
number of bits. Most of this code is not reachable unless
the new legalize infrastructure is turned on.
llvm-svn: 46249
|
| |
|
|
| |
llvm-svn: 46218
|
| |
|
|
| |
llvm-svn: 46217
|
| |
|
|
| |
llvm-svn: 46204
|
| |
|
|
| |
llvm-svn: 46195
|
| |
|
|
| |
llvm-svn: 46171
|