CyLith wrote:I have tried recompiling just the file zgehrd.f with -frecursive as well as -fmax-stack-var-size=66560 and -fmax-stack-var-size=66559. With The first two flags, the test runs correctly, while the last one produces bad results since the size of T is 64*65*16 bytes. This was done on my Windows 7 machine with Mingw32 and gfortran 4.4.1. I hope this shows the problem clearly.
I have also modified zgehrd to expand the workspace query in the way I indicated and the patch is attached. I haven't thought through it completely to see if every case is handled correctly however. I only believe it to be correct. Essentially, I tack on the space for T at the end of the work array. I'm not sure the patch is really necessary since it seems like we should rely more on compiler flags for the right behavior. Unfortunately, I would guess that most package maintainers don't bother fiddling with the flags or are unaware of these issues.
Also, thanks for pointing out the new dlamch in svn. I didn't realize there were intrinsics for those things and I was about to hard code the constants in (as I probably should have in the first place). This should greatly reduce the number of (spurious) problems reported by valgrind!