From: Michael Meissner Date: Mon, 25 Jun 2018 23:28:27 +0000 (+0000) Subject: backport: re PR target/85424 (The __builtin_packlongdouble function might have issues... X-Git-Tag: releases/gcc-7.4.0~311 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=efd36869c5c16991fc35b7d0e2c816dd067d85c4;p=thirdparty%2Fgcc.git backport: re PR target/85424 (The __builtin_packlongdouble function might have issues with the output overlapping the inputs) 2018-06-25 Michael Meissner Back port from trunk 2018-04-17 Michael Meissner PR target/85424 * config/rs6000/rs6000.md (pack): Do not try handle a pack where the inputs overlap with the output. From-SVN: r262122 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0249c09b260d..e6f90dae8190 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2018-06-25 Michael Meissner + + Back port from trunk + 2018-04-17 Michael Meissner + + PR target/85424 + * config/rs6000/rs6000.md (pack): Do not try handle a pack + where the inputs overlap with the output. + 2018-06-25 Jakub Jelinek PR target/84786 diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index ca7c04e275a9..4428a1e29442 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -14463,16 +14463,14 @@ (set_attr "length" "4")]) (define_insn_and_split "pack" - [(set (match_operand:FMOVE128 0 "register_operand" "=d,&d") + [(set (match_operand:FMOVE128 0 "register_operand" "=&d") (unspec:FMOVE128 - [(match_operand: 1 "register_operand" "0,d") - (match_operand: 2 "register_operand" "d,d")] + [(match_operand: 1 "register_operand" "d") + (match_operand: 2 "register_operand" "d")] UNSPEC_PACK_128BIT))] "FLOAT128_2REG_P (mode)" - "@ - fmr %L0,%2 - #" - "&& reload_completed && REGNO (operands[0]) != REGNO (operands[1])" + "#" + "&& reload_completed" [(set (match_dup 3) (match_dup 1)) (set (match_dup 4) (match_dup 2))] { @@ -14485,8 +14483,8 @@ operands[3] = gen_rtx_REG (mode, dest_hi); operands[4] = gen_rtx_REG (mode, dest_lo); } - [(set_attr "type" "fpsimple,fp") - (set_attr "length" "4,8")]) + [(set_attr "type" "fp") + (set_attr "length" "8")]) (define_insn "unpack" [(set (match_operand:DI 0 "register_operand" "=d,d")