[PATCH] D28689: X86: Produce @ABS8 symbol modifiers for absolute symbols in range [0, 256).
Peter Collingbourne via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 31 11:39:35 PST 2017
pcc marked an inline comment as done.
pcc added inline comments.
Comment at: llvm/lib/Target/X86/X86Subtarget.cpp:100
+ // See if we can use the 8-bit immediate form.
+ if (CR->getUnsignedMax().ult(256))
+ return X86II::MO_ABS8;
> Should we treating this as an unsigned value? D28688 suggested its sign-extended
Good point. The tricky thing here is that `R_X86_64_8` is an unsigned relocation, but we're using it to relocate a sign extended operand. Probably the safest thing we can do here is to accept only the range [0,128), which I've done. If it proves necessary later, we can try to recognise patterns like `sext i64 (trunc i8 (i8* @foo))` and allow the range [-128,128).
More information about the llvm-commits