public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/34244]  New: [4.3 Regression] VRP/SCEV miscompiles Firefox
@ 2007-11-27 11:12 rguenth at gcc dot gnu dot org
  2007-11-27 11:30 ` [Bug tree-optimization/34244] " rguenth at gcc dot gnu dot org
                   ` (16 more replies)
  0 siblings, 17 replies; 18+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-11-27 11:12 UTC (permalink / raw)
  To: gcc-bugs

int* GetParent(void);
int* FindCommonAncestor(int *aNode1, int *aNode2)
{
  if (aNode1 && aNode2) {
    int offset = 0; 
    int *anc1 = aNode1;
    for (;;) {
      ++offset;
      int * parent = GetParent();
      if (!parent)
        break;
      anc1 = parent;
    }
    int *anc2 = aNode2;
    for (;;) { 
      --offset;
      int * parent = GetParent();
      if (!parent)
        break;
      anc2 = parent;
    }
    if (anc1 == anc2) {
      anc1 = aNode1;
      anc2 = aNode2;
      while (offset > 0) {
        anc1 = GetParent();
        --offset;
      }
      while (offset < 0) {
        anc2 = GetParent();
        ++offset;
      }
      while (anc1 != anc2) {
        anc1 = GetParent();
        anc2 = GetParent();
      }
      return anc1;
    }
  }
  return 0;
}

Folding predicate offset_5 < 0 to 0
Folded statement: if (offset_5 < 0)
            into: if (0)

that is, the second last loop is never executed according to VRP/SCEV because
the exit value of the third last loop

<bb 26>:
  offset_48 = ASSERT_EXPR <offset_4, offset_4 <= 0>;

is adjusted to [0, 0] by SCEV:

Visiting statement:
offset_48 = ASSERT_EXPR <offset_4, offset_4 <= 0>;

(analyze_scalar_evolution
  (loop_nb = 0)
  (scalar = offset_48)
(get_scalar_evolution
  (scalar = offset_48)
  (scalar_evolution = ))
(analyze_scalar_evolution
  (loop_nb = 0)
  (scalar = offset_4)
(get_scalar_evolution
  (scalar = offset_4)
  (scalar_evolution = ))
(analyze_initial_condition
  (loop_phi_node =
offset_4 = PHI <offset_37(10), offset_32(9)>)
  (init_cond = offset_37))
(analyze_evolution_in_loop
  (loop_phi_node = offset_4 = PHI <offset_37(10), offset_32(9)>)
(add_to_evolution
  (loop_nb = 3)
  (chrec_before = offset_37)
  (to_add = -1)
  (res = {offset_37, +, -1}_3))
  (evolution_function = {offset_37, +, -1}_3))
(set_scalar_evolution
  (scalar = offset_4)
  (scalar_evolution = {offset_37, +, -1}_3))
(number_of_iterations_in_loop
(analyze_scalar_evolution
  (loop_nb = 3)
  (scalar = offset_4)
(get_scalar_evolution
  (scalar = offset_4)
  (scalar_evolution = {offset_37, +, -1}_3))
(set_scalar_evolution
  (scalar = offset_4)
  (scalar_evolution = {offset_37, +, -1}_3))
)
(analyze_scalar_evolution
  (loop_nb = 3)
  (scalar = 0)
(get_scalar_evolution
  (scalar = 0)
  (scalar_evolution = 0))
)
Analyzing # of iterations of loop 3
  exit condition 0 < [offset_46, + , -1](no_overflow)
  bounds on difference of bases: -2147483648 ... 2147483647
  result:
    # of iterations (unsigned int) offset_46, bounded by 2147483647
  (set_nb_iterations_in_loop = (unsigned int) offset_46))
(chrec_apply 
  (varying_loop = 3
) 
  (chrec = {offset_37, +, -1}_3)
  (x = offset_46)
  (res = offset_37 - offset_46))
(analyze_scalar_evolution
  (loop_nb = 0)
  (scalar = offset_37)
(get_scalar_evolution 
  (scalar = offset_37)
  (scalar_evolution = ))
(analyze_scalar_evolution
  (loop_nb = 0)
  (scalar = offset_46)
(get_scalar_evolution 
  (scalar = offset_46)
  (scalar_evolution = ))
(analyze_scalar_evolution
  (loop_nb = 0)
  (scalar = offset_24)
(get_scalar_evolution 
  (scalar = offset_24)
  (scalar_evolution = {offset_40 + -1, +, -1}_2))
(number_of_iterations_in_loop
(analyze_scalar_evolution
  (loop_nb = 2)
  (scalar = parent_25)
(get_scalar_evolution 
  (scalar = parent_25)
  (scalar_evolution = parent_25))
(set_scalar_evolution 
  (scalar = parent_25)
  (scalar_evolution = parent_25))
)
(analyze_scalar_evolution
  (loop_nb = 2)
  (scalar = parent_25)
(get_scalar_evolution 
  (scalar = parent_25)
  (scalar_evolution = parent_25))
(set_scalar_evolution 
  (scalar = parent_25)
  (scalar_evolution = parent_25))
) 
  (set_nb_iterations_in_loop = scev_not_known))
)
(set_scalar_evolution 
  (scalar = offset_46)
  (scalar_evolution = offset_24))
)
(set_scalar_evolution 
  (scalar = offset_37)
  (scalar_evolution = offset_24))
)
(analyze_scalar_evolution
  (loop_nb = 0)
  (scalar = offset_46)
(get_scalar_evolution
  (scalar = offset_46)
  (scalar_evolution = offset_24))
(set_scalar_evolution
  (scalar = offset_46)
  (scalar_evolution = offset_24))
)
)
(set_scalar_evolution
  (scalar = offset_48)
  (scalar_evolution = 0))
)
(instantiate_parameters
  (loop_nb = 0)
  (chrec = 0)
  (res = 0))
Found new range for offset_48: [0, 0]

where the particular error looks like this:

Analyzing # of iterations of loop 3
  exit condition 0 < [offset_46, + , -1](no_overflow)
  bounds on difference of bases: -2147483648 ... 2147483647
  result:
    # of iterations (unsigned int) offset_46, bounded by 2147483647
  (set_nb_iterations_in_loop = (unsigned int) offset_46))

as it may be zero, in case offset_46 is <= 0.

Sebastian, Zdenek - any idea what goes wrong here?


-- 
           Summary: [4.3 Regression] VRP/SCEV miscompiles Firefox
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rguenth at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
@ 2007-11-27 11:30 ` rguenth at gcc dot gnu dot org
  2007-11-27 12:04 ` pinskia at gcc dot gnu dot org
                   ` (15 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-11-27 11:30 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from rguenth at gcc dot gnu dot org  2007-11-27 11:30 -------
Runtime testcase:

int __attribute__((noinline)) GetParent(void)
{
  static int count = 0;
  count++;
  switch (count)
    {
    case 1:
    case 3:
    case 4:
        return 1;
    default:
        return 0;
    }
}
int __attribute__((noinline)) FindCommonAncestor(int aNode1, int aNode2)
{
  if (aNode1 && aNode2) {
    int offset = 0;
    int anc1 = aNode1;
    for (;;) {
      ++offset;
      int  parent = GetParent();
      if (!parent)
        break;
      anc1 = parent;
    }
    int anc2 = aNode2;
    for (;;) {
      --offset;
      int  parent = GetParent();
      if (!parent)
        break;
      anc2 = parent;
    }
    if (anc1 == anc2) {
      anc1 = aNode1;
      anc2 = aNode2;
      while (offset > 0) {
        anc1 = GetParent();
        --offset;
      }
      while (offset < 0) {
        anc2 = GetParent();
        ++offset;
      }
      while (anc1 != anc2) {
        anc1 = GetParent();
        anc2 = GetParent();
      } 
      return anc1;
    }
  }
  return 0;
}
extern void abort (void);
int main()
{
  if (FindCommonAncestor (1, 1) != 0)
    abort ();
  return 0;
}


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
  2007-11-27 11:30 ` [Bug tree-optimization/34244] " rguenth at gcc dot gnu dot org
@ 2007-11-27 12:04 ` pinskia at gcc dot gnu dot org
  2007-11-27 13:57 ` rakdver at gcc dot gnu dot org
                   ` (14 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2007-11-27 12:04 UTC (permalink / raw)
  To: gcc-bugs



-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pinskia at gcc dot gnu dot
                   |                            |org
   Target Milestone|---                         |4.3.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
  2007-11-27 11:30 ` [Bug tree-optimization/34244] " rguenth at gcc dot gnu dot org
  2007-11-27 12:04 ` pinskia at gcc dot gnu dot org
@ 2007-11-27 13:57 ` rakdver at gcc dot gnu dot org
  2007-11-27 14:04 ` rguenther at suse dot de
                   ` (13 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rakdver at gcc dot gnu dot org @ 2007-11-27 13:57 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from rakdver at gcc dot gnu dot org  2007-11-27 13:57 -------
I will have a look.  What target is this on, and what flags are used for
compilation?


-- 

rakdver at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |rakdver at gcc dot gnu dot
                   |dot org                     |org
             Status|UNCONFIRMED                 |ASSIGNED
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2007-11-27 13:57:41
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2007-11-27 13:57 ` rakdver at gcc dot gnu dot org
@ 2007-11-27 14:04 ` rguenther at suse dot de
  2007-11-27 16:48 ` rakdver at gcc dot gnu dot org
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenther at suse dot de @ 2007-11-27 14:04 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from rguenther at suse dot de  2007-11-27 14:04 -------
Subject: Re:  [4.3 Regression] VRP/SCEV miscompiles
 Firefox

On Tue, 27 Nov 2007, rakdver at gcc dot gnu dot org wrote:

> ------- Comment #2 from rakdver at gcc dot gnu dot org  2007-11-27 13:57 -------
> I will have a look.  What target is this on, and what flags are used for
> compilation?

It fails independent of the target (x86_64 and i686 for me), -O[123s]
with -ftree-vrp enabled makes it fail.

Richard.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2007-11-27 14:04 ` rguenther at suse dot de
@ 2007-11-27 16:48 ` rakdver at gcc dot gnu dot org
  2007-11-27 17:00 ` rakdver at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rakdver at gcc dot gnu dot org @ 2007-11-27 16:48 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from rakdver at gcc dot gnu dot org  2007-11-27 16:48 -------
> as it may be zero, in case offset_46 is <= 0.
> 
> Sebastian, Zdenek - any idea what goes wrong here?

# of iteration analysis records an assumption that offset_46 >= 0.  However,
this is simplified to true, as the value range of offset_46 is set to [0,0] by
vrp (which seems to be wrong); so the problem is probably somewhere else in
vrp.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
                   ` (4 preceding siblings ...)
  2007-11-27 16:48 ` rakdver at gcc dot gnu dot org
@ 2007-11-27 17:00 ` rakdver at gcc dot gnu dot org
  2007-11-27 22:21 ` mmitchel at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rakdver at gcc dot gnu dot org @ 2007-11-27 17:00 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from rakdver at gcc dot gnu dot org  2007-11-27 17:00 -------
> # of iteration analysis records an assumption that offset_46 >= 0.  However,
> this is simplified to true, as the value range of offset_46 is set to [0,0] by
> vrp (which seems to be wrong); so the problem is probably somewhere else in
> vrp.

So the problem is the following:  we have a code like

if (something)
  offset = 100;
else
  offset = -100;

while (offset > 0)
  offset--;

if (offset == 0)
  launch_nuclear_rockets ();

VRP starts simulating the code, first executing the true branch of the if
(something) condition, getting offset = 100.  It then proceeds with the loop,
determining that number of iterations is offset (since we just now believe that
offset==100, this is correct, without any assumptions), thus the final value of
offset is 0 and the nuclear war always starts.

Later, VRP evaluates the false branch of the if (something) condition, setting
the value range of offset to [-100,100], and proceeds to re-evaluate the
effects of the loop.  However, scev caches the number of iterations of the
loop, so it is not re-evaluated, and we keep believing that the number of
iterations is always offset.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
                   ` (5 preceding siblings ...)
  2007-11-27 17:00 ` rakdver at gcc dot gnu dot org
@ 2007-11-27 22:21 ` mmitchel at gcc dot gnu dot org
  2007-11-28 15:47 ` rguenth at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2007-11-27 22:21 UTC (permalink / raw)
  To: gcc-bugs



-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P1


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
                   ` (6 preceding siblings ...)
  2007-11-27 22:21 ` mmitchel at gcc dot gnu dot org
@ 2007-11-28 15:47 ` rguenth at gcc dot gnu dot org
  2007-11-28 16:05 ` rakdver at kam dot mff dot cuni dot cz
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-11-28 15:47 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from rguenth at gcc dot gnu dot org  2007-11-28 15:47 -------
We could clear the SCEV cache for an SSA_NAME we set a new value range
(in set_value_range and set_value_range_to_varying), but I
see that SCEV also caches loop->nb_iterations which we probably would need to
clear unconditionally (for all loops).


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
                   ` (7 preceding siblings ...)
  2007-11-28 15:47 ` rguenth at gcc dot gnu dot org
@ 2007-11-28 16:05 ` rakdver at kam dot mff dot cuni dot cz
  2007-11-28 16:13 ` rguenther at suse dot de
                   ` (7 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rakdver at kam dot mff dot cuni dot cz @ 2007-11-28 16:05 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from rakdver at kam dot mff dot cuni dot cz  2007-11-28 16:05 -------
Subject: Re:  [4.3 Regression] VRP/SCEV miscompiles Firefox

> ------- Comment #6 from rguenth at gcc dot gnu dot org  2007-11-28 15:47 -------
> We could clear the SCEV cache for an SSA_NAME we set a new value range
> (in set_value_range and set_value_range_to_varying), but I
> see that SCEV also caches loop->nb_iterations which we probably would need to
> clear unconditionally (for all loops).

yes, the simplest solution is to call scev_reset somewhere (either in
set_value_range, or in adjust_range_with_scev).  However, I fear the
compile time impact would be too large (# of iterations analysis is
fairly time consuming, and not caching the results used to cause
us to spend 10% or more in it).

More feasible solution seems to be to determine the number of iterations
for all loops before the start of VRP, and to remember the values.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
                   ` (8 preceding siblings ...)
  2007-11-28 16:05 ` rakdver at kam dot mff dot cuni dot cz
@ 2007-11-28 16:13 ` rguenther at suse dot de
  2007-11-29  4:29 ` rakdver at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenther at suse dot de @ 2007-11-28 16:13 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from rguenther at suse dot de  2007-11-28 16:13 -------
Subject: Re:  [4.3 Regression] VRP/SCEV miscompiles
 Firefox

On Wed, 28 Nov 2007, rakdver at kam dot mff dot cuni dot cz wrote:

> > ------- Comment #6 from rguenth at gcc dot gnu dot org  2007-11-28 15:47 -------
> > We could clear the SCEV cache for an SSA_NAME we set a new value range
> > (in set_value_range and set_value_range_to_varying), but I
> > see that SCEV also caches loop->nb_iterations which we probably would need to
> > clear unconditionally (for all loops).
> 
> yes, the simplest solution is to call scev_reset somewhere (either in
> set_value_range, or in adjust_range_with_scev).  However, I fear the
> compile time impact would be too large (# of iterations analysis is
> fairly time consuming, and not caching the results used to cause
> us to spend 10% or more in it).
> 
> More feasible solution seems to be to determine the number of iterations
> for all loops before the start of VRP, and to remember the values.

Or not use tree_expr_nonnegative_p from inside tree-ssa-loop-niter.c
which is where the bad feedback comes from.  But yes, computing the
number of iterations in advance should fix this as well and is probably
best.

Richard.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
                   ` (9 preceding siblings ...)
  2007-11-28 16:13 ` rguenther at suse dot de
@ 2007-11-29  4:29 ` rakdver at gcc dot gnu dot org
  2007-11-30  0:32 ` rakdver at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rakdver at gcc dot gnu dot org @ 2007-11-29  4:29 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from rakdver at gcc dot gnu dot org  2007-11-29 04:29 -------
Patch: http://gcc.gnu.org/ml/gcc-patches/2007-11/msg01607.html


-- 

rakdver at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                URL|                            |http://gcc.gnu.org/ml/gcc-
                   |                            |patches/2007-
                   |                            |11/msg01607.html


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
                   ` (10 preceding siblings ...)
  2007-11-29  4:29 ` rakdver at gcc dot gnu dot org
@ 2007-11-30  0:32 ` rakdver at gcc dot gnu dot org
  2007-11-30  7:20 ` jakub at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rakdver at gcc dot gnu dot org @ 2007-11-30  0:32 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from rakdver at gcc dot gnu dot org  2007-11-30 00:32 -------
Subject: Bug 34244

Author: rakdver
Date: Fri Nov 30 00:32:04 2007
New Revision: 130527

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=130527
Log:
        PR tree-optimization/34244
        * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
        (record_numbers_of_iterations): New function.
        (execute_vrp): Cache the numbers of iterations of loops.
        * tree-scalar-evolution.c (scev_reset_except_niters):
        New function.
        (scev_reset): Use scev_reset_except_niters.
        * tree-scalar-evolution.h (scev_reset_except_niters): Declare.

        * gcc.dg/tree-ssa/pr34244.c: New test.


Added:
    trunk/gcc/testsuite/gcc.dg/tree-ssa/pr34244.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-scalar-evolution.c
    trunk/gcc/tree-scalar-evolution.h
    trunk/gcc/tree-vrp.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
                   ` (11 preceding siblings ...)
  2007-11-30  0:32 ` rakdver at gcc dot gnu dot org
@ 2007-11-30  7:20 ` jakub at gcc dot gnu dot org
  2007-11-30  8:56 ` hjl at lucon dot org
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: jakub at gcc dot gnu dot org @ 2007-11-30  7:20 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from jakub at gcc dot gnu dot org  2007-11-30 07:20 -------
Fixed, thanks.


-- 

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


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
                   ` (12 preceding siblings ...)
  2007-11-30  7:20 ` jakub at gcc dot gnu dot org
@ 2007-11-30  8:56 ` hjl at lucon dot org
  2007-11-30 13:24 ` jakub at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: hjl at lucon dot org @ 2007-11-30  8:56 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from hjl at lucon dot org  2007-11-30 08:56 -------
gcc.dg/tree-ssa/pr34244.c in

http://gcc.gnu.org/viewcvs?view=rev&revision=130527

has duplicated content.


-- 

hjl at lucon dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|FIXED                       |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
                   ` (13 preceding siblings ...)
  2007-11-30  8:56 ` hjl at lucon dot org
@ 2007-11-30 13:24 ` jakub at gcc dot gnu dot org
  2008-05-31 13:02 ` rguenth at gcc dot gnu dot org
  2008-06-06 20:08 ` rguenth at gcc dot gnu dot org
  16 siblings, 0 replies; 18+ messages in thread
From: jakub at gcc dot gnu dot org @ 2007-11-30 13:24 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from jakub at gcc dot gnu dot org  2007-11-30 13:24 -------
Zdenek fixed that.


-- 

jakub at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
         Resolution|                            |FIXED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
                   ` (14 preceding siblings ...)
  2007-11-30 13:24 ` jakub at gcc dot gnu dot org
@ 2008-05-31 13:02 ` rguenth at gcc dot gnu dot org
  2008-06-06 20:08 ` rguenth at gcc dot gnu dot org
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2008-05-31 13:02 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from rguenth at gcc dot gnu dot org  2008-05-31 13:01 -------
Subject: Bug 34244

Author: rguenth
Date: Sat May 31 13:01:10 2008
New Revision: 136237

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=136237
Log:
2008-05-31  Richard Guenther  <rguenther@suse.de>

        PR tree-optimization/34244
        * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
        (tree_expr_nonzero_warnv_p): Likewise.
        * tree-vrp.c (vrp_expr_computes_nonnegative): Call
        ssa_name_nonnegative_p.
        (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
        (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
        not tree_expr_nonzero_warnv_p.

        PR tree-optimization/36262
        Revert
        2007-11-29  Zdenek Dvorak  <ook@ucw.cz>

        PR tree-optimization/34244
        * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
        (record_numbers_of_iterations): New function.
        (execute_vrp): Cache the numbers of iterations of loops.
        * tree-scalar-evolution.c (scev_reset_except_niters):
        New function.
        (scev_reset): Use scev_reset_except_niters.
        * tree-scalar-evolution.h (scev_reset_except_niters): Declare.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/fold-const.c
    trunk/gcc/tree-scalar-evolution.c
    trunk/gcc/tree-scalar-evolution.h
    trunk/gcc/tree-vrp.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/34244] [4.3 Regression] VRP/SCEV miscompiles Firefox
  2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
                   ` (15 preceding siblings ...)
  2008-05-31 13:02 ` rguenth at gcc dot gnu dot org
@ 2008-06-06 20:08 ` rguenth at gcc dot gnu dot org
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2008-06-06 20:08 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from rguenth at gcc dot gnu dot org  2008-06-06 20:07 -------
Subject: Bug 34244

Author: rguenth
Date: Fri Jun  6 20:06:40 2008
New Revision: 136501

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=136501
Log:
2008-06-06  Richard Guenther  <rguenther@suse.de>

        PR tree-optimization/34244
        * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
        (tree_expr_nonzero_warnv_p): Likewise.
        * tree-vrp.c (vrp_expr_computes_nonnegative): Call
        ssa_name_nonnegative_p.
        (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
        (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
        not tree_expr_nonzero_warnv_p.

        PR tree-optimization/36262
        Revert
        2007-11-29  Zdenek Dvorak  <ook@ucw.cz>

        PR tree-optimization/34244
        * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
        (record_numbers_of_iterations): New function.
        (execute_vrp): Cache the numbers of iterations of loops.
        * tree-scalar-evolution.c (scev_reset_except_niters):
        New function.
        (scev_reset): Use scev_reset_except_niters.
        * tree-scalar-evolution.h (scev_reset_except_niters): Declare.

Modified:
    branches/gcc-4_3-branch/gcc/ChangeLog
    branches/gcc-4_3-branch/gcc/fold-const.c
    branches/gcc-4_3-branch/gcc/tree-scalar-evolution.c
    branches/gcc-4_3-branch/gcc/tree-scalar-evolution.h
    branches/gcc-4_3-branch/gcc/tree-vrp.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34244


^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2008-06-06 20:08 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-11-27 11:12 [Bug tree-optimization/34244] New: [4.3 Regression] VRP/SCEV miscompiles Firefox rguenth at gcc dot gnu dot org
2007-11-27 11:30 ` [Bug tree-optimization/34244] " rguenth at gcc dot gnu dot org
2007-11-27 12:04 ` pinskia at gcc dot gnu dot org
2007-11-27 13:57 ` rakdver at gcc dot gnu dot org
2007-11-27 14:04 ` rguenther at suse dot de
2007-11-27 16:48 ` rakdver at gcc dot gnu dot org
2007-11-27 17:00 ` rakdver at gcc dot gnu dot org
2007-11-27 22:21 ` mmitchel at gcc dot gnu dot org
2007-11-28 15:47 ` rguenth at gcc dot gnu dot org
2007-11-28 16:05 ` rakdver at kam dot mff dot cuni dot cz
2007-11-28 16:13 ` rguenther at suse dot de
2007-11-29  4:29 ` rakdver at gcc dot gnu dot org
2007-11-30  0:32 ` rakdver at gcc dot gnu dot org
2007-11-30  7:20 ` jakub at gcc dot gnu dot org
2007-11-30  8:56 ` hjl at lucon dot org
2007-11-30 13:24 ` jakub at gcc dot gnu dot org
2008-05-31 13:02 ` rguenth at gcc dot gnu dot org
2008-06-06 20:08 ` rguenth at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).