Fernando Magno Quintao Pereira
2006-Sep-25 05:30 UTC
[LLVMdev] Folding instructions on X86
Dear LLVMers,
I need help with one error in my register allocator. I am getting
errors when folding instructions for the x86 (it does not happen when
I use the PowerPC as target). The problem is that, when I execute
something like: mi = mbb->insert(mbb->erase(mi), fmi), where mbb is a
MachineBasicBlock, valgrind gives this error message:
Address 0x42C62B0 is 24 bytes inside a block of size 28 free'd
at 0x401C35D: operator delete(void*)(vg_replace_malloc.c:244)
by 0x83E4A7B: llvm::iplist<llvm::MachineInstr,
llvm::ilist_traits<llvm::MachineInstr> >::erase(llvm::ilist_iterator<llvm::MachineInstr>) (ilist:323)
by 0x83E464D:
llvm::MachineBasicBlock::erase(llvm::ilist_iterator<llvm::MachineInstr>)
(MachineBasicBlock.h:168)
Do you guys know any possible reason of why this would happen when
producing code for the X86, but not for the PowerPC?
Best regards,
Fernando
Fernando Magno Quintao Pereira wrote:> > Dear LLVMers, > > I need help with one error in my register allocator.Out of curiosity, what kind of register allocator is that? - Volodya
On Sun, 24 Sep 2006, Fernando Magno Quintao Pereira wrote:> I need help with one error in my register allocator. I am getting > errors when folding instructions for the x86 (it does not happen when > I use the PowerPC as target). The problem is that, when I execute > something like: mi = mbb->insert(mbb->erase(mi), fmi), where mbb is a > MachineBasicBlock, valgrind gives this error message: > > Address 0x42C62B0 is 24 bytes inside a block of size 28 free'd > > at 0x401C35D: operator delete(void*)(vg_replace_malloc.c:244) > by 0x83E4A7B: llvm::iplist<llvm::MachineInstr, > llvm::ilist_traits<llvm::MachineInstr> >> ::erase(llvm::ilist_iterator<llvm::MachineInstr>) (ilist:323) > by 0x83E464D: > llvm::MachineBasicBlock::erase(llvm::ilist_iterator<llvm::MachineInstr>) > (MachineBasicBlock.h:168)It's hard to say, but it seems that the pointer to erase is most likely invalid.> Do you guys know any possible reason of why this would happen when > producing code for the X86, but not for the PowerPC?X86 has many more instructions that can be folded than powerpc does. You're probably just happening to get unlucky on x86. -Chris -- http://nondot.org/sabre/ http://llvm.org/