re PR c++/13358 (long long and C++ do not mix well)
2009-04-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR c++/13358
* doc/invoke.texi (-Wlong-long): Update description.
* c-lex (interpret_integer): Only warn if there was no previous
overflow and -Wlong-long is enabled.
* c-decl.c (declspecs_add_type): Drop redundant flags.
* c.opt (Wlong-long): Init to -1.
* c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
and front-end warn_long_long. Wlong-long only depends on other
flags if it is uninitialized.
* c-parser.c (disable_extension_diagnostics): warn_long_long is
the same for CPP and FE.
(restore_extension_diagnostics): Likewise.
libcpp/
* init.c (cpp_create_reader): Wlong_long is disabled by default.
* expr.c (cpp_classify_number): Give different messages for C and
C++ front-ends.
cp/
* parser.c (cp_parser_check_decl_spec): Drop redundant flags.
* error.c (pedwarn_cxx98): New.
* cp-tree.h (pedwarn_cxx98): Declare.
testsuite/
* gcc.dg/wtr-int-type-1.c: Use two dg-warning to match two
messages. Test for "long long" in system headers.
* gcc.dg/c99-longlong-2.c: New.
* g++.dg/warn/pr13358.C: New.
* g++.dg/warn/pr13358-2.C: New.
* g++.dg/warn/pr13358-3.C: New.
* g++.dg/warn/pr13358-4.C: New.
Paul Thomas [Mon, 20 Apr 2009 21:55:26 +0000 (21:55 +0000)]
re PR fortran/39800 (Rejects PRIVATE TYPE as compont of local type declaration)
2009-04-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/39800
* resolve.c (is_sym_host_assoc): New function.
(resolve_fl_derived): Call it when checking PRIVATE components
of PUBLIC derived types. Change gfc_error to a gfc_notify_std
with std=f2003.
(resolve_fl_namelist): Call it twice to check for host
association.
re PR c++/39803 (Bogus 'unused value' warning on declarations of non-POD arrays)
PR c++/39803
* gcc/cp/init.c (build_vec_init): Set TREE_NO_WARNING on the
compiler-generated INDIRECT_REF expression.
* gcc/testsuite/g++.dg/warn/Wunused-14.C: New test.
* gcc-interface/decl.c (gnat_to_gnu_entity): Rewrite Esize calculation.
<E_Signed_Integer_Subtype>: Set the RM size on the integer type
before wrapping it up in the record type. Do not overwrite the
Ada size of the record type with the Esize.
Ian Lance Taylor [Mon, 20 Apr 2009 19:35:00 +0000 (19:35 +0000)]
Fix enum conversions which are invalid in C++:
gcc/:
Fix enum conversions which are invalid in C++:
* auto-inc-dec.c (attempt_change): Change 0 to SET in function
call.
* calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function
call.
* cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
* dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
* dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function
call.
(dbxout_parms): Likewise.
* df-core.c (df_set_flags): Change changeable_flags parameter to
int.
(df_clear_flags): Likewise.
* df-problems.c (df_rd_bb_local_compute_process_def): Change
top_flag parameter to int.
(df_chain_create_bb_process_use): Likewise.
(df_chain_add_problem): Change chain_flags parameter to unsigned
int. Remove cast.
* df-scan.c (df_ref_create): Change ref_flags parameter to int.
(df_ref_create_structure, df_def_record_1): Likewise.
(df_defs_record, df_uses_record, df_get_call_refs): Likewise.
(df_notes_rescan): Change 0 to VOIDmode in function call.
(df_get_call_refs, df_insn_refs_collect): Likewise.
(df_bb_regs_collect): Likewise.
(df_entry_block_defs_collect): Likewise.
(df_exit_block_uses_collect): Likewise.
* df.h: Update declarations.
* double-int.c (double_int_divmod): Add cast to enum type.
* dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
* dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
(based_loc_descr): Likewise.
(loc_descriptor_from_tree_1): Change first_op and second_op to
enum dwarf_location_atom. Add cast to enum type.
* expmed.c (init_expmed): Change 0 to SET in function call.
* expr.c (init_expr_target): Change 0 to VOIDmode in function
call.
(expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
(do_store_flag): Likewise.
* fixed-value.h (struct fixed_value): Change mode to enum
machine_mode.
* function.c (assign_parms): Change 0 to VOIDmode in function
call.
* genautomata.c (insert_automaton_decl): Change 1 to INSERT in
function call.
(insert_insn_decl, insert_decl, insert_state): Likewise.
(automata_list_finish): Likewise.
* genrecog.c (process_define_predicate): Add cast to enum type.
* gensupport.c (init_predicate_table): Add cast to enum type.
* gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
function call.
(gimple_build_call_1, gimple_build_label): Likewise.
(gimple_build_goto, gimple_build_asm_1): Likewise.
(gimple_build_switch_1, gimple_build_cdt): Likewise.
* gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function
call.
(enum fallback): Rename from enum fallback_t.
(fallback_t): Typedef as int.
* gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
GSI_SAME_STMT in function call.
* ira.c (setup_class_subset_and_memory_move_costs): Add casts to
enum type.
(setup_reg_class_relations): Likewise.
(setup_reg_class_nregs): Change cl to int. Add casts to enum
type.
(setup_prohibited_class_mode_regs): Add cast to enum type.
(setup_prohibited_mode_move_regs): Likewise.
* ira-costs.c (record_reg_classes): Change rclass to enum
reg_class.
(record_address_regs): Change i to enum reg_class.
* lists.c (alloc_EXPR_LIST): Add cast to enum type.
* machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
(GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
(GET_MODE_2XWIDER_MODE): Likewise.
(GET_CLASS_NARROWEST_MODE): Likewise.
* omp-low.c (expand_omp_for): Add cast to enum type.
* optabs.c (debug_optab_libfuncs): Add casts to enum type.
* opts.c (enable_warning_as_error): Change kind to diagostic_t.
* postreload.c (reload_cse_simplify_operands): Change rclass local
to enum reg_class.
* predict.c (combine_predictions_for_insn): Change best_predictor
and predictor to enum br_predictor.
(combine_predictions_for_bb): Likewise.
(build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
use SET_PREDICT_EXPR_OUTCOME.
* real.c (real_arithmetic): Change icode to code in function
call.
* reginfo.c (init_move_cost): Add casts to enum type.
(init_reg_sets_1, init_fake_stack_mems): Likewise.
* regmove.c (regclass_compatible_p): Change class0 and class1 to
enum reg_class.
* reload.c (find_valid_class): Add casts to enum type.
(push_reload): Change 0 to NO_REGS in function call.
(find_reloads): Change this_alternative to array of enum
reg_class. Remove some now-unnecessary casts.
(make_memloc): Change 0 to VOIDmode in function call.
* reload1.c (reload): Change 0 to VOIDmode in function call.
(eliminate_regs_1, elimination_effects): Likewise.
(eliminate_regs_in_insn): Likewise.
(emit_input_reload_insns): Add cast to enum type.
(delete_output_reload): Change 0 to VOIDmode in function call.
* reorg.c (insn_sets_resource_p): Convert include_delayed_effects
to enum type in function call.
* tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
(SET_PREDICT_EXPR_OUTCOME): Define.
* tree-dump.c (get_dump_file_info): Change phase parameter to
int.
(get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
(dump_initialized_p, dump_flag_name, dump_end): Likewise.
(dump_function): Likewise.
* tree-dump.h: Update declarations.
* tree-pass.h: Update declarations.
* varasm.c (assemble_integer): Change mclass to enum mode_class.
* config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
enum type.
(arm_rtx_costs_1): Correct parenthesization.
(arm_rtx_costs): Add casts to enum type.
(adjacent_mem_locations): Reverse arguments to const_ok_for_op.
(vfp_emit_fstmd): Use add_rg_note.
(emit_multi_reg_push, emit_sfm): Likewise.
(thumb_set_frame_pointer): Likewise.
(arm_expand_prologue): Likewise.
(arm_regno_class): Change return type to enum reg_class.
(thumb1_expand_prologue): Use add_reg_note.
* config/arm/arm-protos.h (arm_regno_class): Update declaration.
* config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
in function call.
* config/arm/gentune.sh: Add cast to enum type.
* config/arm/arm-tune.md: Rebuild.
* config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
(ix86_split_fp_branch, predict_jump): Likewise.
(ix86_expand_multi_arg_builtin): Change sub_code from enum
insn_code to enum rtx_code.
(ix86_builtin_vectorized_function): Add cast to enum type.
* config/i386/i386.md (truncdfsf2): Change slot to enum
ix86_stack_slot.
(truncxf<mode>2, isinf<mode>2): Likewise.
* config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
enum type.
* config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
(spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
(insert_bundle_state): Change 1 to INSERT in function call.
(ia64_add_bundle_selector_before): Likewise.
* config/ia64/ia64.md (cpu attr): Add cast to enum type.
(save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
(restore_stack_nonlocal): Likewise.
* config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
function call.
* config/mips/mips.c (mips_binary_cost): Change 0 to SET in
function call.
(mips_rtx_costs): Likewise.
(mips_override_options): Add casts to enum type.
* config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
in function call.
* config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
(store_reg, set_reg_plus_d): Likewise.
(hppa_expand_prologue, hppa_profile_hook): Likewise.
* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
cast to enum type.
(altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
function call.
(emit_unlikely_jump): Use add_reg_note.
(rs6000_emit_allocate_stack): Likewise.
(rs6000_frame_related, rs6000_emit_prologue): Likewise.
(output_toc): Change 1 to INSERT in function call.
(output_profile_hook): Change 0 to LCT_NORMAL in function call.
(rs6000_initialize_trampoline): Likewise.
(rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
function call.
* config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
(s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
(s390_expand_setmem, s390_expand_cmpmem): Likewise.
(save_gprs): Use add_reg_note.
(s390_emit_prologue): Likewise.
(s390_expand_builtin): Change 0 to EXPAND_NORMAL in function
call.
* config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
(sparc_fold_builtin): Add cast to enum type.
* config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
enum insn_code.
(spu_expand_prologue): Use add_reg_note.
(expand_builtin_args): Change 0 to EXPAND_NORMAL in function
call.
* c-parser.c (c_parser_attributes): Change VEC back to tree list.
(c_parser_postfix_expression_after_primary): Get VEC for list of
arguments. Get original types of arguments. Call
build_function_call_vec.
(cached_expr_list_1, cached_expr_list_2): New static variables.
(c_parser_expr_list): Change return type to VEC *. Add
p_orig_types parameter. Change all callers.
(c_parser_release_expr): New static function.
(c_parser_vec_to_tree_list): New static function.
* c-typeck.c (build_function_call): Rewrite to build a VEC and
call build_function_call_vec.
(build_function_call_vec): New function, based on old
build_function_call.
(convert_arguments): Remove nargs and argarray parameters. Change
values to a VEC. Add origtypes parameter.
(build_modify_expr): Add rhs_origtype parameter. Change all
callers.
(convert_for_assignment): Add origtype parameter. Change all
callers. If warn_cxx_compat, check for conversion to an enum
type when calling a function.
(store_init_value): Add origtype parameter. Change all callers.
(digest_init): Likewise.
(struct init_node): Add origtype field.
(add_pending_init): Add origtype parameter. Change all callers.
(output_init_element): Likewise.
(output_pending_init_elements): Pass origtype from init_node to
output_init_element.
(process_init_elemnt): Pass origtype from c_expr to
output_init_element.
(c_finish_return): Add origtype parameter. Change all callers.
* c-common.c (sync_resolve_size): Change params to VEC *. Change
caller.
(sync_resolve_params): Likewise.
(sync_resolve_return): Change params to first_param. Change
caller.
(resolve_overloaded_builtins): Change params to VEC *. Change
callers. Save first parameter around call to
build_function_call_vec.
* c-decl.c (finish_decl): Add origtype parameter. Change all
callers. Call build_function_call_vec rather than
build_function_call for cleanup.
* c-tree.h: Update declarations.
* c-common.h: Update declarations.
* stub-objc.c (objc_rewrite_function_call): Change parameter from
params to first_param.
* target.h (struct gcc_target): Change resolve_overloaded_builtin
params parameter from tree to void *.
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
Change arglist parameter to have type void *, and to be a pointer
to a VEC.
* config/rs6000/rs6000-protos.h
(altivec_resolve_overloaded_builtin): Update declaration.
* config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
fnargs parameter to have type void *, and to be a pointer to a
VEC. Call build_function_call_vec instead of
build_function_call.
* config/spu/spu-protos.h (spu_expand_builtin): Update
declaration.
gcc/cp/:
* typeck.c (build_function_call_vec): New function.
(cp_build_function_call): Only pass first parameter to
objc_rewrite_function_call.
(build_modify_expr): Add rhs_origtype parameter. Change all
callers.
* decl.c (finish_decl): Add origtype parameter. Change all
callers.
* semantics.c (finish_call_expr): Pass VEC to
resolve_overloaded_builtin.
gcc/objc:
* objc-act.c (objc_rewrite_function_call): Change parameter from
params to first_param. Change all callers.
gcc/testsuite:
* gcc.dg/Wcxx-compat-3.c: New testcase.
Eric Botcazou [Mon, 20 Apr 2009 19:30:55 +0000 (19:30 +0000)]
trans.c (unchecked_conversion_lhs_nop): New predicate.
* gcc-interface/trans.c (unchecked_conversion_lhs_nop): New predicate.
(gnat_to_gnu) <N_Unchecked_Type_Conversion>: Return the expression
if the conversion is on the LHS of an assignment and a no-op.
<all> Do not convert the result to the result type if the Parent
node is such a conversion.
Eric Botcazou [Mon, 20 Apr 2009 17:41:33 +0000 (17:41 +0000)]
ada-tree.h (DECL_HAS_REP_P): Delete.
* gcc-interface/ada-tree.h (DECL_HAS_REP_P): Delete.
* gcc-interface/decl.c (gnat_to_gnu_entity): Add support for extension
of types with unknown discriminants.
(substitute_in_type): Rewrite and restrict to formal substitutions.
* gcc-interface/utils.c (create_field_decl): Do not set DECL_HAS_REP_P.
(update_pointer_to): Update comment.
* sem_ch8.adb (Use_One_Package): In an instance, if two
potentially_use_visible and non-overloadable homonyms are available
from the actuals of distinct formal packages, retain the current one,
which was visible in the generic, to prevent spurious visibility
errors.
(End_Use_Package): Restore use_visibility when needed.
sem_ch6.adb (Analye_Subprogram_Declaration): Code reorganization, for better handling of null procedures.
2009-04-20 Ed Schonberg <schonberg@adacore.com>
* sem_ch6.adb (Analye_Subprogram_Declaration): Code reorganization,
for better handling of null procedures.
(Check_Overriding_Indicator): Do not emit a warning on a missing
overriding indicator on an operator when the type of which the operator
is a primitive is private.
Robert Dewar [Mon, 20 Apr 2009 13:28:50 +0000 (15:28 +0200)]
sem_attr.adb (Eval_Attribute, [...]): Catch more cases where this attribute can be evaluated at compile time.
2009-04-20 Robert Dewar <dewar@adacore.com>
* sem_attr.adb (Eval_Attribute, case Length): Catch more cases where
this attribute can be evaluated at compile time.
(Eval_Attribute, case Range_Length): Same improvement
* sem_eval.ads, sem_eval.adb (Compile_Time_Compare): New procedure
cgraph.h (cgraph_node_ptr): New type for vector functions.
* cgraph.h (cgraph_node_ptr): New type for vector functions.
(struct cgraph_node_set_def): New type.
(cgraph_node_set) New type. Also declare vector functions.
(struct cgraph_node_set_element_def): New type.
(cgraph_node_set_element): Ditto.
(cgraph_node_set_iterator): New iterator type.
(cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
cgraph_node_set_remove, dump_cgraph_node_set,
debug_cgraph_node_set): New prototypes.
(csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
cgraph_node_set_size): New inlines.
* tree-pass.h (struct cgraph_node_set_def): New decl to avoid
including cgraph.h.
(struct ipa_opt_pass): Add struct cgraph_node_set_def
argument to function 'write_summary'.
* ipa.c: Include ggc.h.
(hash_cgraph_node_set_element,
eq_cgraph_node_set_element, cgraph_node_set_new,
cgraph_node_set_add, cgraph_node_set_remove,
cgraph_node_set_find, dump_cgraph_node_set,
debug_cgraph_node_set): New functions.
* Makefile.in (ipa.o): Add dependency on GGC_H.
* sem_ch4.adb (Analyze_User_Defined_Binary_Op): If left operand is
overloaded and one interpretation matches the context, label the
operand with the type of first formal.
2009-04-20 Bob Duff <duff@adacore.com>
* debug.ads: Minor comment fix.
* debug.adb: Minor comment fixes.
2009-04-20 Javier Miranda <miranda@adacore.com>
* rtsfind.ads (RE_Null_Id): New entity of package Ada.Exceptions
* exp_ch11.adb (Expand_N_Raise_Statement): When the raise stmt
is expanded into a call to Raise_Exception, avoid passing the
exception-name'identity in runtimes in which this argument
is not used.
* impunit.adb: Add i-cil and i-cilobj packages, now needed by the
generated bindings for cil.
2009-04-20 Ed Schonberg <schonberg@adacore.com>
* sem_aggr.adb (Resolve_Record_Aggregate): If the type has unknown
discriminants, collect components from the Underlying_Record_View,
which will be used in the expansion of the aggregate into assignments.
* sem_ch3.adb: Do not label derived type with unknown discriminants as
having a private declaration.
* exp_util.adb (Expand_Subtype_From_Expr): use the
underlying_record_view when available, to create the proper constrained
subtype for an object of a derived type with unknown discriminants.
2009-04-20 Javier Miranda <miranda@adacore.com>
* exp_ch6.ad (Expand_Inlined_Call): Avoid generation of temporaries for
formals that have pragma unreferenced.
* sem_disp.adb (Find_Dispatching_Type): For subprograms internally
generated by derivations of tagged types use the aliased subprogram a
reference to locate their controlling type.
2009-04-20 Tristan Gingold <gingold@adacore.com>
* g-trasym.adb: Set size of result buffer before calling
convert_address.
2009-04-20 Ed Schonberg <schonberg@adacore.com>
* sem_ch4.adb (Valid_Candidate): When checking whether a prefixed call
to a function returning an array can be interpreted as a call with
defaulted parameters whose result is indexed, take into account the
types of all the indices of the array result type.
* sysdep.c (__gnat_localtime_tzoff): on Windows, manipulated times are
unsigned long long. So compare local_time and utc_time before computing
the difference.
2009-04-20 Eric Botcazou <ebotcazou@adacore.com>
* sem_ch3.adb (Build_Derived_Private_Type): Insert the declaration
of the Underlying_Record_View before that of the derived type.
* exp_ch3.adb (Expand_Record_Extension): Do not special-case types
with unknown discriminants with regard to the parent subtype.
Bob Duff [Mon, 20 Apr 2009 12:42:34 +0000 (12:42 +0000)]
sem.adb (Semantics, [...]): Include dependents of bodies that are not included.
2009-04-20 Bob Duff <duff@adacore.com>
* sem.adb (Semantics, Walk_Library_Items): Include dependents of bodies
that are not included. This is necessary if the main unit is a generic
instantiation.
* gnat1drv.adb (Gnat1drv): Comment out the call to Check_Library_Items,
because it doesn't work if -gnatn is used.
exp_ch3.adb (Make_Predefined_Primitive_Specs, [...]): Do not create the declarations and bodies of the primitive subprograms...
* exp_ch3.adb (Make_Predefined_Primitive_Specs,
Predefined_Primitive_Bodies): Do not create the declarations and bodies
of the primitive subprograms associated with dispatching select
statements when the runtime is in configurable mode.
* a-calfor.adb (Image): Subtract 0.5 from the sub second component only
when it is positive. This avoids a potential constraint error raised
by the conversion to Natural.
2009-04-20 Thomas Quinot <quinot@adacore.com>
* einfo.ads: Minor comment rewording
* sem_aggr.adb: Minor comment rewording
* sem_ch3.adb, sem_ch6.adb: Minor reformatting
2009-04-20 Pascal Obry <obry@adacore.com>
* adaint.c (__gnat_is_readable_file): Check for file existence
when not using ACL (always the case on remote drives).
Ed Schonberg [Mon, 20 Apr 2009 12:29:39 +0000 (14:29 +0200)]
sem_ch8,adb (Analyze_Object_Renaming): Reject ambiguous expressions in an object renaming declaration when...
2009-04-20 Ed Schonberg <schonberg@adacore.com>
* sem_ch8,adb (Analyze_Object_Renaming): Reject ambiguous expressions
in an object renaming declaration when the expected type is an
anonymous access type.
* sem_type.adb (Disambiguate): Use anonymousness to resolve a potential
ambiguity when one interpretation is an anonymous access type and the
other is a named access type, and the context itself is anonymous
Gary Dismukes [Mon, 20 Apr 2009 12:29:26 +0000 (14:29 +0200)]
exp_ch5.adb (Expand_Assign_Array): For the case where the assignment involves a target that has a specified address...
2009-04-20 Gary Dismukes <dismukes@adacore.com>
* exp_ch5.adb (Expand_Assign_Array): For the case where the assignment
involves a target that has a specified address, don't set Forward_OK
and Backward_OK to False if the rhs is an aggregate, since overlap
can't occur.
Ira Rosen [Mon, 20 Apr 2009 11:26:18 +0000 (11:26 +0000)]
re PR tree-optimization/39675 (ICE in vect_get_vec_def_for_operand, at tree-vect-transform.c:1999)
PR tree-optimization/39675
* tree-vect-loop.c (vect_transform_loop): Remove currently redundant
check of the return code of vect_schedule_slp. Check that stmt_vec_info
still exists for the statement, before checking its vectorization type.
Thomas Quinot [Mon, 20 Apr 2009 10:45:28 +0000 (10:45 +0000)]
socket.c, [...] (__gnat_inet_pton): Needs to be enabled for HP-UX as well...
2009-04-20 Thomas Quinot <quinot@adacore.com>
* socket.c, g-socthi-vms.adb, g-socthi-vms.ads, g-socthi-vxworks.ads,
s-oscons-tmplt.c, gsocket.h, g-socthi-mingw.ads, g-socthi.ads,
g-sothco.ads (__gnat_inet_pton): Needs to be enabled for HP-UX as well,
since HP-UX supports neither inet_aton nor inet_pton (altough the
latter is part of the Single UNIX Specification!).
So reorganize code, and share C implementation based on inet_addr(3)
with VMS (instead of having a VMS specific Ada implementation in
g-socthi-vms.adb).
* osint-c.ads, osint-c.adb (Get_Object_Output_File_Name): New function
to return the object file name saved by Set_Object_Output_File_Name.
2009-04-20 Emmanuel Briot <briot@adacore.com>
* g-comlin.adb (Initialize_Option_Scan): Fix initialization of parsers
for the standard command line, when argc has been modified since the
start of the application.
2009-04-20 Thomas Quinot <quinot@adacore.com>
* socket.c (__gnat_inet_pton, Windows case): Adjust return value.
WSAStringToAddress returns 0 for success and SOCKET_ERROR for failure.
* gnat1drv.adb (Gnat1drv): Put call to Check_Library_Items inside
pragma Debug.
2009-04-20 Ed Schonberg <schonberg@adacore.com>
* exp_ch9.adb (Build_Protected_Sub_Specification): Mark generated
subprogram as Eliminated when source operation is.
(Expand_N_Protected_Type_Declaration): Generate protected and
unprotected specs for the internal operations, even if the source
operation is eliminated.
* exp_ch3.adb (Make_Predefined_Primitive_Specs,
Predefined_Primitive_Bodies): Do not create the declarations and bodies
of the primitive subprograms associated with dispatching select
statements when the runtime is in configurable mode.
* s-oscons-tmplt.c: Add support for generating a dummy version of
s-oscons.ads providing all possible constants.
* g-socthi-mingw.ads: Fix calling convention for __gnat_inet_pton.
* socket.c (__gnat_inet_pton): On Windows make sure we always use the
ANSI version (not the UNICODE version) of WSAStringToAddress.
2009-04-20 Pascal Obry <obry@adacore.com>
* adaint.c (__gnat_set_OWNER_ACL): properly free memory
allocated for the security descriptor and make sure all
handles are closed before leaving this procedure.
* einfo.ads, einfo.adb (Is_Underlying_Record_View): New subprogram
(Set_Is_Underlying_Record_View): New subprogram
* sem_aggr.adb (Discr_Present, Resolve_Record_Aggregate): In case of
private types with unknown discriminants use the underlying record view
if available.
* sem_ch3.adb (Build_Derived_Private_Type): Enable construction of the
underlying record view in the full view of private types whose parent
has unknown discriminants.
(Build_Derived_Record_Type): Avoid generating the class-wide entity
associated with an underlying record view.
(Derived_Type_Declaration): Avoid deriving parent primitives in
underlying record views.
* sem_ch6.adb (Check_Return_Subtype_Indication): Add support for
records with unknown discriminants.
* sem_type.adb (Covers): Handle underlying record views.
(Is_Ancestor): Add support for underlying record views.
* exp_attr.adb (Expand_Attribute): Expand attribute 'size into a
dispatching call if the type of the target object is tagged and has
unknown discriminants.
* exp_aggr.adb (Resolve_Record_Aggregate): Add support for records with
unknown discriminants.
* exp_disp.adb (Build_Dispatch_Tables): Avoid generating dispatch
tables for internally built underlying record views.
* sprint.adb (sprint_node_actual): Improve output of aggregates with an
empty list of component associations.
2009-04-20 Thomas Quinot <quinot@adacore.com>
* sem_ch10.adb: Minor reformatting
* socket.c, g-socthi-vms.adb, g-socthi-vms.ads, g-socthi-vxworks.ads,
g-socthi-mingw.ads, g-socthi.ads, g-socket.adb
(GNAT.Sockets.Inet_Addr): Do not use non-portable inet_aton, instead use
standard inet_pton API (and emulate it on platforms that do not
support it).
(GNAT.Sockets.Thin.Inet_Pton, VMS case): Implement in terms of
DECC$INET_ADDR, imported in Ada.
(GNAT.Sockets.Thin.Inet_Pton, VxWorks and Windows cases): Use C
implementation provided by GNAT runtime.
(__gnat_inet_pton): C implementation of inet_pton(3) for VxWorks and
Windows.
* exp_ch3.adb (Make_Predefined_Primitive_Specs): Do not generate the
declarations of all primitives associated with dispatching asynchronous,
conditional and timed selects when dispaching calls are forbidden and
select statements are not allowed (such as in Ravenscar).
(Predefined_Primitive_Bodies): Ditto for bodies.
* exp_disp.ad (Make_DT): Do not create and populate the
Select_Specific_Data of the dispatch table when dispatching calls are
forbidden and select statements are not allowed (such as in Ravenscar).
2009-04-20 Robert Dewar <dewar@adacore.com>
* a-tifiio.adb: Minor reformatting
2009-04-20 Thomas Quinot <quinot@adacore.com>
* g-socthi-vms.adb, g-socket.adb, g-socket.ads: inet_aton(3), unlike
other C library functions, report *failure* with a zero status, and
success with a non-zero status.
2009-04-20 Bob Duff <duff@adacore.com>
* sem.ads, sem.adb (Walk_Library_Items): New generic procedure.
(Semantics): After analyzing each unit, Append it to the
Comp_Unit_List, if appropriate.
* gnat1drv.adb (Check_Library_Items): New procedure for debugging
purposes.
(Gnat1drv): Correct comment regarding Back_End_Mode.
2009-04-20 Eric Botcazou <ebotcazou@adacore.com>
* gnat_ugn.texi: Add documentation for -fno-inline-small-functions.
Thomas Quinot [Mon, 20 Apr 2009 09:42:48 +0000 (09:42 +0000)]
2009-04-20 Thomas Quinot <quinot@adacore.com>
* g-socket.adb, g-socket.ads, g-socthi-mingw.ads, g-socthi-vms.adb,
g-socthi-vms.ads, g-socthi-vxworks.ads, g-socthi.ads
(GNAT.Sockets.Thin.C_Inet_Addr): Remove.
(GNAT.Sockets.Thin.Inet_Aton): New function, imported from C library
except for VMS where it is reimplemented in Ada using DECC$INET_ADDR.
(GNAT.Sockets.Inet_Addr): Use inet_aton(3) instead of inet_addr(3).
* a-calend.adb, a-calend-vms.adb: Increase the number of leap seconds
to 24. Increment Leap_Seconds_Count and add an entry to aggregate
Leap_Second_Times.
2009-04-20 Vincent Celier <celier@adacore.com>
* mlib-prj.adb (Build_Library): Use the shared library linker, if one
has been declared (Library_GCC or Linker'Driver), for the driver name.
* prj-nmsc.adb (Process_Linker): If Library_GCC is not declared and
Linker'Driver is, use Linker'Driver as the shared library linker.
(Process_Project_Level_Simple_Attributes): Issue a warning if attribute
Library_GCC is declared.
(Check_Library_Attributes): Set up the shared linker driver: either
Library_GCC or Linker'Driver. Issue a warning if Library_GCC is
declared.
Gary Dismukes [Mon, 20 Apr 2009 09:37:30 +0000 (11:37 +0200)]
sem_elim.ads (Check_For_Eliminated_Subprogram): New procedure for checking for references to eliminated subprograms that should...
2009-04-20 Gary Dismukes <dismukes@adacore.com>
* sem_elim.ads (Check_For_Eliminated_Subprogram): New procedure for
checking for references to eliminated subprograms that should be
flagged.
(Eliminate_Error_Message): Update comment to say "references" rather
than "calls" (since attribute cases are handled here as well).
* sem_elim.adb (Check_For_Eliminated_Subprogram): New procedure for
checking for references to eliminated subprograms that should be
flagged. Add with and use of Sem and Sem_Util.
* sem_res.adb (Resolve_Call): Reject calls to eliminated subprograms.
Add with and use of Sem_Elim.
* sem_attr.adb (Analyze_Access_Attribute): Reject access attributes
applied to eliminated subprograms.
(Analyze_Attribute): Reject 'Address and 'Code_Address applied to
eliminated subprograms.
Add with and use of Sem_Elim.
* sem_disp.adb (Check_Dispatching_Call): Remove error check for calls
to eliminated subprograms, now handled during Resolve_Call.
Remove with and use of Sem_Elim.
* exp_disp.adb (Make_DT): Get Ultimate_Alias of primitive before
testing Is_Eliminated, for proper handling of primitive derived from
eliminated subprograms.
* sem_disp.adb
(Check_Dispatching_Operation): Set attribute Is_Dispatching_Operation
in internally built overriding subprograms.
2009-04-20 Doug Rupp <rupp@adacore.com>
* s-auxdec-vms_64.ads (Integer_{8,16,32,64}_Array): New array types.
* s-auxdec.ads: Likewise
2009-04-20 Ed Schonberg <schonberg@adacore.com>
* sem_ch3.adb (Find_Type_Name): Reject the completion of a private
type by an interface.
* exp_ch6.adb (Expand_Call): Inline To_Address unconditionally, to
minimze difference in expanded tree when compiled as spec of the main
unit, or as a spec in the context of another unit.
* a-calend.adb: Remove types char_Pointer, int, tm and tm_Pointer.
(localtime_tzoff): This routine no longer accepts an actual of type
tm_Pointer.
(UTC_Time_Offset): Remove local variable Secs_TM.
* sysdep.c (__gnat_localtime_tzoff): This routine no longer accepts an
actual of type struct tm*. Add local variable of type struct tm for all
targets that provide localtime_r and need to invoke it.
2009-04-20 Thomas Quinot <quinot@adacore.com>
* s-oscons-tmplt.c, g-socket.adb, g-socket.ads
(GNAT.Sockets.Resolve_Error): Add case of EPIPE
Add case of EAGAIN for platforms where it is not equal to EWOULDBLOCK
Eric Botcazou [Mon, 20 Apr 2009 08:14:36 +0000 (08:14 +0000)]
trans.c (call_to_gnu): When creating the copy for a non-addressable parameter passed by reference...
* gcc-interface/trans.c (call_to_gnu): When creating the copy for a
non-addressable parameter passed by reference, do not convert the
actual if its type is already the nominal type, unless it is of
self-referential size.
* debug.adb, gnat1drv.adb, sem_ch13.adb: Add circuitry to
Validate_Unchecked_Warnings to suppress warnings about size or
alignment or extra bits if either type involved has pragma Warnings
(Off) set for the type entity.
Joseph Myers [Sun, 19 Apr 2009 17:10:56 +0000 (18:10 +0100)]
re PR preprocessor/20078 (Gcc doesn't complain about non-benign macro definitions)
libcpp:
PR preprocessor/20078
* include/cpp-id-data.h (struct cpp_macro): Add extra_tokens
field.
* include/cpplib.h (SP_DIGRAPH, SP_PREV_WHITE): Define.
(struct cpp_token): Change flags to unsigned short.
* lex.c (_cpp_lex_direct): Initialize arg_no for CPP_PASTE tokens.
(_cpp_equiv_tokens): Check arg_no for CPP_PASTE tokens.
(cpp_token_val_index): Return CPP_TOKEN_FLD_ARG_NO for CPP_PASTE
tokens.
* macro.c (macro_real_token_count): New.
(enter_macro_context, replace_args): Use macro_real_token_count.
(create_iso_definition): Record whitespace surrounding and digraph
spelling of # and ## tokens using SP_PREV_WHITE and SP_DIGRAPH.
Set extra_tokens and save CPP_PASTE tokens with arg_no set for
multiple consecutive ## tokens.
(_cpp_create_definition): Initialize extra_tokens.
(cpp_macro_definition): Use macro_real_token_count.
gcc/testsuite:
* gcc.dg/cpp/paste16.c, gcc.dg/cpp/redef4.c: New tests.
Joseph Myers [Sat, 18 Apr 2009 23:21:34 +0000 (00:21 +0100)]
re PR c/27676 (gcc is overly strict in assignment to read-only data)
PR c/27676
* c-typeck.c (readonly_warning): new.
(build_unary_op, build_modify_expr): Use readonly_warning for
storing into something readonly but not const-qualified.
Jan Hubicka [Sat, 18 Apr 2009 22:18:21 +0000 (00:18 +0200)]
* eh_type.cc (__cxa_current_exception_type) Mark throw().
* unwind-cxx.h (__cxa_get_globals, __cxa_get_globals_fast): Mark const.
(__cxa_get_exception_ptr): Mark pure.
(__cxa_bad_cast, __cxa_bad_typeid): Mark noreturn
(__terminate): Makr throw ().
* exception (terminate): Mark throw().
(uncaught_exception): Mark pure.
* eh_ptr.cc (_M_safe_bool_dummy): Mark throw().
* guard.cc (__cxa_guard_abort, __cxa_guard_release): Mark throw().
* eh_terminate.cc (__terminate, terminate): Mark throw().
* vec.cc (__cxa_vec_cleanup): Mark throw().
* cxxabi.h (__cxa_vec_cleanup, __cxa_guard_release, __cxa_guard_abort): Mark throw ().
(__cxa_pure_virtual): Mark noreturn.
(__cxa_current_exception_type): Mark throw and pure.
* exception_ptr.h (operator ==, !=, _M_get, !, ==,
__cxa_exception_type): Mark pure.
(_M_safe_bool_dummy): Mark pure and const.