The SCCP pass was failing an assertion that I traced back to SCCPSolver::visitExtractValueInst. getStructValueState was used on the aggregate operand even if it had no structure type. I added a check to use getStructValueState for structs and getValueState for other operands. This behavior was introduced in r85793. Please note that I'm not sure whether my changes correctly address this problem. In case they don't, I'd be glad to learn why in order to get a better understanding of llvm. :-) Please find attached a patch. Best, Stephan -------------- next part -------------- A non-text attachment was scrubbed... Name: sccp-fix.patch Type: application/octet-stream Size: 837 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20091110/592c3056/attachment.obj>
On Nov 10, 2009, at 6:58 AM, Stephan Reiter wrote:> The SCCP pass was failing an assertion that I traced back to > SCCPSolver::visitExtractValueInst. getStructValueState was used on the > aggregate operand even if it had no structure type. I added a check to > use getStructValueState for structs and getValueState for other > operands. > > This behavior was introduced in r85793. Please note that I'm not sure > whether my changes correctly address this problem. In case they don't, > I'd be glad to learn why in order to get a better understanding of > llvm. :-)Thanks, I applied a variant of your patch with a testcase here: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20091109/090817.html You're seeing this on extractvalue from a array, right? -Chris