[Bug tree-optimization/36038] [4.4 Regression] miscompiled loop in perlbmk for -Os

2008-11-19 Thread jakub at gcc dot gnu dot org


--- 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

2008-11-18 Thread pinskia at gcc dot gnu dot org


--- 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

2008-10-24 Thread jakub at gcc dot gnu dot org


--- 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

2008-10-24 Thread jakub at gcc dot gnu dot org


--- 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

2008-10-20 Thread jakub at gcc dot gnu dot org


--- 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

2008-10-20 Thread jakub at gcc dot gnu dot org


--- 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

2008-05-16 Thread rguenth at gcc dot gnu dot org


-- 

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

2008-05-02 Thread rguenth at gcc dot gnu dot org


--- 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

2008-04-25 Thread rguenth at gcc dot gnu dot org


--- 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

2008-04-25 Thread pinskia at gcc dot gnu dot org


--- 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

2008-04-24 Thread janis at gcc dot gnu dot org


--- 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