Commit 66695571 by Eric Botcazou Committed by Eric Botcazou

sparc.c (print_operand): Test for a non-null DECL_SIZE of DECL_RESULT before evaluating it.

	* config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
	DECL_SIZE of DECL_RESULT before evaluating it.

From-SVN: r154068
parent 6692a053
2009-11-10 Eric Botcazou <ebotcazou@adacore.com>
* config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
DECL_SIZE of DECL_RESULT before evaluating it.
2009-11-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 2009-11-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
PR tree-optimization/41987 PR tree-optimization/41987
...@@ -6958,19 +6958,19 @@ print_operand (FILE *file, rtx x, int code) ...@@ -6958,19 +6958,19 @@ print_operand (FILE *file, rtx x, int code)
/* Output the right displacement from the saved PC on function return. /* Output the right displacement from the saved PC on function return.
The caller may have placed an "unimp" insn immediately after the call The caller may have placed an "unimp" insn immediately after the call
so we have to account for it. This insn is used in the 32-bit ABI so we have to account for it. This insn is used in the 32-bit ABI
when calling a function that returns a non zero-sized structure. The when calling a function that returns a non zero-sized structure. The
64-bit ABI doesn't have it. Be careful to have this test be the same 64-bit ABI doesn't have it. Be careful to have this test be the same
as that used on the call. The exception here is that when as that for the call. The exception is when sparc_std_struct_return
sparc_std_struct_return is enabled, the psABI is followed exactly is enabled, the psABI is followed exactly and the adjustment is made
and the adjustment is made by the code in sparc_struct_value_rtx. by the code in sparc_struct_value_rtx. The call emitted is the same
The call emitted is the same when sparc_std_struct_return is when sparc_std_struct_return is enabled. */
present. */ if (!TARGET_ARCH64
if (! TARGET_ARCH64
&& cfun->returns_struct && cfun->returns_struct
&& ! sparc_std_struct_return && !sparc_std_struct_return
&& (TREE_CODE (DECL_SIZE (DECL_RESULT (current_function_decl))) && DECL_SIZE (DECL_RESULT (current_function_decl))
== INTEGER_CST) && TREE_CODE (DECL_SIZE (DECL_RESULT (current_function_decl)))
&& ! integer_zerop (DECL_SIZE (DECL_RESULT (current_function_decl)))) == INTEGER_CST
&& !integer_zerop (DECL_SIZE (DECL_RESULT (current_function_decl))))
fputs ("12", file); fputs ("12", file);
else else
fputc ('8', file); fputc ('8', file);
......
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