[LLVMbugs] [Bug 12985] New: Reassociate drops NSW/NUW flags
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Tue May 29 14:04:32 PDT 2012
http://llvm.org/bugs/show_bug.cgi?id=12985
Bug #: 12985
Summary: Reassociate drops NSW/NUW flags
Product: new-bugs
Version: trunk
Platform: PC
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P
Component: new bugs
AssignedTo: unassignedbugs at nondot.org
ReportedBy: atrick at apple.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
Created attachment 8657
--> http://llvm.org/bugs/attachment.cgi?id=8657
rtest.ll
The Reassociate pass unnecessarily drops NSW/NUW flags during canonicalization.
If we really want to drop the flags, we should probably do it after indvars
where we eliminate sign/zero extension.
I noticed three situations where Reassociation drops flags in a single test
case:
1. shl nsw x, c => mul x, 2**c
2. sub nsw x, y => add x, (sub 0, y)
3. add nsw (add nsw x, c1), c2 ; where c1 and c2 have opposite signs.
Attached unit tests:
rtest.ll
rtest2.ll
rtest.ll does some legitimate reassociation in order to fold constants
(exhibits case #3).
rtest2.ll has an additional use of %sub, so doesn't do any actual reassociation
or folding, and is closer to the real test case, but it still drops flags
everywhere.
rtest2.ll would probably be easier to fix (no case #3), but it would be nice to
handle rtest.ll too. It would be a nice property to preserve the flags if
possible regardless of the number of uses
--
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