This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/29516] gfortran miscompiled
- From: "mrs at apple dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 9 Jan 2007 23:34:38 -0000
- Subject: [Bug tree-optimization/29516] gfortran miscompiled
- References: <bug-29516-10259@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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