[LLVMbugs] [Bug 12602] New: An assertion is triggered when function return <4 x i1>

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri Apr 20 07:57:05 PDT 2012


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

             Bug #: 12602
           Summary: An assertion is triggered when function return <4 x
                    i1>
           Product: libraries
           Version: 3.0
          Platform: PC
        OS/Version: other
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Backend: X86
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: wuye9036 at gmail.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


Created attachment 8413
  --> http://llvm.org/bugs/attachment.cgi?id=8413
LLVM 3.0 IR

Hi Guys,

If I write a function return <4 x i1>, an assertion was triggered.

(windows 7 x64, msvc 2010 sp1 x86 debug)

Assertion failed: !VT.isVector() && "getZeroExtendInReg should use the vector
el
ement type instead of " "the vector type!", file
D:\Programming\salvia\3rd_party
\llvm\lib\CodeGen\SelectionDAG\SelectionDAG.cpp, line 905

And call stacks are:

>	sasl_driver_d.dll!llvm::SelectionDAG::getZeroExtendInReg(llvm::SDValue Op={...}, llvm::DebugLoc DL={...}, llvm::EVT VT={...})  Line 905 + 0x2f bytes	C++
     sasl_driver_d.dll!`anonymous
namespace'::SelectionDAGLegalize::LegalizeOp(llvm::SDValue Op={...})  Line 1549
+ 0x30 bytes    C++
     sasl_driver_d.dll!`anonymous
namespace'::SelectionDAGLegalize::LegalizeDAG()  Line 210 + 0x26 bytes    C++
     sasl_driver_d.dll!llvm::SelectionDAG::Legalize()  Line 3961 + 0x24 bytes  
 C++
     sasl_driver_d.dll!llvm::SelectionDAGISel::CodeGenAndEmitDAG()  Line 557   
C++
    
sasl_driver_d.dll!llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::Instruction
const > Begin={...}, llvm::ilist_iterator<llvm::Instruction const > End={...},
bool & HadTailCall=false)  Line 422    C++
     sasl_driver_d.dll!llvm::SelectionDAGISel::SelectAllBasicBlocks(const
llvm::Function & Fn={...})  Line 992    C++
    
sasl_driver_d.dll!llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction
& mf={...})  Line 294    C++
     sasl_driver_d.dll!llvm::MachineFunctionPass::runOnFunction(llvm::Function
& F={...})  Line 33 + 0x13 bytes    C++
     sasl_driver_d.dll!llvm::FPPassManager::runOnFunction(llvm::Function &
F={...})  Line 1512 + 0x17 bytes    C++
     sasl_driver_d.dll!llvm::FunctionPassManagerImpl::run(llvm::Function &
F={...})  Line 1462 + 0x1b bytes    C++
     sasl_driver_d.dll!llvm::FunctionPassManager::run(llvm::Function & F={...})
 Line 1392    C++
     sasl_driver_d.dll!llvm::JIT::jitTheFunction(llvm::Function * F=0x03498568,
const llvm::MutexGuard & locked={...})  Line 640    C++
     sasl_driver_d.dll!llvm::JIT::runJITOnFunctionUnlocked(llvm::Function *
F=0x03499250, const llvm::MutexGuard & locked={...})  Line 633    C++
     sasl_driver_d.dll!llvm::JIT::getPointerToFunction(llvm::Function *
F=0x03499250)  Line 677    C++

Attachement is full ir.

If I changed %40 = call <4 x i1> @"Mbool4@@QBB@@QBB@@QBB@@QBB@@"(i1 %9, i1 %19,
i1 %29, i1 %39) and function signature to <3 x i1>, it works well.

The key codes are line 93 and line 46-49.
I think it's a general defect in x86.

Thanks.

-- 
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