Summary: | ICE NIST FM020.f reduced case | ||
---|---|---|---|
Product: | gcc | Reporter: | Jerry DeLisle <jvdelisle> |
Component: | fortran | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED WORKSFORME | ||
Severity: | normal | CC: | fxcoudert, gcc-bugs, tobi |
Priority: | P2 | Keywords: | ice-on-valid-code |
Version: | 4.0.0 | ||
Target Milestone: | --- | ||
Host: | i686-pc-linux-gnu | Target: | |
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: | 2004-11-21 18:47:02 | |
Bug Depends on: | |||
Bug Blocks: | 17423, 19292 |
Description
Jerry DeLisle
2004-11-21 18:36:49 UTC
Confirmed. Here a further reduction of the problem. This compiles fine logical a, b a(b) = .true. b = .false. if (a(b)) b = .true. end The parse tree is ASSIGN b .false. IF a[[((b))]] ASSIGN b .true. ENDIF This causes the ICE. logical a, b a(b) = .true. if (a(.false.)) b = .true. end with the following parse tree IF a[[((.false.))]] ASSIGN b .true. ENDIF The problem is in gfc_conv_statement_function(), which apparently can't deal with an actual named constant parameter for its argument. Unfortunately, I still don't know how to fix this. This works for me. Can anybody else still confirm this? Otherwise I'll add this to the testsuite. This works for me also. I also confirm that the ICE no longer occurs. Running the original FM020.f test program passes all tests. Subject: Bug 18600 CVSROOT: /cvs/gcc Module name: gcc Changes by: tobi@gcc.gnu.org 2005-03-13 19:28:19 Modified files: gcc/testsuite : ChangeLog Added files: gcc/testsuite/gfortran.dg: stfunc_1.f90 Log message: PR fortran/18600 * gfortran.dg/stfunc_1.f90: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5156&r2=1.5157 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/stfunc_1.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1 Works now. |