diff options
author | Bin Cheng <bin.cheng@arm.com> | 2012-01-30 16:59:14 +0000 |
---|---|---|
committer | Joey Ye <jye2@gcc.gnu.org> | 2012-01-30 16:59:14 +0000 |
commit | ab07692c1aa4eb3c0ba93efae837f665c9a41c41 (patch) | |
tree | 31d7f8ae8f6e8f9ab0bb12d7d674b11be5c17aa9 /gcc | |
parent | 3efe2bf72bfd8910fa48c957205df7f0e93060e1 (diff) | |
download | gcc-ab07692c1aa4eb3c0ba93efae837f665c9a41c41.zip gcc-ab07692c1aa4eb3c0ba93efae837f665c9a41c41.tar.gz gcc-ab07692c1aa4eb3c0ba93efae837f665c9a41c41.tar.bz2 |
re PR target/51835 (ARM EABI violation when passing arguments to helper floating functions like __aeabi_d2iz)
2012-01-30 Bin Cheng <bin.cheng@arm.com>
PR target/51835
* config/arm/arm.c (arm_libcall_uses_aapcs_base): Use correct ABI
for __aeabi_d2iz/__aeabi_d2uiz with hard-float.
testcases:
PR target/51835
* gcc.target/arm/pr51835.c: New testcase.
From-SVN: r183733
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/pr51835.c | 14 |
4 files changed, 29 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c15f4ea..526f17c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-01-30 Bin Cheng <bin.cheng@arm.com> + + PR target/51835 + * config/arm/arm.c (arm_libcall_uses_aapcs_base): Use correct ABI + for __aeabi_d2iz/__aeabi_d2uiz with hard-float. + 2012-01-30 Richard Guenther <rguenther@suse.de> PR tree-optimization/52028 diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 4a94145..e2ab102 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -3680,6 +3680,10 @@ arm_libcall_uses_aapcs_base (const_rtx libcall) add_libcall (libcall_htab, convert_optab_libfunc (trunc_optab, HFmode, SFmode)); add_libcall (libcall_htab, + convert_optab_libfunc (sfix_optab, SImode, DFmode)); + add_libcall (libcall_htab, + convert_optab_libfunc (ufix_optab, SImode, DFmode)); + add_libcall (libcall_htab, convert_optab_libfunc (sfix_optab, DImode, DFmode)); add_libcall (libcall_htab, convert_optab_libfunc (ufix_optab, DImode, DFmode)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 394f8ee..00cae86 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-01-30 Bin Cheng <bin.cheng@arm.com> + + PR target/51835 + * gcc.target/arm/pr51835.c: New testcase. + 2012-01-30 Richard Guenther <rguenther@suse.de> PR tree-optimization/52028 diff --git a/gcc/testsuite/gcc.target/arm/pr51835.c b/gcc/testsuite/gcc.target/arm/pr51835.c new file mode 100644 index 0000000..858b72f --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/pr51835.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mfloat-abi=hard -mfpu=fpv4-sp-d16" } */ +/* { dg-require-effective-target arm_thumb2_ok } */ + +int func1 (double d) +{ + return (int)d; +} +unsigned int func2 (double d) +{ + return (unsigned int)d; +} + +/* { dg-final { scan-assembler-times "fmrrd\[\\t \]+r0,\[\\t \]*r1,\[\\t \]*d0" 2 } } */ |