aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBin Cheng <bin.cheng@arm.com>2012-01-30 16:59:14 +0000
committerJoey Ye <jye2@gcc.gnu.org>2012-01-30 16:59:14 +0000
commitab07692c1aa4eb3c0ba93efae837f665c9a41c41 (patch)
tree31d7f8ae8f6e8f9ab0bb12d7d674b11be5c17aa9 /gcc
parent3efe2bf72bfd8910fa48c957205df7f0e93060e1 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/arm/arm.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/arm/pr51835.c14
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 } } */