OK, I think I know how to solve it. Just return TODO_update_ssa
<https://code.woboq.org/gcc/gcc/tree-pass.h.html#249>.

On Sun, Jun 21, 2020 at 5:34 PM Shuai Wang <wangshuai...@gmail.com> wrote:

> Hello,
>
> I am doing instrumentation of GIMPLE code by adding extra coverage
> counters at each basic block. Basically it's
> mimicking -fsanitize-coverage=trace-pc, where the only difference is
> that __sanitizer_cov_trace_pc (the default
> hander of fsanitize-coverage=trace-pc)  has no input parameters, but my
> coverage hander has a parameter of basic block id.
>
> My current issue is that after the instrumentation of one function, the
> plugin throws an exception at the following gcc_assert and do not proceed
> to instrument another function:
>
>   if (flags & TODO_cleanup_cfg)
>     cleanup_tree_cfg (flags & TODO_update_ssa_any);
>   else if (flags & TODO_update_ssa_any)
>     update_ssa (flags & TODO_update_ssa_any);
>   gcc_assert (!need_ssa_update_p (fn));  <----------  line 1954 of 
> gcc/passes.c for gcc 10.1.0
>
> This really confused me, because when I print out the instrumented GIMPLE 
> code and compare with fsanitize-coverage=trace-pc, I don't see a major 
> difference here:
>
> ====== my instrumented GIMPLE code ===========
>
> fun2 ()
> {
>   int D.2588;
>   int _3;
>
>   <bb 2> :
>   __sanitizer_cov_trace_pc (2);  <--- my coverage hander with basic block id 
> as the input
>   __builtin_puts (&"fun2"[0]);
>   _3 = 0;
>
>   <bb 3> :
> <L0>:
>   __sanitizer_cov_trace_pc (3);
>   return _3;
>
> }
>
> ======= the corresponding instrumented GIMPLE code by 
> fsanitize-coverage=trace-pc =====
>
> fun2 ()
> {
>   int D.2760;
>   int _3;
>
>   <bb 2> [0.00%]:
>   __builtin___sanitizer_cov_trace_pc ();
>   __builtin_puts (&"fun2"[0]);
>   _3 = 0;
>
> <L0> [0.00%]:
>   __builtin___sanitizer_cov_trace_pc ();
>   return _3;
>
> }
>
> There is no big difference here. Could anyone shed some lights on why an 
> exception on "need_ssa_update_p" is thrown? I don't think there is an need to 
> udpate any "SSA" here.. Thank you very much.
>
> Best,
>
> Shuai
>
>

Reply via email to