[prev in list] [next in list] [prev in thread] [next in thread]
List: gcc
Subject: Re: gsi_remove on a call
From: Gary Oblock via Gcc <gcc () gcc ! gnu ! org>
Date: 2020-10-28 17:31:17
Message-ID: BYAPR01MB546489B591554ADDE475AE7FC6170 () BYAPR01MB5464 ! prod ! exchangelabs ! com
[Download RAW message or body]
Martin,
After some digging and a little luck, I found that this does what I wanted:
cgraph_update_edges_for_call_stmt ( stmt, gimple_call_fndecl ( stmt), NULL);
Thanks,
Gary
________________________________
From: Martin Jambor <mjambor@suse.cz>
Sent: Tuesday, October 27, 2020 5:44 AM
To: Gary Oblock <gary@amperecomputing.com>; gcc@gcc.gnu.org <gcc@gcc.gnu.org>
Subject: Re: gsi_remove on a call
[EXTERNAL EMAIL NOTICE: This email originated from an external sender. Please be \
mindful of safe email handling and proprietary information protection practices.]
On Tue, Oct 27 2020, Gary Oblock via Gcc wrote:
> I'm running into grief in verify_node in cgraph.c
> when I use gsi_remove on a call statement.
>
> Specifically it's a free statement which I've replaced
> with other free statements as part of my structure
> reorg optimizations. Note, in other working code
> I do this with malloc and it doesn't seem to be a problem.
>
> Where it happens it's trying to look at the call graph edges.
> Is there a way to remove the edge in question or mark it
> to be ignored?
Have you tried using cgraph_edge::set_call_stmt to update the edge?
> I see that line below about built in unreachable
> and wonder if I'm supposed to set the decl to that but I
> don't see others doing it so...
The comment you quoted explains why __builtin_unreachable is special.
Martin
>
> Here's the code in cgraph (e->call_stmt is the free in question:)
>
> if (gimple_has_body_p (e->caller->decl)
> && !e->caller->inlined_to
> && !e->speculative
> /* Optimized out calls are redirected to __builtin_unreachable. */
> && (e->count.nonzero_p ()
> > > ! e->callee->decl
> > > !fndecl_built_in_p (e->callee->decl, BUILT_IN_UNREACHABLE))
> && count == ENTRY_BLOCK_PTR_FOR_FN(DECL_STRUCT_FUNCTION (decl))->count
> && (!e->count.ipa_p ()
> && e->count.differs_from_p (gimple_bb (e->call_stmt)->count)))
> {
> >
>
> Thanks,
>
> Gary
>
>
>
>
>
>
> CONFIDENTIALITY NOTICE: This e-mail message, including any attachments, is for the \
> sole use of the intended recipient(s) and contains information that is confidential \
> and proprietary to Ampere Computing or its subsidiaries. It is to be used solely \
> for the purpose of furthering the parties' business relationship. Any unauthorized \
> review, copying, or distribution of this email (or any attachments thereto) is \
> strictly prohibited. If you are not the intended recipient, please contact the \
> sender immediately and permanently delete the original and any copies of this email \
> and any attachments thereto.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic