]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
arm.c (arm_atomic_assign_expand_fenv): call default_atomic_assign_expand_fenv for...
authorKugan Vivekanandarajah <kuganv@linaro.org>
Tue, 17 Jun 2014 00:00:59 +0000 (00:00 +0000)
committerKugan Vivekanandarajah <kugan@gcc.gnu.org>
Tue, 17 Jun 2014 00:00:59 +0000 (00:00 +0000)
gcc/
2014-06-17  Kugan Vivekanandarajah  <kuganv@linaro.org>

* config/arm/arm.c (arm_atomic_assign_expand_fenv): call
default_atomic_assign_expand_fenv for !TARGET_HARD_FLOAT.
(arm_init_builtins) : Initialize builtins __builtins_arm_set_fpscr and
__builtins_arm_get_fpscr only when TARGET_HARD_FLOAT.
* config/arm/vfp.md (set_fpscr): Make pattern conditional on
TARGET_HARD_FLOAT.
(get_fpscr) : Likewise.

From-SVN: r211717

gcc/ChangeLog
gcc/config/arm/arm.c
gcc/config/arm/vfp.md

index dc0926a002818f45700c1a5cbfd8d62eb34f5303..676621e85cf0347719e5ca68d90479d3b8837dc5 100644 (file)
@@ -1,3 +1,13 @@
+2014-06-17  Kugan Vivekanandarajah  <kuganv@linaro.org>
+
+       * config/arm/arm.c (arm_atomic_assign_expand_fenv): call
+       default_atomic_assign_expand_fenv for !TARGET_HARD_FLOAT.
+       (arm_init_builtins) : Initialize builtins __builtins_arm_set_fpscr and
+       __builtins_arm_get_fpscr only when TARGET_HARD_FLOAT.
+       * config/arm/vfp.md (set_fpscr): Make pattern conditional on
+       TARGET_HARD_FLOAT.
+       (get_fpscr) : Likewise.
+
 2014-06-16  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR rtl-optimization/61325
index c68d888028fe2a3f3c5b212e2c4ee8c6bcc6b3e2..85d2114826c8c57c12192a4167d89766e608ad6b 100644 (file)
@@ -24762,7 +24762,7 @@ arm_init_builtins (void)
   if (TARGET_CRC32)
     arm_init_crc32_builtins ();
 
-  if (TARGET_VFP)
+  if (TARGET_VFP && TARGET_HARD_FLOAT)
     {
       tree ftype_set_fpscr
        = build_function_type_list (void_type_node, unsigned_type_node, NULL);
@@ -31454,8 +31454,8 @@ arm_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
   tree new_fenv_var, reload_fenv, restore_fnenv;
   tree update_call, atomic_feraiseexcept, hold_fnclex;
 
-  if (!TARGET_VFP)
-    return;
+  if (!TARGET_VFP || !TARGET_HARD_FLOAT)
+    return default_atomic_assign_expand_fenv (hold, clear, update);
 
   /* Generate the equivalent of :
        unsigned int fenv_var;
index a8b27bcf986868fdac1b825907f8c5384e7c1c79..9962bd3ba9786a64bfabbafa89f2071626bf4c1a 100644 (file)
 ;; Write Floating-point Status and Control Register.
 (define_insn "set_fpscr"
   [(unspec_volatile [(match_operand:SI 0 "register_operand" "r")] VUNSPEC_SET_FPSCR)]
-  "TARGET_VFP"
+  "TARGET_VFP && TARGET_HARD_FLOAT"
   "mcr\\tp10, 7, %0, cr1, cr0, 0\\t @SET_FPSCR"
   [(set_attr "type" "mrs")])
 
 (define_insn "get_fpscr"
   [(set (match_operand:SI 0 "register_operand" "=r")
         (unspec_volatile:SI [(const_int 0)] VUNSPEC_GET_FPSCR))]
-  "TARGET_VFP"
+  "TARGET_VFP && TARGET_HARD_FLOAT"
   "mrc\\tp10, 7, %0, cr1, cr0, 0\\t @GET_FPSCR"
   [(set_attr "type" "mrs")])