This is the mail archive of the gcc-bugs@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]

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

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