[gcc(refs/users/marxin/heads/marxin-gcc-benchmark-branch)] c++: Fix TREE_SIDE_EFFECTS after digest_init.

Martin Liska marxin@gcc.gnu.org
Mon Mar 30 10:53:55 GMT 2020


https://gcc.gnu.org/g:c151a342b8bae48ce4c864e67913bc3a0346c4c7

commit c151a342b8bae48ce4c864e67913bc3a0346c4c7
Author: Jason Merrill <jason@redhat.com>
Date:   Fri Feb 7 16:10:18 2020 -0500

    c++: Fix TREE_SIDE_EFFECTS after digest_init.
    
            * typeck2.c (process_init_constructor): Also clear TREE_SIDE_EFFECTS
            if appropriate.

Diff:
---
 gcc/cp/ChangeLog | 5 +++++
 gcc/cp/typeck2.c | 8 ++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 9205b200cd6..a0542b2a5b8 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2020-02-08  Jason Merrill  <jason@redhat.com>
+
+	* typeck2.c (process_init_constructor): Also clear TREE_SIDE_EFFECTS
+	if appropriate.
+
 2020-02-08  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/93549
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index 371b203c29b..48920894b3b 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -1929,11 +1929,15 @@ process_init_constructor (tree type, tree init, int nested, int flags,
       TREE_SIDE_EFFECTS (init) = true;
     }
   else if (picflags & PICFLAG_NOT_ALL_CONSTANT)
-    /* Make sure TREE_CONSTANT isn't set from build_constructor.  */
-    TREE_CONSTANT (init) = false;
+    {
+      /* Make sure TREE_CONSTANT isn't set from build_constructor.  */
+      TREE_CONSTANT (init) = false;
+      TREE_SIDE_EFFECTS (init) = false;
+    }
   else
     {
       TREE_CONSTANT (init) = 1;
+      TREE_SIDE_EFFECTS (init) = false;
       if (!(picflags & PICFLAG_NOT_ALL_SIMPLE))
 	TREE_STATIC (init) = 1;
     }


More information about the Gcc-cvs mailing list