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

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
OK, so we have

(gdb) p debug_gimple_stmt (stmt)
derf(address-taken) ={v} {CLOBBER};

lacking virtual operands and the LHS is

 <function_decl 0x7ffff6346700 derf
    type <function_type 0x7ffff634a348
        type <real_type 0x7ffff6537348 double DF
...

that stmt is input this way from LTO bytecode.  The following should catch
who's building this.

diff --git a/gcc/tree-cfg.cc b/gcc/tree-cfg.cc
index e321d929fd0..fa92a505771 100644
--- a/gcc/tree-cfg.cc
+++ b/gcc/tree-cfg.cc
@@ -4512,7 +4512,8 @@ verify_gimple_assign_single (gassign *stmt)
     }

   if (gimple_clobber_p (stmt)
-      && !(DECL_P (lhs) || TREE_CODE (lhs) == MEM_REF))
+      && !((DECL_P (lhs) && TREE_CODE (lhs) != FUNCTION_DECL)
+          || TREE_CODE (lhs) == MEM_REF))
     {
       error ("%qs LHS in clobber statement",
             get_tree_code_name (TREE_CODE (lhs)));

Reply via email to