[gcc(refs/users/marxin/heads/marxin-gcc-benchmark-branch)] Add error check on return value of build_co_await

Martin Liska marxin@gcc.gnu.org
Mon Mar 30 10:20:47 GMT 2020


https://gcc.gnu.org/g:6ac6529e155c9baa0aaaed7aca06bd38ebda5b43

commit 6ac6529e155c9baa0aaaed7aca06bd38ebda5b43
Author: JunMa <JunMa@linux.alibaba.com>
Date:   Tue Jan 21 10:29:34 2020 +0800

    Add error check on return value of build_co_await
    
    gcc/cp/ChangeLog
            * coroutines.cc (finish_co_await_expr): Add error check on return
            value of build_co_await.
            (finish_co_yield_expr): Ditto.

Diff:
---
 gcc/cp/ChangeLog     |  6 ++++++
 gcc/cp/coroutines.cc | 15 ++++++++++-----
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 3f379d0d996..4c195c48b03 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2020-01-22  Jun Ma <JunMa@linux.alibaba.com>
+
+	* coroutines.cc (finish_co_await_expr): Add error check on return
+	value of build_co_await.
+	(finish_co_yield_expr,): Ditto.
+
 2020-01-22  Jun Ma <JunMa@linux.alibaba.com>
 
 	* coroutines.cc (lookup_awaitable_member): Lookup an awaitable member.
diff --git a/gcc/cp/coroutines.cc b/gcc/cp/coroutines.cc
index 6381fdc2f11..81fb8c924a7 100644
--- a/gcc/cp/coroutines.cc
+++ b/gcc/cp/coroutines.cc
@@ -819,8 +819,11 @@ finish_co_await_expr (location_t kw, tree expr)
 
   /* Now we want to build co_await a.  */
   tree op = build_co_await (kw, a, CO_AWAIT_SUSPEND_POINT);
-  TREE_SIDE_EFFECTS (op) = 1;
-  SET_EXPR_LOCATION (op, kw);
+  if (op != error_mark_node)
+    {
+      TREE_SIDE_EFFECTS (op) = 1;
+      SET_EXPR_LOCATION (op, kw);
+    }
 
   return op;
 }
@@ -885,9 +888,11 @@ finish_co_yield_expr (location_t kw, tree expr)
      promise transform_await().  */
 
   tree op = build_co_await (kw, yield_call, CO_YIELD_SUSPEND_POINT);
-
-  op = build2_loc (kw, CO_YIELD_EXPR, TREE_TYPE (op), expr, op);
-  TREE_SIDE_EFFECTS (op) = 1;
+  if (op != error_mark_node)
+    {
+      op = build2_loc (kw, CO_YIELD_EXPR, TREE_TYPE (op), expr, op);
+      TREE_SIDE_EFFECTS (op) = 1;
+    }
 
   return op;
 }


More information about the Gcc-cvs mailing list