aboutsummaryrefslogtreecommitdiff
path: root/gcc/final.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/final.c')
-rw-r--r--gcc/final.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/final.c b/gcc/final.c
index 5834010..67a30fa 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -587,6 +587,7 @@ shorten_branches (first)
insn = NEXT_INSN (insn))
{
int new_length;
+ int tmp_length;
uid = INSN_UID (insn);
insn_addresses[uid] = insn_current_address;
@@ -630,6 +631,16 @@ shorten_branches (first)
new_length = insn_current_length (insn);
insn_current_address += new_length;
}
+
+#ifdef SHORTEN_WITH_ADJUST_INSN_LENGTH
+#ifdef ADJUST_INSN_LENGTH
+ /* If needed, do any adjustment. */
+ tmp_length = new_length;
+ ADJUST_INSN_LENGTH (insn, new_length);
+ insn_current_address += (new_length - tmp_length);
+#endif
+#endif
+
if (new_length != insn_lengths[uid])
{
insn_lengths[uid] = new_length;