From: Jerry DeLisle Date: Sun, 24 Feb 2008 19:18:27 +0000 (+0000) Subject: re PR fortran/35223 (IBITS gives compiler error) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c05800b6ef28ad14facfba2b09d37d99709fc609;p=gcc.git re PR fortran/35223 (IBITS gives compiler error) 2008-02-24 Jerry DeLisle PR fortran/35223 * simplify.c (gfc_simplify_ibclr), (gfc_simplify_ibits), (gfc_simplify_ibset): Remove call to range_check. (simplify_cmplx), (gfc_simplify_dble), (gfc_simplify_float) (gfc_simplify_real): Add call gfc_clear_ts to initialize the temporary gfc_typspec variable. From-SVN: r132597 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 89766c62d91..a70d95ecb79 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2008-02-24 Jerry DeLisle + + PR fortran/35223 + * simplify.c (gfc_simplify_ibclr), (gfc_simplify_ibits), + (gfc_simplify_ibset): Remove call to range_check. + (simplify_cmplx), (gfc_simplify_dble), (gfc_simplify_float) + (gfc_simplify_real): Add call gfc_clear_ts to initialize the + temporary gfc_typspec variable. + 2008-02-23 Francois-Xavier Coudert PR target/25477 @@ -7,7 +16,15 @@ gfor_fndecl_math_cpowl10, gfor_fndecl_math_cpowl16): Remove. * trans-decl.c: Likewise. -2008-02-20 Jerry DeLisle +2008-02-22 Jerry DeLisle + + PR fortran/35059 + * expr.c (find_array_element): Modify traversing the constructor to + avoid trying to access NULL memory pointed to by next for the + last element. (find_array_section): Exit while loop if cons->next is + NULL. + +2008-02-22 Jerry DeLisle PR fortran/34907 * iresolve.c (resolve_mask_arg): Add gfc_clear_ts to initialize diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 1b5b23e2c0f..77af04d4c45 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -779,6 +779,7 @@ simplify_cmplx (const char *name, gfc_expr *x, gfc_expr *y, int kind) if (x->is_boz) { gfc_typespec ts; + gfc_clear_ts (&ts); ts.kind = result->ts.kind; ts.type = BT_REAL; if (!gfc_convert_boz (x, &ts)) @@ -789,6 +790,7 @@ simplify_cmplx (const char *name, gfc_expr *x, gfc_expr *y, int kind) if (y && y->is_boz) { gfc_typespec ts; + gfc_clear_ts (&ts); ts.kind = result->ts.kind; ts.type = BT_REAL; if (!gfc_convert_boz (y, &ts)) @@ -960,6 +962,7 @@ gfc_simplify_dble (gfc_expr *e) if (e->ts.type == BT_INTEGER && e->is_boz) { gfc_typespec ts; + gfc_clear_ts (&ts); ts.type = BT_REAL; ts.kind = gfc_default_double_kind; result = gfc_copy_expr (e); @@ -1148,6 +1151,7 @@ gfc_simplify_float (gfc_expr *a) if (a->is_boz) { gfc_typespec ts; + gfc_clear_ts (&ts); ts.type = BT_REAL; ts.kind = gfc_default_real_kind; @@ -1359,7 +1363,7 @@ gfc_simplify_ibclr (gfc_expr *x, gfc_expr *y) convert_mpz_to_signed (result->value.integer, gfc_integer_kinds[k].bit_size); - return range_check (result, "IBCLR"); + return result; } @@ -1400,6 +1404,8 @@ gfc_simplify_ibits (gfc_expr *x, gfc_expr *y, gfc_expr *z) } result = gfc_constant_result (x->ts.type, x->ts.kind, &x->where); + convert_mpz_to_unsigned (result->value.integer, + gfc_integer_kinds[k].bit_size); bits = gfc_getmem (bitsize * sizeof (int)); @@ -1421,7 +1427,10 @@ gfc_simplify_ibits (gfc_expr *x, gfc_expr *y, gfc_expr *z) gfc_free (bits); - return range_check (result, "IBITS"); + convert_mpz_to_signed (result->value.integer, + gfc_integer_kinds[k].bit_size); + + return result; } @@ -1459,7 +1468,7 @@ gfc_simplify_ibset (gfc_expr *x, gfc_expr *y) convert_mpz_to_signed (result->value.integer, gfc_integer_kinds[k].bit_size); - return range_check (result, "IBSET"); + return result; } @@ -3020,6 +3029,7 @@ gfc_simplify_real (gfc_expr *e, gfc_expr *k) if (e->ts.type == BT_INTEGER && e->is_boz) { gfc_typespec ts; + gfc_clear_ts (&ts); ts.type = BT_REAL; ts.kind = kind; result = gfc_copy_expr (e);