public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/23391] New: [4.1 regression] Tree checking failure due to scev
@ 2005-08-14 23:59 steven at gcc dot gnu dot org
  2005-08-15  0:01 ` [Bug tree-optimization/23391] " pinskia at gcc dot gnu dot org
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-08-14 23:59 UTC (permalink / raw)
  To: gcc-bugs

Test case: 
========================================== 
void 
foo (int N) 
{ 
  int C; 
  double R; 
 
  R = 0.0; 
  do 
    { 
      R += 0.001; 
      C = (int) (R * N); 
      if (-R * N <= R * N) 
        { 
          C++; 
        } 
    } 
  while (C < 0); 
 
  return; 
} 
========================================== 
 
$ ./cc1 -fno-unit-at-a-time -O1 -ffast-math t.c 
 foo 
t.c: In function 'foo': 
t.c:3: internal compiler error: tree check: expected real_cst, have 
integer_cst in const_binop, at fold-const.c:1512 
 
The test case comes from SPEC twolf.  The problem appeared after this patch 
was committed: http://gcc.gnu.org/ml/gcc-patches/2005-08/msg00801.html

-- 
           Summary: [4.1 regression] Tree checking failure due to scev
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P2
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: steven at gcc dot gnu dot org
                CC: gcc-bugs at gcc dot gnu dot org,spop at gcc dot gnu dot
                    org


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


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

* [Bug tree-optimization/23391] [4.1 regression] Tree checking failure due to scev
  2005-08-14 23:59 [Bug middle-end/23391] New: [4.1 regression] Tree checking failure due to scev steven at gcc dot gnu dot org
@ 2005-08-15  0:01 ` pinskia at gcc dot gnu dot org
  2005-08-15  0:06 ` steven at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-08-15  0:01 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-15 00:01 -------
Confirmed, only -O1 is required to reproduce this.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
          Component|middle-end                  |tree-optimization
     Ever Confirmed|                            |1
   Last reconfirmed|0000-00-00 00:00:00         |2005-08-15 00:01:26
               date|                            |
   Target Milestone|---                         |4.1.0


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


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

* [Bug tree-optimization/23391] [4.1 regression] Tree checking failure due to scev
  2005-08-14 23:59 [Bug middle-end/23391] New: [4.1 regression] Tree checking failure due to scev steven at gcc dot gnu dot org
  2005-08-15  0:01 ` [Bug tree-optimization/23391] " pinskia at gcc dot gnu dot org
@ 2005-08-15  0:06 ` steven at gcc dot gnu dot org
  2005-08-15  0:09 ` pinskia at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-08-15  0:06 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From steven at gcc dot gnu dot org  2005-08-15 00:05 -------
Note that part of the problem is that build_int_cst_type, which scev uses 
here, should check that the type given to it is an integral type.  That would 
have caught the checking failure much earlier.  Right now scev tries to use 
build_int_cst_type with type==double. 

-- 


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


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

* [Bug tree-optimization/23391] [4.1 regression] Tree checking failure due to scev
  2005-08-14 23:59 [Bug middle-end/23391] New: [4.1 regression] Tree checking failure due to scev steven at gcc dot gnu dot org
  2005-08-15  0:01 ` [Bug tree-optimization/23391] " pinskia at gcc dot gnu dot org
  2005-08-15  0:06 ` steven at gcc dot gnu dot org
@ 2005-08-15  0:09 ` pinskia at gcc dot gnu dot org
  2005-08-15  0:34 ` sebastian dot pop at cri dot ensmp dot fr
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-08-15  0:09 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-15 00:09 -------
This is related to PR 19899 which was fixed.

-- 


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


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

* [Bug tree-optimization/23391] [4.1 regression] Tree checking failure due to scev
  2005-08-14 23:59 [Bug middle-end/23391] New: [4.1 regression] Tree checking failure due to scev steven at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2005-08-15  0:09 ` pinskia at gcc dot gnu dot org
@ 2005-08-15  0:34 ` sebastian dot pop at cri dot ensmp dot fr
  2005-08-15 12:33 ` cvs-commit at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: sebastian dot pop at cri dot ensmp dot fr @ 2005-08-15  0:34 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From sebastian dot pop at cri dot ensmp dot fr  2005-08-15 00:34 -------
Subject: Re:  [4.1 regression] Tree checking failure due to scev

This patch should fix the problem.  There are some more cases that use
build_int_cst instead of build_real.  I'll propose a more complete
patch later.

*** tree-scalar-evolution.c.~2.35.~	2005-08-13 19:06:26.000000000 +0200
--- tree-scalar-evolution.c	2005-08-15 02:36:50.000000000 +0200
***************
*** 1680,1686 ****
        opnd10 = TREE_OPERAND (opnd1, 0);
        chrec10 = analyze_scalar_evolution (loop, opnd10);
        chrec10 = chrec_convert (type, chrec10, at_stmt);
!       res = chrec_fold_minus (type, build_int_cst (type, 0), chrec10);
        break;
  
      case MULT_EXPR:
--- 1680,1688 ----
        opnd10 = TREE_OPERAND (opnd1, 0);
        chrec10 = analyze_scalar_evolution (loop, opnd10);
        chrec10 = chrec_convert (type, chrec10, at_stmt);
!       res = chrec_fold_multiply (type, chrec10, SCALAR_FLOAT_TYPE_P (type)
! 				  ? build_real (type, dconstm1)
! 				  : build_int_cst_type (type, -1));
        break;
  
      case MULT_EXPR:
*** tree-chrec.c.~2.23.~	2005-08-13 19:06:26.000000000 +0200
--- tree-chrec.c	2005-08-15 02:20:51.000000000 +0200
***************
*** 284,291 ****
  	    return build_polynomial_chrec 
  	      (CHREC_VARIABLE (op1), 
  	       chrec_fold_minus (type, op0, CHREC_LEFT (op1)),
! 	       chrec_fold_multiply (type, CHREC_RIGHT (op1),
! 				    build_int_cst_type (type, -1)));
  
  	default:
  	  {
--- 284,292 ----
  	    return build_polynomial_chrec 
  	      (CHREC_VARIABLE (op1), 
  	       chrec_fold_minus (type, op0, CHREC_LEFT (op1)),
! 	       chrec_fold_multiply (type, CHREC_RIGHT (op1), SCALAR_FLOAT_TYPE_P (type)
! 				    ? build_real (type, dconstm1)
! 				    : build_int_cst_type (type, -1)));
  
  	default:
  	  {


-- 


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


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

* [Bug tree-optimization/23391] [4.1 regression] Tree checking failure due to scev
  2005-08-14 23:59 [Bug middle-end/23391] New: [4.1 regression] Tree checking failure due to scev steven at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2005-08-15  0:34 ` sebastian dot pop at cri dot ensmp dot fr
@ 2005-08-15 12:33 ` cvs-commit at gcc dot gnu dot org
  2005-08-15 12:35 ` sebastian dot pop at cri dot ensmp dot fr
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2005-08-15 12:33 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-08-15 12:26 -------
Subject: Bug 23391

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	spop@gcc.gnu.org	2005-08-15 12:26:13

Modified files:
	gcc            : ChangeLog Makefile.in tree-chrec.c 
	                 tree-scalar-evolution.c 
Added files:
	gcc/testsuite/gcc.dg/tree-ssa: pr23391.c 

Log message:
	PR 23391
	* Makefile.in (tree-chrec.o): Depends on real.h.
	* tree-chrec.c: Include real.h.
	(chrec_fold_plus_poly_poly, chrec_fold_multiply_poly_poly,
	chrec_fold_plus_1): Use build_real for SCALAR_FLOAT_TYPE_P.
	* tree-scalar-evolution.c (add_to_evolution_1,
	interpret_rhs_modify_expr): Ditto.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.9732&r2=2.9733
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/Makefile.in.diff?cvsroot=gcc&r1=1.1535&r2=1.1536
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-chrec.c.diff?cvsroot=gcc&r1=2.23&r2=2.24
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-scalar-evolution.c.diff?cvsroot=gcc&r1=2.35&r2=2.36
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr23391.c.diff?cvsroot=gcc&r1=NONE&r2=1.1



-- 


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


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

* [Bug tree-optimization/23391] [4.1 regression] Tree checking failure due to scev
  2005-08-14 23:59 [Bug middle-end/23391] New: [4.1 regression] Tree checking failure due to scev steven at gcc dot gnu dot org
                   ` (4 preceding siblings ...)
  2005-08-15 12:33 ` cvs-commit at gcc dot gnu dot org
@ 2005-08-15 12:35 ` sebastian dot pop at cri dot ensmp dot fr
  2005-08-15 13:16 ` sebastian dot pop at cri dot ensmp dot fr
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: sebastian dot pop at cri dot ensmp dot fr @ 2005-08-15 12:35 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From sebastian dot pop at cri dot ensmp dot fr  2005-08-15 12:33 -------
Subject: Re:  [4.1 regression] Tree checking failure due to scev

pinskia at gcc dot gnu dot org wrote:
> This is related to PR 19899 which was fixed.
> 

Yes, PR is related to PR19899, but same pattern occured in several
places and the fix to PR19899 was not complete.  Fixed now.



-- 


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


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

* [Bug tree-optimization/23391] [4.1 regression] Tree checking failure due to scev
  2005-08-14 23:59 [Bug middle-end/23391] New: [4.1 regression] Tree checking failure due to scev steven at gcc dot gnu dot org
                   ` (5 preceding siblings ...)
  2005-08-15 12:35 ` sebastian dot pop at cri dot ensmp dot fr
@ 2005-08-15 13:16 ` sebastian dot pop at cri dot ensmp dot fr
  2005-08-15 15:08 ` pinskia at gcc dot gnu dot org
  2005-08-17 11:23 ` reichelt at gcc dot gnu dot org
  8 siblings, 0 replies; 10+ messages in thread
From: sebastian dot pop at cri dot ensmp dot fr @ 2005-08-15 13:16 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From sebastian dot pop at cri dot ensmp dot fr  2005-08-15 12:35 -------
Subject: Re:  [4.1 regression] Tree checking failure due to scev

Sebastian Pop wrote:
> 
> Yes, PR is related to PR19899, but same pattern occured in several
> places and the fix to PR19899 was not complete.  Fixed now.
> 

We'll probably need this fix for 4.0 branch as well...


-- 


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


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

* [Bug tree-optimization/23391] [4.1 regression] Tree checking failure due to scev
  2005-08-14 23:59 [Bug middle-end/23391] New: [4.1 regression] Tree checking failure due to scev steven at gcc dot gnu dot org
                   ` (6 preceding siblings ...)
  2005-08-15 13:16 ` sebastian dot pop at cri dot ensmp dot fr
@ 2005-08-15 15:08 ` pinskia at gcc dot gnu dot org
  2005-08-17 11:23 ` reichelt at gcc dot gnu dot org
  8 siblings, 0 replies; 10+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-08-15 15:08 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-15 14:53 -------
Fixed.

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


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


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

* [Bug tree-optimization/23391] [4.1 regression] Tree checking failure due to scev
  2005-08-14 23:59 [Bug middle-end/23391] New: [4.1 regression] Tree checking failure due to scev steven at gcc dot gnu dot org
                   ` (7 preceding siblings ...)
  2005-08-15 15:08 ` pinskia at gcc dot gnu dot org
@ 2005-08-17 11:23 ` reichelt at gcc dot gnu dot org
  8 siblings, 0 replies; 10+ messages in thread
From: reichelt at gcc dot gnu dot org @ 2005-08-17 11:23 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From reichelt at gcc dot gnu dot org  2005-08-17 11:23 -------
*** Bug 23433 has been marked as a duplicate of this bug. ***

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |micis at gmx dot de


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


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

end of thread, other threads:[~2005-08-17 11:23 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-08-14 23:59 [Bug middle-end/23391] New: [4.1 regression] Tree checking failure due to scev steven at gcc dot gnu dot org
2005-08-15  0:01 ` [Bug tree-optimization/23391] " pinskia at gcc dot gnu dot org
2005-08-15  0:06 ` steven at gcc dot gnu dot org
2005-08-15  0:09 ` pinskia at gcc dot gnu dot org
2005-08-15  0:34 ` sebastian dot pop at cri dot ensmp dot fr
2005-08-15 12:33 ` cvs-commit at gcc dot gnu dot org
2005-08-15 12:35 ` sebastian dot pop at cri dot ensmp dot fr
2005-08-15 13:16 ` sebastian dot pop at cri dot ensmp dot fr
2005-08-15 15:08 ` pinskia at gcc dot gnu dot org
2005-08-17 11:23 ` reichelt 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).