This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/13497] g++ 3.3.2: Internal compiler error in IA64 HP-UX System
- From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 27 Dec 2003 20:14:24 -0000
- Subject: [Bug target/13497] g++ 3.3.2: Internal compiler error in IA64 HP-UX System
- References: <20031227173519.13497.basilio@udc.es>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From pinskia at gcc dot gnu dot org 2003-12-27 20:14 -------
Yes this is a target problem:
#0 fancy_abort (file=0x47d774 "../../gcc/emit-rtl.c", line=794, function=0x4a6524
"gen_reg_rtx") at ../../gcc/diagnostic.c:1376
#1 0x00193394 in gen_reg_rtx (mode=DImode) at ../../gcc/emit-rtl.c:794
#2 0x001df7b4 in ia64_expand_load_address (dest=0x2ed1618, src=0x2ad1910,
scratch=0x0) at ../../gcc/config/ia64/ia64.c:1055 <--- here
/* The destination could be a MEM during initial rtl generation,
which isn't a valid destination for the PIC load address patterns. */
if (! register_operand (dest, DImode))
if (! scratch || ! register_operand (scratch, DImode))
temp = gen_reg_rtx (DImode); <--- here.
else
temp = scratch;
else
temp = dest;
This can not happen on the mainline because it does not use gen_reg_rtx at all:
/* ILP32 mode still loads 64-bits of data from the GOT. This avoids
having to pointer-extend the value afterward. Other forms of address
computation below are also more natural to compute as 64-bit quantities.
If we've been given an SImode destination register, change it. */
if (GET_MODE (dest) != Pmode)
dest = gen_rtx_REG (Pmode, REGNO (dest));
So this is fixed on the mainline.
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |FIXED
Target Milestone|--- |3.4.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13497