If a target (rl78-elf in my case) has a named address space larger than the generic address space (__far in my case), why is pointer math in that named address space still truncated to sizetype?
N1275 recognizes that named address spaces might be a different size than the generic address space, but I didn't see anything that required such truncation. volatile char __far * ptr1; volatile char __far * ptr2; uint32_t sival; foo() { ptr2 = ptr1 + sival; } foo () { volatile <address-space-2> char * ptr2.5; sizetype D.2252; long unsigned int sival.4; volatile <address-space-2> char * ptr1.3; sizetype _3; ;; basic block 2, loop depth 0 ;; pred: ENTRY ptr1.3_1 = ptr1; sival.4_2 = sival; _3 = (sizetype) sival.4_2; <------- why this truncation? ptr2.5_4 = ptr1.3_1 + _3; ptr2 = ptr2.5_4; return; ;; succ: EXIT }