re PR fortran/45186 (Gfortran 4.5.0 emits wrong linenumbers)
2010-09-05 Tobias Burnus <burnus@net-b.de> PR fortran/45186 * trans-intrinsic.c (gfc_conv_intrinsic_sign, gfc_conv_intrinsic_leadz): Use build_call_expr_loc instead of build_call_expr. * trans-expr.c (gfc_conv_expr_present, gfc_conv_missing_dummy, gfc_conv_string_length, gfc_conv_substring, gfc_conv_component_ref, gfc_conv_unary_op, gfc_conv_powi, gfc_conv_cst_int_power, gfc_conv_string_tmp, gfc_conv_concat_op, gfc_conv_expr_op, gfc_build_compare_string, gfc_set_interface_mapping_bounds, gfc_conv_subref_array_arg, gfc_conv_derived_to_class, conv_isocbinding_procedure, gfc_conv_procedure_call, fill_with_spaces, gfc_trans_string_copy, gfc_trans_alloc_subarray_assign, gfc_trans_structure_assign, gfc_trans_pointer_assignment, gfc_trans_scalar_assign, gfc_trans_zero_assign, gfc_trans_array_copy, gfc_trans_array_constructor_copy): Change fold_build[0-9] to fold_build[0-9]_loc. * trans-io.c (set_parameter_const, set_parameter_value, set_parameter_ref, gfc_convert_array_to_string, set_string, set_internal_unit, io_result, set_error_locus, nml_get_addr_expr, build_dt): Ditto. * trans-openmp.c (gfc_omp_clause_default_ctor, gfc_omp_clause_copy_ctor, gfc_omp_clause_assign_op, gfc_trans_omp_array_reduction, gfc_trans_omp_atomic, gfc_trans_omp_do): Ditto. * trans.c (gfc_add_modify, gfc_build_addr_expr, gfc_build_array_ref, gfc_trans_runtime_error_vararg, gfc_trans_runtime_check, gfc_call_malloc, gfc_allocate_with_status, gfc_allocate_array_with_status, gfc_call_free, gfc_deallocate_with_status, gfc_call_realloc): Ditto. From-SVN: r163879
This commit is contained in:
parent
226b53d2c1
commit
433ce291b5
|
@ -1,3 +1,37 @@
|
|||
2010-09-05 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/45186
|
||||
* f95-lang.c (gfc_truthvalue_conversion): Use
|
||||
fold_build[0-9]_loc instead of fold_build[0-9].
|
||||
* convert.c (convert): Ditto.
|
||||
* trans-intrinsic.c (gfc_conv_intrinsic_conversion,
|
||||
build_fixbound_expr, build_fix_expr, gfc_conv_intrinsic_aint,
|
||||
gfc_conv_intrinsic_int, gfc_conv_intrinsic_imagpart,
|
||||
gfc_conv_intrinsic_conjg, gfc_trans_same_strlen_check,
|
||||
gfc_conv_intrinsic_bound, gfc_conv_intrinsic_abs,
|
||||
gfc_conv_intrinsic_cmplx, gfc_conv_intrinsic_mod,
|
||||
gfc_conv_intrinsic_dim, gfc_conv_intrinsic_sign,
|
||||
gfc_conv_intrinsic_dprod, gfc_conv_intrinsic_char,
|
||||
gfc_conv_intrinsic_ctime, gfc_conv_intrinsic_fdate,
|
||||
gfc_conv_intrinsic_ttynam, gfc_conv_intrinsic_minmax,
|
||||
gfc_conv_intrinsic_minmax_char, gfc_conv_intrinsic_anyall,
|
||||
gfc_conv_intrinsic_count, gfc_conv_intrinsic_arith,
|
||||
gfc_conv_intrinsic_dot_product, gfc_conv_intrinsic_minmaxloc,
|
||||
gfc_conv_intrinsic_minmaxval, gfc_conv_intrinsic_btest,
|
||||
gfc_conv_intrinsic_bitop, gfc_conv_intrinsic_not,
|
||||
gfc_conv_intrinsic_singlebitop, gfc_conv_intrinsic_ibits,
|
||||
gfc_conv_intrinsic_rlshift, gfc_conv_intrinsic_ishft,
|
||||
gfc_conv_intrinsic_ishftc, gfc_conv_intrinsic_leadz,
|
||||
gfc_conv_intrinsic_trailz, gfc_conv_intrinsic_popcnt_poppar,
|
||||
gfc_conv_intrinsic_ichar, gfc_conv_has_intvalue,
|
||||
gfc_conv_intrinsic_merge, gfc_conv_intrinsic_spacing,
|
||||
gfc_conv_intrinsic_rrspacing, gfc_conv_intrinsic_size,
|
||||
size_of_string_in_bytes, gfc_conv_intrinsic_sizeof,
|
||||
gfc_conv_intrinsic_storage_size, gfc_conv_intrinsic_strcmp,
|
||||
gfc_conv_intrinsic_transfer, gfc_conv_allocated,
|
||||
gfc_conv_associated, gfc_conv_same_type_as,
|
||||
gfc_conv_intrinsic_trim, gfc_conv_intrinsic_repeat): Ditto.
|
||||
|
||||
2010-09-04 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/45530
|
||||
|
|
|
@ -80,7 +80,7 @@ convert (tree type, tree expr)
|
|||
return expr;
|
||||
|
||||
if (TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (TREE_TYPE (expr)))
|
||||
return fold_build1 (NOP_EXPR, type, expr);
|
||||
return fold_build1_loc (input_location, NOP_EXPR, type, expr);
|
||||
if (TREE_CODE (TREE_TYPE (expr)) == ERROR_MARK)
|
||||
return error_mark_node;
|
||||
if (TREE_CODE (TREE_TYPE (expr)) == VOID_TYPE)
|
||||
|
@ -89,7 +89,7 @@ convert (tree type, tree expr)
|
|||
return error_mark_node;
|
||||
}
|
||||
if (code == VOID_TYPE)
|
||||
return fold_build1 (CONVERT_EXPR, type, e);
|
||||
return fold_build1_loc (input_location, CONVERT_EXPR, type, e);
|
||||
#if 0
|
||||
/* This is incorrect. A truncation can't be stripped this way.
|
||||
Extensions will be stripped by the use of get_unwidened. */
|
||||
|
@ -105,9 +105,10 @@ convert (tree type, tree expr)
|
|||
/* If we have a NOP_EXPR, we must fold it here to avoid
|
||||
infinite recursion between fold () and convert (). */
|
||||
if (TREE_CODE (e) == NOP_EXPR)
|
||||
return fold_build1 (NOP_EXPR, type, TREE_OPERAND (e, 0));
|
||||
return fold_build1_loc (input_location, NOP_EXPR, type,
|
||||
TREE_OPERAND (e, 0));
|
||||
else
|
||||
return fold_build1 (NOP_EXPR, type, e);
|
||||
return fold_build1_loc (input_location, NOP_EXPR, type, e);
|
||||
}
|
||||
if (code == POINTER_TYPE || code == REFERENCE_TYPE)
|
||||
return fold (convert_to_pointer (type, e));
|
||||
|
|
|
@ -200,17 +200,18 @@ gfc_truthvalue_conversion (tree expr)
|
|||
return expr;
|
||||
}
|
||||
else if (TREE_CODE (expr) == NOP_EXPR)
|
||||
return fold_build1 (NOP_EXPR,
|
||||
return fold_build1_loc (input_location, NOP_EXPR,
|
||||
boolean_type_node, TREE_OPERAND (expr, 0));
|
||||
else
|
||||
return fold_build1 (NOP_EXPR, boolean_type_node, expr);
|
||||
return fold_build1_loc (input_location, NOP_EXPR, boolean_type_node,
|
||||
expr);
|
||||
|
||||
case INTEGER_TYPE:
|
||||
if (TREE_CODE (expr) == INTEGER_CST)
|
||||
return integer_zerop (expr) ? boolean_false_node : boolean_true_node;
|
||||
else
|
||||
return fold_build2 (NE_EXPR, boolean_type_node, expr,
|
||||
build_int_cst (TREE_TYPE (expr), 0));
|
||||
return fold_build2_loc (input_location, NE_EXPR, boolean_type_node,
|
||||
expr, build_int_cst (TREE_TYPE (expr), 0));
|
||||
|
||||
default:
|
||||
internal_error ("Unexpected type in truthvalue_conversion");
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue