e500.h (HARD_REGNO_CALLER_SAVE_MODE): Remove macro.
authorMaciej W. Rozycki <macro@codesourcery.com>
Fri, 3 Oct 2014 20:15:29 +0000 (20:15 +0000)
committerMaciej W. Rozycki <macro@gcc.gnu.org>
Fri, 3 Oct 2014 20:15:29 +0000 (20:15 +0000)
* 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.

From-SVN: r215875

gcc/ChangeLog
gcc/config/rs6000/e500.h
gcc/config/rs6000/rs6000.h

index 8c96f52..e3d54cd 100644 (file)
@@ -1,3 +1,10 @@
+2014-10-03  Maciej W. Rozycki  <macro@codesourcery.com>
+
+       * 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.
+
 2014-10-03  Marc Glisse  <marc.glisse@inria.fr>
 
        PR c++/54427
index 2fd1d12..d97dabc 100644 (file)
          error ("E500 and FPRs not supported");                        \
       }                                                                        \
   } while (0)
-
-/* Override rs6000.h definition.  */
-#undef HARD_REGNO_CALLER_SAVE_MODE
-/* When setting up caller-save slots (MODE == VOIDmode) ensure we
-   allocate space for DFmode.  Save gprs in the correct mode too.  */
-#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \
-  (TARGET_E500_DOUBLE && ((MODE) == VOIDmode || (MODE) == DFmode)      \
-   ? DFmode                                                            \
-   : choose_hard_reg_mode ((REGNO), (NREGS), false))
index 1fd4f2a..01699f7 100644 (file)
@@ -1178,9 +1178,11 @@ enum data_align { align_abi, align_opt, align_both };
    && ((MODE) == VOIDmode || ALTIVEC_OR_VSX_VECTOR_MODE (MODE))                \
    && FP_REGNO_P (REGNO)                                               \
    ? V2DFmode                                                          \
-   : ((MODE) == TFmode && FP_REGNO_P (REGNO))                          \
+   : TARGET_E500_DOUBLE && ((MODE) == VOIDmode || (MODE) == DFmode)    \
    ? DFmode                                                            \
-   : ((MODE) == TDmode && FP_REGNO_P (REGNO))                          \
+   : !TARGET_E500_DOUBLE && (MODE) == TFmode && FP_REGNO_P (REGNO)     \
+   ? DFmode                                                            \
+   : !TARGET_E500_DOUBLE && (MODE) == TDmode && FP_REGNO_P (REGNO)     \
    ? DImode                                                            \
    : choose_hard_reg_mode ((REGNO), (NREGS), false))