This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/29683] Arg split between stack/regs can cause stack corruption
- From: "jconner at apple dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 1 Nov 2006 19:11:39 -0000
- Subject: [Bug middle-end/29683] Arg split between stack/regs can cause stack corruption
- References: <bug-29683-10413@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #1 from jconner at apple dot com 2006-11-01 19:11 -------
What's happening is that TER is inserting the call to GetConst in place of
'result' in the call to VerifyValues, as such:
(pre-TER)
result_4 = GetConst (filler, a);
VerifyValues (filler, 0, a$mbr1_5, result_4);
(post-TER)
VerifyValues (filler, 0, a$mbr1, GetConst (filler, a));
While this itself isn't a problem, it exposes a problem in the argument
handling mechanism where an argument split between regs/stack doesn't correctly
detect collision with other in-use stack locations. I believe this is a
problem on platforms that ACCUMULATE_OUTGOING_ARGS. I have a patch I'll send
out for consideration.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29683