public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/40018]  New: ICE in output_constructor
@ 2009-05-04 19:01 fxcoudert at gcc dot gnu dot org
  2009-05-04 19:19 ` [Bug fortran/40018] " dominiq at lps dot ens dot fr
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2009-05-04 19:01 UTC (permalink / raw)
  To: gcc-bugs

$ cat a.f90 
  integer(kind=8) :: i
  write(*,*) [(i, i = 1, 10)]
  end

$ gfortran a.f90
a.f90:2: internal compiler error: in output_constructor, at varasm.c:4712

The GDB backtrace is:

#0  fancy_abort (file=0xd7999a "../../trunk/gcc/varasm.c", line=4716, 
    function=0xd792d0 "output_constructor") at ../../trunk/gcc/diagnostic.c:723
#1  0x000000000094b762 in output_constructor (exp=<value optimized out>, 
    size=<value optimized out>, align=<value optimized out>)
    at ../../trunk/gcc/varasm.c:4716
#2  0x00000000009bec65 in varpool_assemble_decl (node=0x2ace99df7a40)
    at ../../trunk/gcc/varpool.c:364
#3  0x000000000098f991 in cgraph_output_in_order ()
    at ../../trunk/gcc/cgraphunit.c:1202
#4  0x0000000000991622 in cgraph_optimize ()
    at ../../trunk/gcc/cgraphunit.c:1318
#5  0x00000000005125e5 in gfc_be_parse_file (set_yydebug=<value optimized out>)
    at ../../trunk/gcc/fortran/f95-lang.c:237
#6  0x00000000007e0324 in toplev_main (argc=2, argv=0x7fff143ae1b8)
    at ../../trunk/gcc/toplev.c:977

Happens on x86_64-linux with current trunk (rev. 147105), and
i686-apple-darwin9 rev. 144983.


-- 
           Summary: ICE in output_constructor
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: fxcoudert at gcc dot gnu dot org
OtherBugsDependingO 32834
             nThis:


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


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

* [Bug fortran/40018] ICE in output_constructor
  2009-05-04 19:01 [Bug fortran/40018] New: ICE in output_constructor fxcoudert at gcc dot gnu dot org
@ 2009-05-04 19:19 ` dominiq at lps dot ens dot fr
  2009-05-05  8:00 ` fxcoudert at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: dominiq at lps dot ens dot fr @ 2009-05-04 19:19 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from dominiq at lps dot ens dot fr  2009-05-04 19:19 -------
Confirmed on trunk and 4.4.0. Works with 4.3.3.


-- 


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


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

* [Bug fortran/40018] ICE in output_constructor
  2009-05-04 19:01 [Bug fortran/40018] New: ICE in output_constructor fxcoudert at gcc dot gnu dot org
  2009-05-04 19:19 ` [Bug fortran/40018] " dominiq at lps dot ens dot fr
@ 2009-05-05  8:00 ` fxcoudert at gcc dot gnu dot org
  2009-05-05  9:07 ` [Bug fortran/40018] [4.4/4.5 Regression] " burnus at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2009-05-05  8:00 UTC (permalink / raw)
  To: gcc-bugs



-- 

fxcoudert at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2009-05-05 08:00:19
               date|                            |


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


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

* [Bug fortran/40018] [4.4/4.5 Regression] ICE in output_constructor
  2009-05-04 19:01 [Bug fortran/40018] New: ICE in output_constructor fxcoudert at gcc dot gnu dot org
  2009-05-04 19:19 ` [Bug fortran/40018] " dominiq at lps dot ens dot fr
  2009-05-05  8:00 ` fxcoudert at gcc dot gnu dot org
@ 2009-05-05  9:07 ` burnus at gcc dot gnu dot org
  2009-05-05  9:59 ` rguenth at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: burnus at gcc dot gnu dot org @ 2009-05-05  9:07 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from burnus at gcc dot gnu dot org  2009-05-05 09:07 -------
Mark as regression based on Dominique's comment.


-- 

burnus at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P4
            Summary|ICE in output_constructor   |[4.4/4.5 Regression] ICE in
                   |                            |output_constructor
   Target Milestone|---                         |4.4.1


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


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

* [Bug fortran/40018] [4.4/4.5 Regression] ICE in output_constructor
  2009-05-04 19:01 [Bug fortran/40018] New: ICE in output_constructor fxcoudert at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2009-05-05  9:07 ` [Bug fortran/40018] [4.4/4.5 Regression] " burnus at gcc dot gnu dot org
@ 2009-05-05  9:59 ` rguenth at gcc dot gnu dot org
  2009-05-06 20:46 ` pault at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-05-05  9:59 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from rguenth at gcc dot gnu dot org  2009-05-05 09:58 -------
Confirmed.

#1  0x0000000000befdf6 in output_constructor (exp=0x7ffff7fd0cc0, size=80, 
    align=256) at /space/rguenther/src/svn/trunk/gcc/varasm.c:4716
4716                  gcc_assert (pos >= total_bytes);
(gdb) p pos
$1 = 4
(gdb) p total_bytes
$2 = 8
(gdb) call debug_generic_expr (exp)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

(gdb) call debug_tree (exp)
 <constructor 0x7ffff7fd0cc0
    type <array_type 0x7ffff5f3c0c0
        type <integer_type 0x7ffff7ee16c0 integer(kind=8) public DI
...
    idx <integer_cst 0x7ffff7eedae0 type <integer_type 0x7ffff7ee16c0
integer(kind=8)> constant 0>
    val <integer_cst 0x7ffff7eed090 type <integer_type 0x7ffff7ee1540
integer(kind=4)> constant 1>
...

there is a mismatch with the array element type and the actual element
types.  Thus confirmed as a frontend issue.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to work|                            |4.3.3


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


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

* [Bug fortran/40018] [4.4/4.5 Regression] ICE in output_constructor
  2009-05-04 19:01 [Bug fortran/40018] New: ICE in output_constructor fxcoudert at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2009-05-05  9:59 ` rguenth at gcc dot gnu dot org
@ 2009-05-06 20:46 ` pault at gcc dot gnu dot org
  2009-05-06 21:43 ` dominiq at lps dot ens dot fr
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: pault at gcc dot gnu dot org @ 2009-05-06 20:46 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from pault at gcc dot gnu dot org  2009-05-06 20:46 -------
This fixes it and is regtesting right now.

Index: gcc/fortran/trans-array.c
===================================================================
--- gcc/fortran/trans-array.c   (revision 147128)
+++ gcc/fortran/trans-array.c   (working copy)
@@ -1620,6 +1620,7 @@
     {
       gfc_init_se (&se, NULL);
       gfc_conv_constant (&se, c->expr);
+      se.expr = fold_convert (type, se.expr);
       if (c->expr->ts.type == BT_CHARACTER && POINTER_TYPE_P (type))
        se.expr = gfc_build_addr_expr (gfc_get_pchar_type (c->expr->ts.kind),
                                       se.expr);

I am looking to see if this cannot be done in the front-end.

Note the enormous difference in the code produced in 4.3, compared with 4.4 and
trunk.  Fixing assignments exposed this little gem!

Paul


-- 

pault at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |pault at gcc dot gnu dot org
                   |dot org                     |
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2009-05-05 08:00:19         |2009-05-06 20:46:37
               date|                            |


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


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

* [Bug fortran/40018] [4.4/4.5 Regression] ICE in output_constructor
  2009-05-04 19:01 [Bug fortran/40018] New: ICE in output_constructor fxcoudert at gcc dot gnu dot org
                   ` (4 preceding siblings ...)
  2009-05-06 20:46 ` pault at gcc dot gnu dot org
@ 2009-05-06 21:43 ` dominiq at lps dot ens dot fr
  2009-05-07  4:44 ` pault at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: dominiq at lps dot ens dot fr @ 2009-05-06 21:43 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from dominiq at lps dot ens dot fr  2009-05-06 21:43 -------
The patch in comment #4 fixes this pr, but gives:

.*: internal compiler error: in fold_convert, at fold-const.c:2551

in 83 of my tests, for instance

[ibook-dhum] f90/bug% cat pr36257.f90
  implicit none
  character(len=5), dimension(3,3), parameter :: &
    p = reshape(["", "", "", "", "", "", "", "", ""], [3,3])
  character(len=5), dimension(3,3) :: m1

  m1 = p
  if (any (spread (p, 1, 2) /= spread (m1, 1, 2))) call abort

end

I did not review all the cases, but all those I have looked at deal with
constructor+strings.


-- 


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


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

* [Bug fortran/40018] [4.4/4.5 Regression] ICE in output_constructor
  2009-05-04 19:01 [Bug fortran/40018] New: ICE in output_constructor fxcoudert at gcc dot gnu dot org
                   ` (5 preceding siblings ...)
  2009-05-06 21:43 ` dominiq at lps dot ens dot fr
@ 2009-05-07  4:44 ` pault at gcc dot gnu dot org
  2009-05-10 10:21 ` pault at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: pault at gcc dot gnu dot org @ 2009-05-07  4:44 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from pault at gcc dot gnu dot org  2009-05-07 04:44 -------
(In reply to comment #5)
> The patch in comment #4 fixes this pr, but gives:
> 
> .*: internal compiler error: in fold_convert, at fold-const.c:2551

Yes... I went to bed when the regression test started spewing out the errors. 
The fix is easy... I think :-)  The type must be checked for not being a
character type before doing the fold_convert.

It's regtesting right now.

Cheers

Paul


-- 


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


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

* [Bug fortran/40018] [4.4/4.5 Regression] ICE in output_constructor
  2009-05-04 19:01 [Bug fortran/40018] New: ICE in output_constructor fxcoudert at gcc dot gnu dot org
                   ` (6 preceding siblings ...)
  2009-05-07  4:44 ` pault at gcc dot gnu dot org
@ 2009-05-10 10:21 ` pault at gcc dot gnu dot org
  2009-05-10 10:23 ` pault at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: pault at gcc dot gnu dot org @ 2009-05-10 10:21 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from pault at gcc dot gnu dot org  2009-05-10 10:21 -------
Subject: Bug 40018

Author: pault
Date: Sun May 10 10:21:08 2009
New Revision: 147331

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=147331
Log:
2009-05-10  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/40018
        * trans-array.c (gfc_trans_array_constructor_value): Fold
        convert numeric constants.
        (gfc_build_constant_array_constructor): The same.

2009-05-10  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/40018
        * gfortran.dg/array_constructor_31.f90: New test.

Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/trans-array.c
    trunk/gcc/testsuite/ChangeLog


-- 


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


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

* [Bug fortran/40018] [4.4/4.5 Regression] ICE in output_constructor
  2009-05-04 19:01 [Bug fortran/40018] New: ICE in output_constructor fxcoudert at gcc dot gnu dot org
                   ` (7 preceding siblings ...)
  2009-05-10 10:21 ` pault at gcc dot gnu dot org
@ 2009-05-10 10:23 ` pault at gcc dot gnu dot org
  2009-05-10 16:15 ` pault at gcc dot gnu dot org
  2009-05-10 16:16 ` pault at gcc dot gnu dot org
  10 siblings, 0 replies; 12+ messages in thread
From: pault at gcc dot gnu dot org @ 2009-05-10 10:23 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from pault at gcc dot gnu dot org  2009-05-10 10:22 -------
Subject: Bug 40018

Author: pault
Date: Sun May 10 10:22:37 2009
New Revision: 147332

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=147332
Log:
2009-05-10  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/40018
        * trans-array.c (gfc_trans_array_constructor_value): Fold
        convert numeric constants.
        (gfc_build_constant_array_constructor): The same.

2009-05-10  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/40018
        * gfortran.dg/array_constructor_31.f90: New test.

Added:
    trunk/gcc/testsuite/gfortran.dg/array_constructor_31.f90


-- 


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


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

* [Bug fortran/40018] [4.4/4.5 Regression] ICE in output_constructor
  2009-05-04 19:01 [Bug fortran/40018] New: ICE in output_constructor fxcoudert at gcc dot gnu dot org
                   ` (8 preceding siblings ...)
  2009-05-10 10:23 ` pault at gcc dot gnu dot org
@ 2009-05-10 16:15 ` pault at gcc dot gnu dot org
  2009-05-10 16:16 ` pault at gcc dot gnu dot org
  10 siblings, 0 replies; 12+ messages in thread
From: pault at gcc dot gnu dot org @ 2009-05-10 16:15 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from pault at gcc dot gnu dot org  2009-05-10 16:14 -------
Subject: Bug 40018

Author: pault
Date: Sun May 10 16:14:37 2009
New Revision: 147347

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=147347
Log:
2009-05-10  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/40018
        * trans-array.c (gfc_trans_array_constructor_value): Fold
        convert numeric constants.
        (gfc_build_constant_array_constructor): The same.

2009-05-10  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/40018
        * gfortran.dg/array_constructor_31.f90: New test.

Added:
    branches/gcc-4_4-branch/gcc/testsuite/gfortran.dg/array_constructor_31.f90
Modified:
    branches/gcc-4_4-branch/gcc/fortran/ChangeLog
    branches/gcc-4_4-branch/gcc/fortran/trans-array.c
    branches/gcc-4_4-branch/gcc/testsuite/ChangeLog


-- 


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


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

* [Bug fortran/40018] [4.4/4.5 Regression] ICE in output_constructor
  2009-05-04 19:01 [Bug fortran/40018] New: ICE in output_constructor fxcoudert at gcc dot gnu dot org
                   ` (9 preceding siblings ...)
  2009-05-10 16:15 ` pault at gcc dot gnu dot org
@ 2009-05-10 16:16 ` pault at gcc dot gnu dot org
  10 siblings, 0 replies; 12+ messages in thread
From: pault at gcc dot gnu dot org @ 2009-05-10 16:16 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from pault at gcc dot gnu dot org  2009-05-10 16:15 -------
Fixed on trunk and 4.4

Thanks for the report

Paul


-- 

pault at gcc dot gnu dot org changed:

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


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


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

end of thread, other threads:[~2009-05-10 16:16 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-05-04 19:01 [Bug fortran/40018] New: ICE in output_constructor fxcoudert at gcc dot gnu dot org
2009-05-04 19:19 ` [Bug fortran/40018] " dominiq at lps dot ens dot fr
2009-05-05  8:00 ` fxcoudert at gcc dot gnu dot org
2009-05-05  9:07 ` [Bug fortran/40018] [4.4/4.5 Regression] " burnus at gcc dot gnu dot org
2009-05-05  9:59 ` rguenth at gcc dot gnu dot org
2009-05-06 20:46 ` pault at gcc dot gnu dot org
2009-05-06 21:43 ` dominiq at lps dot ens dot fr
2009-05-07  4:44 ` pault at gcc dot gnu dot org
2009-05-10 10:21 ` pault at gcc dot gnu dot org
2009-05-10 10:23 ` pault at gcc dot gnu dot org
2009-05-10 16:15 ` pault at gcc dot gnu dot org
2009-05-10 16:16 ` pault 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).