From: Chung-Lin Tang Date: Fri, 20 Jun 2014 06:20:38 +0000 (+0000) Subject: backport: arm.c (arm_output_mi_thunk): Fix offset for TARGET_THUMB1_ONLY. X-Git-Tag: releases/gcc-4.8.4~400 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=df87de24ff3560c5d28cf38aa8a94ce4db42019c;p=thirdparty%2Fgcc.git backport: arm.c (arm_output_mi_thunk): Fix offset for TARGET_THUMB1_ONLY. 2014-06-20 Chung-Lin Tang Backport from mainline 2014-06-20 Julian Brown Chung-Lin Tang * config/arm/arm.c (arm_output_mi_thunk): Fix offset for TARGET_THUMB1_ONLY. Add comments. From-SVN: r211835 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c9bcd2abc4c2..45da7447803b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2014-06-20 Chung-Lin Tang + + Backport from mainline + + 2014-06-20 Julian Brown + Chung-Lin Tang + + * config/arm/arm.c (arm_output_mi_thunk): Fix offset for + TARGET_THUMB1_ONLY. Add comments. + 2014-06-18 Uros Bizjak Backport from mainline diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 5bc66034ed93..e42d0b996ed7 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -24476,9 +24476,13 @@ arm_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED, fputs (":\n", file); if (flag_pic) { - /* Output ".word .LTHUNKn-7-.LTHUNKPCn". */ + /* Output ".word .LTHUNKn-[3,7]-.LTHUNKPCn". */ rtx tem = XEXP (DECL_RTL (function), 0); - tem = gen_rtx_PLUS (GET_MODE (tem), tem, GEN_INT (-7)); + /* For TARGET_THUMB1_ONLY the thunk is in Thumb mode, so the PC + pipeline offset is four rather than eight. Adjust the offset + accordingly. */ + tem = plus_constant (GET_MODE (tem), tem, + TARGET_THUMB1_ONLY ? -3 : -7); tem = gen_rtx_MINUS (GET_MODE (tem), tem, gen_rtx_SYMBOL_REF (Pmode,