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.

Reply via email to