| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
for non-function GV relocations that require function address stubs (e.g. Mac OS X in non-static mode).
llvm-svn: 45527
|
| |
|
|
| |
llvm-svn: 45515
|
| |
|
|
|
|
| |
check that register isn't 0 before going further.
llvm-svn: 45498
|
| |
|
|
| |
llvm-svn: 45494
|
| |
|
|
| |
llvm-svn: 45493
|
| |
|
|
| |
llvm-svn: 45484
|
| |
|
|
|
|
| |
version. It's unclear why gcc would ever compile this...
llvm-svn: 45476
|
| |
|
|
|
|
|
|
|
|
| |
a header file from libcodegen. This violates a layering order: codegen
depends on target, not the other way around. The fix to this is to
split TII into two classes, TII and TargetInstrInfoImpl, which defines
stuff that depends on libcodegen. It is defined in libcodegen, where
the base is not.
llvm-svn: 45475
|
| |
|
|
|
|
| |
Machine-level API cleanup instigated by Chris.
llvm-svn: 45470
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
that "machine" classes are used to represent the current state of
the code being compiled. Given this expanded name, we can start
moving other stuff into it. For now, move the UsedPhysRegs and
LiveIn/LoveOuts vectors from MachineFunction into it.
Update all the clients to match.
This also reduces some needless #includes, such as MachineModuleInfo
from MachineFunction.
llvm-svn: 45467
|
| |
|
|
|
|
|
|
|
|
|
|
| |
e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on
switching everything over, so new clients should just start using the
shorter names.
Remove old long accessors, switching everything over to use the short
accessor: getMachineBasicBlock() -> getMBB(),
getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc.
llvm-svn: 45464
|
| |
|
|
|
|
|
|
|
|
| |
- Eliminate the static "print" method for operands, moving it
into MachineOperand::print.
- Change various set* methods for register flags to take a bool
for the value to set it to. Remove unset* methods.
- Group methods more logically by operand flavor in MachineOperand.h
llvm-svn: 45461
|
| |
|
|
|
|
| |
Likewise setImmedValue -> setImm
llvm-svn: 45453
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
function, then go ahead and hoist it out of the loop. This is the result:
$ cat a.c
volatile int G;
int A(int N) {
for (; N > 0; --N)
G++;
}
$ llc -o - -relocation-model=pic
_A:
...
LBB1_2: # bb
movl L_G$non_lazy_ptr-"L1$pb"(%eax), %esi
incl (%esi)
incl %edx
cmpl %ecx, %edx
jne LBB1_2 # bb
...
$ llc -o - -relocation-model=pic -machine-licm
_A:
...
movl L_G$non_lazy_ptr-"L1$pb"(%eax), %eax
LBB1_2: # bb
incl (%eax)
incl %edx
cmpl %ecx, %edx
jne LBB1_2 # bb
...
I'm limiting this to the MOV32rm x86 instruction for now.
llvm-svn: 45444
|
| |
|
|
| |
llvm-svn: 45437
|
| |
|
|
| |
llvm-svn: 45433
|
| |
|
|
| |
llvm-svn: 45418
|
| |
|
|
| |
llvm-svn: 45415
|
| |
|
|
| |
llvm-svn: 45408
|
| |
|
|
|
|
|
|
| |
eliminating the llvm.x86.sse2.loadl.pd intrinsic?), one shuffle optzn
may be done (if shufps is better than pinsw, Evan, please review), and
we already know about LICM of simple instructions.
llvm-svn: 45407
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
comparisons with a constant. This allows us to compile isnan to:
_foo:
fcmpu cr7, f1, f1
mfcr r2
rlwinm r3, r2, 0, 31, 31
blr
instead of:
LCPI1_0: ; float
.space 4
_foo:
lis r2, ha16(LCPI1_0)
lfs f0, lo16(LCPI1_0)(r2)
fcmpu cr7, f1, f0
mfcr r2
rlwinm r3, r2, 0, 31, 31
blr
llvm-svn: 45405
|
| |
|
|
| |
llvm-svn: 45404
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
as:
_bar:
pushl %esi
subl $8, %esp
movl 16(%esp), %esi
call L_foo$stub
fstps (%esi)
addl $8, %esp
popl %esi
#FP_REG_KILL
ret
instead of:
_bar:
pushl %esi
subl $8, %esp
movl 16(%esp), %esi
call L_foo$stub
fstpl (%esi)
cvtsd2ss (%esi), %xmm0
movss %xmm0, (%esi)
addl $8, %esp
popl %esi
#FP_REG_KILL
ret
llvm-svn: 45401
|
| |
|
|
|
|
|
|
|
| |
if we are just going to store it back anyway. This improves things
like:
double foo();
void bar(double *P) { *P = foo(); }
llvm-svn: 45399
|
| |
|
|
| |
llvm-svn: 45397
|
| |
|
|
| |
llvm-svn: 45393
|
| |
|
|
| |
llvm-svn: 45388
|
| |
|
|
| |
llvm-svn: 45387
|
| |
|
|
| |
llvm-svn: 45377
|
| |
|
|
| |
llvm-svn: 45343
|
| |
|
|
|
|
|
| |
providing a misleading facility. It's used once in the MIPS backend
and hardcoded as "\t.globl\t" everywhere else.
llvm-svn: 45338
|
| |
|
|
| |
llvm-svn: 45325
|
| |
|
|
| |
llvm-svn: 45324
|
| |
|
|
| |
llvm-svn: 45319
|
| |
|
|
| |
llvm-svn: 45318
|
| |
|
|
| |
llvm-svn: 45313
|
| |
|
|
| |
llvm-svn: 45312
|
| |
|
|
| |
llvm-svn: 45307
|
| |
|
|
| |
llvm-svn: 45304
|
| |
|
|
| |
llvm-svn: 45300
|
| |
|
|
|
|
| |
of this patch is the last line).
llvm-svn: 45289
|
| |
|
|
| |
llvm-svn: 45282
|
| |
|
|
| |
llvm-svn: 45281
|
| |
|
|
| |
llvm-svn: 45280
|
| |
|
|
| |
llvm-svn: 45268
|
| |
|
|
|
|
|
| |
- vec_const.ll: Vector constant loads
- immed64.ll: i64, f64 constant loads
llvm-svn: 45242
|
| |
|
|
|
|
|
|
|
|
|
|
| |
are a couple of issues that show up with the optimizer,
but I don't think they're really EH problems.
(llvm-gcc testsuite users note: By default the testsuite
uses the unwinding code that's built as part of your local
llvm-gcc, which does not work. You need to trick it into
using the installed system unwinding code to get useful
results.)
llvm-svn: 45221
|
| |
|
|
| |
llvm-svn: 45219
|
| |
|
|
|
|
| |
(vector insertions)
llvm-svn: 45216
|
| |
|
|
| |
llvm-svn: 45196
|