This is the mail archive of the
mailing list for the GCC project.
Re: [RFC,PATCH] Still problems with move loop invariant and eh regs (#24762)
> > Well, have you tried yet?
> I've tried the attached patch which contains the code proposed by Ian
> and got 53 new fails :(
> I'll try to look into them as soon as possible.
one of the problems I've found with omitting the clobbers for
eh regs in dw2_create_landing_pad occurs with consecutive
throw catch blocks (e.g. in gcc/testsuite/g++.old-deja/g++.eh/inline2.C).
Without the clobbers combine reuses eh reg values from the first catch
block in the second. Combine isn't aware of the fact that there is no normal
control flow between the basic blocks so it can't recognize that several
registers might have changed since they are used for exception handling.
Instead of omitting the clobbers completely it might be better to replace
them with sets. Maybe SETs with unspecs or something like that would do it.
We could do this for call clobbered eh regs as well as for call saved. That
way we could also get rid of the artificial sets of the eh regs introduced
What do you think?