| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
even if the element of the array has no size.
llvm-svn: 101662
|
| |
|
|
|
|
| |
in memory operands. rdar://7874844
llvm-svn: 101661
|
| |
|
|
| |
llvm-svn: 101642
|
| |
|
|
| |
llvm-svn: 101638
|
| |
|
|
|
|
| |
i8 field when they really do not. This fixes rdar://7840289
llvm-svn: 101629
|
| |
|
|
| |
llvm-svn: 101613
|
| |
|
|
|
|
|
|
|
|
|
| |
to determine where to place PHIs by iteratively comparing reaching definitions
at each block. That was just plain wrong. This version now computes the
dominator tree within the subset of the CFG where PHIs may need to be placed,
and then places the PHIs in the iterated dominance frontier of each definition.
The rest of the patch is mostly the same, with a few more performance
improvements added in.
llvm-svn: 101612
|
| |
|
|
| |
llvm-svn: 101559
|
| |
|
|
|
|
|
|
|
|
| |
case. Also, the 0xFF hex literal involved in the shift for ESize64 should be
suffixed "ul" to preserve the shift result.
Implemented printHex*ImmOperand() by copying from ARMAsmPrinter.cpp and added a
test case for DisassembleN1RegModImmFrm()/printHex64ImmOperand().
llvm-svn: 101557
|
| |
|
|
|
|
|
|
| |
printAddrMode2OffsetOperand(),
this patch removes the assert() from printAddrMode3OffsetOperand() and adds a test case.
llvm-svn: 101529
|
| |
|
|
|
|
|
|
|
| |
to the UAL syntax of LDCL<c>, instead.
Add a test case for this change which also tests the removal of assert() from
printAddrMode2OffsetOperand().
llvm-svn: 101527
|
| |
|
|
| |
llvm-svn: 101515
|
| |
|
|
|
|
|
| |
dependent analyses, and increase code size, so doing it profitably would
require more complex heuristics.
llvm-svn: 101471
|
| |
|
|
|
|
|
| |
callee is expected to be expanded to something else by codegen, so that
normal infinitely recursive calls are still transformed.
llvm-svn: 101468
|
| |
|
|
| |
llvm-svn: 101455
|
| |
|
|
| |
llvm-svn: 101433
|
| |
|
|
|
|
| |
wanted the alignment of the pointee.
llvm-svn: 101432
|
| |
|
|
|
|
| |
Previous checkin tested Rn, #+/-Rm.
llvm-svn: 101418
|
| |
|
|
| |
llvm-svn: 101416
|
| |
|
|
|
|
| |
am2offset. Modified the instruction table entry and added a new test case.
llvm-svn: 101415
|
| |
|
|
|
|
| |
is doing the right thing and codegen looks correct for both Thumb and Thumb2.
llvm-svn: 101410
|
| |
|
|
| |
llvm-svn: 101392
|
| |
|
|
|
|
|
|
| |
directly. In cases where there are two dyn_alloc in the same BB it would have caused the old SP value to be reused and badness ensues. rdar://7493908
llvm is generating poor code for dynamic alloca, I'll fix that later.
llvm-svn: 101383
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
tokenfactor in between the load/store. This allows us to
optimize test7 into:
_test7: ## @test7
## BB#0: ## %entry
movl (%rdx), %eax
## kill: SIL<def> ESI<kill>
movb %sil, 5(%rdi)
ret
instead of:
_test7: ## @test7
## BB#0: ## %entry
movl 4(%esp), %ecx
movl $-65281, %eax ## imm = 0xFFFFFFFFFFFF00FF
andl 4(%ecx), %eax
movzbl 8(%esp), %edx
shll $8, %edx
addl %eax, %edx
movl 12(%esp), %eax
movl (%eax), %eax
movl %edx, 4(%ecx)
ret
llvm-svn: 101355
|
| |
|
|
|
|
|
|
| |
This doesn't occur much at all, it only seems to formed in the case
when the trunc optimization kicks in due to phase ordering. In that
case it is saves a few bytes on x86-32.
llvm-svn: 101350
|
| |
|
|
|
|
| |
and. This happens with the store->load narrowing stuff.
llvm-svn: 101348
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
a load/or/and/store sequence into a narrower store when it is
safe. Daniel tells me that clang will start producing this sort
of thing with bitfields, and this does trigger a few dozen times
on 176.gcc produced by llvm-gcc even now.
This compiles code like CodeGen/X86/2009-05-28-DAGCombineCrash.ll
into:
movl %eax, 36(%rdi)
instead of:
movl $4294967295, %eax ## imm = 0xFFFFFFFF
andq 32(%rdi), %rax
shlq $32, %rcx
addq %rax, %rcx
movq %rcx, 32(%rdi)
and each of the testcases into a single store. Each of them used
to compile into craziness like this:
_test4:
movl $65535, %eax ## imm = 0xFFFF
andl (%rdi), %eax
shll $16, %esi
addl %eax, %esi
movl %esi, (%rdi)
ret
llvm-svn: 101343
|
| |
|
|
| |
llvm-svn: 101341
|
| |
|
|
| |
llvm-svn: 101340
|
| |
|
|
| |
llvm-svn: 101337
|
| |
|
|
| |
llvm-svn: 101286
|
| |
|
|
|
|
|
| |
does not have a legal type. The legalizer does not know how to handle those
nodes. Radar 7854640.
llvm-svn: 101282
|
| |
|
|
| |
llvm-svn: 101277
|
| |
|
|
| |
llvm-svn: 101231
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
current PC. rdar://7834775
We now produce an identical .o file compared to the cctools
assembler for something like this:
_f0:
L0:
jmp L1
.long . - L0
L1:
jmp A
.long . - L1
.zerofill __DATA,_bss,A,0
llvm-svn: 101227
|
| |
|
|
| |
llvm-svn: 101214
|
| |
|
|
|
|
| |
This test relies on iSel lowering dbg_declare intrinsic when CodeGen::OptLevel is None. On PPC side, CodeGen::OptLevel stays to default when -O0 is used on the command line.
llvm-svn: 101190
|
| |
|
|
| |
llvm-svn: 101182
|
| |
|
|
|
|
| |
such that the entire second half is in memory. Radar 7855014.
llvm-svn: 101181
|
| |
|
|
| |
llvm-svn: 101171
|
| |
|
|
| |
llvm-svn: 101163
|
| |
|
|
|
|
| |
instruction being optimized. There is no need to --I which can deref off start of the BB.
llvm-svn: 101162
|
| |
|
|
|
|
| |
in a nightly tester.
llvm-svn: 101158
|
| |
|
|
|
|
| |
that one operand is always greater than another.
llvm-svn: 101142
|
| |
|
|
|
|
|
|
|
|
|
|
| |
numerator is an induction variable. For example, with code like this:
for (i=0;i<n;++i)
x[i%n] = 0;
IndVarSimplify will now recognize that i is always less than n inside
the loop, and eliminate the remainder.
llvm-svn: 101113
|
| |
|
|
|
|
| |
patch by Sylvere Teissier!
llvm-svn: 101106
|
| |
|
|
|
|
| |
relocation. rdar://7738756
llvm-svn: 101085
|
| |
|
|
| |
llvm-svn: 101081
|
| |
|
|
| |
llvm-svn: 101079
|
| |
|
|
| |
llvm-svn: 101077
|