Hi Jakub,
As I said earlier in the PR, I don't like -fbroken-callers option much,
as the option name doesn't hint what it is doing at all.
The following patch renames the option and makes it into a 3 state option,
with the default being a middle-ground, where it avoids the tail calls in
functions that have the hidden character length arguments only if it makes
any implicit interface calls. The rationale for that is that there were no
previously reported issues with older GCC versions and the change that
affected the broken C/C++ wrappers was just giving prototypes to the
implicit interface procedure calls, so presumably in functions that don't
have any such calls nothing should have changed.
Bootstrapped/regtested on x86_64-linux and i686-linux, additionally tested
on the dtrtri.f testcase and on dtrtri.f testcase patched to include
explicit interfaces for all called procedures (and for those two verified
all the 6 ways of using these options, default, positive/negative option
without = and 0/1/2 values of the = option, checking in which case there is
a tail call), ok for trunk?
Yep, this is a much better scheme. OK.
This problem is also present on all release branches, so I think that
this (which I think is the should also be backported to them, so that
7.5, 8.4 and 9.2 also can compile these LAPACK bindings again...).
Regards
Thomas