Commit aefd636b by Louis Krupp Committed by Louis Krupp

2017_12_27 Louis Krupp <louis.krupp@zoho.com>

	PR fortran/83092
	* expr.c (gfc_apply_init): Check that typespec has character type
	before using character length field.

2017_12_27  Louis Krupp  <louis.krupp@zoho.com>

	PR fortran/83092
	* gfortran.dg/init_char_with_nonchar_ctr.f90: New test.

From-SVN: r256011
parent 467e6f1b
2017_12_27 Louis Krupp <louis.krupp@zoho.com>
PR fortran/83092
* expr.c (gfc_apply_init): Check that typespec has character type
before using character length field.
2017-12-26 Thomas Koenig <tkoenig@gcc.gnu.org> 2017-12-26 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/83540 PR fortran/83540
......
...@@ -4208,6 +4208,7 @@ gfc_apply_init (gfc_typespec *ts, symbol_attribute *attr, gfc_expr *init) ...@@ -4208,6 +4208,7 @@ gfc_apply_init (gfc_typespec *ts, symbol_attribute *attr, gfc_expr *init)
if (init->expr_type == EXPR_CONSTANT) if (init->expr_type == EXPR_CONSTANT)
gfc_set_constant_character_len (len, init, -1); gfc_set_constant_character_len (len, init, -1);
else if (init else if (init
&& init->ts.type == BT_CHARACTER
&& init->ts.u.cl && init->ts.u.cl
&& mpz_cmp (ts->u.cl->length->value.integer, && mpz_cmp (ts->u.cl->length->value.integer,
init->ts.u.cl->length->value.integer)) init->ts.u.cl->length->value.integer))
......
2017_12_27 Louis Krupp <louis.krupp@zoho.com>
PR fortran/83092
* gfortran.dg/init_char_with_nonchar_ctr.f90: New test.
2017-12-27 Kugan Vivekanandarajah <kuganv@linaro.org> 2017-12-27 Kugan Vivekanandarajah <kuganv@linaro.org>
* gcc.target/aarch64/advsimd-intrinsics/vld1x2.c: New test. * gcc.target/aarch64/advsimd-intrinsics/vld1x2.c: New test.
......
! { dg-do compile }
! Initialization of character by non-character constructor
subroutine s1
type t
integer :: n = 0
end type
type t2
character :: c = t() ! { dg-error "Can't convert TYPE\\(t\\) to CHARACTER\\(1\\)" }
end type
end subroutine
subroutine s2
type t
end type
type t2
character :: c(1) = [t()] ! { dg-error "Can't convert TYPE\\(t\\) to CHARACTER\\(1\\)" }
end type
end subroutine
subroutine s3
type t
integer :: a = 1
character :: c = t() ! { dg-error "Can't convert TYPE\\(t\\) to CHARACTER\\(1\\)" }
end type
end subroutine
subroutine s4
type t
integer, allocatable :: a
character :: c = t() ! { dg-error "Can't convert TYPE\\(t\\) to CHARACTER\\(1\\)" }
end type
end subroutine
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment