http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46842
--- Comment #17 from Tobias Burnus <burnus at gcc dot gnu.org> 2010-12-10 07:26:11 UTC --- With the function call - there is no transpose at all: // Temporary descriptor atmp.10.dim[0].stride = 1; // Normal bounds: OK atmp.10.dim[0].lbound = 0; atmp.10.dim[0].ubound = 1; atmp.10.dim[1].stride = 2; atmp.10.dim[1].lbound = 0; atmp.10.dim[1].ubound = 1; atmp.10.data = (void * restrict) &A.11; atmp.10.offset = 0; func (&atmp.10); // Function call - so far OK. D.1585 = &atmp.10; // Before this line a TRANSPOSE is missing [...] _gfortran_matmul_r4 (&atmp.12, D.1580, D.1585, 0, 0, 0B);