xtensa: fix gas trampolines regression
Extra condition 'abs (addr - trampaddr) < J_RANGE / 2' for trampoline selection results in regressions: when relaxable jump is little longer than J_RANGE so that single trampoline makes two new jumps, one longer than J_RANGE / 2 and one shorter, correct trampoline cannot be found. Drop that condition. 2015-05-13 Max Filippov <jcmvbkbc@gmail.com> gas/ * config/tc-xtensa.c (xtensa_relax_frag): Allow trampoline to be closer than J_RANGE / 2 to jump frag. gas/testsuite/ * gas/xtensa/trampoline.s: Add regression testcase.
This commit is contained in:
parent
242cd84c93
commit
dc58915f3a
@ -1,3 +1,8 @@
|
|||||||
|
2015-05-13 Max Filippov <jcmvbkbc@gmail.com>
|
||||||
|
|
||||||
|
* config/tc-xtensa.c (xtensa_relax_frag): Allow trampoline to be
|
||||||
|
closer than J_RANGE / 2 to jump frag.
|
||||||
|
|
||||||
2015-05-11 H.J. Lu <hongjiu.lu@intel.com>
|
2015-05-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* configure.tgt (arch): Set to iamcu for i386-*-elfiamcu target.
|
* configure.tgt (arch): Set to iamcu for i386-*-elfiamcu target.
|
||||||
|
@ -9071,8 +9071,7 @@ xtensa_relax_frag (fragS *fragP, long stretch, int *stretched_p)
|
|||||||
|
|
||||||
trampaddr = fragP->fr_address + fragP->fr_fix;
|
trampaddr = fragP->fr_address + fragP->fr_fix;
|
||||||
|
|
||||||
if ((addr + J_RANGE < trampaddr) ||
|
if (addr + J_RANGE < trampaddr)
|
||||||
abs (addr - trampaddr) < J_RANGE / 2)
|
|
||||||
continue;
|
continue;
|
||||||
if (addr > trampaddr + J_RANGE)
|
if (addr > trampaddr + J_RANGE)
|
||||||
break;
|
break;
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2015-05-13 Max Filippov <jcmvbkbc@gmail.com>
|
||||||
|
|
||||||
|
* gas/xtensa/trampoline.s: Add regression testcase.
|
||||||
|
|
||||||
2015-05-11 H.J. Lu <hongjiu.lu@intel.com>
|
2015-05-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* gas/i386/i386.exp: Run iamcu-1, iamcu-2, iamcu-3, iamcu-inval-1,
|
* gas/i386/i386.exp: Run iamcu-1, iamcu-2, iamcu-3, iamcu-inval-1,
|
||||||
|
@ -26,3 +26,13 @@
|
|||||||
.endr
|
.endr
|
||||||
4:
|
4:
|
||||||
j 4b
|
j 4b
|
||||||
|
|
||||||
|
5:
|
||||||
|
j 6f
|
||||||
|
|
||||||
|
.rep 43691
|
||||||
|
_nop
|
||||||
|
.endr
|
||||||
|
|
||||||
|
6:
|
||||||
|
j 5b
|
||||||
|
Loading…
x
Reference in New Issue
Block a user