[trans-mem] Fix tm_pure not inlinable in tm_safe

Submitted by Aldy Hernandez on Oct. 31, 2011, 7:44 p.m.

Details

Message ID 4EAEFA95.8040402@redhat.com
State New
Headers show

Commit Message

Aldy Hernandez Oct. 31, 2011, 7:44 p.m.
> It does on my side:
>
> === g++ Summary ===
> # of expected passes 122
>
> I have no other change over the source.

Woah!!!! I hereby profess my love for Richard and Patrick.  That didn't 
sound, right, but whatever...  During the weekend they apparently fixed 
the rest of the bug I've been working on all morning.

Yay!!! With this patch we have ironed out all the C++ regressions.

Thanks and sorry for the duplicate work.

Committing to branch.
* ipa-inline.c (can_inline_edge_p): Do not inline TM safe calling
	TM pure functions.

Patch hide | download patch | download mbox

Index: ipa-inline.c
===================================================================
--- ipa-inline.c	(revision 180710)
+++ ipa-inline.c	(working copy)
@@ -291,8 +291,7 @@  can_inline_edge_p (struct cgraph_edge *e
 	   && 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.