https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68837
--- Comment #5 from HaoChen Gui <guihaoc at gcc dot gnu.org> --- I think there are two ways avoiding sign extension for offset loading. a. Make sure all offsets be positive. There exists backward jumps as well as STC will reorder the basic block. So the offset might be negative. We can check the offsets after bb-reorder pass and remove sign extension if all offsets are positive. It may need a new pass. b. Use absolute addresses instead of offsets. It's controlled by macro CASE_VECTOR_PC_RELATIVE and flag_pic. x86 uses absolute address(labels) in their jump table, though the size of jump is bigger. Power haven't supported absolute address yet.