I'm working with a target that has 32-bit word addressing, so there is a define of BITS_PER_UNIT = 32.
This causes a problem: an error saying that there is no emulation for 'DI'. DImode has a precision of 128 bits, which is clearly incorrect. (All the other integer modes were incorrect as well.) DI is defined in machmode.def as INT_MODE (DI, 8). This is sort-of correct, DI is an 8 byte or 2 word value. When this is used to generate insn-modes.c, its size is generated as 8*BITS_PER_UNIT, not 2*BITS_PER_UNIT, because, it seems, genmodes assumes that size in bits is is bytesize*BITS_PER_UNIT. In emit_mode_precision() in genmodes.c the assumption is pretty clear. I built the c4x target, since that's the only example of a target with BITS_PER_UNIT set. It looks like this target is defunct and slated for removal. It gets the same error. If BITS_PER_UNIT should alway be bytesize, then it seems unnecessary to have the definition of BITS_PER_UNIT. Or it looks like genmodes.c needs to have another define, BYTES_PER_UNIT, so that it can correctly convert from bytesize to the number of units for the target. Or the definition of integer sizes should be directly in bits, without any reference to bytesize. Is there a different way to define word-addressed targets? Or should I just pretend it has byte addressing? -- Michael Eager [EMAIL PROTECTED] 1960 Park Blvd., Palo Alto, CA 94306 650-325-8077