diff mbox

[gimple-classes,committed,79/92] Concretize gimple_call_set_fn

Message ID 1414442490-14841-80-git-send-email-dmalcolm@redhat.com
State New
Headers show

Commit Message

David Malcolm Oct. 27, 2014, 8:41 p.m. UTC
This corresponds to:
  [PATCH 82/89] Concretize gimple_call_set_fntype
  https://gcc.gnu.org/ml/gcc-patches/2014-04/msg01187.html
from the original 89-patch kit

That earlier patch was approved by Jeff:
> This is fine once prerequisites have gone in.
in https://gcc.gnu.org/ml/gcc-patches/2014-05/msg00840.html

gcc/
	* gimple.h (gimple_call_set_fn): Require a gimple_call.

	* trans-mem.c (dump_tm_memopt_transform): Likewise.
	(tm_memopt_transform_blocks): Add checked casts to gimple_call in
	suites guarded by is_tm_simple_{load|store}, which enforce that
	the statement must be a GIMPLE_CALL; use this when invoking
	dump_tm_memopt_transform.
---
 gcc/ChangeLog.gimple-classes | 12 ++++++++++++
 gcc/gimple.h                 |  3 +--
 gcc/trans-mem.c              | 14 ++++++++------
 3 files changed, 21 insertions(+), 8 deletions(-)
diff mbox

Patch

diff --git a/gcc/ChangeLog.gimple-classes b/gcc/ChangeLog.gimple-classes
index 37e3955..ae57d57 100644
--- a/gcc/ChangeLog.gimple-classes
+++ b/gcc/ChangeLog.gimple-classes
@@ -1,5 +1,17 @@ 
 2014-10-24  David Malcolm  <dmalcolm@redhat.com>
 
+	Concretize gimple_call_set_fn
+
+	* gimple.h (gimple_call_set_fn): Require a gimple_call.
+
+	* trans-mem.c (dump_tm_memopt_transform): Likewise.
+	(tm_memopt_transform_blocks): Add checked casts to gimple_call in
+	suites guarded by is_tm_simple_{load|store}, which enforce that
+	the statement must be a GIMPLE_CALL; use this when invoking
+	dump_tm_memopt_transform.
+
+2014-10-24  David Malcolm  <dmalcolm@redhat.com>
+
 	Tweak to gimplify_modify_expr
 
 	* gimplify.c (gimplify_modify_expr): Introduce local "call_stmt".
diff --git a/gcc/gimple.h b/gcc/gimple.h
index ac6d664..a7ec1d5 100644
--- a/gcc/gimple.h
+++ b/gcc/gimple.h
@@ -2679,9 +2679,8 @@  gimple_call_fn_ptr (const_gimple gs)
 /* Set FN to be the function called by call statement GS.  */
 
 static inline void
-gimple_call_set_fn (gimple gs, tree fn)
+gimple_call_set_fn (gimple_call gs, tree fn)
 {
-  GIMPLE_CHECK (gs, GIMPLE_CALL);
   gcc_gimple_checking_assert (!gimple_call_internal_p (gs));
   gimple_set_op (gs, 1, fn);
 }
diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c
index 98fd3a2..bdd4a77 100644
--- a/gcc/trans-mem.c
+++ b/gcc/trans-mem.c
@@ -3778,7 +3778,7 @@  dump_tm_memopt_transform (gimple stmt)
 
 static void
 tm_memopt_transform_stmt (unsigned int offset,
-			  gimple stmt,
+			  gimple_call stmt,
 			  gimple_stmt_iterator *gsi)
 {
   tree fn = gimple_call_fn (stmt);
@@ -3814,28 +3814,30 @@  tm_memopt_transform_blocks (vec<basic_block> blocks)
 
 	  if (is_tm_simple_load (stmt))
 	    {
+	      gimple_call call_stmt = as_a <gimple_call> (stmt);
 	      loc = tm_memopt_value_number (stmt, NO_INSERT);
 	      if (store_avail && bitmap_bit_p (store_avail, loc))
-		tm_memopt_transform_stmt (TRANSFORM_RAW, stmt, &gsi);
+		tm_memopt_transform_stmt (TRANSFORM_RAW, call_stmt, &gsi);
 	      else if (store_antic && bitmap_bit_p (store_antic, loc))
 		{
-		  tm_memopt_transform_stmt (TRANSFORM_RFW, stmt, &gsi);
+		  tm_memopt_transform_stmt (TRANSFORM_RFW, call_stmt, &gsi);
 		  bitmap_set_bit (store_avail, loc);
 		}
 	      else if (read_avail && bitmap_bit_p (read_avail, loc))
-		tm_memopt_transform_stmt (TRANSFORM_RAR, stmt, &gsi);
+		tm_memopt_transform_stmt (TRANSFORM_RAR, call_stmt, &gsi);
 	      else
 		bitmap_set_bit (read_avail, loc);
 	    }
 	  else if (is_tm_simple_store (stmt))
 	    {
+	      gimple_call call_stmt = as_a <gimple_call> (stmt);
 	      loc = tm_memopt_value_number (stmt, NO_INSERT);
 	      if (store_avail && bitmap_bit_p (store_avail, loc))
-		tm_memopt_transform_stmt (TRANSFORM_WAW, stmt, &gsi);
+		tm_memopt_transform_stmt (TRANSFORM_WAW, call_stmt, &gsi);
 	      else
 		{
 		  if (read_avail && bitmap_bit_p (read_avail, loc))
-		    tm_memopt_transform_stmt (TRANSFORM_WAR, stmt, &gsi);
+		    tm_memopt_transform_stmt (TRANSFORM_WAR, call_stmt, &gsi);
 		  bitmap_set_bit (store_avail, loc);
 		}
 	    }