(shorten_branches): Do not call insn_current_length with an insn which has a non...
authorRichard Stallman <rms@gnu.org>
Sat, 29 May 1993 00:11:59 +0000 (00:11 +0000)
committerRichard Stallman <rms@gnu.org>
Sat, 29 May 1993 00:11:59 +0000 (00:11 +0000)
(shorten_branches): Do not call insn_current_length
with an insn which has a non-varying length.  Use insn_lengths instead.

From-SVN: r4590

gcc/final.c

index dafcfe5e79ed13d8e6c5ca7f9bf51d84a42f9629..5834010663aa91b5210a93ed0c37b29b451f0649 100644 (file)
@@ -608,7 +608,14 @@ shorten_branches (first)
                  int inner_length;
 
                  insn_addresses[inner_uid] = insn_current_address;
-                 inner_length = insn_current_length (inner_insn);
+
+                 /* insn_current_length returns 0 for insns with a
+                    non-varying length.  */
+                 if (! varying_length[inner_uid])
+                   inner_length = insn_lengths[inner_uid];
+                 else
+                   inner_length = insn_current_length (inner_insn);
+
                  if (inner_length != insn_lengths[inner_uid])
                    {
                      insn_lengths[inner_uid] = inner_length;