On Wed, Nov 23, 2016 at 12:13:23PM -0600, Peter Bergner wrote: > --- gcc/config/rs6000/rs6000.h (revision 241976) > +++ gcc/config/rs6000/rs6000.h (working copy) > @@ -1279,9 +1279,11 @@ enum data_align { align_abi, align_opt, > enough space to account for vectors in FP regs. However, TFmode/TDmode > should not use VSX instructions to do a caller save. */ > #define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) > \ > - (TARGET_VSX > \ > - && ((MODE) == VOIDmode || ALTIVEC_OR_VSX_VECTOR_MODE (MODE)) > \ > - && FP_REGNO_P (REGNO) \ > + (NREGS <= rs6000_hard_regno_nregs[MODE][REGNO] \ > + ? MODE \
Please put parens around NREGS and that last MODE. > --- gcc/testsuite/gcc.target/powerpc/pr78458.c (revision 0) > +++ gcc/testsuite/gcc.target/powerpc/pr78458.c (working copy) > @@ -0,0 +1,15 @@ > +/* { dg-do compile } */ > +/* { dg-options "-mcpu=8548 -mspe -mabi=spe -mlra" } */ > +/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } > } */ You don't need the default arguments, FWIW. Okay for trunk. Thanks! Segher