Using gfortran 4.4.1, a string parameter passed to a subroutine is mangled when an optional parameter is missing. I enclose a simplified example below.
In the original 2000+ line program, the string passed was the required string plus the string from the following error checking call. In this simplified example this does not happen but "AMPLITUDE" gets truncated to "A". =============================================== program test_error c c program to try and regenerate gfortran error c call oc5select_name("AMPLITUDE") c call oc5error_test("Error message") end subroutine oc5select_name(dname, report) IMPLICIT none c CHARACTER (LEN=*), INTENT(IN) :: dname LOGICAL, OPTIONAL, INTENT(IN) :: report LOGICAL :: verbose c verbose = .false. if(present(report)) verbose = .true. print *," dname = ",dname return end =============================================== Correct output : AMPLITUDE Output from gfortran -o test_error test_error.F is: A When subroutine call is changed to: call oc5select_name("AMPLITUDE",.true.) output is: AMPLITUDE Regards, David Webb. As appears to be requested in one of the bug pages I enclose the output from "gfortran -v -save-temps" ============================= ~/test> gfortran -v -save-temps -o test_error test_error.F Driving: gfortran -v -save-temps -o test_error test_error.F -lgfortranbegin -lgfortran -lm -shared-libgcc Using built-in specs. Target: x86_64-suse-linux Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.4 --enable-ssp --disable-libssp --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --program-suffix=-4.4 --enable-linux-futex --without-system-libunwind --with-arch-32=i586 --with-tune=generic --build=x86_64-suse-linux Thread model: posix gcc version 4.4.1 [gcc-4_4-branch revision 150839] (SUSE Linux) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'test_error' '-shared-libgcc' '-mtune=generic' /usr/lib64/gcc/x86_64-suse-linux/4.4/f951 test_error.F -ffixed-form -cpp test_error.f90 -quiet -v test_error.F -quiet -dumpbase test_error.F -mtune=generic -auxbase test_error -version -fintrinsic-modules-path /usr/lib64/gcc/x86_64-suse-linux/4.4/finclude -o test_error.s #include "..." search starts here: #include <...> search starts here: /usr/lib64/gcc/x86_64-suse-linux/4.4/finclude /usr/local/include /usr/lib64/gcc/x86_64-suse-linux/4.4/include /usr/lib64/gcc/x86_64-suse-linux/4.4/include-fixed /usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../x86_64-suse-linux/include /usr/include End of search list. GNU Fortran (SUSE Linux) version 4.4.1 [gcc-4_4-branch revision 150839] (x86_64-suse-linux) compiled by GNU C version 4.4.1 [gcc-4_4-branch revision 150839], GMP version 4.3.1, MPFR version 2.4.1-p5. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'test_error' '-shared-libgcc' '-mtune=generic' /usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../x86_64-suse-linux/bin/as -V -Qy -o test_error.o test_error.s GNU assembler version 2.19.51 (x86_64-suse-linux) using BFD version (GNU Binutils; openSUSE 11.2) 2.19.51.20090527-10.26.4 COMPILER_PATH=/usr/lib64/gcc/x86_64-suse-linux/4.4/:/usr/lib64/gcc/x86_64-suse-linux/4.4/:/usr/lib64/gcc/x86_64-suse-linux/:/usr/lib64/gcc/x86_64-suse-linux/4.4/:/usr/lib64/gcc/x86_64-suse-linux/:/usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../x86_64-suse-linux/bin/ LIBRARY_PATH=/usr/lib64/gcc/x86_64-suse-linux/4.4/:/usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../x86_64-suse-linux/lib/:/usr/lib64/gcc/x86_64-suse-linux/4.4/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'test_error' '-shared-libgcc' '-mtune=generic' /usr/lib64/gcc/x86_64-suse-linux/4.4/collect2 --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o test_error /usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../lib64/crt1.o /usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../lib64/crti.o /usr/lib64/gcc/x86_64-suse-linux/4.4/crtbegin.o -L/usr/lib64/gcc/x86_64-suse-linux/4.4 -L/usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../x86_64-suse-linux/lib -L/usr/lib64/gcc/x86_64-suse-linux/4.4/../../.. test_error.o -lgfortranbegin -lgfortran -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib64/gcc/x86_64-suse-linux/4.4/crtend.o /usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../lib64/crtn.o -- Summary: String parameter error when optional parameter missing Product: gcc Version: 4.4.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: David dot Webb at soc dot soton dot ac dot uk http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42428