> On Wed, 19 Jul 2017, Jan Hubicka wrote: > > > > > I think we could just output from generic code - I think it can be done > > > > by > > > > final_scan_insn. I don't know however if we have a way to tell if the > > > > section > > > > starts with a landing pad? > > > > > > Not sure either -- some insn note / bb note? Some flag on the label? > > > At least the latter should be easy to add if it's not there already. > > > > > > Richard. > > > > Hi, > > this is updated patch. I am now adding NOP_EXPR into the instruction > > stream. > > This is done before shorten branches so alignment tracking works there as > > expected. > > Landing pads are having PRESERVE flag set, but that is also true about named > > labels etc. So I think only safe way is to look them up from the EH tables > > which is not that hard. first_in_partition is now called on every landing > > pad in the cold section and it walks backward looking if it can be first. > > I added > > visited set to be sure it runs in linear time. > > > > Boostrapped/regtested x86_64-linux, OK? > > It looks sensible. You leak the hash_set and I wonder if you can hook
Hmm, isn't the hash_set supposed to destruct itself at the end of scope? > it in pass_convert_to_eh_region_ranges instead which runs before > rest_of_handle_shorten_branches which means things can be entirely > contained in except.c? Yep, that is a good idea. I did not look into pass.def, just searched for convenient place to do it before branch relaxation (it probably ought to run after mdep reorg because no one knows what those will do with the nop :) Will re-test updated patch and commit. Thanks a lot! Honza