| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 62529
|
| |
|
|
| |
llvm-svn: 62528
|
| |
|
|
|
|
| |
objects directly. There is no need to support isa<>, dyn_cast<> etc...
llvm-svn: 62527
|
| |
|
|
| |
llvm-svn: 62526
|
| |
|
|
| |
llvm-svn: 62522
|
| |
|
|
|
|
| |
instead of sign extending the low part (in AX/EAX/RAX) into it.
llvm-svn: 62519
|
| |
|
|
| |
llvm-svn: 62518
|
| |
|
|
| |
llvm-svn: 62516
|
| |
|
|
|
|
|
|
| |
The way this worked before was to test APInt by running
"lli -force-interpreter=true" knowing the lli uses APInt under the hood to
store its values. Now, we test APInt directly.
llvm-svn: 62514
|
| |
|
|
| |
llvm-svn: 62512
|
| |
|
|
|
|
| |
(This is also a test commit.)
llvm-svn: 62511
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
llvm-gcc. Most likely, it's miscompiling one of the "gen*" programs:
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./prev-gcc/xgcc -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./prev-gcc/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.6.0/bin/ -c -g -O2 -mdynamic-no-pic -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -mdynamic-no-pic -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/build -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include -DENABLE_LLVM -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/../llvm.src/include -D_DEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -o build/gencondmd.o build/gencondmd.c
../../llvm-gcc.src/gcc/config/i386/mmx.md:926: error: expected '}' before ')' token
../../llvm-gcc.src/gcc/config/i386/mmx.md:926: warning: excess elements in struct initializer
../../llvm-gcc.src/gcc/config/i386/mmx.md:926: warning: (near initialization for 'insn_conditions[4]')
../../llvm-gcc.src/gcc/config/i386/mmx.md:926: error: expected '}' before ')' token
../../llvm-gcc.src/gcc/config/i386/mmx.md:926: error: expected ',' or ';' before ')' token
../../llvm-gcc.src/gcc/config/i386/mmx.md:927: error: expected identifier or '(' before ',' token
../../llvm-gcc.src/gcc/config/i386/sse.md:3458: error: expected identifier or '(' before ',' token
...
llvm-svn: 62506
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
uses so we should make it the second source operand of ISD::OR so 2-address pass won't have to be smart about commuting.
%reg1024<def> = MOVSDrm %reg0, 1, %reg0, <cp#0>, Mem:LD(8,8) [ConstantPool + 0]
%reg1025<def> = MOVSD2PDrr %reg1024
%reg1026<def> = MOVDI2PDIrm <fi#-1>, 1, %reg0, 0, Mem:LD(4,16) [FixedStack-1 + 0]
%reg1027<def> = ORPSrr %reg1025<kill>, %reg1026<kill>
%reg1028<def> = MOVPD2SDrr %reg1027<kill>
%reg1029<def> = SUBSDrr %reg1028<kill>, %reg1024<kill>
%reg1030<def> = CVTSD2SSrr %reg1029<kill>
MOVSSmr <fi#0>, 1, %reg0, 0, %reg1030<kill>, Mem:ST(4,4) [FixedStack0 + 0]
%reg1031<def> = LD_Fp32m80 <fi#0>, 1, %reg0, 0, Mem:LD(4,16) [FixedStack0 + 0]
RET %reg1031<kill>, %ST0<imp-use,kill>
The reason 2-addr pass isn't smart enough to commute the ORPSrr is because it can't look pass the MOVSD2PDrr instruction.
llvm-svn: 62505
|
| |
|
|
|
|
| |
optimize it to a SINT_TO_FP when the sign bit is known zero. X86 isel should perform the optimization itself.
llvm-svn: 62504
|
| |
|
|
|
|
|
|
|
| |
we assumed a CFG structure that would be valid when all code in
the function is reachable, but not all code is necessarily
reachable. Do a simple, but horrible, CFG walk to check for this
case.
llvm-svn: 62487
|
| |
|
|
| |
llvm-svn: 62477
|
| |
|
|
|
|
|
|
|
|
| |
because of dead code, a phi could use the speculated instruction
that was not in "BB2". Make this check explicit and tighten up
some other corners. This fixes PR3292. No testcase becauase this
depends entirely on visitation order of blocks and requires a
sequence of 8 passes to repro.
llvm-svn: 62476
|
| |
|
|
|
|
| |
check. No functionality change.
llvm-svn: 62474
|
| |
|
|
| |
llvm-svn: 62470
|
| |
|
|
| |
llvm-svn: 62467
|
| |
|
|
| |
llvm-svn: 62462
|
| |
|
|
|
|
|
|
|
| |
doing very similar pointer capture analysis.
Factor out the common logic. The new version
is from FunctionAttrs since it does a better
job than the version in BasicAliasAnalysis
llvm-svn: 62461
|
| |
|
|
| |
llvm-svn: 62459
|
| |
|
|
|
|
| |
supposed to take two arguments.
llvm-svn: 62457
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
putc, puts, perror, vscanf and vsscanf from getting annotations.
Add annotations for eight printf functions, memalign, pread and pwrite.
On Linux, llvm-gcc sometimes renames strdup, getc, putc, strtok_r, scanf and
sscanf. Match the alternate function names.
Fix a crash annotating opendir.
Don't mark fsetpos's second parameter as nocapture. It's supposed to be
captured.
Do mark fopen's path and mode strings as nocapture. Mark ferror as readonly,
but not fileno which may set errno.
llvm-svn: 62456
|
| |
|
|
| |
llvm-svn: 62436
|
| |
|
|
| |
llvm-svn: 62430
|
| |
|
|
| |
llvm-svn: 62428
|
| |
|
|
| |
llvm-svn: 62423
|
| |
|
|
| |
llvm-svn: 62421
|
| |
|
|
| |
llvm-svn: 62418
|
| |
|
|
| |
llvm-svn: 62415
|
| |
|
|
|
|
| |
folded in 64-bit mode.
llvm-svn: 62413
|
| |
|
|
| |
llvm-svn: 62412
|
| |
|
|
| |
llvm-svn: 62410
|
| |
|
|
| |
llvm-svn: 62406
|
| |
|
|
| |
llvm-svn: 62405
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
X86. This code:
void f() {
uint32_t x;
float y = (float)x;
}
used to be:
movl %eax, -8(%ebp)
movl [2^52 double], -4(%ebp)
movsd -8(%ebp), %xmm0
subsd [2^52 double], %xmm0
cvtsd2ss %xmm0, %xmm0
Is now:
movsd [2^52 double], %xmm0
movsd %xmm0, %xmm1
movd %ecx, %xmm2
orps %xmm2, %xmm1
subsd %xmm0, %xmm1
cvtsd2ss %xmm1, %xmm0
This is faster on X86. Note that there's an extra load of %xmm0 into %xmm1. That
will be fixed in a later coalescer fix.
llvm-svn: 62404
|
| |
|
|
| |
llvm-svn: 62394
|
| |
|
|
|
|
|
|
| |
functionally equivalent
if this works out, I'll change the others next.
llvm-svn: 62385
|
| |
|
|
| |
llvm-svn: 62384
|
| |
|
|
| |
llvm-svn: 62383
|
| |
|
|
| |
llvm-svn: 62377
|
| |
|
|
|
|
| |
PPCTargetLowering::LowerGlobalAddress to check if isVerifiedDebugInfoDesc() is true. Given the recent changes, it would falsely return true for a lot of GlobalAddressSDNode's.
llvm-svn: 62373
|
| |
|
|
|
|
|
| |
Makes possible to specify options that take multiple arguments (a-la
-sectalign on Darwin). See documentation for details.
llvm-svn: 62372
|
| |
|
|
|
|
| |
implement getSubtargetImpl.
llvm-svn: 62369
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
and every other instruction in their blocks to keep the terminator
instructions at the end, teach the post-RA scheduler how to operate
on ranges of instructions, and exclude terminators from the range
of instructions that get scheduled.
Also, exclude mid-block labels, such as EH_LABEL instructions, and
schedule code before them separately from code after them. This
fixes problems with the post-RA scheduler moving code past
EH_LABELs.
llvm-svn: 62366
|
| |
|
|
|
|
|
| |
to 0, to ensure that the subsequent code doesn't try to break the
dependence.
llvm-svn: 62365
|
| |
|
|
|
|
| |
member directly, which is private as of r55504.
llvm-svn: 62364
|
| |
|
|
|
|
|
| |
simple %prcontext which doesn't find what it's looking for
if the scheduler has rearranged the instructions.
llvm-svn: 62363
|