------- Comment #22 from mrs at apple dot com  2007-01-09 23:34 -------
So I'm wondering, does:

Doing diffs in .:
--- ./tree-ssa-address.c.~1~    2006-12-22 21:07:11.000000000 -0800
+++ ./tree-ssa-address.c        2007-01-09 15:30:42.000000000 -0800
@@ -483,7 +483,7 @@ addr_to_parts (aff_tree *addr, tree type
     {
       part = fold_convert (type, addr->elts[i].val);
       if (!double_int_one_p (addr->elts[i].coef))
-       part = fold_build2 (MULT_EXPR, type, part,
+       part = fold_build2 (MULT_EXPR, type, convert (sizetype, part),
                            double_int_to_tree (type, addr->elts[i].coef));
       add_to_parts (parts, type, part);
     }
--------------

fix this bug?  If so, why is that not the right patch?  With it, I get:

gfc_conv_array_transpose (se)
{
  long unsigned int D.1696;
  int * D.1697;
  int * D.1695;
  int * D.1694;
  unsigned int ivtmp.28;
  int n;
  struct gfc_ss_info * dest_info;
  int src_index;
  int dest_index;
  int src;
  int dest;
  int D.1651;
  int D.1650;
  int D.1649;
  int D.1648;

<bb 2>:

  # n_28 = PHI <n_14(4), 0(2)>
<L0>:;
  D.1694_16 = (int *) dest_info_4(D);
  D.1695_27 = (int *) n_28;
  MEM[base: D.1694_16, index: D.1695_27, step: 4B]{dest_info->dim[n]} = n_28;
  D.1696_2 = (long unsigned int) n_28;
  D.1697_3 = D.1696_2 * 4294967292B;
  src_index_6 = MEM[base: &gfc_rank_cst, index: D.1697_3, offset:
4B]{gfc_rank_cst[D.1648]};
  D.1649_8 = c (src_7(D), src_index_6);
  D.1650_11 = b (dest_9(D), dest_index_10(D));
  D.1651_13 = se_12(D)->pre;
  a (D.1651_13, D.1650_11, D.1649_8);
  n_14 = n_28 + 1;
  if (n_14 != 2) goto <L5>; else goto <L2>;

<L5>:;
  goto <bb 3> (<L0>);

<L2>:;
  return;

}


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29516

Reply via email to