The default for the kernel is soft-float, however a user writing a kernel extension might want to make use of hard float. This change makes " -mkernel -mhard-float " work as expected.
tested on powerpc-darwin9 applied to mainline thanks Iain 2019-06-27 Iain Sandoe <i...@sandoe.co.uk> * config/rs6000/rs6000.c (darwin_rs6000_override_options): Honour user-specified float mode choice for kernel mode code. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index fbff6bd..5e80673 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -3430,7 +3430,10 @@ darwin_rs6000_override_options (void) if (flag_mkernel) { rs6000_default_long_calls = 1; - rs6000_isa_flags |= OPTION_MASK_SOFT_FLOAT; + + /* Allow a kext author to do -mkernel -mhard-float. */ + if (! (rs6000_isa_flags_explicit & OPTION_MASK_SOFT_FLOAT)) + rs6000_isa_flags |= OPTION_MASK_SOFT_FLOAT; } /* Make -m64 imply -maltivec. Darwin's 64-bit ABI includes