mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-05 05:30:26 +08:00
re PR fortran/36316 (type mismatch in binary expression caught by verify_gimple)
2008-05-27 Tobias Burnus <burnus@net-b.de> PR fortran/36316 * trans-array.c (gfc_set_loop_bounds_from_array_spec): Add missing fold_convert. 2008-05-27 Tobias Burnus <burnus@net-b.de> PR fortran/36316 * gfortran.dg/assignment_3.f90: New. From-SVN: r136052
This commit is contained in:
parent
75e8fd2f71
commit
795dc58727
@ -1,3 +1,9 @@
|
||||
2008-05-27 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/36316
|
||||
* trans-array.c (gfc_set_loop_bounds_from_array_spec):
|
||||
Add missing fold_convert.
|
||||
|
||||
2008-05-26 Daniel Franke <franke.daniel@gmail.com>
|
||||
|
||||
* fortran/cpp.c (cpp_define_builtins): Remove usage of TARGET_* macros,
|
||||
|
@ -472,14 +472,14 @@ gfc_set_loop_bounds_from_array_spec (gfc_interface_mapping * mapping,
|
||||
gfc_apply_interface_mapping (mapping, &tmpse, as->lower[dim]);
|
||||
gfc_add_block_to_block (&se->pre, &tmpse.pre);
|
||||
gfc_add_block_to_block (&se->post, &tmpse.post);
|
||||
lower = tmpse.expr;
|
||||
lower = fold_convert (gfc_array_index_type, tmpse.expr);
|
||||
|
||||
/* ...and the upper bound. */
|
||||
gfc_init_se (&tmpse, NULL);
|
||||
gfc_apply_interface_mapping (mapping, &tmpse, as->upper[dim]);
|
||||
gfc_add_block_to_block (&se->pre, &tmpse.pre);
|
||||
gfc_add_block_to_block (&se->post, &tmpse.post);
|
||||
upper = tmpse.expr;
|
||||
upper = fold_convert (gfc_array_index_type, tmpse.expr);
|
||||
|
||||
/* Set the upper bound of the loop to UPPER - LOWER. */
|
||||
tmp = fold_build2 (MINUS_EXPR, gfc_array_index_type, upper, lower);
|
||||
|
@ -1,3 +1,8 @@
|
||||
2008-05-27 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/36316
|
||||
* gfortran.dg/assignment_3.f90: New.
|
||||
|
||||
2008-05-27 Richard Sandiford <rdsandiford@googlemail.com>
|
||||
|
||||
* lib/fortran-torture.exp (get-fortran-torture-options):
|
||||
|
61
gcc/testsuite/gfortran.dg/assignment_3.f90
Normal file
61
gcc/testsuite/gfortran.dg/assignment_3.f90
Normal file
@ -0,0 +1,61 @@
|
||||
! { dg-do compile }
|
||||
! PR fortran/36316
|
||||
!
|
||||
! gfortran generated a mismatching tree ("type mismatch in binary expression")
|
||||
! for array bounds (mixing integer kind=4/kind=8 without fold_convert).
|
||||
!
|
||||
MODULE YOMCAIN
|
||||
|
||||
IMPLICIT NONE
|
||||
SAVE
|
||||
|
||||
TYPE distributed_vector
|
||||
REAL, pointer :: local(:)
|
||||
INTEGER(4) :: global_length,local_start
|
||||
INTEGER(8) :: local_end
|
||||
END TYPE distributed_vector
|
||||
|
||||
INTERFACE ASSIGNMENT (=)
|
||||
MODULE PROCEDURE assign_ar_dv
|
||||
END INTERFACE
|
||||
|
||||
INTERFACE OPERATOR (*)
|
||||
MODULE PROCEDURE multiply_dv_dv
|
||||
END INTERFACE
|
||||
|
||||
CONTAINS
|
||||
|
||||
SUBROUTINE assign_ar_dv (handle,pvec)
|
||||
|
||||
! copy array to the distributed_vector
|
||||
|
||||
REAL, INTENT(IN) :: pvec(:)
|
||||
TYPE (distributed_vector), INTENT(INOUT) :: handle
|
||||
|
||||
handle%local(:) = pvec(:)
|
||||
|
||||
RETURN
|
||||
END SUBROUTINE assign_ar_dv
|
||||
|
||||
FUNCTION multiply_dv_dv (handle1,handle2)
|
||||
|
||||
! multiply two distributed_vectors
|
||||
|
||||
TYPE (distributed_vector), INTENT(IN) :: handle2
|
||||
TYPE (distributed_vector), INTENT(IN) :: handle1
|
||||
REAL :: multiply_dv_dv(handle1%local_start:handle1%local_end)
|
||||
|
||||
multiply_dv_dv = handle1%local(:) * handle2%local(:)
|
||||
|
||||
RETURN
|
||||
END FUNCTION multiply_dv_dv
|
||||
|
||||
|
||||
SUBROUTINE CAININAD_SCALE_DISTVEC ()
|
||||
TYPE (distributed_vector) :: PVAZG
|
||||
TYPE (distributed_vector) :: ZTEMP
|
||||
TYPE (distributed_vector) :: SCALP_DV
|
||||
|
||||
ZTEMP = PVAZG * SCALP_DV
|
||||
END SUBROUTINE CAININAD_SCALE_DISTVEC
|
||||
END MODULE YOMCAIN
|
Loading…
x
Reference in New Issue
Block a user