The m32c-elf port uses PSImode for pointers, which, for m32c (vs m16c) only have 24 bits of precision in a 32 bit word. The address registers are 24 bit unsigned registers.
The "-1" sentinal used for CTOR_LIST is not a representable address, and the code gcc ends up using compares 0xffffffff (the -1) with 0x00ffffff (what ends up in $a0) and it doesn't match. Suggestions?