Ilya Leoshkevich wrote:
> gcc_assert (GET_CODE (x) != SYMBOL_REF
> - || !CONSTANT_POOL_ADDRESS_P (x));
> + || !CONSTANT_POOL_ADDRESS_P (x)
> + || s390_symbol_relative_long_p (x));
Hmm, it's a bit weird that this routine now uses a different check
than the other two. It would look more straightforward for
find_constant_pool_ref to use the same s390_safe_relative_long_p
check as the others.
(This would then also make s390_symbol_relative_long_p redundant.)
If we do that, it might even make sense to pull the
s390_safe_relative_long_p check up into the callers:
E.g. in s390_mainpool_finish, replace
/* Replace all literal pool references. */
for (rtx_insn *insn = get_insns (); insn; insn = NEXT_INSN (insn))
{
if (NONJUMP_INSN_P (insn) || CALL_P (insn))
{
with
if ((NONJUMP_INSN_P (insn) || CALL_P (insn))
&& !s390_safe_relative_long_p (insn))
(This last change is just a suggestion, only if it makes the
overall code simpler and more readable.)
Bye,
Ulrich
--
Dr. Ulrich Weigand
GNU/Linux compilers and toolchain
[email protected]