Patchwork [trans-mem] Fix tm_pure not inlinable in tm_safe

login
register
mail settings
Submitter Aldy Hernandez
Date Oct. 31, 2011, 7:44 p.m.
Message ID <4EAEFA95.8040402@redhat.com>
Download mbox | patch
Permalink /patch/122929/
State New
Headers show

Comments

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

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.