tree.c (unsafe_for_reeval): Consider callee child of CALL_EXPR.

2002-12-05  Dale Johannesen  <dalej@apple.com>

        * tree.c (unsafe_for_reeval):  Consider callee child of CALL_EXPR.

From-SVN: r59875
This commit is contained in:
Dale Johannesen 2002-12-06 00:08:11 +00:00 committed by Dale Johannesen
parent 1a823ac1fd
commit 1fcfaf375c
3 changed files with 17 additions and 2 deletions

View File

@ -1,3 +1,7 @@
2002-12-05 Dale Johannesen <dalej@apple.com>
* tree.c (unsafe_for_reeval): Consider callee child of CALL_EXPR.
2002-12-05 Danny Smith <dannysmith@users.sourceforge.net>
* config/i386/cygwin.h (SUBTARGET_PROLOGUE): Replace with

View File

@ -0,0 +1,10 @@
/* dg-do compile */
/* dg-options "-O3" */
typedef struct x x;
struct x { char * (*bar) (int); };
static x **foo() { return ((x**)baz()); }
int xyzzy()
{
baz((*foo())->bar(0));
return 3;
}

View File

@ -1634,7 +1634,7 @@ unsafe_for_reeval (expr)
{
int unsafeness = 0;
enum tree_code code;
int i, tmp;
int i, tmp, tmp2;
tree exp;
int first_rtl;
@ -1660,8 +1660,9 @@ unsafe_for_reeval (expr)
return unsafeness;
case CALL_EXPR:
tmp2 = unsafe_for_reeval (TREE_OPERAND (expr, 0));
tmp = unsafe_for_reeval (TREE_OPERAND (expr, 1));
return MAX (tmp, 1);
return MAX (MAX (tmp, 1), tmp2);
case TARGET_EXPR:
unsafeness = 1;