final.c (final): Detect out of bounds array access to the insn_lengths array.
authorJeffrey A Law <law@cygnus.com>
Fri, 7 Jul 2000 13:48:38 +0000 (13:48 +0000)
committerJeff Law <law@gcc.gnu.org>
Fri, 7 Jul 2000 13:48:38 +0000 (07:48 -0600)
        * final.c (final): Detect out of bounds array access to
        the insn_lengths array.

From-SVN: r34901

gcc/ChangeLog
gcc/final.c

index 5b94eb019582250596c35b5b970515b6269ea52a..71e99330c0bc6c623cd981d0761747a8fd5eb536 100644 (file)
@@ -1,3 +1,8 @@
+Fri Jul  7 07:47:35 2000  Jeffrey A Law  (law@cygnus.com)
+
+       * final.c (final): Detect out of bounds array access to
+       the insn_lengths array.
+
 2000-07-07  Kazu Hirata  <kazu@hxi.com>
 
        * fold-const.c (fold): Fix a comment typo.
index 35782db678d15ddae452fae557edf519d2b9284a..3537bcf431a23b82cac4591c5dc13b30d0b71c94 100644 (file)
@@ -2014,6 +2014,12 @@ final (first, file, optimize, prescan)
   for (insn = NEXT_INSN (first); insn;)
     {
 #ifdef HAVE_ATTR_length
+#ifdef ENABLE_CHECKING
+      /* This can be triggered by bugs elsewhere in the compiler if
+        new insns are created after init_insn_lengths is called.  */
+      if (INSN_UID (insn) >= insn_lengths_max_uid)
+       abort ();
+#endif
       insn_current_address = insn_addresses[INSN_UID (insn)];
 #endif
       insn = final_scan_insn (insn, file, optimize, prescan, 0);