Commit d333c3eb by David S. Miller Committed by David S. Miller

Fix long double float miscompilations on sparc 64-bit.

	PR target/52684
	* config/sparc/sparc.c (emit_soft_tfmode_libcall): If we pass a
	MEM directly into a libcall, mark it's MEM_EXPR as addressable.
	(sparc_emit_float_lib_cmp): Likewise.

From-SVN: r187120
parent 65d512d1
2012-05-03 David S. Miller <davem@davemloft.net>
PR target/52684
* config/sparc/sparc.c (emit_soft_tfmode_libcall): If we pass a
MEM directly into a libcall, mark it's MEM_EXPR as addressable.
(sparc_emit_float_lib_cmp): Likewise.
2012-05-03 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/53199
......
/* Subroutines for insn-output.c for SPARC.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
2011
2011, 2012
Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com)
64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
......@@ -2724,7 +2724,12 @@ emit_soft_tfmode_libcall (const char *func_name, int nargs, rtx *operands)
if (GET_CODE (this_arg) == MEM
&& ! force_stack_temp)
this_arg = XEXP (this_arg, 0);
{
tree expr = MEM_EXPR (this_arg);
if (expr)
mark_addressable (expr);
this_arg = XEXP (this_arg, 0);
}
else if (CONSTANT_P (this_arg)
&& ! force_stack_temp)
{
......@@ -7413,7 +7418,12 @@ sparc_emit_float_lib_cmp (rtx x, rtx y, enum rtx_code comparison)
if (TARGET_ARCH64)
{
if (MEM_P (x))
slot0 = x;
{
tree expr = MEM_EXPR (x);
if (expr)
mark_addressable (expr);
slot0 = x;
}
else
{
slot0 = assign_stack_temp (TFmode, GET_MODE_SIZE(TFmode), 0);
......@@ -7421,7 +7431,12 @@ sparc_emit_float_lib_cmp (rtx x, rtx y, enum rtx_code comparison)
}
if (MEM_P (y))
slot1 = y;
{
tree expr = MEM_EXPR (y);
if (expr)
mark_addressable (expr);
slot1 = y;
}
else
{
slot1 = assign_stack_temp (TFmode, GET_MODE_SIZE(TFmode), 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