OSDN Git Service

2012-01-30 Bin Cheng <bin.cheng@arm.com>
authorjye2 <jye2@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Jan 2012 17:22:04 +0000 (17:22 +0000)
committerjye2 <jye2@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Jan 2012 17:22:04 +0000 (17:22 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@183734 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/arm/arm.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/pr51835.c [new file with mode: 0644]

index f0dafc3..08602c5 100644 (file)
@@ -1,3 +1,12 @@
+2012-01-30  Bin Cheng  <bin.cheng@arm.com>
+
+       Backport from mainline.
+       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  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
 
        Backport from mainline.
index 9058c31..54b7603 100644 (file)
@@ -3570,6 +3570,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));
index 82c0a6b..ae16f72 100644 (file)
@@ -1,3 +1,11 @@
+2012-01-30  Bin Cheng  <bin.cheng@arm.com>
+
+       Backport from mainline.
+       2012-01-30  Bin Cheng  <bin.cheng@arm.com>
+
+       PR target/51835
+       * gcc.target/arm/pr51835.c: New testcase.
+
 2012-01-28  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/52022
diff --git a/gcc/testsuite/gcc.target/arm/pr51835.c b/gcc/testsuite/gcc.target/arm/pr51835.c
new file mode 100644 (file)
index 0000000..858b72f
--- /dev/null
@@ -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 } } */