| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
I think I've audited all uses, so it should be dependable for address spaces,
and the pointer+offset info should also be accurate when there.
llvm-svn: 114464
|
|
|
|
|
|
| |
and store intrinsics are represented with MemIntrinsicSDNodes.
llvm-svn: 114454
|
|
|
|
|
|
| |
getLoad overloads.
llvm-svn: 114443
|
|
|
|
|
|
|
| |
instead of srcvalue/offset pairs. This corrects SV info for mem
operations whose size is > 32-bits.
llvm-svn: 114401
|
|
|
|
|
|
| |
MachinePointerInfo
llvm-svn: 114397
|
|
|
|
|
|
| |
eliminating some weird "infer a frame address" logic which was dead.
llvm-svn: 114396
|
|
|
|
|
|
| |
This fixes funcargs.exp regression reported by gdb testsuite.
llvm-svn: 113992
|
|
|
|
|
|
| |
use offset available in StaticAllocaMap to emit DBG_VALUE. Right now, this has no material impact because varible info also collected using offset table maintained in machine module info.
llvm-svn: 113967
|
|
|
|
| |
llvm-svn: 113766
|
|
|
|
| |
llvm-svn: 112864
|
|
|
|
| |
llvm-svn: 112858
|
|
|
|
| |
llvm-svn: 112659
|
|
|
|
| |
llvm-svn: 112631
|
|
|
|
|
|
|
|
| |
info to emit debug info.
Fixes Radar 8367011.
llvm-svn: 112623
|
|
|
|
| |
llvm-svn: 112584
|
|
|
|
|
|
| |
being actively maintained, improved, or extended.
llvm-svn: 112356
|
|
|
|
|
|
| |
doesn't currently support dealing with this.
llvm-svn: 112341
|
|
|
|
| |
llvm-svn: 112305
|
|
|
|
| |
llvm-svn: 112242
|
|
|
|
|
|
| |
byval parameter.
llvm-svn: 112238
|
|
|
|
| |
llvm-svn: 112216
|
|
|
|
| |
llvm-svn: 112215
|
|
|
|
| |
llvm-svn: 112213
|
|
|
|
|
|
| |
register, used for a value, is initialized after a dbg intrinsic is seen.
llvm-svn: 112207
|
|
|
|
| |
llvm-svn: 112155
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
expanding: e.g. <2 x float> -> <4 x float> instead of -> 2 floats. This
affects two places in the code: handling cross block values and handling
function return and arguments. Since vectors are already widened by
legalizetypes, this gives us much better code and unblocks x86-64 abi
and SPU abi work.
For example, this (which is a silly example of a cross-block value):
define <4 x float> @test2(<4 x float> %A) nounwind {
%B = shufflevector <4 x float> %A, <4 x float> undef, <2 x i32> <i32 0, i32 1>
%C = fadd <2 x float> %B, %B
br label %BB
BB:
%D = fadd <2 x float> %C, %C
%E = shufflevector <2 x float> %D, <2 x float> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
ret <4 x float> %E
}
Now compiles into:
_test2: ## @test2
## BB#0:
addps %xmm0, %xmm0
addps %xmm0, %xmm0
ret
previously it compiled into:
_test2: ## @test2
## BB#0:
addps %xmm0, %xmm0
pshufd $1, %xmm0, %xmm1
## kill: XMM0<def> XMM0<kill> XMM0<def>
insertps $0, %xmm0, %xmm0
insertps $16, %xmm1, %xmm0
addps %xmm0, %xmm0
ret
This implements rdar://8230384
llvm-svn: 112101
|
|
|
|
| |
llvm-svn: 112085
|
|
|
|
|
|
| |
no functionality change.
llvm-svn: 111994
|
|
|
|
|
|
| |
functionality change.
llvm-svn: 111990
|
|
|
|
| |
llvm-svn: 109415
|
|
|
|
|
|
|
|
| |
information.
No functional change yet.
llvm-svn: 108583
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
since it doesn't work for front-ends which don't emit column information
(which includes llvm-gcc in its present configuration), and doesn't
work for clang for K&R style variables where the variables are declared
in a different order from the parameter list.
Instead, make a separate pass through the instructions to collect the
llvm.dbg.declare instructions in order. This ensures that the debug
information for variables is emitted in this order.
llvm-svn: 108538
|
|
|
|
|
|
|
|
|
|
| |
occasions, caused code to be generated in a different order.
All cases I've seen involved float softening in the type
legalizer, and this could be perhaps be fixed there, but
it's better not to generate things differently in the first
place. 7797940 (6/29/2010..7/15/2010).
llvm-svn: 108484
|
|
|
|
| |
llvm-svn: 108478
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the function. We'll just turn it into a "trap" instruction instead.
The problem with not handling this is that it might generate a prologue without
the equivalent epilogue to go with it:
$ cat t.ll
define void @foo() {
entry:
unreachable
}
$ llc -o - t.ll -relocation-model=pic -disable-fp-elim -unwind-tables
.section __TEXT,__text,regular,pure_instructions
.globl _foo
.align 4, 0x90
_foo: ## @foo
Leh_func_begin0:
## BB#0: ## %entry
pushq %rbp
Ltmp0:
movq %rsp, %rbp
Ltmp1:
Leh_func_end0:
...
The unwind tables then have bad data in them causing all sorts of problems.
Fixes <rdar://problem/8096481>.
llvm-svn: 108473
|
|
|
|
| |
llvm-svn: 108381
|
|
|
|
|
|
|
| |
This may not be right in all cases, but it's better
than asserting which it was doing before. PR 7528.
llvm-svn: 108268
|
|
|
|
| |
llvm-svn: 108164
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
correct alignment information, which simplifies ExpandRes_VAARG a bit.
The patch introduces a new alignment information to TargetLoweringInfo. This is
needed since the two natural candidates cannot be used:
* The 's' in target data: If this is set to the minimal alignment of any
argument, getCallFrameTypeAlignment would return 4 for doubles on ARM for
example.
* The getTransientStackAlignment method. It is possible for an architecture to
have argument less aligned than what we maintain the stack pointer.
llvm-svn: 108072
|
|
|
|
|
|
|
|
|
| |
- Check getBytesToPopOnReturn().
- Eschew ST0 and ST1 for return values.
- Fix the PIC base register initialization so that it doesn't ever
fail to end up the top of the entry block.
llvm-svn: 108039
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
U utils/TableGen/FastISelEmitter.cpp
--- Reverse-merging r107943 into '.':
U test/CodeGen/X86/fast-isel.ll
U test/CodeGen/X86/fast-isel-loads.ll
U include/llvm/Target/TargetLowering.h
U include/llvm/Support/PassNameParser.h
U include/llvm/CodeGen/FunctionLoweringInfo.h
U include/llvm/CodeGen/CallingConvLower.h
U include/llvm/CodeGen/FastISel.h
U include/llvm/CodeGen/SelectionDAGISel.h
U lib/CodeGen/LLVMTargetMachine.cpp
U lib/CodeGen/CallingConvLower.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
U lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
U lib/CodeGen/SelectionDAG/FastISel.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
U lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
U lib/CodeGen/SelectionDAG/InstrEmitter.cpp
U lib/CodeGen/SelectionDAG/TargetLowering.cpp
U lib/Target/XCore/XCoreISelLowering.cpp
U lib/Target/XCore/XCoreISelLowering.h
U lib/Target/X86/X86ISelLowering.cpp
U lib/Target/X86/X86FastISel.cpp
U lib/Target/X86/X86ISelLowering.h
llvm-svn: 107987
|
|
|
|
|
|
| |
a DBG_VALUE after a terminator, or emitting any instructions before an EH_LABEL.
llvm-svn: 107943
|
|
|
|
|
|
| |
Debug info intrinsics win for now.
llvm-svn: 107850
|
|
|
|
|
|
| |
a separate DCE pass over MachineInstrs.
llvm-svn: 107804
|
|
|
|
|
|
|
| |
a bunch of stuff, to allow the target-independent calling convention
logic to be employed.
llvm-svn: 107800
|
|
|
|
|
|
| |
allow target-specific fast-isel code to make use of it directly.
llvm-svn: 107787
|
|
|
|
|
|
| |
code can do calling-convention queries. This obviates OutputArgReg.
llvm-svn: 107786
|
|
|
|
|
|
| |
SelectBasicBlock doesn't needs its BasicBlock argument.
llvm-svn: 107712
|
|
|
|
| |
llvm-svn: 107710
|
|
|
|
| |
llvm-svn: 107612
|