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: [Bug c++/46269] [trans-mem] internal compiler error in expand_block_tm of trans-mem.c


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.


r~


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