Questions about long long type

Ian Lance Taylor ian@airs.com
Tue Dec 6 18:46:00 GMT 2005


Eric Fisher <joefoxreal@gmail.com> writes:

> Firstly, shall I support it in the machine.md file, or just leave it to libgcc?
> Dose the libgcc support it if I don't implement in the machine.md file?

Yes, if you supply SImode operations, libgcc will give you some DImode
operations, and the others will be opencoded by the compiler.  For
example, addition is open coded, and multiplication is in libgcc.
Sometimes you can get more efficient code by putting DImode operations
in your MD file--e.g., if you have an add-with-carry instruction.

> Secondly, is the long long type equal to DImode in the 32bit machine?
> Such as adddi3, subdi3.

Normally, yes, though it is not a requirement.  You can control the
type "long long" by setting LONG_LONG_TYPE_SIZE in your CPU.h file.
The way to think about it is that "long long" is an integer type of a
certain size, typically 64 bits but it can be something else.  DImode
is always the internal representation of a 64-bit integer.  (Unless
your processor does not address memory in 8-bit units, which is very
unusual).

Ian



More information about the Gcc mailing list