This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: x86 sibling call stuff
>>>>> "Richard" == Richard Henderson <rth@twiddle.net> writes:
Richard> On Sun, Mar 19, 2000 at 12:18:07PM -0800, Mark Mitchell
Richard> wrote:
>> Right now, this test won't compile. The reason is that a
>> NOTE_INSN_EH_REGION_BEG note that gets created during an
>> expand_call never makes it into the final instruction stream,
>> even thow the END note does. A sanity check in flow causes an
>> abort.
Richard> Here's where I run into trouble. Do I understand
Richard> correctly that the TARGET_EXPRs are the bits that
Richard> generate the cleanups and such? It appears as if the one
Richard> immediately surrounding `f' only gets evaluated once.
Richard> Which is mighty confusing.
>> From here it appears that cp_unsave_r is somehow broken.
Either that, or expand_expr is broken with respect to TARGET_EXPRs.
This is why I just loathe these tree-expressions that try to do too
much work in a single step; nobody quite understands their semantics.
The interaction of SAVE_EXPR, UNSAVE_EXPR, and TARGET_EXPR has made
more a ton of problems in g++.
Thanks very much for your debugging efforts. I think I can figure out
where to go from here.
--
Mark Mitchell mark@codesourcery.com
CodeSourcery, LLC http://www.codesourcery.com