[trans-mem] fixup OBJ_TYPE_REF removable correctly

Message ID 4EA9D389.2010007@redhat.com
State New
Headers show

Commit Message

Aldy Hernandez Oct. 27, 2011, 9:56 p.m.
Ho hum, more patches on our way to mergeability.

This seems to be more fallout from the last merge.  There's an apparent 
discrepancy between what we think is valid gimple in 
ipa_tm_insert_gettmclone_call() and what verify_gimple_call() believes 
is true.

This, along with other patches I have queued up, fixes more regressions 
in g++.dg/tm/.

Committed to branch.
* trans-mem.c (ipa_tm_insert_gettmclone_call): Use gimple_call_fntype
	to get function return type.


Index: trans-mem.c
--- trans-mem.c	(revision 180581)
+++ trans-mem.c	(working copy)
@@ -4300,11 +4300,11 @@  ipa_tm_insert_gettmclone_call (struct cg
   gimple_call_set_fn (stmt, callfn);
-  /* Discard OBJ_TYPE_REF above, may produce incompatible LHS and RHS
+  /* Discarding OBJ_TYPE_REF above may produce incompatible LHS and RHS
      for a call statement.  Fix it.  */
     tree lhs = gimple_call_lhs (stmt);
-    tree rettype =  TREE_TYPE (TREE_TYPE (TREE_TYPE (callfn)));
+    tree rettype = TREE_TYPE (gimple_call_fntype (stmt));
     if (lhs
 	&& !useless_type_conversion_p (TREE_TYPE (lhs), rettype))