This fixes the g++ pr45940-4 failure. I think it is due to the latest merge.
Tested on i686. (I cannot test it yet on x86-64, I hope to get access to a 64 bit soon...)
Patrick. 2011-10-31 Patrick Marlier <patrick.marl...@gmail.com> * ipa-inline.c: Adjust how cannot_inline is set.
Index: ipa-inline.c =================================================================== --- ipa-inline.c (revision 180705) +++ ipa-inline.c (working copy) @@ -285,14 +285,14 @@ inlinable = false; } /* TM pure functions should not get inlined if the outer function is - a TM safe function. */ + a TM safe function. ??? TM pure function could be inlined if waiver block + is implemented. */ else if (flag_tm && is_tm_pure (callee->decl) && is_tm_safe (e->caller->decl)) { e->inline_failed = CIF_UNSPECIFIED; - gimple_call_set_cannot_inline (e->call_stmt, true); - return false; + inlinable = false; } /* Don't inline if the callee can throw non-call exceptions but the caller cannot.