This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/16364] New: IA-64 long double/union argument causes ICE
- From: "wilson at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 5 Jul 2004 02:12:54 -0000
- Subject: [Bug target/16364] New: IA-64 long double/union argument causes ICE
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
A testcase that passes an argument consisting of a union with a single long
double field gets an ICE. The union has size 16 and mode TImode. The ABI says
that this is an HFA which must be passed in an FP register. The FP regs can
hold at most XFmode. So we end up with a TImode move into/out of an FP reg
which generates an unrecognizable insn.
Defining MEMBER_TYPE_FORCES_BLK does not help. We don't get an abort, but we
end up with block moves into/out of the FP regs which use DImode, and hence
require two FP regs which is wrong. The union fits in one FP reg as XFmode, and
requires an XFmode load/store instruction to move it between FP regs and memory.
--
Summary: IA-64 long double/union argument causes ICE
Product: gcc
Version: 3.5.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: target
AssignedTo: wilson at gcc dot gnu dot org
ReportedBy: wilson at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC host triplet: ia64-unknown-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16364