This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/36701] [4.4 Regression] unaligned access in gcc.c-torture/execute/complex-7.c
- From: "hjl dot tools at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 8 Jul 2008 01:19:41 -0000
- Subject: [Bug target/36701] [4.4 Regression] unaligned access in gcc.c-torture/execute/complex-7.c
- References: <bug-36701-682@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #8 from hjl dot tools at gmail dot com 2008-07-08 01:19 -------
HFA stands for homogeneous floating point aggregates as specified in
IA-64 Software Conventions and Runtime Architecture Guide. To pass
complex float, if we run out of available FP argument registers,
we will pass it in GP register. For a simple testcase:
---
extern _Complex float f5;
int
check_float (int a, _Complex float a1, _Complex float a2,
_Complex float a3, _Complex float a4, _Complex float a5)
{
return (a5 != f5);
}
---
(gdb) call debug_rtx (entry_parm)
(parallel:SC [
(expr_list:REG_DEP_TRUE (reg:DI 117 in5 [ a5 ])
(const_int 0 [0x0]))
])
Here DI is 64bit with 8byte alignment.
rtx parmreg = gen_reg_rtx (GET_MODE (entry_parm));
turns it into
(concat:SC (reg:SF 380)
(reg:SF 381))
It has 4 byte alignment.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36701