Compiling egcs-ss-980308

Franz Sirl Franz.Sirl-kernel@lauterbach.com
Mon Mar 9 05:25:00 GMT 1998


At 09:02 09.03.98 -0300, Alexandre Oliva wrote:
>Michael Schoene writes:
>
>> (jump_insn 3074 3073 3075 (addr_diff_vec:SI (label_ref:SI 3073)
>>         [ 
>>             (label_ref:SI 2994)
>[snip]
>> xgcc: Internal compiler error: program cc1 got fatal signal 6
>
>I've got similar errors on sparc-sun-solaris2.[56],
>mips-sgi-irix{5.2,6.3}, but not on RedHat Linux 5.0 /{i386,alpha} nor
>RedHat Linux 4.0

Jeff fixed it in CVS with the following patch:

Index: gcc/ChangeLog
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/ChangeLog,v
retrieving revision 1.881
retrieving revision 1.882
diff -u -r1.881 -r1.882
--- ChangeLog   1998/03/08 02:17:42     1.881
+++ ChangeLog   1998/03/08 12:04:15     1.882
@@ -1,3 +1,8 @@
+Sun Mar  8 13:01:56 1998  Jeffrey A Law  (law@cygnus.com)
+
+       * final.c (shorten_branches): Fix minor logic error in
+       ADDR_DIFF_VEC shortening support.
+
 Sun Mar 8 02:17:42 PST 1998 Jeff Law  (law@cygnus.com)
 
        * version.c: Bump for snapshot.
Index: gcc/final.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/final.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- final.c     1998/03/06 14:44:24     1.23
+++ final.c     1998/03/08 12:04:17     1.24
@@ -1296,10 +1296,10 @@
          insn_last_address = insn_addresses[uid];
          insn_addresses[uid] = insn_current_address;
 
+#ifdef CASE_VECTOR_SHORTEN_MODE
          if (optimize && GET_CODE (insn) == JUMP_INSN
              && GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC)
            {
-#ifdef CASE_VECTOR_SHORTEN_MODE
              rtx body = PATTERN (insn);
              int old_length = insn_lengths[uid];
              rtx rel_lab = XEXP (XEXP (body, 0), 0);
@@ -1397,9 +1397,10 @@
                something_changed = 1;
 #endif
              continue;
-#endif /* CASE_VECTOR_SHORTEN_MODE */
            }
-         else if (! (varying_length[uid]))
+#endif /* CASE_VECTOR_SHORTEN_MODE */
+
+         if (! (varying_length[uid]))
            {
              insn_current_address += insn_lengths[uid];
              continue;




More information about the Gcc-bugs mailing list