[Bug tree-optimization/36038] [4.4 Regression] miscompiled loop in perlbmk for -Os
--- Comment #10 from jakub at gcc dot gnu dot org 2008-11-19 13:05 --- Subject: Bug 36038 Author: jakub Date: Wed Nov 19 13:03:43 2008 New Revision: 142000 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=142000 Log: PR tree-optimization/36038 * gcc.c-torture/compile/pr36038.c: Moved to... * gcc.c-torture/execute/pr36038.c: ... here. Added: trunk/gcc/testsuite/gcc.c-torture/execute/pr36038.c - copied unchanged from r141997, trunk/gcc/testsuite/gcc.c-torture/compile/pr36038.c Removed: trunk/gcc/testsuite/gcc.c-torture/compile/pr36038.c Modified: trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36038
[Bug tree-optimization/36038] [4.4 Regression] miscompiled loop in perlbmk for -Os
--- Comment #9 from pinskia at gcc dot gnu dot org 2008-11-18 23:47 --- (In reply to comment #7) trunk/gcc/testsuite/gcc.c-torture/compile/pr36038.c Isn't this really a run testcase and not just a compile one? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36038
[Bug tree-optimization/36038] [4.4 Regression] miscompiled loop in perlbmk for -Os
--- Comment #7 from jakub at gcc dot gnu dot org 2008-10-24 13:59 --- Subject: Bug 36038 Author: jakub Date: Fri Oct 24 13:57:43 2008 New Revision: 141343 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=141343 Log: PR tree-optimization/36038 * tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases add sizetype IV with initial value zero instead of pointer type. * gcc.c-torture/compile/pr36038.c: New test. Added: trunk/gcc/testsuite/gcc.c-torture/compile/pr36038.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-ssa-loop-ivopts.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36038
[Bug tree-optimization/36038] [4.4 Regression] miscompiled loop in perlbmk for -Os
--- Comment #8 from jakub at gcc dot gnu dot org 2008-10-24 14:04 --- Fixed. -- jakub at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36038
[Bug tree-optimization/36038] [4.4 Regression] miscompiled loop in perlbmk for -Os
--- Comment #5 from jakub at gcc dot gnu dot org 2008-10-20 13:45 --- Created an attachment (id=16516) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16516action=view) gcc44-pr36038.patch My bet is that adding a zero based alternative IV for a pointer is always a bug, the zero based IV will necessarily act as an offset to some other pointer (the original pointer). With this patch the ivopts dump looks much saner, the ivtmp is sizetype and so nothing is cast to and back from a pointer all the time, additionally vrp2 doesn't optimize it out and so the testcase succeeds. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36038
[Bug tree-optimization/36038] [4.4 Regression] miscompiled loop in perlbmk for -Os
--- Comment #6 from jakub at gcc dot gnu dot org 2008-10-20 23:15 --- Patch posted. -- jakub at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |jakub at gcc dot gnu dot org |dot org | URL||http://gcc.gnu.org/ml/gcc- ||patches/2008- ||10/msg00835.html Status|NEW |ASSIGNED Last reconfirmed|2008-04-25 09:24:16 |2008-10-20 23:15:42 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36038
[Bug tree-optimization/36038] [4.4 Regression] miscompiled loop in perlbmk for -Os
-- rguenth at gcc dot gnu dot org changed: What|Removed |Added Priority|P3 |P1 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36038
[Bug tree-optimization/36038] [4.4 Regression] miscompiled loop in perlbmk for -Os
--- Comment #4 from rguenth at gcc dot gnu dot org 2008-05-02 14:53 --- It looks sub-optimal. But we should try to figure out why and what is wrong. The optimality can be fixed with Index: tree-ssa-loop-ivopts.c === --- tree-ssa-loop-ivopts.c (revision 134885) +++ tree-ssa-loop-ivopts.c (working copy) @@ -4716,7 +4716,8 @@ try_add_cand_for (struct ivopts_data *da { cand = iv_cand (data, i); - if (cand-iv-base_object != NULL_TREE) + if (cand-iv-base_object != NULL_TREE + || POINTER_TYPE_P (TREE_TYPE (cand-iv-base))) continue; if (iv_ca_cand_used_p (ivs, cand)) or similar. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36038
[Bug tree-optimization/36038] [4.4 Regression] miscompiled loop in perlbmk for -Os
--- Comment #2 from rguenth at gcc dot gnu dot org 2008-04-25 09:24 --- We seem to use some interesting pointer induction variable for the exit test... -fno-ivopts fixes it I suppose. The loop in question ends up being expanded from bb 3: # VUSE SMT.26_37 D.1307_34 = MEM[base: stack_base.2_4, offset: 40]; # SMT.26_42 = VDEF SMT.26_37 MEM[base: sp_31] = D.1307_34; ivtmp.36_16 = ivtmp.36_25 + -8; bb 4: # ivtmp.36_25 = PHI 0B(2), ivtmp.36_16(3) # SMT.26_37 = PHI SMT.26_41(D)(2), SMT.26_42(3) D.1372_15 = D.1349_10 + 6; D.1373_17 = (long unsigned int) D.1372_15; D.1374_18 = D.1373_17 * 0x0fff8; D.1375_19 = (long long int *) D.1374_18; if (ivtmp.36_25 != D.1375_19) goto bb 3; else goto bb 5; and this testcase btw also fails on x86_64. -- rguenth at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 GCC target triplet|powerpc64-unknown-linux-gnu | Last reconfirmed|-00-00 00:00:00 |2008-04-25 09:24:16 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36038
[Bug tree-optimization/36038] [4.4 Regression] miscompiled loop in perlbmk for -Os
--- Comment #3 from pinskia at gcc dot gnu dot org 2008-04-25 09:51 --- D.1374_18 = D.1373_17 * 0x0fff8; D.1375_19 = (long long int *) D.1374_18; This looks wrong. So does this: # ivtmp.36_25 = PHI 0B(2), ivtmp.36_16(3) Both of those really should be in unsigned long long and not a pointer type. Thanks, Andrew Pinski -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36038
[Bug tree-optimization/36038] [4.4 Regression] miscompiled loop in perlbmk for -Os
--- Comment #1 from janis at gcc dot gnu dot org 2008-04-24 17:57 --- Created an attachment (id=15526) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15526action=view) test case This testcase fails with current trunk on powerpc64-linux: elm3b187% /opt/gcc-nightly/trunk/bin/gcc -Os -m64 36038.c a.out expected: 0 1 2 3 4 4 5 6 7 9 got: 0 1 2 3 4 5 6 7 7 9 Aborted -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36038