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

--- Comment #6 from Martin Liška <marxin at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #4)
> 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)));

Let me find the builder of this.

Reply via email to