From 71d082af2f352ab8c65c6668ecef830fdc2547f2 Mon Sep 17 00:00:00 2001
From: Andrew Haley <aph@redhat.com>
Date: Thu, 19 Dec 2002 06:43:12 +0000
Subject: re PR libgcj/8945 (StringTokenizer)

2002-12-18  Andrew Haley  <aph@redhat.com>

	* parse.y (patch_invoke): Force evaluation order when `check' is
	set.  For PR libgcj/8945.

From-SVN: r60290
---
 gcc/java/ChangeLog | 5 +++++
 gcc/java/parse.y   | 6 +++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

(limited to 'gcc/java')

diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index bed6fdc..3b6cf6c 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,8 @@
+2002-12-18  Andrew Haley  <aph@redhat.com>
+
+	* parse.y (patch_invoke): Force evaluation order when `check' is
+	set.  For PR libgcj/8945.
+
 2002-12-16  Mark Mitchell  <mark@codesourcery.com>
 
 	* gcj.texi: Change version number to 3.4.
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index d117368..b68eb15 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -10793,7 +10793,11 @@ patch_invoke (patch, method, args)
      is NULL.  */
   if (check != NULL_TREE)
     {
-      patch = build (COMPOUND_EXPR, TREE_TYPE (patch), check, patch);
+      /* We have to call force_evaluation_order now because creating a
+ 	 COMPOUND_EXPR wraps the arg list in a way that makes it
+ 	 unrecognizable by force_evaluation_order later.  Yuk.  */
+      patch = build (COMPOUND_EXPR, TREE_TYPE (patch), check, 
+ 		     force_evaluation_order (patch));
       TREE_SIDE_EFFECTS (patch) = 1;
     }
 
-- 
cgit v1.1