This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: 3.3: IA64 bug fixes
Andreas Schwab <schwab@suse.de> writes:
> "Zack Weinberg" <zack@codesourcery.com> writes:
>
>> Gabriel Dos Reis <gdr@integrable-solutions.net> writes:
>>
>>> | OK for 3.3 branch?
>>>
>>> Yes.
>>
>> Thanks. Checked in now.
>
> Breaks ia64-linux:
>
> libbackend.a(ia64.o)(.text+0x7d02): In function `ia64_expand_call':
> ../../gcc/config/ia64/ia64.c:1434: undefined reference to `convert_memory_address'
Ugh, POINTERS_EXTEND_UNSIGNED. Please try this patch.
zw
* config/ia64/ia64.c (ia64_expand_call): Can't use
convert_memory_address if POINTERS_EXTEND_UNSIGNED is not defined.
===================================================================
Index: config/ia64/ia64.c
--- config/ia64/ia64.c 16 Dec 2003 23:55:18 -0000 1.198.2.18
+++ config/ia64/ia64.c 17 Dec 2003 17:46:05 -0000
@@ -1431,7 +1431,11 @@ ia64_expand_call (retval, addr, nextarg,
rtx insn, b0;
addr = XEXP (addr, 0);
+#ifdef POINTERS_EXTEND_UNSIGNED
addr = convert_memory_address (DImode, addr);
+#else
+ addr = convert_to_mode (DImode, addr, /*unsignedp=*/0);
+#endif
b0 = gen_rtx_REG (DImode, R_BR (0));
/* ??? Should do this for functions known to bind local too. */