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:
parent
6692a053e2
commit
666955711f
|
@ -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>
|
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)
|
||||||
/* 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);
|
||||||
|
|
Loading…
Reference in New Issue