For some targets, the best place to put read-only lookup tables as generated by -ftree-switch-conversion is not the generic address space but some target specific address space.
This is the case for AVR, where for most devices .rodata must be located in RAM. Part #1 adds a new, optional target hook that queries the back-end about the desired address space. There is currently only one user: tree-switch-conversion.c::build_one_array() which re-builds value_type and array_type if the address space returned by the backend is not the generic one. Part #2 is the AVR part that implements the new hook and adds some sugar around it.