This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/46269] [trans-mem] internal compiler error in expand_block_tm of trans-mem.c
- From: "aldyh at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 9 Nov 2010 17:36:19 +0000
- Subject: [Bug c++/46269] [trans-mem] internal compiler error in expand_block_tm of trans-mem.c
- Auto-submitted: auto-generated
- References: <bug-46269-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46269
Aldy Hernandez <aldyh at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|WAITING |ASSIGNED
AssignedTo|unassigned at gcc dot |aldyh at gcc dot gnu.org
|gnu.org |
--- Comment #3 from Aldy Hernandez <aldyh at gcc dot gnu.org> 2010-11-09 17:36:00 UTC ---
The problem here is that for the inline function atomic_exchange_and_add(), the
user is expecting the transaction_pure to be implied because the caller
(BuildingCompletedEvent::BuildingCompletedEvent) is marked as transaction_pure.
GCC doesn't see this implied transaction_pure, so we call
ipa_tm_transform_clone() to make a clone of atomic_exchange_and_add. Later,
when we try to expand the transaction in the atomic_exchange_and_add() clone,
we fail in expand_block_tm() because we don't handle GIMPLE_ASM's.
Richard, is the implied transaction_pure legal, and so we should handle it? Or
should we exit gracefully in expand_block_tm() with an error about not
supporting inline asms in a transaction?