This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC,PATCH] Still problems with move loop invariant and eh regs (#24762)


Hi,

> > 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 
in df.

What do you think?

Bye,

-Andreas-


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]