[Bug middle-end/27743] [4.1/4.2 Regression] Wrong code for ((unsigned) ((a) 2)) 15
--- Comment #4 from rguenth at gcc dot gnu dot org 2006-05-25 12:40 --- Subject: Bug 27743 Author: rguenth Date: Thu May 25 12:39:52 2006 New Revision: 114112 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=114112 Log: 2006-05-25 Richard Guenther [EMAIL PROTECTED] PR middle-end/27743 * fold-const.c (fold_binary): Do not look at the stripped op0 for (a OP c1) OP c2 to a OP (c1+c2) shift optimization. * gcc.dg/torture/pr27743.c: New testcase. Added: trunk/gcc/testsuite/gcc.dg/torture/pr27743.c Modified: trunk/gcc/ChangeLog trunk/gcc/fold-const.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27743
[Bug middle-end/27743] [4.1/4.2 Regression] Wrong code for ((unsigned) ((a) 2)) 15
--- Comment #3 from rguenth at gcc dot gnu dot org 2006-05-24 09:44 --- I have a patch. -- rguenth at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |rguenth at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2006-05-23 14:17:09 |2006-05-24 09:44:37 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27743
[Bug middle-end/27743] [4.1/4.2 Regression] Wrong code for ((unsigned) ((a) 2)) 15
--- Comment #1 from rguenth at gcc dot gnu dot org 2006-05-23 14:17 --- Confirmed. -- rguenth at gcc dot gnu dot org changed: What|Removed |Added CC||rguenth at gcc dot gnu dot ||org Status|UNCONFIRMED |NEW Component|tree-optimization |middle-end Ever Confirmed|0 |1 GCC target triplet|sparc-sun-solaris2.8| Keywords||wrong-code Known to work||4.0.3 Last reconfirmed|-00-00 00:00:00 |2006-05-23 14:17:09 date|| Summary|Wrong code for ((unsigned) |[4.1/4.2 Regression] Wrong |((a) 2)) 15 |code for ((unsigned) ((a) ||2)) 15 Target Milestone|--- |4.1.2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27743
[Bug middle-end/27743] [4.1/4.2 Regression] Wrong code for ((unsigned) ((a) 2)) 15
--- Comment #2 from rguenth at gcc dot gnu dot org 2006-05-23 14:27 --- /* Turn (a OP c1) OP c2 into a OP (c1+c2). */ if (TREE_CODE (arg0) == code host_integerp (arg1, false) TREE_INT_CST_LOW (arg1) TYPE_PRECISION (type) host_integerp (TREE_OPERAND (arg0, 1), false) TREE_INT_CST_LOW (TREE_OPERAND (arg0, 1)) TYPE_PRECISION (type)) { this should read TREE_CODE (op0) == code. Or if (kind == tcc_comparison) { STRIP_SIGN_NOPS (arg0); STRIP_SIGN_NOPS (arg1); } else { STRIP_NOPS (arg0); STRIP_NOPS (arg1); } should use STRIP_SIGN_NOPS for arg0 and shifts. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27743