Re: wide-int, ipa

2014-01-31 Thread Mike Stump
On Jan 9, 2014, at 7:20 AM, Richard Biener richard.guent...@gmail.com wrote:
 @@ -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

Fixed, thanks for the catch.  This is what I checked in:

Index: ipa-devirt.c
===
--- ipa-devirt.c(revision 206599)
+++ ipa-devirt.c(working copy)
@@ -1023,7 +1023,7 @@ get_polymorphic_call_info (tree fndecl,
{
  base_pointer = TREE_OPERAND (base, 0);
  context-offset
-   += offset2 + mem_ref_offset (base).ulow () * BITS_PER_UNIT;
+   += offset2 + mem_ref_offset (base).to_short_addr () * 
BITS_PER_UNIT;
  context-outer_type = NULL;
}
  /* We found base object.  In this case the outer_type



Re: wide-int, ipa

2014-01-09 Thread Richard Biener
On Thu, Jan 2, 2014 at 5:12 AM, Mike Stump mikest...@comcast.net wrote:
 On Nov 23, 2013, at 11:22 AM, Mike Stump mikest...@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.




Re: wide-int, ipa

2014-01-01 Thread Mike Stump
On Nov 23, 2013, at 11:22 AM, Mike Stump mikest...@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.


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);


wide-int, ipa

2013-11-23 Thread Mike Stump
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?

* 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.


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);