OSDN Git Service

* final.c (final): Detect out of bounds array access to
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 7 Jul 2000 13:48:38 +0000 (13:48 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 7 Jul 2000 13:48:38 +0000 (13:48 +0000)
        the insn_lengths array.

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

gcc/ChangeLog
gcc/final.c

index 5b94eb0..71e9933 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 35782db..3537bcf 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);