Commit 12e19e05 by Jakub Jelinek Committed by Jakub Jelinek

re PR c/35739 (ICE with _Decimal128 and va_list)

	PR c/35739
	* tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
	reg type.

	* gcc.dg/dfp/pr35739.c: New test.

From-SVN: r134351
parent 3d5e00a0
2008-04-16 Jakub Jelinek <jakub@redhat.com>
PR c/35739
* tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
reg type.
PR tree-optimization/35899
* tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
rather than TREE_OPERAND.
......
2008-04-16 Jakub Jelinek <jakub@redhat.com>
PR c/35739
* gcc.dg/dfp/pr35739.c: New test.
PR tree-optimization/35899
* gcc.dg/pr35899.c: New test.
/* PR c/35739 */
/* { dg-do compile { target *-*-linux* } } */
/* { dg-options "-O -fpreprocessed -fmudflap" } */
_Decimal128
foo (int n, ...)
{
int i;
_Decimal128 j = 0;
__builtin_va_list ap;
__builtin_va_start (ap, n);
for (i = 0; i < n; i++)
j += __builtin_va_arg (ap, _Decimal128);
__builtin_va_end (ap);
return j;
}
/* Language independent return value optimizations
Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
This file is part of GCC.
......@@ -115,6 +115,11 @@ tree_nrv (void)
if (!aggregate_value_p (result, current_function_decl))
return 0;
/* If a GIMPLE type is returned in memory, finalize_nrv_r might create
non-GIMPLE. */
if (is_gimple_reg_type (result_type))
return 0;
/* Look through each block for assignments to the RESULT_DECL. */
FOR_EACH_BB (bb)
{
......
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