2007-10-10 Richard Guenther <rguenther@suse.de>
PR tree-optimization/33099
PR tree-optimization/33381
* tree-vrp.c (adjust_range_with_scev): Do not adjust ranges
from pointer typed chrecs.
* gcc.c-torture/execute/pr33099.c: New testcase.
* gcc.c-torture/execute/pr33381.c: Likewise.
From-SVN: r129197
+2007-10-10 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/33099
+ PR tree-optimization/33381
+ * tree-vrp.c (adjust_range_with_scev): Do not adjust ranges
+ from pointer typed chrecs.
+
2007-10-08 Mark Mitchell <mark@codesourcery.com>
* BASE-VER: Bump.
+2007-10-10 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/33099
+ PR tree-optimization/33381
+ * gcc.c-torture/execute/pr33099.c: New testcase.
+ * gcc.c-torture/execute/pr33381.c: Likewise.
+
2007-10-07 Release Manager
* GCC 4.2.2 released.
--- /dev/null
+extern void abort (void);
+
+volatile int N = 5;
+
+void foo (void)
+{
+ int i;
+ char *p, value[10];
+
+ value[0] = 0x42;
+ for (i = 0; i < N; i++)
+ if (i > 0)
+ {
+ p = (char *)i - 1;
+ *(value + (int) p) = (char) i;
+ }
+
+ if (value[0] != 1)
+ abort ();
+}
+
+main()
+{
+ foo ();
+ return 0;
+}
--- /dev/null
+extern void abort(void);
+void x(void *data)
+{
+ if ((long)data < 0)
+ abort();
+}
+int main()
+{
+ long i;
+ for (i = 0; i < 5; i++)
+ if (i > 0)
+ x((void *)(i - 1));
+ return 0;
+}
+
if (TREE_CODE (chrec) != POLYNOMIAL_CHREC)
return;
+ /* Don't adjust ranges from pointer CHRECs. */
+ if (POINTER_TYPE_P (TREE_TYPE (chrec)))
+ return;
+
init = initial_condition_in_loop_num (chrec, loop->num);
step = evolution_part_in_loop_num (chrec, loop->num);