| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 131926
|
|
|
|
| |
llvm-svn: 131922
|
|
|
|
|
|
| |
This fixes PR9845.
llvm-svn: 131919
|
|
|
|
| |
llvm-svn: 131918
|
|
|
|
|
|
| |
in MipsFunctionInfo that are no longer used.
llvm-svn: 131917
|
|
|
|
| |
llvm-svn: 131916
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The following improvements are accomplished as a result of applying this patch:
- Fixed frame objects' offsets (relative to either the virtual frame pointer or
the stack pointer) are set before instruction selection is completed. There is
no need to wait until Prologue/Epilogue Insertion is run to set them.
- Calculation of final offsets of fixed frame objects is straightforward. It is
no longer necessary to assign negative offsets to fixed objects for incoming
arguments in order to distinguish them from the others.
- Since a fixed object has its relative offset set during instruction
selection, there is no need to conservatively set its alignment to 4.
- It is no longer necessary to reorder non-fixed frame objects in
MipsFrameLowering::adjustMipsStackFrame.
llvm-svn: 131915
|
|
|
|
|
|
|
|
| |
end of function.
Patch by Micah Villmow
llvm-svn: 131908
|
|
|
|
|
|
| |
transfer SDDbgValue.
llvm-svn: 131907
|
|
|
|
| |
llvm-svn: 131906
|
|
|
|
|
|
|
|
|
| |
I haven't implemented any of the ones that take registers yet. The problem is
that for x86-64 the streamer methods expect a native x86 register number (note:
%r8-%r15 want 8-15 instead of 0-7; same for %xmm8-%xmm15). I haven't figured
out exactly how I want to do that yet.
llvm-svn: 131899
|
|
|
|
|
|
|
|
| |
miscompilation of
UnitTests/ObjC/messages-2.m with the recent optimizer improvements.
llvm-svn: 131897
|
|
|
|
|
|
|
|
| |
branches
in Darwin Thumb2 code. Tail calls are already disabled on Thumb1.
llvm-svn: 131894
|
|
|
|
|
|
|
|
| |
shift-exactness
xform recurse.
llvm-svn: 131888
|
|
|
|
|
|
| |
in a known-non-zero context.
llvm-svn: 131887
|
|
|
|
|
|
|
|
| |
checking
for a constant directly. Thanks to Duncan for pointing this out.
llvm-svn: 131885
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
aligned.
Teach memcpyopt to not give up all hope when confonted with an underaligned
memcpy feeding an overaligned byval. If the *source* of the memcpy can be
determined to be adequeately aligned, or if it can be forced to be, we can
eliminate the memcpy.
This addresses PR9794. We now compile the example into:
define i32 @f(%struct.p* nocapture byval align 8 %q) nounwind ssp {
entry:
%call = call i32 @g(%struct.p* byval align 8 %q) nounwind
ret i32 %call
}
in both x86-64 and x86-32 mode. We still don't get a tailcall though,
because tailcalls apparently can't handle byval.
llvm-svn: 131884
|
|
|
|
| |
llvm-svn: 131883
|
|
|
|
|
|
| |
when we're just going to throw the result away. No functionality change.
llvm-svn: 131880
|
|
|
|
| |
llvm-svn: 131874
|
|
|
|
|
|
| |
C99 runtimes don't have exp2).
llvm-svn: 131872
|
|
|
|
|
|
| |
accepts parameters (ptr, size, value) in a different order than GNU's memset (ptr, value, size), therefore the special lowering in AAPCS mode. Implementation by Evzen Muller.
llvm-svn: 131868
|
|
|
|
|
|
|
| |
of them, particularly the ones that don't take arguments. Also implement
.seh_proc and .seh_handler.
llvm-svn: 131866
|
|
|
|
| |
llvm-svn: 131863
|
|
|
|
| |
llvm-svn: 131862
|
|
|
|
| |
llvm-svn: 131861
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that their
result is non-zero. Implement an example optimization (PR9814), which allows us to
transform:
A / ((1 << B) >>u 2)
into:
A >>u (B-2)
which we compile into:
_divu3: ## @divu3
leal -2(%rsi), %ecx
shrl %cl, %edi
movl %edi, %eax
ret
instead of:
_divu3: ## @divu3
movb %sil, %cl
movl $1, %esi
shll %cl, %esi
shrl $2, %esi
movl %edi, %eax
xorl %edx, %edx
divl %esi, %eax
ret
llvm-svn: 131860
|
|
|
|
|
|
|
| |
Modified the patch to .td file supplied by Jyun-Yan You. Add a test case and
modified ARMDisassemblerCore.cpp a little bit.
llvm-svn: 131859
|
|
|
|
|
|
|
|
| |
failing to form a memset, then having to delete it" but my approximation
isn't safe for self recurrent loops. Instead of doign a hack, just
do it the right way.
llvm-svn: 131858
|
|
|
|
|
|
|
|
| |
to also clean up the condition of any conditional terminator it folds to be unconditional, if that turns the condition into dead code. This just means it calls RecursivelyDeleteTriviallyDeadInstructions() in strategic spots. It defaults to the old behavior.
I also changed -simplifycfg, -jump-threading and -codegenprepare to use this to produce slightly better code without any extra cleanup passes (AFAICT this was the only place in -simplifycfg where now-dead conditions of replaced terminators weren't being cleaned up). The only other user of this function is -sccp, but I didn't read that thoroughly enough to figure out whether it might be holding pointers to instructions that could be deleted by this.
llvm-svn: 131855
|
|
|
|
|
|
| |
"stored once" even if its address is compared.
llvm-svn: 131849
|
|
|
|
|
|
|
| |
causing it to get into infinite loops when it would widen a
load (which can necessarily leave around dead loads).
llvm-svn: 131847
|
|
|
|
| |
llvm-svn: 131842
|
|
|
|
| |
llvm-svn: 131841
|
|
|
|
|
|
| |
of the inlinee to the code representing the original function.
llvm-svn: 131838
|
|
|
|
|
|
| |
instructions.
llvm-svn: 131837
|
|
|
|
| |
llvm-svn: 131836
|
|
|
|
|
|
| |
these tables.
llvm-svn: 131833
|
|
|
|
|
|
|
|
|
|
| |
directive.
Implement emission of Win64 EH unwind info.
Pull in <cassert> in MCWin64EH.h so it can use the assert() macro.
llvm-svn: 131832
|
|
|
|
|
|
| |
Also, fix threshold for 'Big' register saves.
llvm-svn: 131830
|
|
|
|
| |
llvm-svn: 131829
|
|
|
|
| |
llvm-svn: 131827
|
|
|
|
|
|
| |
should eventually convert to PMBuilder, but I don't plan to do this.
llvm-svn: 131819
|
|
|
|
|
|
| |
use these soon.
llvm-svn: 131812
|
|
|
|
|
|
|
|
|
| |
Original log message:
When BasicAA can determine that two pointers have the same base but
differ by a dynamic offset, return PartialAlias instead of MayAlias.
See the comment in the code for details. This fixes PR9971.
llvm-svn: 131809
|
|
|
|
| |
llvm-svn: 131806
|
|
|
|
|
|
| |
consistently.
llvm-svn: 131803
|
|
|
|
|
|
| |
the patterns.
llvm-svn: 131801
|
|
|
|
| |
llvm-svn: 131800
|
|
|
|
|
|
|
|
| |
add.with.overflow(X, X)"
It's better to do this in codegen, mul.with.overflow(X, 2) is more canonical because it has only one use on "X".
llvm-svn: 131798
|