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

           Summary: scalarrepl-ssa can produce invalid code for zero sized
                    array members
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Scalar Optimizations
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


Running opt -scalarrepl-ssa on

-----------------------------
arget datalayout = "e-p:32:32-f64:32:64-i64:32:64-f80:32:32-n8:16:32"
%foobar = type { i32, [0 x i8] }

define void @f(%foobar %arg) {
  %tmp = alloca %foobar
  store %foobar %arg, %foobar* %tmp
  %tmp113 = bitcast %foobar* %tmp to i8*
  ret void
}
---------------------------

Will produce

-------------------------------
target datalayout = "e-p:32:32-f64:32:64-i64:32:64-f80:32:32-n8:16:32"

%foobar = type { i32, [0 x i8] }

define void @f(%foobar %arg) {
  %arg1 = extractvalue %foobar %arg, 0
  %arg2 = extractvalue %foobar %arg, 1
  ret void
}
----------------------------------

llc is happy with the first code, but crashes on the second on
SelectionDAGBuilder::visitExtractValue when it tries to access the first
element of a zero sized ValValueVTs.

We have two options. One is declaring zero sized array values illegal and
fixing scalarrepl to not produce them and the verifier to check for them.
Another one is making CodeGen handle them correctly.

I am don't see much value is having zero size array values, so I am reporting
this on scalarrrepl. Let me know if you think we should allow them and fix
CodeGen instead.

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