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
This commit is contained in:
Eric Botcazou 2009-11-10 17:44:46 +00:00 committed by Eric Botcazou
parent 6692a053e2
commit 666955711f
2 changed files with 16 additions and 11 deletions

View file

@ -1,3 +1,8 @@
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>
PR tree-optimization/41987

View file

@ -6960,17 +6960,17 @@ print_operand (FILE *file, rtx x, int code)
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
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
sparc_std_struct_return is enabled, the psABI is followed exactly
and the adjustment is made by the code in sparc_struct_value_rtx.
The call emitted is the same when sparc_std_struct_return is
present. */
if (! TARGET_ARCH64
as that for the call. The exception is when sparc_std_struct_return
is enabled, the psABI is followed exactly and the adjustment is made
by the code in sparc_struct_value_rtx. The call emitted is the same
when sparc_std_struct_return is enabled. */
if (!TARGET_ARCH64
&& cfun->returns_struct
&& ! sparc_std_struct_return
&& (TREE_CODE (DECL_SIZE (DECL_RESULT (current_function_decl)))
== INTEGER_CST)
&& ! integer_zerop (DECL_SIZE (DECL_RESULT (current_function_decl))))
&& !sparc_std_struct_return
&& DECL_SIZE (DECL_RESULT (current_function_decl))
&& TREE_CODE (DECL_SIZE (DECL_RESULT (current_function_decl)))
== INTEGER_CST
&& !integer_zerop (DECL_SIZE (DECL_RESULT (current_function_decl))))
fputs ("12", file);
else
fputc ('8', file);