[LLVMbugs] [Bug 3512] New: segfault with dynamic alloca+call combination

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Sat Feb 7 19:12:25 PST 2009


http://llvm.org/bugs/show_bug.cgi?id=3512

           Summary: segfault with dynamic alloca+call combination
           Product: new-bugs
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Keywords: regression
          Severity: normal
          Priority: P2
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: tomas.l.olsen at gmail.com
                CC: llvmbugs at cs.uiuc.edu


To reproduce:

$ llc bar.bc

on a x86-32 linux machine with llvm release_25 branch rev 63833

-

The the attached bitcode is from a simple reduced testcase written in D:

private import tango.stdc.stdlib : alloca;
ubyte[] binaryDigest(ubyte[] buffer) { return null; }
void hexDigest (char[] buffer, uint ds) {
        ubyte[] buf = (cast(ubyte *) alloca(ds))[0..ds];
        ubyte[] ret = binaryDigest(buf);
}

the attached bitcode was generated by LDC.

This code works with LLVM 2.4, but with LLVM 2.5 it segfaults inside LLVM
codegen:

..

Program received signal SIGSEGV, Segmentation fault.

..

#0  llvm::X86RegisterInfo::eliminateCallFramePseudoInstr (this=0xa617f58,
MF=@0xa656000, MBB=@0xa6570f0, I=
      {<bidirectional_iterator<llvm::MachineInstr, int>> =
{<std::iterator<std::bidirectional_iterator_tag, llvm::MachineInstr, int,
llvm::MachineInstr*, llvm::MachineInstr&>> = {<No data fields>}, <No data
fields>}, NodePtr = 0xa6574f8}) at
/usr/lib/gcc/i686-pc-linux-gnu/4.3.3/../../../../include/c++/4.3.3/bits/stl_vector.h:485
#1  0x08564b97 in calculateCalleeSavedRegisters (this=0xa64db60, Fn=@0xa656000)
at PrologEpilogInserter.cpp:173
#2  0x0856636e in runOnMachineFunction (this=0xa64db60, Fn=@0xa656000) at
PrologEpilogInserter.cpp:70
#3  0x08864a51 in llvm::FPPassManager::runOnFunction (this=0xa63f0e0,
F=@0xa621ed8) at PassManager.cpp:1323
#4  0x08864e27 in llvm::FunctionPassManagerImpl::run (this=0xa63e8b8,
F=@0xa621ed8) at PassManager.cpp:1281
#5  0x08864fd5 in llvm::FunctionPassManager::run (this=0xbfc194a0,
F=@0xa621ed8) at PassManager.cpp:1226
#6  0x081fa409 in write_asm_to_file (Target=@0xa617e58, m=@0xa616e48,
out=@0xbfc198a8)
    at /home/tomas/ldc/gen/toobj.cpp:312


-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list