On 26 January 2013 17:53, Johannes Pfau <notifications@github.com> wrote:

> In gcc/d/patches/patch-gcc-4.8.x:
>
> > ++          builtin_define("MIPS_EABI");          \
> > ++          break;                                \
> > ++                                                \
> > ++        default:                                \
> > ++          gcc_unreachable();                    \
> > ++        }                                       \
> > ++                                                \
> > ++      if (TARGET_NO_FLOAT)                      \
> > ++        builtin_define("MIPS_NoFloat");         \
> > ++      else if (TARGET_HARD_FLOAT_ABI)           \
> > ++        builtin_define("MIPS_HardFloat");       \
> > ++      else                                      \
> > ++        builtin_define("MIPS_SoftFloat");       \
> > ++    }                                           \
> > ++  while (0)
> > ++
>
> OK. Your definition of D_LP64 is correct, it seems
> http://dlang.org/version.html is misleading here(it only talks about
> 64bit pointers). So D currently doesn't have a version which only says
> pointers are 64bit, but I guess people can always use void*.sizeof.
>
> Are you sure that BYTES_BIG_ENDIAN is always valid? There's this in
> rs6000/rs6000.h:
>
> /* This is used by rs6000_cpu_cpp_builtins to indicate the byte order
>    we're compiling for.  Some configurations may need to override it.  */
> #define RS6000_CPU_CPP_ENDIAN_BUILTINS()    \
>       if (BYTES_BIG_ENDIAN)         \
>     {                   \
>       builtin_define ("__BIG_ENDIAN__");    \
> [...]
>
> I'm not sure what this means though.
>


Yes it is always valid. :)

BYTES_BIG_ENDIAN is defined as 1 in rs6000.h.  If the target platform is
sysv4, then this gets overridden and defined as TARGET_BIG_ENDIAN in
sysv4.h.  Sysv4 also has the command-line option -mlittle-endian.  Which
makes BYTES_BIG_ENDIAN == false.



-- 
Iain Buclaw

*(p < e ? p++ : p) = (c & 0x0f) + '0';