diff mbox

wide-int, ipa

Message ID 5C2EC229-6322-4263-B4FE-6C06EEC946A9@comcast.net
State New
Headers show

Commit Message

Mike Stump Jan. 2, 2014, 4:12 a.m. UTC
On Nov 23, 2013, at 11:22 AM, Mike Stump <mikestump@comcast.net> wrote:
> Richi has asked the we break the wide-int patch so that the individual port and front end maintainers can review their parts without have to go through the entire patch.    This patch covers the ipa code.
> 
> Ok?

Ping?

I promise, this patch isn't frightening.  Small, easy to read and understand, doesn't require an ipa expert.
* ipa-devirt.c
	(get_polymorphic_call_info): Use wide-int interfaces.
	* ipa-prop.c
	(compute_complex_assign_jump_func): Use wide-int interfaces.
	(get_ancestor_addr_info): Likewise.
	(ipa_modify_call_arguments): Likewise.

Comments

Richard Biener Jan. 9, 2014, 3:20 p.m. UTC | #1
On Thu, Jan 2, 2014 at 5:12 AM, Mike Stump <mikestump@comcast.net> wrote:
> On Nov 23, 2013, at 11:22 AM, Mike Stump <mikestump@comcast.net> wrote:
>> Richi has asked the we break the wide-int patch so that the individual port and front end maintainers can review their parts without have to go through the entire patch.    This patch covers the ipa code.
>>
>> Ok?
>
> Ping?
>
> I promise, this patch isn't frightening.  Small, easy to read and understand, doesn't require an ipa expert.

Why

@@ -968,7 +968,7 @@ get_polymorphic_call_info (tree fndecl,
                {
                  base_pointer = TREE_OPERAND (base, 0);
                  context->offset
-                    += offset2 + mem_ref_offset (base).low * BITS_PER_UNIT;
+                   += offset2 + mem_ref_offset (base).ulow () * BITS_PER_UNIT;
                  context->outer_type = NULL;
                }
              /* We found base object.  In this case the outer_type

but then

@@ -1063,7 +1063,7 @@ compute_complex_assign_jump_func (struct
ipa_node_params *info,
       || max_size == -1
       || max_size != size)
     return;
-  offset += mem_ref_offset (base).low * BITS_PER_UNIT;
+  offset += mem_ref_offset (base).to_short_addr () * BITS_PER_UNIT;
   ssa = TREE_OPERAND (base, 0);
   if (TREE_CODE (ssa) != SSA_NAME
       || !SSA_NAME_IS_DEFAULT_DEF (ssa)

?  I think it should be to_short_addr () in the first case as well.

Ok with that change.

Richard.

>
diff mbox

Patch

diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c
index 38cf378..41e5300 100644
--- a/gcc/ipa-devirt.c
+++ b/gcc/ipa-devirt.c
@@ -968,7 +968,7 @@  get_polymorphic_call_info (tree fndecl,
 		{
 		  base_pointer = TREE_OPERAND (base, 0);
 		  context->offset
-		     += offset2 + mem_ref_offset (base).low * BITS_PER_UNIT;
+		    += offset2 + mem_ref_offset (base).ulow () * BITS_PER_UNIT;
 		  context->outer_type = NULL;
 		}
 	      /* We found base object.  In this case the outer_type
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
index d122dd5..3953442 100644
--- a/gcc/ipa-prop.c
+++ b/gcc/ipa-prop.c
@@ -1063,7 +1063,7 @@  compute_complex_assign_jump_func (struct ipa_node_params *info,
       || max_size == -1
       || max_size != size)
     return;
-  offset += mem_ref_offset (base).low * BITS_PER_UNIT;
+  offset += mem_ref_offset (base).to_short_addr () * BITS_PER_UNIT;
   ssa = TREE_OPERAND (base, 0);
   if (TREE_CODE (ssa) != SSA_NAME
       || !SSA_NAME_IS_DEFAULT_DEF (ssa)
@@ -1122,7 +1122,7 @@  get_ancestor_addr_info (gimple assign, tree *obj_p, HOST_WIDE_INT *offset)
       || TREE_CODE (SSA_NAME_VAR (parm)) != PARM_DECL)
     return NULL_TREE;
 
-  *offset += mem_ref_offset (expr).low * BITS_PER_UNIT;
+  *offset += mem_ref_offset (expr).to_short_addr () * BITS_PER_UNIT;
   *obj_p = obj;
   return expr;
 }
@@ -3661,9 +3661,8 @@  ipa_modify_call_arguments (struct cgraph_edge *cs, gimple stmt,
 		  if (TYPE_ALIGN (type) > align)
 		    align = TYPE_ALIGN (type);
 		}
-	      misalign += (tree_to_double_int (off)
-			   .sext (TYPE_PRECISION (TREE_TYPE (off))).low
-			   * BITS_PER_UNIT);
+	      misalign += (offset_int::from (off, SIGNED)
+			   * BITS_PER_UNIT).to_short_addr ();
 	      misalign = misalign & (align - 1);
 	      if (misalign != 0)
 		align = (misalign & -misalign);