https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89093
Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |ramana at gcc dot gnu.org --- Comment #21 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #19) > (In reply to Florian Weimer from comment #18) > > (In reply to Ramana Radhakrishnan from comment #15) > > > Testing this and would be grateful for a test run. > > > > Is this hunk needed as well, or will the unwinding information take care of > > this? (__cxa_call_unexpected has another d8 register spill.) > > No idea here. I'll try and analyse that - The key is ensuring that there is absolutely no floating point code in eh_call.cc , if there is likely to be floating point anywhere this isn't correct > > > --- libstdc++-v3/libsupc++/eh_call.cc (revision 268364) > > +++ libstdc++-v3/libsupc++/eh_call.cc (working copy) > > @@ -22,6 +22,11 @@ > > // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see > > // <http://www.gnu.org/licenses/>. > > > > +#ifdef __arm__ > > +#pragma GCC target ("fpu=none") > > +#pragma GCC push_options > > +#endif > > But why the #pragma GCC push_options? That makes no sense. > Either you need to push options before GCC target and pop later on, but if > you pop at the end of TU and don't really expect anything else to be emitted > there, only #pragma GCC target should be enough (that applies to the other > patch too). I think that's just percolated my quick hack to discuss the issue. It should be enough to do #pragma GCC target . The final patch I have does that . Thanks for confirming that the patch in it's essence fixes up the issue. regards Ramana