From b92709388b9aee52db3cd7c227818e0ecccda2e5 Mon Sep 17 00:00:00 2001 From: Andrew Stubbs Date: Wed, 29 Jan 2020 16:59:08 +0000 Subject: [PATCH] Fix conditional add LRA failure for amdgcn Fix ICE in testcase gfortran.dg/assumed_rank_bounds_3.f90. 2020-01-31 Andrew Stubbs gcc/ * config/gcn/gcn-valu.md (addv64di3_exec): Allow one '0' in each alternative only. --- gcc/ChangeLog | 5 +++++ gcc/config/gcn/gcn-valu.md | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0e99b720437..022865d005d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2020-01-31 Andrew Stubbs + + * config/gcn/gcn-valu.md (addv64di3_exec): Allow one '0' in each + alternative only. + 2020-01-31 Uroš Bizjak * config/i386/i386.md (*movoi_internal_avx): Do not check for diff --git a/gcc/config/gcn/gcn-valu.md b/gcc/config/gcn/gcn-valu.md index 4aad835b2ef..ecdd60b8190 100644 --- a/gcc/config/gcn/gcn-valu.md +++ b/gcc/config/gcn/gcn-valu.md @@ -1200,13 +1200,14 @@ (set_attr "length" "8")]) (define_insn_and_split "addv64di3_exec" - [(set (match_operand:V64DI 0 "register_operand" "= &v, &v") + [(set (match_operand:V64DI 0 "register_operand" "= &v, &v, &v") (vec_merge:V64DI (plus:V64DI - (match_operand:V64DI 1 "register_operand" "%vDb,vDb0") - (match_operand:V64DI 2 "gcn_alu_operand" "vDb0, vDb")) - (match_operand:V64DI 3 "gcn_register_or_unspec_operand" " U0, U0") - (match_operand:DI 4 "gcn_exec_reg_operand" " e, e"))) + (match_operand:V64DI 1 "register_operand" "%vDb,vDb0,vDb") + (match_operand:V64DI 2 "gcn_alu_operand" "vDb0, vDb,vDb")) + (match_operand:V64DI 3 "gcn_register_or_unspec_operand" + " U, U, 0") + (match_operand:DI 4 "gcn_exec_reg_operand" " e, e, e"))) (clobber (reg:DI VCC_REG))] "" "#" -- 2.30.2