| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 114433
|
|
|
|
| |
llvm-svn: 114431
|
|
|
|
|
|
|
| |
I am unable to write a test for this case, help is solicited, though...
What I did is to tickle the code in the debugger and verify that we do the right thing.
llvm-svn: 114430
|
|
|
|
|
|
| |
between pairs of virtuals, and between virtuals and physicals).
llvm-svn: 114429
|
|
|
|
|
|
|
|
|
|
| |
into OptimizeCompareInstr.
This necessitates the passing of CmpValue around,
so widen the virtual functions to accomodate.
No functionality changes.
llvm-svn: 114428
|
|
|
|
|
|
|
| |
pass a completely incorrect SrcValue, which would result in a miscompile with
combiner-aa.
llvm-svn: 114411
|
|
|
|
| |
llvm-svn: 114410
|
|
|
|
| |
llvm-svn: 114409
|
|
|
|
|
|
|
|
| |
"getFixedStack" on the MachinePointerInfo class. While
this isn't the problem I'm setting out to solve, it is the
right way to eliminate PseudoSourceValue, so lets go with it.
llvm-svn: 114406
|
|
|
|
|
|
|
| |
of the getLoad methods. This fixes at least one bug where an incorrect
svoffset is passed in (a potential combiner-aa miscompile).
llvm-svn: 114404
|
|
|
|
|
|
|
|
| |
relative operations
into non-segment-relative copies.
llvm-svn: 114402
|
|
|
|
|
|
|
| |
instead of srcvalue/offset pairs. This corrects SV info for mem
operations whose size is > 32-bits.
llvm-svn: 114401
|
|
|
|
| |
llvm-svn: 114400
|
|
|
|
|
|
|
| |
MachinePointerInfo. Among other virtues, this doesn't silently truncate the
svoffset to 32-bits.
llvm-svn: 114399
|
|
|
|
|
|
| |
MachinePointerInfo
llvm-svn: 114397
|
|
|
|
|
|
| |
eliminating some weird "infer a frame address" logic which was dead.
llvm-svn: 114396
|
|
|
|
| |
llvm-svn: 114395
|
|
|
|
|
|
|
| |
MachinePointerInfo, propagating the type out a level of API. Remove
the old MachineFunction::getMachineMemOperand impl.
llvm-svn: 114393
|
|
|
|
| |
llvm-svn: 114391
|
|
|
|
|
|
| |
to the MachineFunction construction methods.
llvm-svn: 114390
|
|
|
|
|
|
|
|
|
| |
MachinePointerInfo struct, no functionality change.
This also adds an assert to MachineMemOperand::MachineMemOperand
that verifies that the Value* is either null or is an IR pointer type.
llvm-svn: 114389
|
|
|
|
|
|
| |
For now, just disable folding the load into the call.
llvm-svn: 114386
|
|
|
|
| |
llvm-svn: 114383
|
|
|
|
| |
llvm-svn: 114382
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
define double @foo(double %x, double %y, i1 %c) nounwind {
%a = fdiv double %x, 3.2
%z = select i1 %c, double %a, double %y
ret double %z
}
Was:
_foo:
divsd LCPI0_0(%rip), %xmm0
testb $1, %dil
jne LBB0_2
movaps %xmm1, %xmm0
LBB0_2:
ret
Now:
_foo:
testb $1, %dil
je LBB0_2
divsd LCPI0_0(%rip), %xmm0
ret
LBB0_2:
movaps %xmm1, %xmm0
ret
This avoids the divsd when early exit is taken.
rdar://8454886
llvm-svn: 114372
|
|
|
|
|
|
|
|
|
|
|
|
| |
Therefore,
CombinerAA cannot assume that different FrameIndex's never alias, but can instead use
MachineFrameInfo to get the actual offsets of these slots and check for actual aliasing.
This fixes CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll and CodeGen/X86/tailcallstack64.ll
when CombinerAA is enabled, modulo a different register allocation sequence.
llvm-svn: 114348
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
between the high and low registers for prologue/epilogue code. This was
a Darwin-only thing that wasn't providing a realistic benefit anymore.
Combining the save areas simplifies the compiler code and results in better
ARM/Thumb2 codegen.
For example, previously we would generate code like:
push {r4, r5, r6, r7, lr}
add r7, sp, #12
stmdb sp!, {r8, r10, r11}
With this change, we combine the register saves and generate:
push {r4, r5, r6, r7, r8, r10, r11, lr}
add r7, sp, #12
rdar://8445635
llvm-svn: 114340
|
|
|
|
| |
llvm-svn: 114339
|
|
|
|
| |
llvm-svn: 114338
|
|
|
|
|
|
| |
now copy + delete on Windows. Problem to be revisited for a permanent and clean solution.
llvm-svn: 114320
|
|
|
|
| |
llvm-svn: 114313
|
|
|
|
|
|
|
| |
r114268 fixed the last of the blockers to enabling it. I will be monitoring
for failures.
llvm-svn: 114312
|
|
|
|
| |
llvm-svn: 114310
|
|
|
|
| |
llvm-svn: 114304
|
|
|
|
| |
llvm-svn: 114303
|
|
|
|
| |
llvm-svn: 114302
|
|
|
|
| |
llvm-svn: 114297
|
|
|
|
|
|
| |
Patch by Che-Liang Chiou <clchiou@gmail.com>!
llvm-svn: 114294
|
|
|
|
| |
llvm-svn: 114292
|
|
|
|
| |
llvm-svn: 114285
|
|
|
|
| |
llvm-svn: 114284
|
|
|
|
| |
llvm-svn: 114278
|
|
|
|
| |
llvm-svn: 114277
|
|
|
|
| |
llvm-svn: 114273
|
|
|
|
|
|
|
|
|
|
|
|
| |
class can be extended to support custom constraints.
For now the allocator still uses the old (internal) construction mechanism by default. This will be phased out soon assuming
no issues with the builder system come up.
To invoke the new construction mechanism just pass '-regalloc=pbqp -pbqp-builder' to llc. To provide custom constraints a
Target just needs to extend PBQPBuilder and pass an instance of their derived builder to the RegAllocPBQP constructor.
llvm-svn: 114272
|
|
|
|
|
|
| |
in different blocks.
llvm-svn: 114270
|
|
|
|
|
|
|
|
|
|
| |
is that there is
NO path to the destination containing side effects, not that SOME path contains no side effects.
In practice, this only manifests with CombinerAA enabled, because otherwise the chain has little
to no branching, so "any" is effectively equivalent to "all".
llvm-svn: 114268
|
|
|
|
| |
llvm-svn: 114263
|
|
|
|
|
|
| |
thumb with floating point.
llvm-svn: 114256
|
|
|
|
| |
llvm-svn: 114254
|