------- Comment #20 from zadeck at naturalbridge dot com 2008-10-24 18:44 ------- Subject: Re: [4.4 Regression] Revision 139827 causes Divide_X
jakub at gcc dot gnu dot org wrote: > ------- Comment #19 from jakub at gcc dot gnu dot org 2008-10-24 18:09 > ------- > This hunk in df-scan.c confuses me: > > /* These registers are live everywhere. */ > if (!reload_completed) > { > #ifdef EH_USES > /* The ia-64, the only machine that uses this, does not define these > until after reload. */ > for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) > if (EH_USES (i)) > { > bitmap_set_bit (entry_block_defs, i); > } > #endif > > Indeed, ia64 is the only port that defines EH_USES ever to non-zero value, and > only if reload_completed. So this is a nice nop, but supposedly just changing > the guarding condition to if (reload_completed) could fix this up. > > > I cannot justify the existing code, either by looking at it or what used to be in flow.c. I do agree that the existing code is a noop and should be either fixed or deleted. I must admit, that i think that the proper solution is going to be have to be one that adds the eh_uses onto the uses of instructions that can trap because the block of code referenced here only effects the forwards dataflow problem. However, this problem is really not so much about dataflow analysis as it is about the meaning of these target specific macros. What ever the solution is, i think that it should be at least blessed by iant, or jim wilson rather than just a dataflow maintainer. I would also point out that dealing with the EH_USES is not going to make any difference to the "similar" problem that happens on the cris. Kenny -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37378