diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2a8de0abc1a..261b13538f1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-03-23 Jakub Jelinek + + PR tree-optimization/39516 + * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable. + 2009-03-23 Bingfeng Mei * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint diff --git a/gcc/lambda-code.c b/gcc/lambda-code.c index 794d4e8b256..07b9469e35e 100644 --- a/gcc/lambda-code.c +++ b/gcc/lambda-code.c @@ -2472,7 +2472,8 @@ perfect_nestify (struct loop *loop, it to one just in case. */ exit_condition = get_loop_exit_condition (newloop); - uboundvar = create_tmp_var (integer_type_node, "uboundvar"); + uboundvar = create_tmp_var (TREE_TYPE (VEC_index (tree, ubounds, 0)), + "uboundvar"); add_referenced_var (uboundvar); stmt = gimple_build_assign (uboundvar, VEC_index (tree, ubounds, 0)); uboundvar = make_ssa_name (uboundvar, stmt); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index abad6bab033..65f77602a8b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-03-23 Jakub Jelinek + + PR tree-optimization/39516 + * gfortran.dg/pr39516.f: New test. + 2009-03-22 Hans-Peter Nilsson * lib/target-libpath.exp (set_ld_library_path_env_vars): diff --git a/gcc/testsuite/gfortran.dg/pr39516.f b/gcc/testsuite/gfortran.dg/pr39516.f new file mode 100644 index 00000000000..3d6104a8ebf --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr39516.f @@ -0,0 +1,20 @@ +C PR tree-optimization/39516 +C { dg-do compile } +C { dg-options "-O2 -ftree-loop-linear" } + SUBROUTINE SUB(A, B, M) + IMPLICIT NONE + DOUBLE PRECISION A(20,20), B(20) + INTEGER*8 I, J, K, M + DO I=1,M + DO J=1,M + A(I,J)=A(I,J)+1 + END DO + END DO + DO K=1,20 + DO I=1,M + DO J=1,M + B(I)=B(I)+A(I,J) + END DO + END DO + END DO + END SUBROUTINE