| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
|  | 
llvm-svn: 99423
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
--- Reverse-merging r99400 into '.':
D    test/CodeGen/Generic/2010-03-24-liveintervalleak.ll
U    lib/CodeGen/LiveIntervalAnalysis.cpp
llvm-svn: 99419
 | 
| | 
| 
| 
|  | 
llvm-svn: 99418
 | 
| | 
| 
| 
| 
| 
|  | 
NVCVTFrm will later be used to describe "vcvt with fractional bits".
llvm-svn: 99415
 | 
| | 
| 
| 
|  | 
llvm-svn: 99414
 | 
| | 
| 
| 
| 
| 
|  | 
N3VX instructions using special case code.
llvm-svn: 99409
 | 
| | 
| 
| 
|  | 
llvm-svn: 99402
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
otherwise the SmallVector it contains doesn't free its memory.
In most cases LiveIntervalAnalysis could get away by not calling the destructor,
because VNInfos are bumpptr-allocated, and smallvectors usually don't grow.
However when the SmallVector does grow it always leaks.
This is the valgrind shown leak from the original testcase:
==8206== 18,304 bytes in 151 blocks are definitely lost in loss record 164 of 164
==8206==    at 0x4A079C7: operator new(unsigned long) (vg_replace_malloc.c:220)
==8206==    by 0x4DB7A7E: llvm::SmallVectorBase::grow_pod(unsigned long, unsigned long) (in /home/edwin/clam/git/builds/defaul
t/libclamav/.libs/libclamav.so.6.1.0)
==8206==    by 0x4F90382: llvm::VNInfo::addKill(llvm::SlotIndex) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libcl
amav.so.6.1.0)
==8206==    by 0x5126B5C: llvm::LiveIntervals::handleVirtualRegisterDef(llvm::MachineBasicBlock*, llvm::ilist_iterator<llvm::M
achineInstr>, llvm::SlotIndex, llvm::MachineOperand&, unsigned int, llvm::LiveInterval&) (in /home/edwin/clam/git/builds/defau
lt/libclamav/.libs/libclamav.so.6.1.0)
==8206==    by 0x512725E: llvm::LiveIntervals::handleRegisterDef(llvm::MachineBasicBlock*, llvm::ilist_iterator<llvm::MachineI
nstr>, llvm::SlotIndex, llvm::MachineOperand&, unsigned int) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libclamav
.so.6.1.0)
==8206==    by 0x51278A8: llvm::LiveIntervals::computeIntervals() (in /home/edwin/clam/git/builds/default/libclamav/.libs/libc
lamav.so.6.1.0)
==8206==    by 0x5127CB4: llvm::LiveIntervals::runOnMachineFunction(llvm::MachineFunction&) (in /home/edwin/clam/git/builds/de
fault/libclamav/.libs/libclamav.so.6.1.0)
==8206==    by 0x4DAE935: llvm::FPPassManager::runOnFunction(llvm::Function&) (in /home/edwin/clam/git/builds/default/libclama
v/.libs/libclamav.so.6.1.0)
==8206==    by 0x4DAEB10: llvm::FunctionPassManagerImpl::run(llvm::Function&) (in /home/edwin/clam/git/builds/default/libclama
v/.libs/libclamav.so.6.1.0)
==8206==    by 0x4DAED3D: llvm::FunctionPassManager::run(llvm::Function&) (in /home/edwin/clam/git/builds/default/libclamav/.l
ibs/libclamav.so.6.1.0)
==8206==    by 0x4D8BE8E: llvm::JIT::runJITOnFunctionUnlocked(llvm::Function*, llvm::MutexGuard const&) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libclamav.so.6.1.0)
==8206==    by 0x4D8CA72: llvm::JIT::getPointerToFunction(llvm::Function*) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libclamav.so.6.1.0)
llvm-svn: 99400
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
I have audited all getOperandNo calls now, fixing
hidden assumptions. CallSite related uglyness will
be eliminated successively.
Note this patch has a long and griveous history,
for all the back-and-forths have a look at
CallSite.h's log.
llvm-svn: 99399
 | 
| | 
| 
| 
|  | 
llvm-svn: 99398
 | 
| | 
| 
| 
|  | 
llvm-svn: 99395
 | 
| | 
| 
| 
| 
| 
|  | 
this way
llvm-svn: 99394
 | 
| | 
| 
| 
|  | 
llvm-svn: 99392
 | 
| | 
| 
| 
| 
| 
|  | 
MCAsmLayout object.
llvm-svn: 99380
 | 
| | 
| 
| 
|  | 
llvm-svn: 99378
 | 
| | 
| 
| 
|  | 
llvm-svn: 99376
 | 
| | 
| 
| 
| 
| 
| 
|  | 
and defining the add pattern with Pat<>, eliminating a use of
parallel.
llvm-svn: 99375
 | 
| | 
| 
| 
| 
| 
|  | 
respectively, and add some more comment.
llvm-svn: 99373
 | 
| | 
| 
| 
|  | 
llvm-svn: 99372
 | 
| | 
| 
| 
|  | 
llvm-svn: 99370
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
ISD node.  The only change in the generated isel code are comments
like:
<                 // Src: (X86dec_flag:i16 GR16:i16:$src)
---
>                 // Src: (X86dec_flag:i16:i32 GR16:i16:$src)
because now it knows that X86dec_flag returns both an i16 (for the result)
and an i32 (for EFLAGS) in this case.  Wewt.
llvm-svn: 99369
 | 
| | 
| 
| 
|  | 
llvm-svn: 99360
 | 
| | 
| 
| 
|  | 
llvm-svn: 99359
 | 
| | 
| 
| 
|  | 
llvm-svn: 99358
 | 
| | 
| 
| 
| 
| 
|  | 
test run permformance numbers say as to whether it helps.
llvm-svn: 99355
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
domain crossings."
This reverts commit 99345. It was breaking buildbots.
llvm-svn: 99352
 | 
| | 
| 
| 
|  | 
llvm-svn: 99350
 | 
| | 
| 
| 
|  | 
llvm-svn: 99348
 | 
| | 
| 
| 
| 
| 
|  | 
just use an empty result list.
llvm-svn: 99346
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
crossings.
This is work in progress. So far, SSE execution domain tables are added to
X86InstrInfo, and a skeleton pass is enabled with -sse-domain-fix.
llvm-svn: 99345
 | 
| | 
| 
| 
|  | 
llvm-svn: 99344
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
for the noinline attribute, and make the inliner refuse to
inline a call site when the call site is marked noinline even
if the callee isn't.  This fixes PR6682.
llvm-svn: 99341
 | 
| | 
| 
| 
| 
| 
|  | 
needed here.
llvm-svn: 99339
 | 
| | 
| 
| 
| 
| 
|  | 
beyond just calling getTypeToTransformTo.
llvm-svn: 99335
 | 
| | 
| 
| 
| 
| 
| 
|  | 
for ignoring debug info intrinsics everywhere else is to advance
past them, and it needs to be consistent.
llvm-svn: 99332
 | 
| | 
| 
| 
| 
| 
|  | 
patch by Alex Mac!
llvm-svn: 99330
 | 
| | 
| 
| 
|  | 
llvm-svn: 99328
 | 
| | 
| 
| 
|  | 
llvm-svn: 99327
 | 
| | 
| 
| 
| 
| 
|  | 
Converted some of the NEON vcvt instructions to this format.
llvm-svn: 99326
 | 
| | 
| 
| 
|  | 
llvm-svn: 99324
 | 
| | 
| 
| 
|  | 
llvm-svn: 99322
 | 
| | 
| 
| 
|  | 
llvm-svn: 99321
 | 
| | 
| 
| 
| 
| 
|  | 
MachineBasicBlock::iterator that does this automatically?
llvm-svn: 99320
 | 
| | 
| 
| 
|  | 
llvm-svn: 99319
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
These instructions are only needed for codegen, so I've removed all the
explicit encoding bits for now; they should be set in the same way as the for
VLDMD and VSTMD whenever we add encodings for VFP.  The use of addrmode5
requires that the instructions be custom-selected so that the number of
registers can be set in the AM5Opc value.
llvm-svn: 99309
 | 
| | 
| 
| 
|  | 
llvm-svn: 99295
 | 
| | 
| 
| 
| 
| 
|  | 
Ref: A7.4.6 One register and a modified immediate value.
llvm-svn: 99288
 | 
| | 
| 
| 
| 
| 
|  | 
optimizations down stream.
llvm-svn: 99282
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
if Function::hasAddressTaken works as advertised
also included some cosmetic cleanups
llvm-svn: 99276
 | 
| | 
| 
| 
|  | 
llvm-svn: 99275
 |