This code: REAL X(2,3), Y(2) Y=[1.,2.] CALL SUB(X,Y) DO I = 1, 3 PRINT*,X(:,I) ENDDO END SUBROUTINE SUB(A,B) REAL A(:,:), B(:) A(:,:) = SPREAD(B(:),2,SIZE(A,2)) END
results in: 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 using: /usr/snp/bin/gfortran -static -v -g -O2 -fbacktrace spread.f Driving: /usr/snp/bin/gfortran -static -v -g -O2 -fbacktrace spread.f -lgfortranbegin -lgfortran -lm Using built-in specs. Target: x86_64-unknown-linux-gnu Configured with: ../trunk/configure --prefix=/usr/snp/ --disable-multilib --disable-nls --enable-languages=fortran Thread model: posix gcc version 4.3.0 20070903 (experimental) (GCC) /usr/snp/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.3.0/f951 spread.f -ffixed-form -quiet -dumpbase spread.f -mtune=generic -auxbase spread -g -O2 -version -fbacktrace -fintrinsic-modules-path /usr/snp/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.0/finclude -o /tmp/ccjGK59d.s GNU F95 (GCC) version 4.3.0 20070903 (experimental) (x86_64-unknown-linux-gnu) compiled by GNU C version 4.3.0 20070903 (experimental), GMP version 4.2.1, MPFR version 2.3.0-rc1. GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 as -V -Qy -o /tmp/cc53anSf.o /tmp/ccjGK59d.s GNU assembler version 2.17.90 (x86_64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.17.90.20070812 /usr/snp/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.3.0/collect2 -m elf_x86_64 -static /usr/lib/../lib64/crt1.o /usr/lib/../lib64/crti.o /usr/snp/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.0/crtbeginT.o -L/usr/snp/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.0 -L/usr/snp/bin/../lib/gcc -L/usr/snp/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.0/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/snp/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.0/../../.. /tmp/cc53anSf.o -lgfortranbegin -lgfortran -lm --start-group -lgcc -lgcc_eh -lc --end-group /usr/snp/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.0/crtend.o /usr/lib/../lib64/crtn.o Debian's testing gfortran-4.2 gave me another bunch of nonsense: -4.5149084E-10 4.5916347E-41 -4.5151327E-10 4.5916347E-41 -4.5151283E-10 4.5916347E-41 Trying to print the SPREAD expression directly gave me a segmentation fault using the above gfortran 4.2 and an empty line using 4.3. -- Summary: Wrong code for SPREAD on dummy arguments Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: toon at moene dot indiv dot nluug dot nl GCC build triplet: x86_64-unknown-linux-gnu GCC host triplet: x86_64-unknown-linux-gnu GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33298