https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71514

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
gimplification:

        case VIEW_CONVERT_EXPR:
          if (is_gimple_reg_type (TREE_TYPE (*expr_p))
              && is_gimple_reg_type (TREE_TYPE (TREE_OPERAND (*expr_p, 0))))
            {
              ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p,
                                   post_p, is_gimple_val, fb_rvalue);
              recalculate_side_effects (*expr_p);
              break;
            }

fix:

Index: gcc/gimple-expr.h
===================================================================
--- gcc/gimple-expr.h   (revision 237372)
+++ gcc/gimple-expr.h   (working copy)
@@ -72,7 +72,7 @@ types_compatible_p (tree type1, tree typ
 static inline bool
 is_gimple_reg_type (tree type)
 {
-  return !AGGREGATE_TYPE_P (type);
+  return !AGGREGATE_TYPE_P (type) && !FUNC_OR_METHOD_TYPE_P (type);
 }

 /* Return true if T is a variable.  */


might eventually be worth to speeed up the type check by ordering tcc_type
entries in a particular way ...

Reply via email to