OSDN Git Service

tcg-arm: Remove long jump from tcg_out_goto_label
authorRichard Henderson <rth@twiddle.net>
Tue, 23 Apr 2013 20:07:40 +0000 (13:07 -0700)
committerAurelien Jarno <aurelien@aurel32.net>
Sat, 27 Apr 2013 00:16:45 +0000 (02:16 +0200)
Branches within a TB will always be within 16MB.

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg/arm/tcg-target.c

index d6afa2f..7216f7a 100644 (file)
@@ -1055,14 +1055,9 @@ static inline void tcg_out_goto_label(TCGContext *s, int cond, int label_index)
 {
     TCGLabel *l = &s->labels[label_index];
 
-    if (l->has_value)
+    if (l->has_value) {
         tcg_out_goto(s, cond, l->u.value);
-    else if (cond == COND_AL) {
-        tcg_out_ld32_12(s, COND_AL, TCG_REG_PC, TCG_REG_PC, -4);
-        tcg_out_reloc(s, s->code_ptr, R_ARM_ABS32, label_index, 31337);
-        s->code_ptr += 4;
     } else {
-        /* Probably this should be preferred even for COND_AL... */
         tcg_out_reloc(s, s->code_ptr, R_ARM_PC24, label_index, 31337);
         tcg_out_b_noaddr(s, cond);
     }