OSDN Git Service

PR middle-end/26977
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 2 Apr 2006 22:23:44 +0000 (22:23 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 2 Apr 2006 22:23:44 +0000 (22:23 +0000)
* expr.c (emit_group_store): Check whether simplify_gen_subreg returns
NULL_RTX, indicating it couldn't create a valid paradoxical subreg.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112626 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/expr.c

index 213b2a5..c9f4902 100644 (file)
@@ -1,3 +1,9 @@
+2006-04-02  Roger Sayle  <roger@eyesopen.com>
+
+       PR middle-end/26977
+       * expr.c (emit_group_store): Check whether simplify_gen_subreg returns
+       NULL_RTX, indicating it couldn't create a valid paradoxical subreg.
+
 2006-04-02  Sebastian Pop  <pop@cri.ensmp.fr>
 
        PR tree-optimization/26939
index 324a427..81cac76 100644 (file)
@@ -1945,9 +1945,12 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED, int ssize)
            {
              temp = simplify_gen_subreg (outer, tmps[start],
                                          inner, bytepos);
-             emit_move_insn (dst, temp);
-             done = true;
-             start++;
+             if (temp)
+               {
+                 emit_move_insn (dst, temp);
+                 done = true;
+                 start++;
+               }
            }
        }
 
@@ -1961,9 +1964,12 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED, int ssize)
            {
              temp = simplify_gen_subreg (outer, tmps[finish - 1],
                                          inner, bytepos);
-             emit_move_insn (dst, temp);
-             done = true;
-             finish--;
+             if (temp)
+               {
+                 emit_move_insn (dst, temp);
+                 done = true;
+                 finish--;
+               }
            }
        }