>> >> gcc/ChangeLog: >> >> 2015-11-18 Kugan Vivekanandarajah <kug...@linaro.org> >> >> PR target/68390 >> * config/arm/arm.c (arm_function_ok_for_sibcall): Get function type >> for indirect function call. >> >> gcc/testsuite/ChangeLog: >> >> 2015-11-18 Kugan Vivekanandarajah <kug...@linaro.org> >> >> PR target/68390 >> * gcc.target/arm/PR68390.c: New test. >> > > s/PR/pr in the test name and put this in gcc.c-torture/execute instead - > there is nothing ARM specific about the test. Tests in gcc.target/arm should > really only be architecture specific. This isn't. > >> >> >> >> p.txt >> >> >> diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c >> index a379121..0dae7da 100644 >> --- a/gcc/config/arm/arm.c >> +++ b/gcc/config/arm/arm.c >> @@ -6680,8 +6680,13 @@ arm_function_ok_for_sibcall (tree decl, tree exp) >> a VFP register but then need to transfer it to a core >> register. */ >> rtx a, b; >> + tree fn_decl = decl; > > Call it decl_or_type instead - it's really that ... > >> >> - a = arm_function_value (TREE_TYPE (exp), decl, false); >> + /* If it is an indirect function pointer, get the function type. */ >> + if (!decl) >> + fn_decl = TREE_TYPE (TREE_TYPE (CALL_EXPR_FN (exp))); >> + > > This is probably just my mail client - but please watch out for indentation. > >> + a = arm_function_value (TREE_TYPE (exp), fn_decl, false); >> b = arm_function_value (TREE_TYPE (DECL_RESULT (cfun->decl)), >> cfun->decl, false); >> if (!rtx_equal_p (a, b)) > > > OK with those changes. > > Ramana >
Hi Ramana, This issue also remains in 4.9 and 5.0 branches. Is this OK to backport to the release branches. Thanks, Kugan