------- Comment #5 from rguenth at gcc dot gnu dot org 2010-09-03 14:21 ------- Hmhm, IVOPTs expands crap into arguments.
Index: gcc/tree-ssa-loop-ivopts.c =================================================================== --- gcc/tree-ssa-loop-ivopts.c (revision 163817) +++ gcc/tree-ssa-loop-ivopts.c (working copy) @@ -1023,6 +1023,11 @@ find_bivs (struct ivopts_data *data) type = TREE_TYPE (PHI_RESULT (phi)); base = fold_convert (type, base); + STRIP_USELESS_TYPE_CONVERSION (base); + if (CONVERT_EXPR_P (base) + && (POINTER_TYPE_P (TREE_TYPE (base)) + != POINTER_TYPE_P (TREE_OPERAND (base, 0)))) + continue; if (step) { if (POINTER_TYPE_P (type)) fixes the testcase, I am bootstrapping and testing this on x86_64 as a short-term fix but have to think about it some more. Can you check if 32bit bootstrap succeeds with that? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45519