===================================================================
@@ -23,18 +23,22 @@
#define RL78_MUL_RL78 (rl78_mul_type == MUL_RL78)
#define RL78_MUL_G13 (rl78_mul_type == MUL_G13)
-#define TARGET_CPU_CPP_BUILTINS() \
- do \
- { \
- builtin_define ("__RL78__"); \
- builtin_assert ("cpu=RL78"); \
- if (RL78_MUL_RL78) \
- builtin_define ("__RL78_MUL_RL78__"); \
- if (RL78_MUL_G13) \
- builtin_define ("__RL78_MUL_G13__"); \
- if (TARGET_G10) \
- builtin_define ("__RL78_G10__"); \
- } \
+#define TARGET_CPU_CPP_BUILTINS() \
+ do \
+ { \
+ builtin_define ("__RL78__"); \
+ builtin_assert ("cpu=RL78"); \
+ if (RL78_MUL_RL78) \
+ builtin_define ("__RL78_MUL_RL78__"); \
+ if (RL78_MUL_G13) \
+ builtin_define ("__RL78_MUL_G13__"); \
+ if (TARGET_G10) \
+ builtin_define ("__RL78_G10__"); \
+ if (TARGET_64BIT_DOUBLES) \
+ builtin_define ("__RL78_64BIT_DOUBLES__"); \
+ else \
+ builtin_define ("__RL78_32BIT_DOUBLES__"); \
+ } \
while (0)
#undef STARTFILE_SPEC
@@ -47,6 +51,8 @@
#define ASM_SPEC "\
%{mrelax:-relax} \
%{mg10} \
+%{m64bit-doubles:-m64bit-doubles} \
+%{!m64bit-doubles:-m32bit-doubles} \
"
#undef LINK_SPEC
@@ -95,7 +101,7 @@
#define LONG_LONG_TYPE_SIZE 64
#define FLOAT_TYPE_SIZE 32
-#define DOUBLE_TYPE_SIZE 32 /*64*/
+#define DOUBLE_TYPE_SIZE (TARGET_64BIT_DOUBLES ? 64 : 32)
#define LONG_DOUBLE_TYPE_SIZE 64 /*DOUBLE_TYPE_SIZE*/
#define LIBGCC2_HAS_DF_MODE 1
===================================================================
@@ -30,6 +30,14 @@
Target RejectNegative Joined Var(rl78_mul_type) Report Tolower Enum(rl78_mul_types) Init(MUL_NONE)
Select hardware or software multiplication support.
+m64bit-doubles
+Target RejectNegative Mask(64BIT_DOUBLES) Report
+Store doubles in 64 bits.
+
+m32bit-doubles
+Target RejectNegative InverseMask(64BIT_DOUBLES) Report
+Stores doubles in 32 bits. This is the default
+
Enum
Name(rl78_mul_types) Type(enum rl78_mul_types)
===================================================================
@@ -23,5 +23,5 @@
# Enable multilibs:
-MULTILIB_OPTIONS = mg10
-MULTILIB_DIRNAMES = g10
+MULTILIB_OPTIONS = mg10 m64bit-doubles
+MULTILIB_DIRNAMES = g10 64-bit-double