This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/15191] -maltivec -mabi=no-altivec results in mis-aligned lvx and stvx
- From: "amodra at bigpond dot net dot au" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 11 May 2004 04:03:51 -0000
- Subject: [Bug target/15191] -maltivec -mabi=no-altivec results in mis-aligned lvx and stvx
- References: <20040428144427.15191.amodra@bigpond.net.au>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From amodra at bigpond dot net dot au 2004-05-11 04:03 -------
Changes by: amodra@gcc.gnu.org 2004-05-07 02:01:13
Modified files:
gcc : ChangeLog
gcc/config/rs6000: rs6000.h sysv4.h
Log message:
* config/rs6000/rs6000.h (STACK_BOUNDARY): Use 128 bit for either
TARGET_ALTIVEC or TARGET_ALTIVEC_ABI.
* config/rs6000/sysv4.h (ABI_STACK_BOUNDARY): Likewise.
(STACK_BOUNDARY): Delete.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.3591&r2=2.3592
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/rs6000/rs6000.h.diff?cvsroot=gcc&r1=1.321&r2=1.322
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/rs6000/sysv4.h.diff?cvsroot=gcc&r1=1.148&r2=1.149
Changes by: amodra@gcc.gnu.org 2004-05-09 23:48:38
Modified files:
gcc : ChangeLog
gcc/config/rs6000: rs6000.c
Log message:
* config/rs6000/rs6000.c (function_arg_boundary): Align for ABI_V4
when size is 8 bytes.
(function_arg_advance): Account for stack space used by AltiVec
args when -mabi=altivec. Simplify alignment calculations. For
ABI_V4, pass AltiVec vectors by reference when -mabi=no-altivec.
(function_arg): Similarly.
(function_arg_pass_by_reference): True for ABI_V4 AltiVec when
not AltiVec ABI.
(rs6000_va_arg): Correct fp arg test. Adjust for AltiVec change.
Correct alignment, and align before testing reg count. Remove
TREE_THIS_VOLATILE from reg. Don't emit unused labels.
(rs6000_complex_function_value): Check TARGET_HARD_FLOAT and
TARGET_FPRS here..
(rs6000_function_value): .. not here before call.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.3613&r2=2.3614
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/rs6000/rs6000.c.diff?cvsroot=gcc&r1=1.637&r2=1.638
Changes by: amodra@gcc.gnu.org 2004-05-10 14:26:51
Modified files:
gcc : ChangeLog
gcc/config/rs6000: rs6000.c
Log message:
* config/rs6000/rs6000.c (function_arg_boundary): Always align
AltiVec vectors.
(function_arg_advance): Pass TARGET_32BIT -mabi=no-altivec AltiVec
vectors by refererence. Align the same for TARGET_64BIT to a 16
byte boundary. Remove useless code. Add function comment.
(function_arg): Similarly. Move gpr rs6000_mixed_function_arg
call to where it belongs.
(function_arg_partial_nregs): Return true for all TARGET_32BIT
-mabi=no-altivec AltiVec vectors. Fix debug output.
(rs6000_va_arg): Adjust for AltiVec change.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.3615&r2=2.3616
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/rs6000/rs6000.c.diff?cvsroot=gcc&r1=1.638&r2=1.639
Branch: hammer-3_3-branch
Changes by: amodra@gcc.gnu.org 2004-05-11 02:21:19
Modified files:
gcc : ChangeLog.hammer
gcc/config/rs6000: rs6000.c rs6000.h sysv4.h
Log message:
Backport from mainline.
2004-05-10 Alan Modra <amodra@bigpond.net.au>
* config/rs6000/rs6000.c (function_arg_boundary): Always align
AltiVec vectors.
(function_arg_advance): Pass TARGET_32BIT -mabi=no-altivec AltiVec
vectors by refererence. Align the same for TARGET_64BIT to a 16
byte boundary. Remove useless code. Add function comment.
(function_arg): Similarly. Move gpr rs6000_mixed_function_arg
call to where it belongs.
(function_arg_partial_nregs): Return true for all TARGET_32BIT
-mabi=no-altivec AltiVec vectors. Fix debug output.
(rs6000_va_arg): Adjust for AltiVec change.
2004-05-10 Alan Modra <amodra@bigpond.net.au>
* config/rs6000/rs6000.c (function_arg_boundary): Align for ABI_V4
when size is 8 bytes.
(function_arg_advance): Account for stack space used by AltiVec
args when -mabi=altivec. Simplify alignment calculations. For
ABI_V4, pass AltiVec vectors by reference when -mabi=no-altivec.
(function_arg): Similarly.
(function_arg_pass_by_reference): True for ABI_V4 AltiVec when
not AltiVec ABI.
(rs6000_va_arg): Correct fp arg test. Adjust for AltiVec change.
Correct alignment, and align before testing reg count. Remove
TREE_THIS_VOLATILE from reg. Don't emit unused labels.
(rs6000_complex_function_value): Check TARGET_HARD_FLOAT and
TARGET_FPRS here..
(rs6000_function_value): .. not here before call.
2004-05-07 Alan Modra <amodra@bigpond.net.au>
* config/rs6000/rs6000.h (STACK_BOUNDARY): Use 128 bit for either
TARGET_ALTIVEC or TARGET_ALTIVEC_ABI.
* config/rs6000/sysv4.h (ABI_STACK_BOUNDARY): Likewise.
(STACK_BOUNDARY): Delete.
2004-05-07 Fariborz Jahanian <fjahanian@apple.com>
* config/rs6000/rs6000.c (rs6000_mixed_function_arg): Generate
appropriate parallels for vector arguments passed to vararg functions.
(function_arg): Make the call to rs6000_mixed_function_arg for
vector args as needed.
2004-02-23 Fariborz Jahanian <fjahanian@apple.com>
* config/rs6000/rs6000.c (function_arg): Call to
rs6000_mixed_function_arg for DFmode moved to allow
normal DFmode incoming register assignment.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.hammer.diff?cvsroot=gcc&only_with_tag=hammer-3_3-branch&r1=1.1.2.398&r2=1.1.2.399
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/rs6000/rs6000.c.diff?cvsroot=gcc&only_with_tag=hammer-3_3-branch&r1=1.397.2.38&r2=1.397.2.39
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/rs6000/rs6000.h.diff?cvsroot=gcc&only_with_tag=hammer-3_3-branch&r1=1.234.2.25&r2=1.234.2.26
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/rs6000/sysv4.h.diff?cvsroot=gcc&only_with_tag=hammer-3_3-branch&r1=1.113.2.11&r2=1.113.2.12
--
What |Removed |Added
----------------------------------------------------------------------------
Known to fail| |3.4.0
Known to work| |3.5.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15191