Asher Langton [Mon, 24 Oct 2005 19:28:18 +0000 (19:28 +0000)]
Commit for Asher Langton
PR fortran/17031
PR fortran/22282
fortran/
* check.c (gfc_check_loc) : New function
* decl.c (variable_decl): New variables cp_as and sym. Added a
check for variables that have already been declared as Cray
Pointers, so we can get the necessary attributes without adding
a new symbol.
(attr_decl1): Added code to catch pointee symbols and "fix"
their array specs.
(cray_pointer_decl): New method.
(gfc_match_pointer): Added Cray pointer parsing code.
(gfc_mod_pointee_as): New method.
* expr.c (gfc_check_assign): added a check to catch vector-type
assignments to pointees with an unspecified final dimension.
* gfortran.h: (GFC_ISYM_LOC): New.
(symbol_attribute): Added cray_pointer and cray_pointee bits.
(gfc_array_spec): Added cray_pointee and cp_was_assumed bools.
(gfc_symbol): Added gfc_symbol *cp_pointer.
(gfc_option): Added flag_cray_pointer.
(gfc_add_cray_pointee): Declare.
(gfc_add_cray_pointer ): Declare.
(gfc_mod_pointee_as): Declare.
* intrinsic.c (add_functions): Add code for loc() intrinsic.
* intrinsic.h (gfc_check_loc): Declare.
(gfc_resolve_loc): Declare.
* iresolve.c (gfc_resolve_loc): New.
* lang.opt: Added fcray-pointer flag.
* options.c (gfc_init_options): Intialized
gfc_match_option.flag_cray_pointer.
(gfc_handle_option): Deal with -fcray-pointer.
* parse.c:(resolve_equivalence): Added code prohibiting Cray
pointees in equivalence statements.
* resolve.c (resolve_array_ref): Added code to prevent bounds
checking for Cray Pointee arrays.
(resolve_equivalence): Prohibited pointees in equivalence
statements.
* symbol.c (check_conflict): Added Cray pointer/pointee
attribute checking.
(gfc_add_cray_pointer): New
(gfc_add_cray_pointee): New
(gfc_copy_attr): New code for Cray pointers and pointees
* trans-array.c (gfc_trans_auto_array_allocation): Added code to
prevent space from being allocated for pointees.
(gfc_conv_array_parameter): Added code to catch pointees and
correctly set their base address.
* trans-decl.c (gfc_finish_var_decl): Added code to prevent
pointee declarations from making it to the back end.
(gfc_create_module_variable): Same.
* trans-expr.c (gfc_conv_variable): added code to detect and
translate pointees.
(gfc_conv_cray_pointee): New.
* trans-intrinsic.c (gfc_conv_intrinsic_loc): New.
(gfc_conv_intrinsic_function): added entry point for loc
translation.
* trans.h (gfc_conv_cray_pointee): Declare.
* gfortran.texi: Added section on Cray pointers, removed Cray
pointers from list of proposed extensions
* intrinsic.texi: Added documentation for loc intrinsic.
* invoke.texi: Documented -fcray-pointer flag
testsuite/
PR fortran/17031
PR fortran/22282
* gfortran.dg/cray_pointers_1.f90: New test.
* gfortran.dg/cray_pointers_2.f90: New test.
* gfortran.dg/cray_pointers_3.f90: New test.
* gfortran.dg/loc_1.f90: New test.
* gfortran.dg/loc_2.f90: New test.
* pa-linux.h (NO_PROFILE_COUNTERS): Delete define.
(NO_DEFERRED_PROFILE_COUNTERS): Define.
* pa.h (NO_PROFILE_COUNTERS): Define.
* pa.c (NO_DEFERRED_PROFILE_COUNTERS): Define if not defined.
(funcdef_nos): New vector to hold label numbers of deferred profile
counters.
(output_deferred_profile_counters): New function.
(hppa_profile_hook): Push label number onto funcdef_nos.
(pa_hpux_file_end): Call output_deferred_profile_counters if
NO_DEFERRED_PROFILE_COUNTERS is false.
Asher Langton [Mon, 24 Oct 2005 14:50:18 +0000 (14:50 +0000)]
Commit for Asher Langton <langton2@llnl.gov>
fortran/
* decl.c (gfc_match_save): Changed duplicate SAVE errors to
warnings in the absence of strict standard conformance
* symbol.c (gfc_add_save): Same.
testsuite/
* gfortran.dg/dup_save_1.f90: New test.
* gfortran.dg/dup_save_2.f90: New test.
re PR fortran/15586 (gfortran should support i18n in its compiler messages)
PR fortran/15586
* arith.c (gfc_arith_error): Change message to include locus.
(check_result, eval_intrinsic, gfc_int2int, gfc_real2real,
gfc_real2complex, gfc_complex2real, gfc_complex2complex): Use
the new gfc_arith_error.
(arith_error): Rewrite full error messages instead of building
them from pieces.
* check.c (must_be): Removed.
(type_check, numeric_check, int_or_real_check, real_or_complex_check,
kind_check, double_check, logical_array_check, array_check,
scalar_check, same_type_check, rank_check, kind_value_check,
variable_check, gfc_check_allocated, gfc_check_associated,
gfc_check_cmplx, gfc_check_dcmplx, gfc_check_dot_product,
gfc_check_index, gfc_check_kind, gfc_check_matmul, gfc_check_null,
gfc_check_pack, gfc_check_precision, gfc_check_present,
gfc_check_spread): Rewrite full error messages instead of
building them from pieces.
* decl.c (gfc_match_entry): Rewrite full error messages instead
of building them from pieces.
* parse.c (gfc_state_name): Remove.
* parse.h: Remove prototype for gfc_state_name.
re PR libfortran/23272 ([mingw32] inquire via filename fails)
PR libfortran/23272
* acinclude.m4 (LIBGFOR_CHECK_WORKING_STAT): New check.
* configure.ac: Use LIBGFOR_CHECK_WORKING_STAT.
* Makefile.in: Regenerate.
* aclocal.m4: Regenerate.
* config.h.in: Regenerate.
* configure: Regenerate.
* io/unix.c (compare_file_filename): Add fallback case for
systems without working stat.
* io/open.c (already_open): Correct call to
compare_file_filename.
* io/io.h: Correct proto for compare_file_filename.
Paul Thomas [Sun, 23 Oct 2005 06:59:17 +0000 (06:59 +0000)]
re PR fortran/18022 (problem with structure and calling a function)
2005-10-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/18022
* trans-expr.c (gfc_trans_arrayfunc_assign): Return NULL
if there is a component ref during an array ref to force
use of temporary in assignment.
PR fortran/24311
PR fortran/24384
* fortran/iresolve.c (check_charlen_present): New function to
add a charlen to the typespec, in the case of constant
expressions.
(gfc_resolve_merge, gfc_resolve_spread): Call.the above.
(gfc_resolve_spread): Make calls to library functions that
handle the case of the spread intrinsic with a scalar source.
* libgfortran/intrinsics/spread_generic.c (spread_internal
_scalar): New function that handles the special case of spread
with a scalar source. This has interface functions -
(spread_scalar, spread_char_scalar): New functions to interface
with the calls specified in gfc_resolve_spread.
2005-10-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/18022
gfortran.dg/assign_func_dtcomp_1.f90: New test.
PR fortran/24311
gfortran.dg/merge_char_const.f90: New test.
PR fortran/24384
gfortran.dg/spread_scalar_source.f90: New test.
Paolo Bonzini [Sat, 22 Oct 2005 10:37:17 +0000 (10:37 +0000)]
re PR bootstrap/24297 (libtool: link: unable to infer tagged configuration)
2005-10-22 Paolo Bonzini <bonzini@gnu.org>
PR bootstrap/24297
* Makefile.tpl (do-[+make-target+], do-check, install,
stage[+id+]-bubble, [+compare-target+]): Ensure $$r and $$s
are set before recursing.
* Makefile.in: Regenerate.
James E Wilson [Fri, 21 Oct 2005 17:54:20 +0000 (10:54 -0700)]
Fix bug with -MM -MG.
PR preprocessor/15220
* files.c (_cpp_find_file): New parameter angle_brackets. Fix all
callers. Pass to open_file_failed.
(open_file_failed): New parameter angle_brackets. Fix all callers.
Use in print_dep assignment.
* init.c (cpp_read_main_file): Pass additional arg to _cpp_find_file.
* internal.h (_cpp_find_file): Add new parm to declaration.
Eric Botcazou [Fri, 21 Oct 2005 15:46:19 +0000 (15:46 +0000)]
re PR ada/21937 (Member record alignment triggers an ICE)
PR ada/21937
PR ada/22328
PR ada/22381
PR ada/22383
PR ada/22419
PR ada/22420
* utils2.c (build_return_expr): New helper function.
* gigi.h (build_return_expr): Declare it.
* trans.c (Subprogram_Body_to_gnu): Use build_return_expr instead
of manually building the RETURN_EXPR tree.
(call_to_gnu): Pass MODIFY_EXPR through build_binary_op.
(gnat_to_gnu) <N_Return_Statement>: Pass MODIFY_EXPR through
build_binary_op for the "target pointer" case. �Use build_return_expr
instead of manually building the RETURN_EXPR tree.
Alexandre Oliva [Thu, 20 Oct 2005 19:30:23 +0000 (19:30 +0000)]
re PR middle-end/24295 (Xorg broken, #pragma weak foo = bar no longer causes bar to be referenced)
gcc/ChangeLog:
PR middle-end/24295
* cgraphunit.c (cgraph_varpool_remove_unreferenced_decls): Mark
alias targets.
* varasm.c (find_decl_and_mark_needed): After cgraph global info
is ready, stop marking functions, but still mark variables.
gcc/testsuite/ChangeLog:
PR middle-end/24295
* g++.old-deja/g++.abi/vtable2.C: Do not introduce external
declarations with the same names as thunks' alias targets, use
aliases instead.
* gcc.dg/attr-alias-3.c: New test.
* gcc.dg/weak/weak-14.c, gcc.dg/weak/weak-14a.c: New test.
Erik Edelmann [Wed, 19 Oct 2005 22:18:07 +0000 (01:18 +0300)]
re PR fortran/21625 ([4.0 only] Nested derived type pointer component not initialized on ALLOCATE)
PR fortran/21625
* resolve.c (expr_to_initialize): New function.
(resolve_allocate_expr): Take current statement as new
argument. Add default initializers to variables of
derived types, if they need it.
(resolve_code): Provide current statement as argument to
resolve_allocate_expr().
Steven Bosscher [Wed, 19 Oct 2005 14:48:29 +0000 (14:48 +0000)]
re PR c/23228 (Silly "unused variable" warning after redeclaration of a local variable)
PR c/23228
* c-decl.c (pop_scope): Don't warn about an unused variable
if it is marked with TREE_NO_WARNING.
(duplicate_decls): Set TREE_NO_WARNING if olddecl and newdecl
somenow mismatch and olddecl is to be replaced.
PR libfortran/24432
* c99_protos.h: Define preprocessor HAVE_ macros with value 1
instead of empty value.
* intrinsics/c99_functions.c: Likewise.
* intrinsics/getXid.c: Define HAVE_GETPID with value 1 instead of
empty value.
* intrinsics/sleep.c: Define HAVE_SLEEP with value 1 instead of
empty value.
Paul Thomas [Wed, 19 Oct 2005 05:33:32 +0000 (05:33 +0000)]
re PR fortran/24440 (gfortran failed to build 187.facerec)
2005-10-19 Paul Thomas <pault@gcc.gnu.org>
PR fortran/24440
* resolve.c (resolve_symbol): Correct error in check for
assumed size array with default initializer by testing
for arrayspec before dereferencing it.
Mark Mitchell [Tue, 18 Oct 2005 15:39:12 +0000 (15:39 +0000)]
re PR c++/23293 (Misleading names in diagnostics for typedefs in functions)
PR c++/23293
* pt.c (convert_template_argument): Use canonical type variants in
template specializations.
PR c++/23293
* g++.dg/template/error19.C: New test.
Nathan Sidwell [Tue, 18 Oct 2005 13:45:23 +0000 (13:45 +0000)]
re PR c++/21383 (Crash when finding &a_templated_func<>)
cp:
PR c++/21383
* name-lookup.c (arg_assoc): Template args can be null in a
template-id-expr.
testsuite:
PR c++/21383
* g++.dg/overload/koenig2.C: New.