Remove creation of invalid subreg. PR 7705, 7339, 7720.
authorDale Johannesen <dalej@apple.com>
Thu, 19 Sep 2002 18:54:56 +0000 (18:54 +0000)
committerDale Johannesen <dalej@gcc.gnu.org>
Thu, 19 Sep 2002 18:54:56 +0000 (18:54 +0000)
From-SVN: r57315

gcc/ChangeLog
gcc/combine.c

index 083c12f32ac0d3fedcee4fb5ff465de2c3a1b7e1..9da276c6810a44c5dfe6aec20aab340e45b58493 100644 (file)
@@ -1,3 +1,7 @@
+2002-09-19  Dale Johannesen <dalej@apple.com>
+       * combine.c (make_extraction): Don't create
+       invalid subreg.
+
 2002-09-19  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * config/s390/s390.c (addr_generation_dependency_p): Handle SUBREG 
index e1518817ca629017f883d80ab20b76e46e461e6b..c72d81e891cc7c286bdedf4667fca7f080fa33e6 100644 (file)
@@ -6124,6 +6124,11 @@ make_extraction (mode, inner, pos, pos_rtx, len,
                final_word += (GET_MODE_SIZE (inner_mode)
                               - GET_MODE_SIZE (tmode)) % UNITS_PER_WORD;
 
+             /* Avoid creating invalid subregs, for example when
+                simplifying (x>>32)&255. */
+             if (final_word >= GET_MODE_SIZE (inner_mode))
+               return NULL_RTX;
+
              new = gen_rtx_SUBREG (tmode, inner, final_word);
            }
          else