Hi,

the test fails at -O2 because of the assertion recently added to gen_reg_rtx 
that crtl->emit.regno_pointer_align_length is non-zero.  Now the function 
expand_vec_perm_interleave_2 can be invoked at the GIMPLE level in "testing" 
mode and crtl->emit is not initialized by that time.

Tested on ia64-linux-gnu, OK for mainline and 4.9 branch?


2015-03-03  Eric Botcazou  <ebotca...@adacore.com>

        * config/ia64/ia64.c (expand_vec_perm_interleave_2): Use gen_raw_REG
        to create a register in testing mode.


-- 
Eric Botcazou
Index: config/ia64/ia64.c
===================================================================
--- config/ia64/ia64.c	(revision 221132)
+++ config/ia64/ia64.c	(working copy)
@@ -11570,7 +11570,10 @@ expand_vec_perm_interleave_2 (struct exp
       gcc_assert (e < nelt);
       dfinal.perm[i] = e;
     }
-  dfinal.op0 = gen_reg_rtx (dfinal.vmode);
+  if (d->testing_p)
+    dfinal.op0 = gen_raw_REG (dfinal.vmode, LAST_VIRTUAL_REGISTER + 1);
+  else
+    dfinal.op0 = gen_reg_rtx (dfinal.vmode);
   dfinal.op1 = dfinal.op0;
   dfinal.one_operand_p = true;
   dremap.target = dfinal.op0;

Reply via email to