This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Candidate fix for compat/scalar-by-value-4 on ia64


Zack Weinberg wrote:
whether the patch is correct.  The special case for complex floats was
introduced by Jakub in June 2001:

Sorry about the delay. I'm still trying to catch up after taking a few weeks off over Christmas.


See
http://gcc.gnu.org/ml/gcc-patches/2001-06/msg00239.html
which explains why Jakub added the patch. It suggests either an ia64.c patch or an expr.c emit_group_load patch to fix the problem. Richard approved the ia64.c patch because it was simpler.


This patch went in shortly before the gcc-3.0 release. If I build 3.0 with those two lines disabled, I can reproduce the crash that Jakub saw. It fails exactly as he says, the dst mode doesn't match the src mode in emit_move_insn.

In current sources, it works because there is now code in emit_group_load for the CONCAT case that calls extract_bitfield, passing in the dst mode. This ends up forcing the mode of the source operand to always match the mode of the dst operand, so it no longer matters if they are different. The patch that changed this is also from Jakub, and was added 2002-03-18 for PR 5740. Deja vu. This is a very similar looking testcase and bug report to the earlier ia64 bug, though the emit_group_load patch is different this time, and he didn't suggest a sparc backend patch this time. See
http://gcc.gnu.org/ml/gcc-patches/2002-03/msg00939.html


I think it is clear from this that the earlier ia64.c change is no longer needed.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]