| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
| |
Empty live ranges represent undef and still get allocated, but they
won't appear in LiveIntervalUnions.
Patch by Patrik Hägglund!
llvm-svn: 156685
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
pointer register.
This is the first of the series of patches which clean up the way global pointer
register is used. The patches will make the following improvements:
- Make $gp an allocatable temporary register rather than reserving it.
- Use a virtual register as the global pointer register and let the register
allocator decide which register to assign to it or whether spill/reloads are
needed.
- Make sure $gp is valid at the entry of a called function, which is necessary
for functions using lazy binding.
- Remove the need for emitting .cprestore and .cpload directives.
llvm-svn: 156671
|
|
|
|
| |
llvm-svn: 156663
|
|
|
|
| |
llvm-svn: 156662
|
|
|
|
| |
llvm-svn: 156658
|
|
|
|
| |
llvm-svn: 156652
|
|
|
|
| |
llvm-svn: 156646
|
|
|
|
| |
llvm-svn: 156644
|
|
|
|
| |
llvm-svn: 156636
|
|
|
|
|
|
| |
Patch by Jyotsna Verma.
llvm-svn: 156634
|
|
|
|
| |
llvm-svn: 156633
|
|
|
|
|
|
| |
Minor cleanup.
llvm-svn: 156632
|
|
|
|
| |
llvm-svn: 156631
|
|
|
|
|
|
|
|
| |
retval. Hoists check before emitting the call to avoid unnecessary work.
rdar://11430407
PR12796
llvm-svn: 156628
|
|
|
|
| |
llvm-svn: 156625
|
|
|
|
|
|
|
|
| |
to selection DAG isel if we're unable to handle a non-double multi-reg retval.
rdar://11430407
PR12796
llvm-svn: 156622
|
|
|
|
| |
llvm-svn: 156621
|
|
|
|
| |
llvm-svn: 156620
|
|
|
|
| |
llvm-svn: 156615
|
|
|
|
|
|
|
| |
This fixes a TODO from 2007 :) Previously, LLVM would emit the wrong
code here (see the update to test/CodeGen/X86/tls-pie.ll).
llvm-svn: 156611
|
|
|
|
|
|
| |
instruction. It is now set to 0. The patch also sets the unpredictable mask for SEL and SXTB-type instructions.
llvm-svn: 156609
|
|
|
|
|
|
| |
offset addressing. The assembler and instruction printer were not properly handeling the #-0 immediate.
llvm-svn: 156608
|
|
|
|
| |
llvm-svn: 156603
|
|
|
|
| |
llvm-svn: 156602
|
|
|
|
| |
llvm-svn: 156600
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch will optimize the following cases:
sub r1, r3 | sub r1, imm
cmp r3, r1 or cmp r1, r3 | cmp r1, imm
bge L1
TO
subs r1, r3
bge L1 or ble L1
If the branch instruction can use flag from "sub", then we can replace
"sub" with "subs" and eliminate the "cmp" instruction.
rdar: 10734411
llvm-svn: 156599
|
|
|
|
|
|
| |
but it generates int3 on x86 instead of ud2.
llvm-svn: 156593
|
|
|
|
|
|
|
|
| |
to user only read/write.
Part of rdar://11325849
llvm-svn: 156591
|
|
|
|
| |
llvm-svn: 156589
|
|
|
|
|
|
| |
add an additional parameter to InstCombiner::EmitGEPOffset() to force it to *not* emit operations with NUW flag
llvm-svn: 156585
|
|
|
|
| |
llvm-svn: 156579
|
|
|
|
|
|
| |
Patch by Jack Carter.
llvm-svn: 156577
|
|
|
|
| |
llvm-svn: 156576
|
|
|
|
| |
llvm-svn: 156575
|
|
|
|
|
|
|
|
|
|
|
| |
Prioritize the instruction that comes closest to keeping pressure
under the target's limit. Then prioritize instructions that avoid
increasing the max pressure in the scheduled region. The max pressure
heuristic is a tad aggressive. Later I'll fix it to consider the
unscheduled pressure as well.
WIP: This is mostly functional but untested and not likely to do much good yet.
llvm-svn: 156574
|
|
|
|
| |
llvm-svn: 156573
|
|
|
|
| |
llvm-svn: 156572
|
|
|
|
|
|
| |
scheduling.
llvm-svn: 156571
|
|
|
|
| |
llvm-svn: 156569
|
|
|
|
| |
llvm-svn: 156568
|
|
|
|
|
|
|
|
|
| |
Added getMaxExcessUpward/DownwardPressure. They somewhat abuse the
tracker by speculatively handling an instruction out of order. But it
is convenient for now. In the future, we will cache each instruction's
pressure contribution to make this efficient.
llvm-svn: 156561
|
|
|
|
| |
llvm-svn: 156560
|
|
|
|
| |
llvm-svn: 156558
|
|
|
|
|
|
| |
This commit broke an external linux bot and gave a compile-time warning.
llvm-svn: 156556
|
|
|
|
|
|
| |
of recursion, to avoid excessive stack usage on deep expressions.
llvm-svn: 156554
|
|
|
|
| |
llvm-svn: 156553
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch will optimize the following cases:
sub r1, r3 | sub r1, imm
cmp r3, r1 or cmp r1, r3 | cmp r1, imm
bge L1
TO
subs r1, r3
bge L1 or ble L1
If the branch instruction can use flag from "sub", then we can replace
"sub" with "subs" and eliminate the "cmp" instruction.
rdar: 10734411
llvm-svn: 156550
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instruction::IsIdenticalToWhenDefined.
This manifested itself when inlining two calls to the same function. The
inlined function had a switch statement that returned one of a set of
global variables. Without this modification, the two phi instructions that
chose values from the branches of the switch instruction inlined from the
callee were considered equivalent and jump-threading replaced a load for the
first switch value with a phi selecting from the second switch, thereby
producing incorrect code.
This patch has been tested with "make check-all", "lnt runteste nt", and
llvm self-hosted, and on the original program that had this problem,
wireshark.
<rdar://problem/11025519>
llvm-svn: 156548
|
|
|
|
| |
llvm-svn: 156541
|
|
|
|
| |
llvm-svn: 156540
|