[Bug target/59780] ICE in aarch64_split_128bit_move

vries at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Jan 12 20:14:00 GMT 2014


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59780

--- Comment #1 from vries at gcc dot gnu.org ---
I'm using this as workaround for the moment:
...
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 3b1f6b5..2c75c1c 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -685,7 +685,7 @@ aarch64_split_128bit_move (rtx dst, rtx src)

   enum machine_mode src_mode = GET_MODE (src);
   enum machine_mode dst_mode = GET_MODE (dst);
-  int src_regno = REGNO (src);
+  int src_regno;
   int dst_regno = REGNO (dst);

   gcc_assert (dst_mode == TImode || dst_mode == TFmode);
@@ -693,6 +693,7 @@ aarch64_split_128bit_move (rtx dst, rtx src)
   if (REG_P (dst) && REG_P (src))
     {
       gcc_assert (src_mode == TImode || src_mode == TFmode);
+      src_regno = REGNO (src);

       /* Handle r -> w, w -> r.  */
       if (FP_REGNUM_P (dst_regno) && GP_REGNUM_P (src_regno))
@@ -754,6 +755,7 @@ aarch64_split_128bit_move (rtx dst, rtx src)
       }
     return;
   case TFmode:
+    src_regno = REGNO (src);
     emit_move_insn (gen_rtx_REG (DFmode, dst_regno),
                    gen_rtx_REG (DFmode, src_regno));
     emit_move_insn (gen_rtx_REG (DFmode, dst_regno + 1),
...



More information about the Gcc-bugs mailing list