[LLVMbugs] [Bug 11691] New: llc assertion failure generating arm neon vst2 with pointer update

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Mon Jan 2 13:51:22 CST 2012


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

             Bug #: 11691
           Summary: llc assertion failure generating arm neon vst2 with
                    pointer update
           Product: new-bugs
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: andrew.b.adams at gmail.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


Created attachment 7828
  --> http://llvm.org/bugs/attachment.cgi?id=7828
bugpoint-reduced failure case

llc fails an assertion when generating the arm neon VST2 instruction when it
detects it can use the address-updating form:

llc: /data/scratch/omap4/llvm/include/llvm/CodeGen/MachineOperand.h:385:
int64_t llvm::MachineOperand::getImm() const: Assertion `isImm() && "Wrong
MachineOperand accessor"' failed.
Stack dump:
0.    Program arguments: llc bugpoint-reduced-simplified.bc 
1.    Running pass 'Function Pass Manager' on module
'bugpoint-reduced-simplified.bc'.
2.    Running pass 'If Converter' on function '@curved_inner'
Aborted


I believe this is the case because the assertion is no longer triggered if you
include this check in ARMISelLowering.cpp at line 7340

--- a/lib/Target/ARM/ARMISelLowering.cpp
+++ b/lib/Target/ARM/ARMISelLowering.cpp
@@ -7335,6 +7335,10 @@ static SDValue CombineBaseUpdate(SDNode *N,
     unsigned NumVecs = 0;
     if (isIntrinsic) {
       unsigned IntNo = cast<ConstantSDNode>(N->getOperand(1))->getZExtValue();
+
+      // AA: bail out for VST2 to avoid bug
+      if (IntNo == Intrinsic::arm_neon_vst2) continue;
+    
       switch (IntNo) {
       default: assert(0 && "unexpected intrinsic for Neon base update");
       case Intrinsic::arm_neon_vld1:     NewOpc = ARMISD::VLD1_UPD;

A bugpoint-simplified bc file is attached. Compile it with -march=arm
-mcpu=cortex-a9

-- 
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 LLVMbugs mailing list