From: Kugan Vivekanandarajah Date: Tue, 17 Jun 2014 00:00:59 +0000 (+0000) Subject: arm.c (arm_atomic_assign_expand_fenv): call default_atomic_assign_expand_fenv for... X-Git-Tag: releases/gcc-5.1.0~6837 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5db3787171aacab1d1ced94208645a210c5cd515;p=thirdparty%2Fgcc.git arm.c (arm_atomic_assign_expand_fenv): call default_atomic_assign_expand_fenv for !TARGET_HARD_FLOAT. gcc/ 2014-06-17 Kugan Vivekanandarajah * 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dc0926a00281..676621e85cf0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2014-06-17 Kugan Vivekanandarajah + + * 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 PR rtl-optimization/61325 diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index c68d888028fe..85d2114826c8 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -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; diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md index a8b27bcf9868..9962bd3ba978 100644 --- a/gcc/config/arm/vfp.md +++ b/gcc/config/arm/vfp.md @@ -1325,7 +1325,7 @@ ;; 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")]) @@ -1333,7 +1333,7 @@ (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")])