From cef7598c4c34922b08bab2376979bee691e26b7e Mon Sep 17 00:00:00 2001 From: Kyrylo Tkachov Date: Wed, 20 Jan 2016 17:05:43 +0000 Subject: [PATCH] [ARM] PR 67439: Allow matching of *arm32_movhf when -mrestrict-it is on Backport from mainline 2015-09-10 Kyrylo Tkachov PR target/67439 * config/arm/arm.md (*arm32_movhf): Remove !arm_restrict_it from predicate. Set predicable_short_it attr to "no". * gcc.target/arm/pr67439_1.c: New test. From-SVN: r232623 --- gcc/ChangeLog | 9 +++++++++ gcc/config/arm/arm.md | 5 +++-- gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.target/arm/pr67439_1.c | 11 +++++++++++ 4 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.target/arm/pr67439_1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f540110267c2..4635cf8d9a91 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2016-01-20 Kyrylo Tkachov + + Backport from mainline + 2015-09-10 Kyrylo Tkachov + + PR target/67439 + * config/arm/arm.md (*arm32_movhf): Remove !arm_restrict_it from + predicate. Set predicable_short_it attr to "no". + 2016-01-19 Sergei Trofimovich Backport from mainline diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 138d17e8d7de..e989b632c7d6 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -7204,7 +7204,7 @@ (define_insn "*arm32_movhf" [(set (match_operand:HF 0 "nonimmediate_operand" "=r,m,r,r") (match_operand:HF 1 "general_operand" " m,r,r,F"))] - "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_FP16) && !arm_restrict_it + "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_FP16) && ( s_register_operand (operands[0], HFmode) || s_register_operand (operands[1], HFmode))" "* @@ -7242,7 +7242,8 @@ [(set_attr "conds" "unconditional") (set_attr "type" "load1,store1,mov_reg,multiple") (set_attr "length" "4,4,4,8") - (set_attr "predicable" "yes")] + (set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no")] ) (define_insn "*thumb1_movhf" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a41384ced61d..d79c3527a84f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2016-01-20 Kyrylo Tkachov + + Backport from mainline + 2015-09-10 Kyrylo Tkachov + + PR target/67439 + * gcc.target/arm/pr67439_1.c: New test. + 2016-01-19 Sergei Trofimovich Backport from mainline diff --git a/gcc/testsuite/gcc.target/arm/pr67439_1.c b/gcc/testsuite/gcc.target/arm/pr67439_1.c new file mode 100644 index 000000000000..f7a6128758a0 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/pr67439_1.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_thumb2_ok } */ +/* { dg-options "-O1 -mfp16-format=ieee -march=armv7-a -mfpu=neon -mthumb -mrestrict-it" } */ + +__fp16 h0 = -1.0; + +void +f (__fp16 *p) +{ + h0 = 1.0; +} -- 2.47.2