This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/50678] [4.7 Regression] FAIL: c52104y on x86_64-apple-darwin10
- From: "ebotcazou at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 17 Oct 2011 22:58:24 +0000
- Subject: [Bug target/50678] [4.7 Regression] FAIL: c52104y on x86_64-apple-darwin10
- Auto-submitted: auto-generated
- References: <bug-50678-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50678
--- Comment #42 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2011-10-17 22:58:24 UTC ---
> > Because %rbx is saved in the prologue of do_fail.
>
> hm. Isn't that the correct action?
Yes, this is correct, but this will also restore the correct %rbx in the
caller.
> also - _ada_c52104y saves %rbx in its prologue.
Yes, but the thrower and the handler are within _ada_c52104y, so %rbx isn't
restored in-between.
> I thought we were looking for a situation where the saves were OK, but the
> restores were wrong - and I was expecting the c++ emulation to do roughly the
> same thing. Perhaps there's a difference in the way it unwinds.
You need to make sure that %rbx isn't saved/restored between thrower and
handler.