public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/37469]  New: Invalid GMP usage
@ 2008-09-10 21:18 hjl dot tools at gmail dot com
  2008-09-10 21:37 ` [Bug fortran/37469] " burnus at gcc dot gnu dot org
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: hjl dot tools at gmail dot com @ 2008-09-10 21:18 UTC (permalink / raw)
  To: gcc-bugs

find_array_element in expr.c has

      if ((ar->as->upper[i]
           && ar->as->upper[i]->expr_type == EXPR_CONSTANT
           && mpz_cmp (e->value.integer,
                       ar->as->upper[i]->value.integer) > 0)
          || (ar->as->lower[i]->expr_type == EXPR_CONSTANT
              && mpz_cmp (e->value.integer,
                          ar->as->lower[i]->value.integer) < 0))
        {
          gfc_error ("Index in dimension %d is out of bounds "
                     "at %L", i + 1, &ar->c_where[i]);
          cons = NULL;
          t = FAILURE;
          goto depart;
        }

      mpz_sub (delta, e->value.integer, ar->as->lower[i]->value.integer);
      mpz_mul (delta, delta, span);
      mpz_add (offset, offset, delta);

      mpz_set_ui (tmp, 1);
      mpz_add (tmp, tmp, ar->as->upper[i]->value.integer);
      mpz_sub (tmp, tmp, ar->as->lower[i]->value.integer);
      mpz_mul (span, span, tmp);

But it never checks if ar->as->upper[i]->value.integer and
ar->as->lower[i]->value.integer are valid.

I added
--- ./expr.c.foo        2008-09-10 14:09:45.000000000 -0700
+++ ./expr.c    2008-09-10 14:10:13.000000000 -0700
@@ -1050,6 +1050,9 @@ find_array_element (gfc_constructor *con
          goto depart;
        }

+      gcc_assert (ar->as->lower[i]->expr_type == EXPR_CONSTANT
+                 && ar->as->upper[i]->expr_type == EXPR_CONSTANT);
+
       mpz_sub (delta, e->value.integer, ar->as->lower[i]->value.integer);
       mpz_mul (delta, delta, span);
       mpz_add (offset, offset, delta);

and got
Starting program: /export/build/gnu/gcc-work/build-x86_64-linux/gcc/f951
/export/gnu/src/gcc-work/gcc/gcc/testsuite/gfortran.dg/parameter_array_init_3.f90
-quiet -dumpbase parameter_array_init_3.f90 -mtune=generic -auxbase
parameter_array_init_3 -O -pedantic-errors -version -o parameter_array_init_3.s
-fintrinsic-modules-path finclude
GNU Fortran (GCC) version 4.4.0 20080910 (experimental) [trunk revision 140249]
(x86_64-unknown-linux-gnu)
        compiled by GNU C version 4.3.0 20080428 (Red Hat 4.3.0-8), GMP version
4.2.2, MPFR version 2.3.1.
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096

Breakpoint 1, fancy_abort (
    file=0xf28e68 "/export/gnu/src/gcc-work/gcc/gcc/fortran/expr.c", 
    line=1054, function=0xf28e20 "find_array_element")
    at /export/gnu/src/gcc-work/gcc/gcc/diagnostic.c:712
712       internal_error ("in %s, at %s:%d", function, trim_filename (file),
line);
(gdb) f 1
#1  0x000000000042a08f in find_array_element (cons=0x158e0a0, ar=0x1590218, 
    rval=0x7fffffffd6f0)
    at /export/gnu/src/gcc-work/gcc/gcc/fortran/expr.c:1053
1053          gcc_assert (ar->as->lower[i]->expr_type == EXPR_CONSTANT
(gdb) p *ar->as->upper[i]
$3 = {expr_type = EXPR_FUNCTION, ts = {type = BT_UNKNOWN, kind = 0, 
    derived = 0x0, cl = 0x0, interface = 0x0, is_c_interop = 0, is_iso_c = 0, 
    f90_type = BT_UNKNOWN}, rank = 0, shape = 0x0, symtree = 0x1533ef0, 
  ref = 0x0, where = {nextc = 0x15868a8, lb = 0x1586800}, 
  inline_noncopying_intrinsic = 0, is_boz = 0, con_by_offset = 0x0, 
  representation = {length = 0, string = 0x0}, value = {logical = 22234240, 
    iokind = 22234240, integer = {{_mp_alloc = 22234240, _mp_size = 0, 
        _mp_d = 0x0}}, real = {{_mpfr_prec = 22234240, _mpfr_sign = 0, 
        _mpfr_exp = 0, _mpfr_d = 0x0}}, complex = {r = {{
          _mpfr_prec = 22234240, _mpfr_sign = 0, _mpfr_exp = 0, 
          _mpfr_d = 0x0}}, i = {{_mpfr_prec = 0, _mpfr_sign = 0, 
          _mpfr_exp = 0, _mpfr_d = 0x0}}}, op = {op = 22234240, uop = 0x0, 
      op1 = 0x0, op2 = 0x0}, function = {actual = 0x1534480, name = 0x0, 
      isym = 0x0, esym = 0x0}, compcall = {actual = 0x1534480, tbp = 0x0, 
      name = 0x0}, character = {length = 22234240, string = 0x0}, 
    constructor = 0x1534480}}
(gdb)


-- 
           Summary: Invalid GMP usage
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hjl dot tools at gmail dot com


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


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

* [Bug fortran/37469] Invalid GMP usage
  2008-09-10 21:18 [Bug fortran/37469] New: Invalid GMP usage hjl dot tools at gmail dot com
@ 2008-09-10 21:37 ` burnus at gcc dot gnu dot org
  2008-09-10 22:49 ` kargl at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: burnus at gcc dot gnu dot org @ 2008-09-10 21:37 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from burnus at gcc dot gnu dot org  2008-09-10 21:35 -------
Mark as ice-on-valid-code (seems to give reliably an ICE on i64 systems).

H.J., thanks for the analysis!


-- 

burnus at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ice-on-valid-code


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


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

* [Bug fortran/37469] Invalid GMP usage
  2008-09-10 21:18 [Bug fortran/37469] New: Invalid GMP usage hjl dot tools at gmail dot com
  2008-09-10 21:37 ` [Bug fortran/37469] " burnus at gcc dot gnu dot org
@ 2008-09-10 22:49 ` kargl at gcc dot gnu dot org
  2008-11-30  3:53 ` kargl at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: kargl at gcc dot gnu dot org @ 2008-09-10 22:49 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from kargl at gcc dot gnu dot org  2008-09-10 22:48 -------
See the thread started at 

http://gcc.gnu.org/ml/fortran/2008-01/msg00104.html


-- 


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


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

* [Bug fortran/37469] Invalid GMP usage
  2008-09-10 21:18 [Bug fortran/37469] New: Invalid GMP usage hjl dot tools at gmail dot com
  2008-09-10 21:37 ` [Bug fortran/37469] " burnus at gcc dot gnu dot org
  2008-09-10 22:49 ` kargl at gcc dot gnu dot org
@ 2008-11-30  3:53 ` kargl at gcc dot gnu dot org
  2008-11-30  9:05 ` [Bug fortran/37469] Invalid GMP usage on gfortran.dg/parameter_array_init_3.f90 ebotcazou at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: kargl at gcc dot gnu dot org @ 2008-11-30  3:53 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from kargl at gcc dot gnu dot org  2008-11-30 03:51 -------
*** Bug 38323 has been marked as a duplicate of this bug. ***


-- 

kargl at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |howarth at nitro dot med dot
                   |                            |uc dot edu


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


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

* [Bug fortran/37469] Invalid GMP usage on gfortran.dg/parameter_array_init_3.f90
  2008-09-10 21:18 [Bug fortran/37469] New: Invalid GMP usage hjl dot tools at gmail dot com
                   ` (2 preceding siblings ...)
  2008-11-30  3:53 ` kargl at gcc dot gnu dot org
@ 2008-11-30  9:05 ` ebotcazou at gcc dot gnu dot org
  2008-11-30  9:38 ` [Bug fortran/37469] invalid " ebotcazou at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: ebotcazou at gcc dot gnu dot org @ 2008-11-30  9:05 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from ebotcazou at gcc dot gnu dot org  2008-11-30 09:04 -------
Visible on SPARC 64-bit.  IMHO this is serious and should be fixed for 4.4.0.


-- 

ebotcazou at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ebotcazou at gcc dot gnu dot
                   |                            |org
           Severity|normal                      |major
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2008-11-30 09:04:20
               date|                            |
            Summary|Invalid GMP usage           |Invalid GMP usage on
                   |                            |gfortran.dg/parameter_array_
                   |                            |init_3.f90


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


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

* [Bug fortran/37469] invalid GMP usage on gfortran.dg/parameter_array_init_3.f90
  2008-09-10 21:18 [Bug fortran/37469] New: Invalid GMP usage hjl dot tools at gmail dot com
                   ` (3 preceding siblings ...)
  2008-11-30  9:05 ` [Bug fortran/37469] Invalid GMP usage on gfortran.dg/parameter_array_init_3.f90 ebotcazou at gcc dot gnu dot org
@ 2008-11-30  9:38 ` ebotcazou at gcc dot gnu dot org
  2008-12-09 19:24 ` mikael at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: ebotcazou at gcc dot gnu dot org @ 2008-11-30  9:38 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from ebotcazou at gcc dot gnu dot org  2008-11-30 09:37 -------
> Visible on SPARC 64-bit.

And IA-64, s390x, x86_64-darwin, etc.  So almost all 64-bit platforms.


-- 

ebotcazou at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Invalid GMP usage on        |invalid GMP usage on
                   |gfortran.dg/parameter_array_|gfortran.dg/parameter_array_
                   |init_3.f90                  |init_3.f90


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


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

* [Bug fortran/37469] invalid GMP usage on gfortran.dg/parameter_array_init_3.f90
  2008-09-10 21:18 [Bug fortran/37469] New: Invalid GMP usage hjl dot tools at gmail dot com
                   ` (4 preceding siblings ...)
  2008-11-30  9:38 ` [Bug fortran/37469] invalid " ebotcazou at gcc dot gnu dot org
@ 2008-12-09 19:24 ` mikael at gcc dot gnu dot org
  2008-12-09 19:43 ` mikael at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: mikael at gcc dot gnu dot org @ 2008-12-09 19:24 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from mikael at gcc dot gnu dot org  2008-12-09 19:22 -------
Subject: Bug 37469

Author: mikael
Date: Tue Dec  9 19:20:18 2008
New Revision: 142606

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=142606
Log:
2008-12-09  Mikael Morin  <mikael.morin@tele2.fr>

        PR fortran/37469
        * expr.c (find_array_element): Simplify array bounds.
        Assert that both bounds are constant expressions.


Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/expr.c


-- 


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


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

* [Bug fortran/37469] invalid GMP usage on gfortran.dg/parameter_array_init_3.f90
  2008-09-10 21:18 [Bug fortran/37469] New: Invalid GMP usage hjl dot tools at gmail dot com
                   ` (5 preceding siblings ...)
  2008-12-09 19:24 ` mikael at gcc dot gnu dot org
@ 2008-12-09 19:43 ` mikael at gcc dot gnu dot org
  2008-12-10  0:17 ` hjl dot tools at gmail dot com
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: mikael at gcc dot gnu dot org @ 2008-12-09 19:43 UTC (permalink / raw)
  To: gcc-bugs



-- 

mikael at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |mikael at gcc dot gnu dot
                   |dot org                     |org
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2008-11-30 09:04:20         |2008-12-09 19:31:30
               date|                            |
   Target Milestone|---                         |4.4.0


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


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

* [Bug fortran/37469] invalid GMP usage on gfortran.dg/parameter_array_init_3.f90
  2008-09-10 21:18 [Bug fortran/37469] New: Invalid GMP usage hjl dot tools at gmail dot com
                   ` (6 preceding siblings ...)
  2008-12-09 19:43 ` mikael at gcc dot gnu dot org
@ 2008-12-10  0:17 ` hjl dot tools at gmail dot com
  2008-12-10 13:47 ` jvdelisle at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: hjl dot tools at gmail dot com @ 2008-12-10  0:17 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from hjl dot tools at gmail dot com  2008-12-10 00:13 -------
Fixed as of revision 142610.


-- 

hjl dot tools at gmail dot com changed:

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


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


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

* [Bug fortran/37469] invalid GMP usage on gfortran.dg/parameter_array_init_3.f90
  2008-09-10 21:18 [Bug fortran/37469] New: Invalid GMP usage hjl dot tools at gmail dot com
                   ` (7 preceding siblings ...)
  2008-12-10  0:17 ` hjl dot tools at gmail dot com
@ 2008-12-10 13:47 ` jvdelisle at gcc dot gnu dot org
  2008-12-10 14:04 ` mikael at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: jvdelisle at gcc dot gnu dot org @ 2008-12-10 13:47 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from jvdelisle at gcc dot gnu dot org  2008-12-10 13:45 -------
Confirmed fix on ppc64-linux


-- 


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


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

* [Bug fortran/37469] invalid GMP usage on gfortran.dg/parameter_array_init_3.f90
  2008-09-10 21:18 [Bug fortran/37469] New: Invalid GMP usage hjl dot tools at gmail dot com
                   ` (8 preceding siblings ...)
  2008-12-10 13:47 ` jvdelisle at gcc dot gnu dot org
@ 2008-12-10 14:04 ` mikael at gcc dot gnu dot org
  2008-12-21 15:36 ` mikael at gcc dot gnu dot org
  2009-01-01 17:44 ` danglin at gcc dot gnu dot org
  11 siblings, 0 replies; 13+ messages in thread
From: mikael at gcc dot gnu dot org @ 2008-12-10 14:04 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from mikael at gcc dot gnu dot org  2008-12-10 14:02 -------
(In reply to comment #7)
> Fixed as of revision 142610.
Wait a bit before closing, I plan to backport to 4.3.


-- 

mikael at gcc dot gnu dot org changed:

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


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


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

* [Bug fortran/37469] invalid GMP usage on gfortran.dg/parameter_array_init_3.f90
  2008-09-10 21:18 [Bug fortran/37469] New: Invalid GMP usage hjl dot tools at gmail dot com
                   ` (9 preceding siblings ...)
  2008-12-10 14:04 ` mikael at gcc dot gnu dot org
@ 2008-12-21 15:36 ` mikael at gcc dot gnu dot org
  2009-01-01 17:44 ` danglin at gcc dot gnu dot org
  11 siblings, 0 replies; 13+ messages in thread
From: mikael at gcc dot gnu dot org @ 2008-12-21 15:36 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from mikael at gcc dot gnu dot org  2008-12-21 15:35 -------
(In reply to comment #9)
> (In reply to comment #7)
> > Fixed as of revision 142610.
> Wait a bit before closing, I plan to backport to 4.3.
... And of course I forgot. :-S
There is no gfc_reduce_init_expr function in 4.3, so the patch won't work there
as is. 
As 4.4 is going to be released soon, I don't think backporting is worth the
bother. 
I'm closing without backporting.
Sorry for the noise.


-- 

mikael at gcc dot gnu dot org changed:

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


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


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

* [Bug fortran/37469] invalid GMP usage on gfortran.dg/parameter_array_init_3.f90
  2008-09-10 21:18 [Bug fortran/37469] New: Invalid GMP usage hjl dot tools at gmail dot com
                   ` (10 preceding siblings ...)
  2008-12-21 15:36 ` mikael at gcc dot gnu dot org
@ 2009-01-01 17:44 ` danglin at gcc dot gnu dot org
  11 siblings, 0 replies; 13+ messages in thread
From: danglin at gcc dot gnu dot org @ 2009-01-01 17:44 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from danglin at gcc dot gnu dot org  2009-01-01 17:43 -------
Subject: Bug 37469

Author: danglin
Date: Thu Jan  1 17:42:00 2009
New Revision: 142995

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=142995
Log:
        PR fortran/38675
        Backport from mainline:
        2008-12-09  Mikael Morin  <mikael.morin@tele2.fr>

        PR fortran/37469
        * expr.c (find_array_element): Simplify array bounds.
        Assert that both bounds are constant expressions.

        2008-10-31  Mikael Morin  <mikael.morin@tele2.fr>

        * expr.c (gfc_reduce_init_expr): New function, containing checking code
        from gfc_match_init_expr, so that checking can be deferred. 
        (gfc_match_init_expr): Use gfc_reduce_init_expr.
        * match.h (gfc_reduce_init_expr): Prototype added. 


Modified:
    branches/gcc-4_3-branch/gcc/fortran/ChangeLog
    branches/gcc-4_3-branch/gcc/fortran/expr.c
    branches/gcc-4_3-branch/gcc/fortran/match.h


-- 


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


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

end of thread, other threads:[~2009-01-01 17:44 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-09-10 21:18 [Bug fortran/37469] New: Invalid GMP usage hjl dot tools at gmail dot com
2008-09-10 21:37 ` [Bug fortran/37469] " burnus at gcc dot gnu dot org
2008-09-10 22:49 ` kargl at gcc dot gnu dot org
2008-11-30  3:53 ` kargl at gcc dot gnu dot org
2008-11-30  9:05 ` [Bug fortran/37469] Invalid GMP usage on gfortran.dg/parameter_array_init_3.f90 ebotcazou at gcc dot gnu dot org
2008-11-30  9:38 ` [Bug fortran/37469] invalid " ebotcazou at gcc dot gnu dot org
2008-12-09 19:24 ` mikael at gcc dot gnu dot org
2008-12-09 19:43 ` mikael at gcc dot gnu dot org
2008-12-10  0:17 ` hjl dot tools at gmail dot com
2008-12-10 13:47 ` jvdelisle at gcc dot gnu dot org
2008-12-10 14:04 ` mikael at gcc dot gnu dot org
2008-12-21 15:36 ` mikael at gcc dot gnu dot org
2009-01-01 17:44 ` danglin 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).