From 6c18efd4e20b8af2e625334c6d58e12decebf62b Mon Sep 17 00:00:00 2001
From: Matthew Fortune <matthew.fortune@imgtec.com>
Date: Thu, 30 Mar 2017 22:47:38 +0000
Subject: [PATCH] Fix ICE when expanding MSA constant vectors with replicated
 values

gcc/
	* config/mips/mips.c (mips_expand_vector_init): Create
	a const_vector to initialise a vector register instead of
	using a const_int.

From-SVN: r246601
---
 gcc/ChangeLog          | 6 ++++++
 gcc/config/mips/mips.c | 5 +++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 18effd76ad6d..6eb56f5db7cb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-03-30  Matthew Fortune  <matthew.fortune@imgtec.com>
+
+	* config/mips/mips.c (mips_expand_vector_init): Create a const_vector
+	to initialise a vector register instead
+	of using a const_int.
+
 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
 
 	PR translation/80189
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index d1deb523a1e9..dadfcc431fe1 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -21757,11 +21757,12 @@ mips_expand_vector_init (rtx target, rtx vals)
 		case V8HImode:
 		case V4SImode:
 		case V2DImode:
-		  emit_move_insn (target, same);
+		  temp = gen_rtx_CONST_VECTOR (vmode, XVEC (vals, 0));
+		  emit_move_insn (target, temp);
 		  return;
 
 		default:
-		  break;
+		  gcc_unreachable ();
 		}
 	    }
 	  temp = gen_reg_rtx (imode);
-- 
GitLab