gccrs: Make constexpr constructors type-checking more permissive
authorPhilip Herron <philip.herron@embecosm.com>
Tue, 27 Sep 2022 10:36:35 +0000 (11:36 +0100)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 31 Jan 2023 13:16:52 +0000 (14:16 +0100)
gcc/rust/ChangeLog:

* backend/rust-constexpr.cc (eval_store_expression): Remove invalid
assertion on constexpr constructors.

gcc/rust/backend/rust-constexpr.cc

index 8efb430..8623816 100644 (file)
@@ -2953,14 +2953,14 @@ eval_store_expression (const constexpr_ctx *ctx, tree t, bool lval,
       TREE_SIDE_EFFECTS (*valp) = TREE_SIDE_EFFECTS (init);
       CONSTRUCTOR_NO_CLEARING (*valp) = CONSTRUCTOR_NO_CLEARING (init);
     }
-  else if (TREE_CODE (init) == CONSTRUCTOR
-          && !same_type_ignoring_top_level_qualifiers_p (TREE_TYPE (init),
-                                                         type))
-    {
-      /* See above on initialization of empty bases.  */
-      gcc_assert (is_empty_class (TREE_TYPE (init)) && !lval);
-      return init;
-    }
+  // else if (TREE_CODE (init) == CONSTRUCTOR
+  //          && !same_type_ignoring_top_level_qualifiers_p (TREE_TYPE (init),
+  //                                                     type))
+  //   {
+  //     /* See above on initialization of empty bases.  */
+  //     // gcc_assert (is_empty_class (TREE_TYPE (init)) && !lval);
+  //     return init;
+  //   }
   else
     *valp = init;