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: [PATCH] Fix PR c++/17972



On Mar 21, 2005, at 11:06 AM, Jason Merrill wrote:


On Wed, 9 Mar 2005 08:54:08 +0100, Eric Botcazou <ebotcazou@libertysurf.fr> wrote:

When the C++ FE converts the decrement expression to the 3-operand form, it
first stabilizes the lhs; however, since the function is marked as 'const',
the stabilization is a no-op so the CALL_EXPR ends up being referenced twice
in the expression. Later, when the tree inliner kicks in, it inlines the
unique CALL_EXPR. When the enclosing expression is expanded to RTL, the
inlined body is expanded twice and all hell breaks loose since the RETURN of
the second block points to the return label of the first block.

Hmm, wait...inlining happens after gimplification, yes? The gimplification
process should have unshared the CALL_EXPR in one of the two calls to
unshare_all_trees, so we should have had two CALL_EXPRs, not one shared
one.

But this is for 3.4 which does not include gimplification at all. -- Pinski


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