| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
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
|
|
|
|
|
|
| |
unwind areas.
llvm-svn: 131795
|
|
|
|
|
|
|
|
|
| |
and an exception handler. Handle that case.
Also, add an 'Emitted' member to the MCWin64EHUnwindInfo struct. It will be
needed later.
llvm-svn: 131791
|
|
|
|
|
|
| |
add.with.overflow(X, X)
llvm-svn: 131789
|
|
|
|
|
|
|
|
|
| |
code. It
is already in GR64 for the same reasons. Since it isn't allocatable it can't cause
any problems.
llvm-svn: 131787
|
|
|
|
| |
llvm-svn: 131785
|
|
|
|
| |
llvm-svn: 131784
|
|
|
|
|
|
|
| |
differ by a dynamic offset, return PartialAlias instead of MayAlias.
See the comment in the code for details. This fixes PR9971.
llvm-svn: 131781
|
|
|
|
|
|
| |
info in the error message. Per Dan's request.
llvm-svn: 131780
|
|
|
|
|
|
| |
is needed for an upcoming patch.
llvm-svn: 131772
|
|
|
|
|
|
|
|
| |
RemoveCopyByCommutingDef(). This
actually fixes most of the VerifyCoalescing failures in test-suite.
llvm-svn: 131768
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
preparation for reversing StackDirection.
Fixed objects are created in the following order:
1. Incoming arguments passed on stack.
2. va_arg objects (include both arguments that are passed in registers and
pointer to the location of the first va_arg argument).
3. $gp restore slot.
4. Outgoing arguments passed on stack.
5. Pointer to alloca'd space.
llvm-svn: 131767
|
|
|
|
| |
llvm-svn: 131765
|
|
|
|
| |
llvm-svn: 131764
|
|
|
|
| |
llvm-svn: 131763
|
|
|
|
| |
llvm-svn: 131760
|
|
|
|
|
|
| |
passed in register or on the stack.
llvm-svn: 131758
|
|
|
|
| |
llvm-svn: 131757
|
|
|
|
| |
llvm-svn: 131756
|
|
|
|
| |
llvm-svn: 131755
|
|
|
|
| |
llvm-svn: 131752
|
|
|
|
|
|
|
|
| |
(this is what used in Android NDK, when architecture is ARMv5)
patch by Koan-Sin Tan
llvm-svn: 131751
|
|
|
|
|
|
|
|
| |
of tBL/tBLX to R_ARM_THM_CALL (ARM ELF 4.7.1.6)
Patch by koan-sin tan.
llvm-svn: 131748
|
|
|
|
|
|
| |
rdar://problem/8614450
llvm-svn: 131746
|