This is the mail archive of the
mailing list for the GCC project.
Re: [Bug c++/46269] [trans-mem] internal compiler error in expand_block_tm of trans-mem.c
- From: Richard Henderson <rth at redhat dot com>
- To: Aldy Hernandez <aldyh at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 11 Nov 2010 12:14:10 -0800
- Subject: Re: [Bug c++/46269] [trans-mem] internal compiler error in expand_block_tm of trans-mem.c
- References: <email@example.com/bugzilla/> <bug-46269-1652-3dLmBWa8em@http.gcc.gnu.org/bugzilla/> <20101110214350.GA15556@redhat.com> <4CDC13AA.firstname.lastname@example.org> <20101111200206.GA26801@redhat.com>
On 11/11/2010 12:02 PM, Aldy Hernandez wrote:
> Actually, that had been my first approach, but ipa_tm_scan_irr_function
> (and consequently ipa_tm_scan_irr_block*) only gets called for items in
> the worklist. And the worklist is only populated for:
> /* Some callees cannot be arbitrarily cloned. These will always be
> irrevocable. Mark these now, so that we need not scan them. */
> --> if (is_tm_irrevocable (node->decl)
> || (a >= AVAIL_OVERWRITABLE
> && !tree_versionable_function_p (node->decl)))
> ipa_tm_note_irrevocable (node, &worklist);
> Since updateBuildingSite() is not makred as irrevocable,
> is_tm_irrevoable() returns false, and we never do the
> ipa_tm_scan_irr_block() thing you expect.
Um, no. This is for marking entire functions irrevocable.
When the entire function is irrevocable, of course we don't
scan the blocks. When the entire function is NOT so marked,
then we scan the blocks looking for paths within the function
that need to transition to serial-irrevocable.