http://llvm.org/bugs/show_bug.cgi?id=11052
Summary: SCEV produces two objects for identical inputs
Product: libraries
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P
Component: Loop Optimizer
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected]
Created an attachment (id=7389)
--> (http://llvm.org/bugs/attachment.cgi?id=7389)
testcase
A unittest is attached, but the short story is that this:
SmallVector<const SCEV *, 4> Sum;
Sum.push_back(SE.getMulExpr(Arg1, Arg2));
Sum.push_back(SE.getMulExpr(Arg3, Arg2));
Sum.push_back(SE.getMulExpr(Arg1, Arg4));
const SCEV *LHS = SE.getAddExpr(Sum);
const SCEV *RHS = SE.getMulExpr(Arg1, Arg2);
RHS = SE.getAddExpr(RHS, SE.getMulExpr(Arg3, Arg2));
RHS = SE.getAddExpr(RHS, SE.getMulExpr(Arg1, Arg4));
produces two different SCEVs:
LHS: (((%1 + %3) * %0) + (%1 * %2))
RHS: (((%0 + %2) * %1) + (%0 * %3))
In particular note how everything is in the same order, all 3 MulExpr's are the
same inputs, and they're used in the same order.
--
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