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

           Summary: PBQP register allocator segfaults on null pointer
           Product: new-bugs
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


Created an attachment (id=5249)
 --> (http://llvm.org/bugs/attachment.cgi?id=5249)
Bitcode file containing a function on which the PBQP register allocator
segfaults

On the attached bitcode file (edge_draw.ll), the PBQP register allocator
segfaults on encountering a null pointer.

To reproduce, run: llc -regalloc=pbqp edge_draw.ll

The stack trace from GDB is:

#0  0x0000000000f31b9a in llvm::IndexListEntry::getIndex (this=0x0)
    at /raid0/gergo/svn_llvm/llvm/include/llvm/CodeGen/SlotIndexes.h:82
#1  0x0000000000f31df2 in llvm::SlotIndex::getIndex (this=0x1b2daa0)
    at /raid0/gergo/svn_llvm/llvm/include/llvm/CodeGen/SlotIndexes.h:146
#2  0x0000000000f31f5a in llvm::SlotIndex::operator<= (this=0x1b2daa0, other=
        {static PHI_BIT = 4, lie = {Value = 28464610}})
    at /raid0/gergo/svn_llvm/llvm/include/llvm/CodeGen/SlotIndexes.h:218
#3  0x0000000000ff5fb8 in llvm::LiveInterval::overlapsFrom (this=0x1b2bcc0, 
    oth...@0x1b2da80, StartPos=0x1b2daa0)
    at /raid0/gergo/svn_llvm/llvm/lib/CodeGen/LiveInterval.cpp:129
#4  0x0000000000f4ec4d in llvm::LiveInterval::overlaps (this=0x1b2bcc0, 
    oth...@0x1b2da80)
    at /raid0/gergo/svn_llvm/llvm/include/llvm/CodeGen/LiveInterval.h:468
#5  0x0000000000f4038b in constructPBQPProblem (this=0x1af2920)
    at /raid0/gergo/svn_llvm/llvm/lib/CodeGen/RegAllocPBQP.cpp:604
#6  0x0000000000f40c11 in runOnMachineFunction (this=0x1af2920, m...@0x1aca490)
    at /raid0/gergo/svn_llvm/llvm/lib/CodeGen/RegAllocPBQP.cpp:892
#7  0x0000000000ef14da in llvm::MachineFunctionPass::runOnFunction (
    this=0x1af2920, f...@0x1ac7b30)
    at /raid0/gergo/svn_llvm/llvm/lib/CodeGen/MachineFunctionPass.cpp:33
#8  0x00000000011e6ee1 in llvm::FPPassManager::runOnFunction (this=0x1ac4800, 
    f...@0x1ac7b30) at 
/raid0/gergo/svn_llvm/llvm/lib/VMCore/PassManager.cpp:1433
#9  0x00000000011e70b7 in llvm::FPPassManager::runOnModule (this=0x1ac4800, 
    m...@0x1ab6aa0) at 
/raid0/gergo/svn_llvm/llvm/lib/VMCore/PassManager.cpp:1453
#10 0x00000000011e6ba7 in llvm::MPPassManager::runOnModule (this=0x1ad41e0, 
    m...@0x1ab6aa0) at 
/raid0/gergo/svn_llvm/llvm/lib/VMCore/PassManager.cpp:1507
#11 0x00000000011e8343 in llvm::PassManagerImpl::run (this=0x1ac5890, 
    m...@0x1ab6aa0) at 
/raid0/gergo/svn_llvm/llvm/lib/VMCore/PassManager.cpp:1588
#12 0x00000000011e83a5 in llvm::PassManager::run (this=0x7fffffffe720, 
    m...@0x1ab6aa0) at 
/raid0/gergo/svn_llvm/llvm/lib/VMCore/PassManager.cpp:1631
#13 0x00000000009b06b0 in main (argc=3, argv=0x7fffffffe948)
    at /raid0/gergo/svn_llvm/llvm/tools/llc/llc.cpp:343

Apparently, some SlotIndex object does not have a valid index list entry.

The code is derived from the automotive-susan program in the Mibench benchmark
suite. Starting from susan.c from Mibench, the following commands were
performed:
clang -S -emit-llvm susan.c -o foo.ll
opt -mem2reg foo.ll -S -o foo_opt.ll
llvm-extract -func=edge_draw foo_opt.ll -o edge_draw.ll
llc -regalloc=pbqp edge_draw.ll

-- 
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.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to