diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fold-const.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.fortran-torture/compile/pr30147.f90 | 14 |
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 406b52b..61f49fa 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-12-12 Richard Guenther <rguenther@suse.de> + + PR middle-end/30147 + * fold-const.c (fold_read_from_constant_string): Only fold read + from constant string if the result type is integer. + 2006-12-12 Olivier Hainque <hainque@adacore.com> * config/rs6000/t-vxworks: Remove assignment to LIB2FUNCS_EXTRA. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 0908e28..f1f9c00 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -12726,7 +12726,9 @@ fold_unary_to_constant (enum tree_code code, tree type, tree op0) tree fold_read_from_constant_string (tree exp) { - if (TREE_CODE (exp) == INDIRECT_REF || TREE_CODE (exp) == ARRAY_REF) + if ((TREE_CODE (exp) == INDIRECT_REF + || TREE_CODE (exp) == ARRAY_REF) + && TREE_CODE (TREE_TYPE (exp)) == INTEGER_TYPE) { tree exp1 = TREE_OPERAND (exp, 0); tree index; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2846aaf..8e8c438 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-12-12 Richard Guenther <rguenther@suse.de> + + PR middle-end/30147 + * gfortran.fortran-torture/compile/pr30147.f90: New testcase. + 2006-12-11 Aldy Hernandez <aldyh@redhat.com> Diego Novillo <dnovillo@redhat.com> diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/pr30147.f90 b/gcc/testsuite/gfortran.fortran-torture/compile/pr30147.f90 new file mode 100644 index 0000000..b9c1533 --- /dev/null +++ b/gcc/testsuite/gfortran.fortran-torture/compile/pr30147.f90 @@ -0,0 +1,14 @@ +MODULE input_cp2k_motion + IMPLICIT NONE + interface + SUBROUTINE keyword_create(variants) + CHARACTER(len=*), DIMENSION(:), & + INTENT(in) :: variants + end subroutine + end interface +CONTAINS + SUBROUTINE create_neb_section() + CALL keyword_create(variants=(/"K"/)) + END SUBROUTINE create_neb_section +END MODULE input_cp2k_motion + |