Commit c6392c41 by Kugan Vivekanandarajah Committed by Kugan Vivekanandarajah

re PR target/68390 (Incorrect code due to indirect tail call of varargs function…

re PR target/68390 (Incorrect code due to indirect tail call of varargs function with hard float ABI)

gcc/ChangeLog:

2015-11-23  Kugan Vivekanandarajah  <kuganv@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-23  Kugan Vivekanandarajah  <kuganv@linaro.org>

	PR target/68390
	* gcc/testsuite/gcc.c-torture/execute/pr68390.c: New test.

From-SVN: r230730
parent cfba61d2
2015-11-23 Kugan Vivekanandarajah <kuganv@linaro.org>
PR target/68390
* config/arm/arm.c (arm_function_ok_for_sibcall): Get function type
for indirect function call.
2015-11-22 Bilyan Borisov <bilyan.borisov@arm.com>
* config/aarch64/aarch64-simd.md
......@@ -6686,8 +6686,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 decl_or_type = decl;
a = arm_function_value (TREE_TYPE (exp), decl, false);
/* If it is an indirect function pointer, get the function type. */
if (!decl)
decl_or_type = TREE_TYPE (TREE_TYPE (CALL_EXPR_FN (exp)));
a = arm_function_value (TREE_TYPE (exp), decl_or_type, false);
b = arm_function_value (TREE_TYPE (DECL_RESULT (cfun->decl)),
cfun->decl, false);
if (!rtx_equal_p (a, b))
......
2015-11-23 Kugan Vivekanandarajah <kuganv@linaro.org>
PR target/68390
* gcc/testsuite/gcc.c-torture/execute/pr68390.c: New test.
2015-11-22 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* gfortran.dg/fmt_g0_1.f08: Update test. Leading zero.
......
/* { dg-do run } */
/* { dg-options "-O2" } */
__attribute__ ((noinline))
double direct(int x, ...)
{
return x*x;
}
__attribute__ ((noinline))
double broken(double (*indirect)(int x, ...), int v)
{
return indirect(v);
}
int main ()
{
double d1, d2;
int i = 2;
d1 = broken (direct, i);
if (d1 != i*i)
{
__builtin_abort ();
}
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment