[LLVMbugs] [Bug 11052] New: SCEV produces two objects for identical inputs

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sun Oct 2 16:04:14 PDT 2011


           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: unassignedbugs at nondot.org
        ReportedBy: nicholas at mxc.ca
                CC: llvmbugs at cs.uiuc.edu

Created an attachment (id=7389)
 --> (http://llvm.org/bugs/attachment.cgi?id=7389)

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.

More information about the llvm-bugs mailing list