On Wed, 24 Sep 2014, Joseph S. Myers wrote: > > > * config/rs6000/e500.h (HARD_REGNO_CALLER_SAVE_MODE): Remove > > > macro. > > > * config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Handle > > > TARGET_E500_DOUBLE case here. > > > > This patch is okay. The repeated testing of E500 seems like it could > > have been refactored. The macro is becoming a little overly > > complicated as a CASE statement.
I tried avoiding obfuscation, but I agree there's potential for improvement here. I have committed the change now, thanks for your review. > > Are you avoiding the special cases for TFmode and TDmode on e500 for a > > specific reason or simply matching current behavior? I just wanted to fix the rather grave and obscure configuration-induced ABI discrepancy bug and otherwise preserved the current behaviour. > I don't know what's right in the context of the present patch, but the > general principle for e500 is that TDmode is much like TImode and DDmode > is much like DImode, but TFmode is much like two of DFmode; that was what > I concluded when making DFP work for e500 > <https://gcc.gnu.org/ml/gcc-patches/2008-06/msg00270.html>. Joseph, thanks for your input, my understanding of the subtleties of the Power ABI is still lacking. Maciej