https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95637
--- Comment #3 from Jim Wilson <wilson at gcc dot gnu.org> --- People have asked about constant pools before, but as far as I know no one has tried to implement support for them yet. We don't have a pc-relative load, so it would be a two instruction sequence with auipc. Unless maybe you load the base address into a register, which is probably OK for rvi but may cause register pressure problems for rve. We have a 12-bit signed offset, +/-2K which limits the range we can address if you want to put the base address in a register. There could also complications with the aggressive link time code relaxations that we do, depending on where you put the constant pools and how you use them. It isn't clear if constant pools are better or worse than what we already have.