Janus Weil [Thu, 9 Apr 2009 09:39:09 +0000 (11:39 +0200)]
re PR fortran/36704 (Procedure pointer as function result)
2009-04-09 Janus Weil <janus@gcc.gnu.org>
PR fortran/36704
* decl.c (add_hidden_procptr_result): New function for handling
procedure pointer return values by adding a hidden result variable.
(variable_decl,match_procedure_decl,gfc_match_function_decl,
gfc_match_subroutine,gfc_match_end,attr_decl1): Handle procedure pointer
return values.
* parse.c (parse_interface): Add EXTERNAL attribute only after
FUNCTION/SUBROUTINE declaration is complete.
* primary.c (replace_hidden_procptr_result): New function for replacing
function symbol by hidden result variable.
(gfc_match_rvalue,match_variable): Replace symbol by hidden result
variable.
* resolve.c (resolve_contained_fntype,resolve_function,resolve_variable,
resolve_symbol): Allow for procedure pointer function results.
(resolve_fl_procedure): Conflict detection moved here from
'check_conflict'.
* symbol.c (gfc_check_function_type): Allow for procedure pointer
function results.
(check_conflict): Move some conflict detection to resolution stage.
* trans-types.c (gfc_sym_type,gfc_get_function_type): Handle hidden
result variables.
Javier Miranda [Thu, 9 Apr 2009 09:35:24 +0000 (09:35 +0000)]
exp_disp.adb (Export_DT): Addition of a new argument (Index)...
2009-04-09 Javier Miranda <miranda@adacore.com>
* exp_disp.adb (Export_DT): Addition of a new argument (Index); used to
retrieve from the Dispatch_Table_Wrappers list the external name.
Addition of documentation.
(Make_Secondary_DT): Addition of a new argument (Suffix_Index) that is
used to export secondary dispatch tables (in the previous version of
the frontend only primary dispatch tables were exported). Addition of
documentation.
(Import_DT): New subprogram (internal of Make_Tags). Used to import a
dispatch table of a given tagged type.
(Make_Tags): Modified to import secondary dispatch tables.
Jan Hubicka [Thu, 9 Apr 2009 08:26:01 +0000 (10:26 +0200)]
except.c (find_prev_try): Break out from ....
* except.c (find_prev_try): Break out from ....
(duplicate_eh_regions): ... here; properly update prev_try pointers
when duplication part of tree.
(dump_eh_tree): Improve dumping.
(verify_eh_region): New.
(verify_eh_tree): Use it.
* sem_attr.adb (Check_Stream_Attribute): Check violation of
restriction No_Streams
* gnat_rm.texi: Clarify No_Streams restriction
* g-socket.adb: Minor reformatting.
2009-04-09 Thomas Quinot <quinot@adacore.com>
* g-socket.ads: Mark Initialize and Finalize as obsolesent interfaces.
2009-04-09 Geert Bosch <bosch@adacore.com>
* exp_fixd.adb (Build_Conversion): Accept new optional Trunc argument.
(Set_Result): Likewise.
(Expand_Convert_Float_To_Fixed): Have Set_Result truncate the
conversion, as required by RM 4.6(31).
c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC &ARRAY addresses by adjusting their types and...
2009-04-09 Richard Guenther <rguenther@suse.de>
* c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
&ARRAY addresses by adjusting their types and prepending
a conversion.
* tree-cfg.c (verify_gimple_assign_single): Verify that
addresses are correct.
tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant indices into an array reference if possible.
2009-04-09 Richard Guenther <rguenther@suse.de>
* tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
indices into an array reference if possible.
* tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
Fold POINTER_PLUS_EXPR statements with invariant address.
* gcc.dg/tree-ssa/ssa-ccp-25.c: New testcase.
* gcc.dg/tree-ssa/ssa-ccp-26.c: Likewise.
hashtable.h (erase): Correctly handle erasing a reference to an entry in the hash table.
* include/backward/hashtable.h (erase): Correctly handle erasing a
reference to an entry in the hash table.
* testsuite/backward/hash_map/25896.cc: New.
* testsuite/backward/hash_set/25896.cc: New.
Jakub Jelinek [Wed, 8 Apr 2009 20:00:48 +0000 (22:00 +0200)]
dwarf2out.c (class_scope_p): New static inline.
* dwarf2out.c (class_scope_p): New static inline.
(class_or_namespace_scope_p): Use it.
(gen_variable_die): Use DW_TAG_member tag for static data member
declarations instead of DW_TAG_variable.
* g++.dg/debug/dwarf2/static-data-member1.C: New test.
* checks.adb (Enable_Overflow_Check): Do not enable if overflow checks
suppressed.
* exp_ch4.adb (Expand_Concatenate): Make sure checks are off for all
resolution steps.
2009-04-08 Robert Dewar <dewar@adacore.com>
* sem_ch12.adb (Analyze_Package_Instantiation): Remove test for
No_Local_Allocators restriction preventing local instantiation.
2009-04-08 Thomas Quinot <quinot@adacore.com>
* sem_eval.adb: Minor comment fix
2009-04-08 Thomas Quinot <quinot@adacore.com>
* g-socket.adb, g-socket.ads (GNAT.Sockets.Sockets_Library_Controller):
New limited controlled type used to automate the initialization and
finalization of the sockets implementation.
(GNAT.Sockets.Initialize, Finalize): Make these no-ops
2009-04-08 Vincent Celier <celier@adacore.com>
* prj-attr.adb: New read-only project-level attribute Project_Dir
* prj-proc.adb (Add_Attributes): New parameter Project_Dir, value of
read-only attribute of the same name.
(Process_Declarative_Items): Call Add_Attributes with Project_Dir
(Recursive_Process): Ditto
Janne Blomqvist [Wed, 8 Apr 2009 17:06:34 +0000 (20:06 +0300)]
open.c (already_open): Test for POSIX close return value.
2009-04-08 Janne Blomqvist <jb@gcc.gnu.org>
* io/open.c (already_open): Test for POSIX close return value.
* io/unit.c (close_unit_1): Likewise.
* io/unix.c (raw_close): Return 0 for success for preconnected units.
re PR tree-optimization/36291 (GCC is slow and memory-hungry building sipQtGuipart.cpp)
2009-04-08 Richard Guenther <rguenther@suse.de>
PR middle-end/36291
* tree-dfa.c (add_referenced_var): Do not recurse into
global initializers.
* tree-ssa-ccp.c (get_symbol_constant_value): Add newly
exposed variables.
(fold_const_aggregate_ref): Likewise.
Jan Hubicka [Wed, 8 Apr 2009 15:13:01 +0000 (17:13 +0200)]
tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
* tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
* function.h (rtl_eh): Remove exception_handler_label_map.
* except.c (ehl_hash, ehl_eq, add_ehl_entry,
remove_exception_handler_label, for_each_eh_label_1): Remove.
(rtl_remove_unreachable_regions): Remove.
(convert_from_eh_region_ranges): Do not remove unreachable regions.
(find_exception_handler_labels): Don't build the hashtable.
(maybe_remove_eh_handler): Remove.
(for_each_eh_label): Rewrite to walk the tree.
(rest_of_handle_eh): Do not cleanup cfg prior EH construction.
* except.h (maybe_remove_eh_handler): Remove.
* passes.c (init_optimization_passes): Schedule second EH cleanup
before out-of-ssa.
* cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
* g-socket.ads: Fix bad syntax in pragma Obsolescent
* par-ch2.adb (Scan_Pragma_Argument_Association): Check for error of
argument with no identifier following one that has an identifier. Was
missed in some cases.
* sem_prag.adb (Analyze_Pragma, case Check_Policy): Allow Policy
identifier.
(Analyze_Pragma, case Obsolescent): Allow Message, Version identifiers
* snames.adb, snames.ads: Add new standard names IDE and
Compiler_Command.
2009-04-08 Ed Schonberg <schonberg@adacore.com>
* exp_util.adb (Safe_Unchecked_Type_Conversion): Conversion is safe,
i.e. does not need a temporary to capture the value, if expression is
an acceess type, even if target type is a record whose size may not
have been determined yet.
* exp_disp.adb (Expand_Dispatching_Call): Set size info for generated
access_to_subprogram type, to avoid order-of-elaboration anomalies in
gigi.
Joseph Myers [Wed, 8 Apr 2009 14:11:46 +0000 (15:11 +0100)]
re PR middle-end/39614 (Internal error compiling CSiBE)
PR c/39614
PR c/39673
* c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
* c-convert.c (convert): Do not call fold on results of conversion
functions when the result is a C_MAYBE_CONST_EXPR.
* c-parser.c (c_parser_postfix_expression): Do not fold condition
of __builtin_choose_expr.
* c-typeck.c (remove_c_maybe_const_expr): New.
(build_unary_op, build_conditional_expr, build_compound_expr,
build_binary_op, c_objc_common_truthvalue_conversion): Call
remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
integer operands.
testsuite:
* gcc.c-torture/compile/pr39614-1.c,
gcc.c-torture/compile/pr39614-2.c,
gcc.c-torture/compile/pr39614-3.c,
gcc.c-torture/compile/pr39614-4.c,
gcc.c-torture/compile/pr39614-5.c,
gcc.c-torture/compile/pr39673-1.c,
gcc.c-torture/compile/pr39673-2.c: New tests.
* gcc.dg/gnu89-const-expr-2.c, gcc.dg/gnu99-const-expr-2.c: Test
more cases.
* gcc.dg/overflow-warn-1.c, gcc.dg/overflow-warn-2.c,
gcc.dg/overflow-warn-3.c, gcc.dg/overflow-warn-4.c: Update
expected errors.
* a-direio.ads (Bytes): Make sure value is non-zero
2009-04-08 Ed Schonberg <schonberg@adacore.com>
* sem_util.adb (Is_Variable): If the prefix is an explicit dereference
that does not come from source, check for a rewritten function call in
prefixed notation before other forms of rewriting.
2009-04-08 Robert Dewar <dewar@adacore.com>
* Makefile.rtl: Remove s-strops and s-sopco? from the run time, since
these are now obsolescent units used only for bootrapping with an
older compiler.
* inline.adb (Back_End_Cannot_Inline): Do not mark a body as inlineable
by the back-end if it contains a call to a subprogram without a
previous spec that is declared in the same unit.
* errout.ads: Update comments on uses of dirs
2009-04-08 Robert Dewar <dewar@adacore.com>
* exp_ch4.adb (Expand_Concatenate): Make sure nodes are properly typed
* prj-nmsc.adb: Code clean up. Use renaming clauses.
2009-04-08 Robert Dewar <dewar@adacore.com>
* exp_ch4.adb (Expand_Concatenate): Further fixes to bounds handling
2009-04-08 Thomas Quinot <quinot@adacore.com>
* ali-util.adb: Minor comment fix
2009-04-08 Ed Schonberg <schonberg@adacore.com>
* sem_ch8.adb (Analyze_Use_Type): Improve error message when clause
appears in a context clause, and the enclosing package is mentioned in
a limited_with_clause.
(Use_One_Type): Reject clause if type is still incomplete.
* prj-nmsc.adb (Check_File, Process_Sources_In_Multi_Language_Mode):
avoid copies of Source_Data variables when possible, since these
involve calls to memcpy() which are done too many times.
re PR c++/39637 (ICE on ill-formed sizeof(<parameter-pack>) in variadic template)
gcc/cp/ChangeLog:
2009-04-08 Dodji Seketeli <dodji@redhat.com>
PR c++/39637
* parser.c (cp_parser_enumerator_definition): Make sure the
initializer of the enumerator doesn't contain any bare parameter pack.
* error.c (dump_function_decl): Don't pretty-print templates
if -fno-pretty-templates.
(count_non_default_template_args): Print all args if
-fno-pretty-templates.
* exp_ch4.adb (Expand_Concatenate): Add missing conversion to index
type for the case of concatenating a constrained array indexed by an
enumeration type.
2009-04-07 Ed Schonberg <schonberg@adacore.com>
* sem_ch6.adb (Check_Conformance): when checking conformance of an
operation that overrides an abstract operation inherited from an
interface, return False if only one of the controlling formals is an
access parameter.
2009-04-07 Ed Schonberg <schonberg@adacore.com>
* sem_ch8.adb (Analyze_Object_Renaming): additional error messages
mandated by AI05-105.
2009-04-07 Vincent Celier <celier@adacore.com>
* prj-nmsc.adb (Get_Mains): Warn if a main is an empty string
2009-04-07 Thomas Quinot <quinot@adacore.com>
* usage.adb: Minor fix in usage message.
* sem_ch10.adb (Remove_Homonyms): Fix subtype of formal in body to
match declaration; the correct subtype is Node_Id, not Entity_Id,
because the expected node kind is an identifier, not a defining
identifier.
* exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case
Attribute_Address): When Init_Or_Norm_Scalars is True and the object
is of a scalar or string type then suppress the setting of the
expression to Empty.
* freeze.adb (Warn_Overlay): Also emit the warnings about default
initialization for the cases of scalar and string objects when
Init_Or_Norm_Scalars is True.
* g-sothco.ads (Int_Access): Remove extraneous access type (use
anonymous access instead).
(Get_Socket_From_Set): Fix incorrectly reverted formals
Last and Socket to match the underlying C routine.
* g-socket.adb
(Get): Use named parameter associations instead of positional ones in
call go Get_Socket_From_Set, since this routine has two formals of the
same type.
* g-socthi-vms.adb, g-socthi-vms.ads, g-socthi-vxworks.adb,
g-socthi-vxworks.ads, g-socthi-mingw.ads, g-socthi.adb, g-socthi.ads:
(C_Ioctl, Syscall_Ioctl): use "access C.int" instead of "Int_Access"
for type of Arg formal.
* sem_warn.adb: Minor reformatting
2009-04-07 Ed Schonberg <schonberg@adacore.com>
* sem_util.adb (Has_Tagged_Component): Fix typo in loop that iterates
over record components.
2009-04-07 Nicolas Roche <roche@adacore.com>
* gsocket.h:
Don't include resolvLib.h on VxWorks 6 (kernel and rtp). This library
has disappeared between VxWorks 6.4 and VxWorks 6.5
In RTP mode use time.h instead of times.h
* exp_ch4.adb:
(Expand_N_Op_Concat): Call Expand_Concatenate for all cases
(Expand_Concatenate): New name for Expand_Concatenate_String which has
been rewritten to handle all types.
(Expand_Concatenate_Other): Remove
2009-04-07 Ed Schonberg <schonberg@adacore.com>
* lib-xref.adb (Generate_Reference): A default subprogram in an
instance appears within the tree for the instance, but generates an
implicit reference in the ALI.
* sem_ch3.adb (Build_Derived_Record_Type): When processing a tagged
derived type that has discriminants, propagate the list of interfaces
to the corresponding new base type. In addition, propagate also
attribute Limited_Present (found working in this patch).
* socket.c: Add more protections against S_resolvLib_ macros.
2009-04-07 Thomas Quinot <quinot@adacore.com>
* sem_attr.adb: Minor reformatting
2009-04-07 Ed Schonberg <schonberg@adacore.com>
* sem_ch6.adb (New_Overloaded_Entity): New predicate
Is_Overriding_Alias to handle properly types that inherit two homonym
operations that have distinct dispatch table entries.
* exp_ch4.adb:
(Expand_Concatenate_String): Complete rewrite to generate efficient code
inline instead of relying on external library routines.
* s-strops.ads, s-sopco5.ads, s-sopco5.adb, s-sopco4.ads, s-sopco4.adb,
s-sopco3.ads, s-sopco3.adb, s-strops.adb: Note that this unit is now
obsolescent
2009-04-07 Ed Schonberg <schonberg@adacore.com>
* sem_attr.adb:
(Eval_Attribute): for attributes of array objects that are not strings,
attributes are not static if nominal subtype of object is unconstrained.
2009-04-07 Ed Schonberg <schonberg@adacore.com>
* sem_ch6.adb (New_Overloaded_Entity): If two implicit homonym
operations for a type T in an instance do not override each other,
when T is derived from a formal private type, the corresponding
operations inherited by a type derived from T outside
of the instance do not override each other either.
tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased decls are only used if passes as parameters or if...
2009-04-07 Richard Guenther <rguenther@suse.de>
* tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
decls are only used if passes as parameters or if they are
local statics and the call is not to a builtin.
(call_may_clobber_ref_p_1): Likewise.
Robert Dewar [Tue, 7 Apr 2009 14:18:13 +0000 (14:18 +0000)]
checks.adb: Remove Assume_Valid parameter from In_Subrange_Of calls
2009-04-07 Robert Dewar <dewar@adacore.com>
* checks.adb:
Remove Assume_Valid parameter from In_Subrange_Of calls
* sem_eval.adb:
(Is_Subrange_Of): Remove Assume_Valid parameter, not needed
(Is_In_Range): Remove incorrect use of Assume_Valid
(Is_Out_Of_Range): Remove incorrect use of Assume_Valid
* errout.adb (Error_Msg_NEL): Use Suppress_Loop_Warnings rather than
Is_Null_Loop to suppress warnings in a loop body.
* exp_ch4.adb:
(Rewrite_Comparison): Major rewrite to accomodate invalid values
* exp_ch5.adb:
(Expand_N_Loop_Statement): Delete loop known not to execute
* opt.ads:
(Assume_No_Invalid_Values): Now set to False, and as documented, this
fully enables the proper handling of invalid values.
* sem_attr.adb:
New calling sequence for Is_In_Range
* sem_ch5.adb:
(Analyze_Iteration_Scheme): Accomodate possible invalid values
in determining if a loop range is null.
* sem_eval.adb:
(Is_In_Range): Add Assume_Valid parameter
(Is_Out_Of_Range): Add Assume_Valid_Parameter
(Compile_Time_Compare): Major rewrite to accomodate invalid values and
also to do more accurate and complete range analysis, catching more
cases.
Paolo Bonzini [Tue, 7 Apr 2009 12:48:16 +0000 (12:48 +0000)]
expr.c (do_store_flag): Remove last argument.
2009-04-07 Paolo Bonzini <bonzini@gnu.org>
* expr.c (do_store_flag): Remove last argument. Simplify code
to avoid duplication of tests already done by can_compare_p.
(expand_expr_real_1): Adjust caller.
* gcc-interface/gigi.h (standard_datatypes): Remove ADT_void_type_decl.
(void_type_decl_node): Remove.
(init_gigi_decls): Likewise.
(gnat_install_builtins): Declare.
(record_builtin_type): Likewise.
(create_type_stub_decl): Likewise.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Void>: Use void_type.
(gnat_to_gnu_entity) <E_Array_Type>: Make fat and thin pointer types
artificial.
<E_Array_Subtype>: Use the index types, not only their name, in the
record giving the names of the bounds, if any.
For a packed array type, make it artificial only if the base type
was artificial as well. Remove redundant statement.
(gnat_to_gnu_entity) <E_Incomplete_Type>: Do not create TYPE_DECL for
dummy types.
Use create_type_stub_decl to build the TYPE_STUB_DECL of types.
(rest_of_type_decl_compilation_no_defer): Likewise.
* gcc-interface/misc.c (gnat_printable_name): Add missing guard.
* gcc-interface/utils.c (make_dummy_type): Always create TYPE_STUB_DECL
and use create_type_stub_decl to build it.
(gnat_pushdecl): Rewrite condition.
(gnat_install_builtins): Remove bogus declaration.
(record_builtin_type): New function.
(finish_record_type): Use create_type_stub_decl to build TYPE_STUB_DECL
of types.
(create_type_stub_decl): New function.
(create_type_decl): Assert that the type is not dummy. If the type
hasn't been named yet, equate the TYPE_STUB_DECL to the created node.
(build_vms_descriptor32): Do not create TYPE_DECL for the descriptor.
(build_vms_descriptor): Likewise.
(init_gigi_decls): Delete and move bulk of code to...
* gcc-interface/trans.c (gigi): ...here. Use record_builtin_type.
(emit_range_check): Add gnat_node parameter.
(emit_index_check): Likewise.
(emit_check): Likewise.
(build_unary_op_trapv): Likewise.
(build_binary_op_trapv): Likewise.
(convert_with_check): Likewise.
(Attribute_to_gnu): Adjust calls for above changes.
(call_to_gnu): Likewise.
(gnat_to_gnu): Likewise.
(assoc_to_constructor): Likewise.
(pos_to_constructor): Likewise.
(Sloc_to_locus): Set BUILTINS_LOCATION for Standard_Location nodes.
(process_type): Do not create TYPE_DECL for dummy types.
Eric Botcazou [Tue, 7 Apr 2009 07:36:31 +0000 (07:36 +0000)]
trans.c (check_for_eliminated_entity): New function.
* gcc-interface/trans.c (check_for_eliminated_entity): New function.
(Attribute_to_gnu): Invoke it for Access- and Address-like attributes.
(call_to_gnu): Invoke it instead of manually checking.