[LLVMbugs] [Bug 9158] New: Assertion failed in codegen

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sun Feb 6 11:34:10 PST 2011


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

           Summary: Assertion failed in codegen
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Common Code Generator Code
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: nadav.rotem at intel.com
                CC: llvmbugs at cs.uiuc.edu


; ModuleID = 'bugpoint-reduced-simplified.bc'
target triple = "x86_64-unknown-linux-gnu"

define fastcc void @m_387() nounwind {
entry:
  %0 = load <4 x float>* undef
  %1 = load <4 x float>* null
  %merge68 = select <4 x i1> undef, <4 x float> %0, <4 x float> %1
  store <4 x float> %merge68, <4 x float> addrspace(1)* undef
  ret void
}


The codegen has the following optimization: If we select between the result of
two loads, then we can select between their pointers. However, this fails in
the case of vector select (where the selector is a vector). 

Index: DAGCombiner.cpp
===================================================================
--- DAGCombiner.cpp    (revision 2788)
+++ DAGCombiner.cpp (working copy)
@@ -6581,6 +6581,9 @@
bool DAGCombiner::SimplifySelectOps(SDNode *TheSelect, SDValue LHS,
                                     SDValue RHS) {

+  // Cannot simplify select with vector condition
+  if (TheSelect->getOperand(0).getValueType().isVector()) return false;
+
   // If this is a select from two identical things, try to pull the operation
   // through the select.
   if (LHS.getOpcode() == RHS.getOpcode() && LHS.hasOneUse() &&
RHS.hasOneUse()){

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