tree-ssa-ccp.c (fold_const_aggregate_ref): Check that result of string folding is of integral type.
* tree-ssa-ccp.c (fold_const_aggregate_ref): Check that result of string folding is of integral type. * fortran.fortran-torture/compile/pr45598.f90: New test. From-SVN: r164111
This commit is contained in:
parent
ba885ec559
commit
54e34c358a
|
@ -1,3 +1,9 @@
|
||||||
|
2010-09-09 Jan Hubicka <jh@suse.cz>
|
||||||
|
|
||||||
|
PR tree-optimization/45598
|
||||||
|
* tree-ssa-ccp.c (fold_const_aggregate_ref): Check that result of
|
||||||
|
string folding is of integral type.
|
||||||
|
|
||||||
2010-09-09 Nathan Sidwell <nathan@codesourcery.com>
|
2010-09-09 Nathan Sidwell <nathan@codesourcery.com>
|
||||||
|
|
||||||
* configure.ac (gnu_indirect_function): New test.
|
* configure.ac (gnu_indirect_function): New test.
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2010-09-08 Jan Hubicka <jh@suse.cz>
|
||||||
|
|
||||||
|
PR tree-optimization/45598
|
||||||
|
* fortran.fortran-torture/compile/pr45598.f90: New test.
|
||||||
|
|
||||||
2010-09-09 Nathan Sidwell <nathan@codesourcery.com>
|
2010-09-09 Nathan Sidwell <nathan@codesourcery.com>
|
||||||
|
|
||||||
* lib/target-supports-dg.exp (dg-require-ifunc): New.
|
* lib/target-supports-dg.exp (dg-require-ifunc): New.
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
program main
|
||||||
|
implicit none
|
||||||
|
character(len=10) :: digit_string = '123456789'
|
||||||
|
character :: digit_arr(10)
|
||||||
|
call copy(digit_string, digit_arr)
|
||||||
|
print '(1x, a1)',digit_arr(1:9)
|
||||||
|
contains
|
||||||
|
subroutine copy(in, out)
|
||||||
|
character, dimension(10) :: in, out
|
||||||
|
out(1:10) = in(1:10)
|
||||||
|
end subroutine copy
|
||||||
|
end program main
|
||||||
|
|
|
@ -1398,8 +1398,7 @@ fold_const_aggregate_ref (tree t)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fold read from constant string. */
|
/* Fold read from constant string. */
|
||||||
if (TREE_CODE (ctor) == STRING_CST
|
if (TREE_CODE (ctor) == STRING_CST)
|
||||||
&& TREE_CODE (idx) == INTEGER_CST)
|
|
||||||
{
|
{
|
||||||
tree low_bound = array_ref_low_bound (t);
|
tree low_bound = array_ref_low_bound (t);
|
||||||
double_int low_bound_cst;
|
double_int low_bound_cst;
|
||||||
|
@ -1407,7 +1406,9 @@ fold_const_aggregate_ref (tree t)
|
||||||
double_int length_cst;
|
double_int length_cst;
|
||||||
bool signed_p = TYPE_UNSIGNED (TREE_TYPE (idx));
|
bool signed_p = TYPE_UNSIGNED (TREE_TYPE (idx));
|
||||||
|
|
||||||
if (TREE_CODE (low_bound) != INTEGER_CST)
|
if (TREE_CODE (idx) != INTEGER_CST
|
||||||
|
|| !INTEGRAL_TYPE_P (TREE_TYPE (t))
|
||||||
|
|| TREE_CODE (low_bound) != INTEGER_CST)
|
||||||
return NULL_TREE;
|
return NULL_TREE;
|
||||||
low_bound_cst = tree_to_double_int (low_bound);
|
low_bound_cst = tree_to_double_int (low_bound);
|
||||||
index_cst = tree_to_double_int (idx);
|
index_cst = tree_to_double_int (idx);
|
||||||
|
|
Loading…
Reference in New Issue