https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89093
--- Comment #58 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- No, sorry, the attribute on the prototype gets ignored, as the following is compiled without generating an error: private int test(double x) { return x > 1.0; } static if (GNU_ARM_EABI_Unwinder) { @attribute("target", ("general-regs-only")) private _Unwind_Reason_Code __gdc_personality(_Unwind_Action actions, _Unwind_Exception_Class exceptionClass, _Unwind_Exception* unwindHeader, _Unwind_Context* context); } private _Unwind_Reason_Code __gdc_personality(_Unwind_Action actions, _Unwind_Exception_Class exceptionClass, _Unwind_Exception* unwindHeader, _Unwind_Context* context) { const(ubyte)* lsda; _Unwind_Ptr landingPad; _Unwind_Word cfa; int handler; test(3.14); // Shortcut for phase 2 found handler for domestic exception. if (actions == (_UA_CLEANUP_PHASE | _UA_HANDLER_FRAME) && isGdcExceptionClass(exceptionClass)) { ExceptionHeader.restore(unwindHeader, handler, lsda, landingPad, cfa); but with the previous patch calling test(3.14) gives this: ../../../../gcc-trunk/libphobos/libdruntime/gcc/deh.d: In function '__gdc_personality': ../../../../gcc-trunk/libphobos/libdruntime/gcc/deh.d:906:1: error: argument of type 'double' not permitted with -mgeneral-regs-only 906 | test(3.14); | ^