]> gcc.gnu.org Git - gcc.git/commitdiff
expr.c (emit_group_load): Support CONCATs by storing them to memory and reloading.
authorJan Hubicka <jh@suse.cz>
Sun, 28 Oct 2001 16:10:12 +0000 (17:10 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sun, 28 Oct 2001 16:10:12 +0000 (16:10 +0000)
* expr.c (emit_group_load): Support CONCATs by storing them to memory
and reloading.

From-SVN: r46586

gcc/ChangeLog
gcc/expr.c

index ee0f8e613364c5a7295f2b8db9ef0c2b0eedce0d..5cb7bfd7c554ce61d2b39f133ed8c6a26a0393e0 100644 (file)
@@ -1,3 +1,8 @@
+Sun Oct 28 17:05:36 CET 2001  Jan Hubicka  <jh@suse.cz>
+
+       * expr.c (emit_group_load): Support CONCATs by storing them to memory
+       and reloading.
+
 Sun Oct 28 09:59:54 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
        * expr.c (store_constructor_field): Only call adjust_address on MEM.
index c0ddd98042ebfd158f54a64a7556323b11144c04..b5c5989991fdebe79e246a73b40be96ef36401a1 100644 (file)
@@ -2020,6 +2020,14 @@ emit_group_load (dst, orig_src, ssize, align)
          else if (bytepos == (HOST_WIDE_INT) GET_MODE_SIZE (GET_MODE (XEXP (src, 0)))
                   && bytelen == GET_MODE_SIZE (GET_MODE (XEXP (src, 1))))
            tmps[i] = XEXP (src, 1);
+         else if (bytepos == 0)
+           {
+             rtx mem;
+             mem = assign_stack_temp (GET_MODE (src),
+                                      GET_MODE_SIZE (GET_MODE (src)), 0);
+             emit_move_insn (mem, src);
+             tmps[i] = change_address (mem, mode, XEXP (mem, 0));
+           }
          else
            abort ();
        }
This page took 0.108997 seconds and 5 git commands to generate.