The following gets miscompiled with gcc 4.3, works with 4.2.0 & 4.2.1 at least.
PROGRAM test REAL(8) :: f,dist(2) dist = [1.0_8, 0.5_8] PRINT*,f(1.0_8, dist), ' should be: ', MINVAL(dist) END PROGRAM test FUNCTION f( x, dist ) RESULT(s) REAL(8) :: dist(2), x, s s = MINVAL(dist) IF( x < 0 ) s = -s END FUNCTION f gfortran -v -O2 -ffast-math -ftree-vectorize -o test test.f90 Driving: gfortran -v -O2 -ffast-math -ftree-vectorize -o test test.f90 -lgfortranbegin -lgfortra n -lm -shared-libgcc Using built-in specs. Target: x86_64-unknown-linux-gnu Configured with: /projects/tob/gcc/configure --enable-languages=c,fortran --prefix=/projects/tob /gcc-trunk Thread model: posix gcc version 4.3.0 20070904 (experimental) [trunk revision 128067] (GCC) COLLECT_GCC_OPTIONS='-v' '-O2' '-ffast-math' '-ftree-vectorize' '-o' 'test' '-shared-libgcc' '-m tune=generic' /wrk/jpr/gcc-trunk/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.3.0/f951 test.f90 -quiet -dump base test.f90 -mtune=generic -auxbase test -O2 -version -ffast-math -ftree-vectorize -fintrinsic -modules-path /wrk/jpr/gcc-trunk/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.0/finclude -o /tmp/ jpr/ccEvFIMX.s GNU F95 (GCC) version 4.3.0 20070904 (experimental) [trunk revision 128067] (x86_64-unknown-linu x-gnu) compiled by GNU C version 4.3.0 20070904 (experimental) [trunk revision 128067], GMP ver sion 4.2.1, MPFR version 2.2.1. GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 COLLECT_GCC_OPTIONS='-v' '-O2' '-ffast-math' '-ftree-vectorize' '-o' 'test' '-shared-libgcc' '-m tune=generic' as -V -Qy -o /tmp/jpr/ccJEvzPa.o /tmp/jpr/ccEvFIMX.s GNU assembler version 2.15.92.0.2 (x86_64-redhat-linux) using BFD version 2.15.92.0.2 20040927 COMPILER_PATH=/wrk/jpr/gcc-trunk/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.3.0/:/wrk/jpr/gcc -trunk/bin/../libexec/gcc/ LIBRARY_PATH=/wrk/jpr/gcc-trunk/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.0/:/wrk/jpr/gcc-trun k/bin/../lib/gcc/:/v/linux26_x86_64/opt/papi/3.5.0/lib64/../lib64/:/wrk/jpr/gcc-trunk/bin/../lib /gcc/x86_64-unknown-linux-gnu/4.3.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/v/linu x26_x86_64/opt/papi/3.5.0/lib64/:/wrk/jpr/gcc-trunk/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3. 0/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-O2' '-ffast-math' '-ftree-vectorize' '-o' 'test' '-shared-libgcc' '-m tune=generic' /wrk/jpr/gcc-trunk/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.3.0/collect2 --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o test /usr/lib/../lib64/crt1.o /usr/li b/../lib64/crti.o /wrk/jpr/gcc-trunk/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.0/crtbegin.o -L /wrk/jpr/gcc-trunk/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.0 -L/wrk/jpr/gcc-trunk/bin/../lib /gcc -L/v/linux26_x86_64/opt/papi/3.5.0/lib64/../lib64 -L/wrk/jpr/gcc-trunk/bin/../lib/gcc/x86_6 4-unknown-linux-gnu/4.3.0/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/v/linux26_x86 _64/opt/papi/3.5.0/lib64 -L/wrk/jpr/gcc-trunk/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.0/../. ./.. /tmp/jpr/ccJEvzPa.o -lgfortranbegin -lgfortran -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /wrk/jpr /gcc-trunk/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.0/crtfastmath.o /wrk/jpr/gcc-trunk/bin/.. /lib/gcc/x86_64-unknown-linux-gnu/4.3.0/crtend.o /usr/lib/../lib64/crtn.o ./test 1.00000000000000 should be: 0.500000000000000 Regrads, Juha -- Summary: miscompilation with gfortran -O2 -ffast-math -ftree- vectorize Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jpr at csc dot fi GCC host triplet: x86_64 linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33299