2002-12-05 Dale Johannesen <dalej@apple.com>
* tree.c (unsafe_for_reeval): Consider callee child of CALL_EXPR.
From-SVN: r59875
+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
--- /dev/null
+/* 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;
+}
{
int unsafeness = 0;
enum tree_code code;
- int i, tmp;
+ int i, tmp, tmp2;
tree exp;
int first_rtl;
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;