O0 cleanup_cfg vs debuggability

Olivier Hainque hainque@act-europe.fr
Tue Aug 10 12:27:00 GMT 2004


James E Wilson wrote:
> In gcc-3.4, I think you can solve this by redefining what a forwarder 
> block is, or how we handle them.  See forwarder_block_p in cfganal.c. 
> Normally, a forwarder block is something that contains no active insns 
> other than a branch, and we optimize them away whenever possible to 
> simplify the cfg.  However, if we want full debugging info, then a block 
> that contains a line number note should not be considered a forwarder 
> block, or else, we should not be optimizing away forwarder blocks.  The 
> rest of what the jump pass is doing is probably not relevant to your 
> problem.
> 
> In gcc-3.5 however, we are already screwed before the first rtl pass. 
> As a side effect of the gimple to rtl transformation, we don't bother to 
> emit the empty block that is only needed to hold the line number note. 
> So we would have to fix the gimple to rtl transformation first to 
> preserve this info, then fix the cleanup_cfg code to not optimize away 
> blocks that contain line number notes.  Try compiling with -da 
> -fdump-tree-all and look at the last tree dump and the first rtl dump.

 I see. Will investigate further the various possible approaches and
 get back to you later. Thanks for your prompt feedback.

 Olivier



More information about the Gcc mailing list