| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 131430
|
| |
|
|
| |
llvm-svn: 131429
|
| |
|
|
| |
llvm-svn: 131428
|
| |
|
|
|
|
| |
misses.
llvm-svn: 131426
|
| |
|
|
|
|
| |
Radar 9422775.
llvm-svn: 131422
|
| |
|
|
| |
llvm-svn: 131420
|
| |
|
|
| |
llvm-svn: 131419
|
| |
|
|
|
|
| |
clang generates for cases like this, but it should become more useful soon.
llvm-svn: 131417
|
| |
|
|
|
|
| |
corrupted when setjmp returns again.
llvm-svn: 131399
|
| |
|
|
|
|
| |
intrinsic from the x86 code to the generic code.
llvm-svn: 131332
|
| |
|
|
|
|
| |
to fix PR9900. I will keep it open until sable is able to comment on it.
llvm-svn: 131294
|
| |
|
|
|
|
| |
simplified version. <rdar://problem/9298790>
llvm-svn: 131274
|
| |
|
|
|
|
| |
rdar://problem/9298790
llvm-svn: 131269
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
by non-CMP expressions. The executable test case (129821) would test
this as well, if we had an "-O0 -disable-arm-fast-isel" LLVM-GCC
tester. Alas, the ARM assembly would be very difficult to check with
FileCheck.
The thumb2-cbnz.ll test is affected; it generates larger code (tst.w
vs. cmp #0), but I believe the new version is correct.
rdar://problem/9298790
llvm-svn: 131261
|
| |
|
|
|
|
|
|
| |
If there is a store after the load node, then there is a chain, which means
that there is another user. Thus, asking hasOneUser would fail. Instead we
ask hasNUsesOfValue on the 'data' value.
llvm-svn: 131183
|
| |
|
|
|
|
|
|
| |
intrinsic call. This prevents it from being reordered so that it appears
*before* the setjmp intrinsic (thus making it completely useless).
<rdar://problem/9409683>
llvm-svn: 131174
|
| |
|
|
|
|
| |
rdar://problem/9413587 .
llvm-svn: 131156
|
| |
|
|
|
|
|
| |
test case; I've only seen this on a release branch, and I can't get it
to reproduce on trunk. rdar://problem/7662569
llvm-svn: 131152
|
| |
|
|
|
|
| |
Patch by Evan Cheng.
llvm-svn: 131093
|
| |
|
|
| |
llvm-svn: 131082
|
| |
|
|
| |
llvm-svn: 131015
|
| |
|
|
|
|
| |
functionality change.
llvm-svn: 131012
|
| |
|
|
| |
llvm-svn: 131008
|
| |
|
|
| |
llvm-svn: 130934
|
| |
|
|
|
|
| |
this can make MachineCSE more effective in some cases (especially in small functions). PR8361 / part of rdar://problem/8259436 .
llvm-svn: 130928
|
| |
|
|
|
|
| |
functionality change intended.
llvm-svn: 130926
|
| |
|
|
|
|
| |
pointer type for vector indices. Make the vector unrolling code respect that.
llvm-svn: 130733
|
| |
|
|
|
|
| |
FastEmit_i can fail for non-Thumb2 ARM. Makes ARMSimplifyAddress work correctly, and reduces the number of fast-isel bailouts on non-Thumb ARM.
llvm-svn: 130560
|
| |
|
|
| |
llvm-svn: 130360
|
| |
|
|
|
|
| |
common. rdar://problem/9303592 .
llvm-svn: 130338
|
| |
|
|
| |
llvm-svn: 130337
|
| |
|
|
|
|
|
|
|
|
|
|
| |
more callee-saved registers and introduce copies. Only allows it if scheduling
a node above calls would end up lessen register pressure.
Call operands also has added ABI restrictions for register allocation, so be
extra careful with hoisting them above calls.
rdar://9329627
llvm-svn: 130245
|
| |
|
|
| |
llvm-svn: 130205
|
| |
|
|
| |
llvm-svn: 130190
|
| |
|
|
|
|
| |
incoming argument. However, It is appropriate to emit DBG_VALUE referring to this incoming argument in entry block in MachineFunction.
llvm-svn: 130129
|
| |
|
|
| |
llvm-svn: 130068
|
| |
|
|
| |
llvm-svn: 130033
|
| |
|
|
|
|
|
|
|
|
|
| |
fix bugs exposed by the gcc dejagnu testsuite:
1. The load may actually be used by a dead instruction, which
would cause an assert.
2. The load may not be used by the current chain of instructions,
and we could move it past a side-effecting instruction. Change
how we process uses to define the problem away.
llvm-svn: 130018
|
| |
|
|
|
|
|
|
|
|
|
|
| |
On x86 this allows to fold a load into the cmp, greatly reducing register pressure.
movzbl (%rdi), %eax
cmpl $47, %eax
->
cmpb $47, (%rdi)
This shaves 8k off gcc.o on i386. I'll leave applying the patch in README.txt to Chris :)
llvm-svn: 130005
|
| |
|
|
|
|
| |
which broke a couple GCC test suite tests at -O0.
llvm-svn: 129914
|
| |
|
|
|
|
|
|
|
| |
manually and pass all (now) 4 arguments to the mul libcall. Add a new
ExpandLibCall for just this (copied gratuitously from type legalization).
Fixes rdar://9292577
llvm-svn: 129842
|
| |
|
|
| |
llvm-svn: 129796
|
| |
|
|
|
|
| |
unnecessary work where possible.
llvm-svn: 129763
|
| |
|
|
|
|
| |
<rdar://problem/7662569>
llvm-svn: 129761
|
| |
|
|
|
|
|
|
|
| |
generated
en-mass for C++ PODs. On my c++ test file, this cuts the fast isel rejects by 10x
and shrinks the generated .s file by 5%
llvm-svn: 129755
|
| |
|
|
|
|
| |
this fixes a few rejects on c++ iterator loops.
llvm-svn: 129694
|
| |
|
|
| |
llvm-svn: 129693
|
| |
|
|
|
|
|
|
|
|
| |
2. implement rdar://9289501 - fast isel should fold trivial multiplies to shifts
3. teach tblgen to handle shift immediates that are different sizes than the
shifted operands, eliminating some code from the X86 fast isel backend.
4. Have FastISel::SelectBinaryOp use (the poorly named) FastEmit_ri_ function
instead of FastEmit_ri to simplify code.
llvm-svn: 129666
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
less trivial things) into a dummy lea. Before we generated:
_test: ## @test
movq _G@GOTPCREL(%rip), %rax
leaq (%rax), %rax
ret
now we produce:
_test: ## @test
movq _G@GOTPCREL(%rip), %rax
ret
This is part of rdar://9289558
llvm-svn: 129662
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The basic issue here is that bottom-up isel is matching the branch
and compare, and was failing to fold the load into the branch/compare
combo. Fixing this (by allowing folding into any instruction of a
sequence that is selected) allows us to produce things like:
cmpb $0, 52(%rax)
je LBB4_2
instead of:
movb 52(%rax), %cl
cmpb $0, %cl
je LBB4_2
This makes the generated -O0 code run a bit faster, but also speeds up
compile time by putting less pressure on the register allocator and
generating less code.
This was one of the biggest classes of missing load folding. Implementing
this shrinks 176.gcc's c-decl.s (as a random example) by about 4% in (verbose-asm)
line count.
llvm-svn: 129656
|