gcc/:
* combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
(record_dead_and_set_regs): Likewise.
* df.h (struct df_mw_hardreg): Change flags field to int.
(struct df_base_ref): Likewise.
(struct df): Change changeable_flags field to int.
* df-scan.c (df_defs_record): Change clobber_flags to int.
* dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
constants rather than #define macros.
(enum dwarf_attribute, enum dwarf_location_atom): Likewise.
(enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
(enum dwarf_calling_convention): Likewise.
(enum dwarf_line_number_x_ops): Likewise.
(enum dwarf_call_frame_info): Likewise.
(enum dwarf_source_language): Likewise.
* dwarf2out.c (int_loc_descriptor): Add cast to enum type.
(add_calling_convention_attribute): Likewise.
* fold-const.c (fold_undefer_overflow_warnings): Add cast to enum
type.
(combine_comparisons): Change compcode to int. Add cast to enum
type.
* genrecog.c (maybe_both_true_2): Change c to int.
(write_switch): Likewise. Add cast to enum type.
* gimplify.c (gimplify_omp_for): Handle return values from
gimplify_expr using MIN rather than bitwise or.
(gimplify_expr): Add cast to enum type.
* ipa-prop.c (update_jump_functions_after_inlining): Change
IPA_BOTTOM to IPA_JF_UNKNOWN.
* ira.c (setup_class_subset_and_memory_move_costs): Change mode to
int. Add casts to enum type.
(setup_cover_and_important_classes): Change cl to int. Add casts
to enum type.
(setup_class_translate): Change cl and mode to int.
(ira_init_once): Change mode to int.
(free_register_move_costs): Likewise.
(setup_prohibited_mode_move_regs): Add casts to enum type.
* langhooks.c (add_builtin_function_common): Rework assertion that
value fits bitfield.
* mcf.c (add_fixup_edge): Change type parameter to edge_type.
* omega.c (omega_do_elimination): Avoid math on enum types.
* optabs.c (expand_vec_shift_expr): Remove casts to int.
* opts.c (set_debug_level): Change 2 to enum constant. Use new
int local to handle integral_argment value.
* regmove.c (try_auto_increment): Change PUT_MODE to
PUT_REG_NOTE_KIND.
* reload.c (push_secondary_reload): Add casts to enum type.
(secondary_reload_class, find_valid_class): Likewise.
* reload1.c (emit_input_reload_insns): Likewise.
* rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
* sel-sched.c (init_hard_regs_data): Change cur_mode to int.
* sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
constant.
* tree.c (build_common_builtin_nodes): Add casts to enum type.
* tree-complex.c (complex_lattice_t): Typedef to int rather than
enum type.
(expand_complex_libcall): Add casts to enum type.
* tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
* tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
with ERROR_MARK, not NUM_TREE_CODES.
(vect_create_epilog_for_reduction): Likewise.
(vectorizable_reduction): Don't initialize epiloc_reduc_code.
When not using it, set it to ERROR_MARK rather than
NUM_TREE_CODES.
* tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
enum machine_mode.
* tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
vect_unused_in_loop. Change 0 to loop_vect.
* tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum
type.
* var-tracking.c (get_init_value): Change return type to enum
var_init_status.
* vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
* config/arm/arm.c (fp_model_for_fpu): Change to array to enum
arm_fp_model.
(arm_override_options): Add casts to enum type.
(arm_emit_tls_decoration): Likewise.
* config/i386/i386.c (ix86_function_specific_restore): Add casts
to enum type.
* config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
* config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
* config/rs6000/rs6000.c (rs6000_override_options): Add casts to
enum type.
* config/s390/s390.c (code_for_builtin_64): Change to array of
enum insn_code.
(code_for_builtin_31): Likewise.
(s390_expand_builtin): Change code_for_builtin to enum insn_code
const *.
* config/sparc/sparc.c (sparc_override_options): Change value
field in struct code_model to enum cmodel. In initializer change
0 to NULL and add cast to enum type.
* c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
Change all callers. Issue a -Wc++-compat warning using
lhs_origtype if necessary.
(convert_for_assignment): Issue -Wc++-compat warnings about
invalid conversions to enum type on assignment.
* c-common.h (build_modify_expr): Update declaration.
gcc/cp/:
* call.c (build_temp): Change 0 to enum constant.
* cp-tree.h (cp_lvalue_kind): Typedef to int rather than enum
type.
* cp-gimplify.c (cp_gimplify_expr): Add cast to enum type.
* decl2.c (constrain_visibility): Likewise.
* parser.c (cp_lexer_get_preprocessor_token): Likewise.
(cp_parser_flags): Typedef to int rather than enum type.
(cp_parser_expression_stack_entry): Change prec field to enum
cp_parser_prec.
* typeck.c (build_modify_expr): Add lhs_origtype parameter.
Change all callers.
gcc/fortran/:
* gfortran.h (enum gfc_symbol_type): New named enum type, broken
out of struct gfc_symbol.
(struct gfc_symbol): Use enum gfc_symbol_type.
(enum gfc_array_ref_dimen_type): New named enum type, broken out
of struct gfc_array_ref).
(struct gfc_array_ref): Use enum gfc_array_ref_dimen_type.
(mod_pointee_as): Update declaration.
* decl.c (add_global_entry): Change type to enum gfc_symbol_type.
(gfc_mod_pointee_as): Change return type to "match".
* module.c (mio_array_ref): Add cast to enum type.
(mio_symbol): Likewise.
* resolve.c (resolve_global_procedure): Change type to enum
gfc_symbol_type.
* trans-io.c (gfc_build_st_parameter): Change type to unsigned
int.
gcc/java/:
* jcf-parse.c (handle_constant): Add cast to enum type.
gcc/objc/:
* objc-act.c (get_super_receiver): Update calls to
build_modify_expr to pass new argument.
gcc/testsuite/:
* gcc.dg/Wcxx-compat-4.c: New testcase.
From-SVN: r146735
2009-04-24 Daniel Kraft <d@domob.eu>
* gfortran.h (gfc_get_typebound_proc): Removed as macro, now a function.
(struct gfc_symtree): Moved `typebound' member inside union.
(struct gfc_namespace): Add `tb_sym_root' as new symtree to sort out
type-bound procedures there.
(gfc_get_tbp_symtree): New procedure.
* symbol.c (tentative_tbp_list): New global.
(gfc_get_namespace): NULL new `tb_sym_root' member.
(gfc_new_symtree): Removed initialization of `typebound' member.
(gfc_undo_symbols): Process list of tentative tbp's.
(gfc_commit_symbols): Ditto.
(free_tb_tree): New method.
(gfc_free_namespace): Call it.
(gfc_get_typebound_proc): New method.
(gfc_get_tbp_symtree): New method.
(gfc_find_typebound_proc): Adapt to structural changes of gfc_symtree
and gfc_namespace with regards to tbp's.
* dump-parse-tree.c (show_typebound): Ditto.
* primary.c (gfc_match_varspec): Ditto. Don't reference tbp-symbol
as it isn't a symbol any longer.
* module.c (mio_typebound_symtree): Adapt to changes.
(mio_typebound_proc): Ditto, create symtrees using `gfc_get_tbp_symtree'
rather than `gfc_get_sym_tree'.
(mio_f2k_derived): Ditto.
* decl.c (match_procedure_in_type): Ditto.
(gfc_match_generic): Ditto. Don't reference tbp-symbol.
* resolve.c (check_typebound_override): Adapt to changes.
(resolve_typebound_generic): Ditto.
(resolve_typebound_procedures): Ditto.
(ensure_not_abstract_walker): Ditto.
(ensure_not_abstract): Ditto.
(resolve_typebound_procedure): Ditto, ignore erraneous symbols (for
instance, through removed tentative ones).
* gfc-internals.texi (Type-bound procedures): Document changes.
2009-04-24 Daniel Kraft <d@domob.eu>
* gfortran.dg/typebound_generic_1.f03: Change so that no error is
expected on already erraneous symbol (renamed to fresh one).
From-SVN: r146733
* prj-proc.adb, prj.adb, prj.ads, prj-nmsc.adb, prj-nmsc.ads
(Alternate_Languages): now implemented as a malloc-ed list rather
than through a table.
From-SVN: r146731
2009-04-24 Thomas Quinot <quinot@adacore.com>
* sem_res.adb (Static_Concatenation): Simplify predicate to make it
accurately handle cases such as "lit" & "lit" and
"lit" & static_string_constant
From-SVN: r146728
2009-04-24 Emmanuel Briot <briot@adacore.com>
* prj-proc.adb, make.adb, mlib-prj.adb, prj.adb, prj.ads, clean.adb,
prj-nmsc.adb, prj-env.adb (Project_List_Table, Project_Element):
removed. Lists of projects are now implemented via standard malloc
rather than through the table.
2009-04-24 Thomas Quinot <quinot@adacore.com>
* sem_ch12.adb: Minor reformatting
* g-trasym.adb: Minor reformatting
* exp_ch6.adb: Minor reformatting
2009-04-24 Robert Dewar <dewar@adacore.com>
* layout.adb (Layout_Type): For packed array type, copy unset
size/alignment fields from the referenced Packed_Array_Type.
2009-04-24 Bob Duff <duff@adacore.com>
* lib-load.adb (Make_Instance_Unit): Revert previous change, no
longer needed after sem_ch12 changes.
* sem.adb (Walk_Library_Items): Include with's in some debugging
printouts.
From-SVN: r146727
2009-04-24 Emmanuel Briot <briot@adacore.com>
* prj.ads, prj-nmsc.adb (Unit_Project): removed, since in fact we were
only ever using the Project field.
2009-04-24 Ed Schonberg <schonberg@adacore.com>
* sem_ch12.adb (Build_Instance_Compilation_Unit_Nodes): Do not set
Body_Required on the generated compilation node. The new node is linked
to its body, but both share the same file, so we do not set this flag
on the new unit so as not to create a spurious dependency on a
non-existent body in the ali file for the instance.
2009-04-24 Robert Dewar <dewar@adacore.com>
* make.adb: Minor reformatting
From-SVN: r146725
2009-04-24 Emmanuel Briot <briot@adacore.com>
* prj.adb, prj.ads, prj-nmsc.adb (Check_File, Record_Ada_Source,
Add_Source): merge some code between those. In particular change where
file normalization is done to avoid a few extra calls to
Canonicalize_File_Name. This also removes the need for passing
Current_Dir in a number of subprograms.
2009-04-24 Bob Duff <duff@adacore.com>
* lib-load.adb (Make_Instance_Unit): In the case where In_Main is
False, assign the correct unit to the Cunit field of the new table
entry. We want the spec unit, not the body unit.
* rtsfind.adb (Make_Unit_Name, Maybe_Add_With): Simplify calling
interface for these.
(Maybe_Add_With): Check whether we're trying to a with on the current
unit, and avoid creating such directly self-referential with clauses.
(Text_IO_Kludge): Add implicit with's for the generic pseudo-children of
[[Wide_]Wide_]Text_IO. These are needed for Walk_Library_Items,
and matches existing comments in the spec.
* sem.adb (Walk_Library_Items): Add various special cases to make the
assertions pass.
* sem_ch12.adb (Build_Instance_Compilation_Unit_Nodes): Use Body_Cunit
instead of Parent (N), for uniformity.
From-SVN: r146724
2009-04-24 Robert Dewar <dewar@adacore.com>
* errout.ads: Minor reformatting
2009-04-24 Emmanuel Briot <briot@adacore.com>
* gnat_ugn.texi (Library Projects): add documentation on gnatmake's
behavior when the project includes sources from multiple languages
2009-04-24 Vincent Celier <celier@adacore.com>
* prj.adb (Has_Foreign_Sources): Returns True in Ada_Only mode if there
is a language other than Ada declared.
* makeutl.adb (Linker_Options_Switches): Call For_All_Projects with
Imported_First set to True.
From-SVN: r146722
2009-04-24 Ed Schonberg <schonberg@adacore.com>
* sem_res.adb: additional optimization to inhibit creation of
redundant transient scopes.
2009-04-24 Bob Duff <duff@adacore.com>
* rtsfind.ads: Minor comment fix
2009-04-24 Emmanuel Briot <briot@adacore.com>
* prj-proc.adb, prj-nmsc.adb (Find_Ada_Sources,
Get_Path_Name_And_Record_Ada_Sources): merged, since these were
basically doing the same work (for explicit or implicit sources).
(Find_Explicit_Sources): renamed to Find_Sources to better reflect its
role. Rewritten to share some code (testing that all explicit sources
have been found) between ada_only and multi_language modes.
2009-04-24 Jerome Lambourg <lambourg@adacore.com>
* sem_prag.adb (Check_Form_Of_Interface_Name): Allow space in Ext_Name
for CLI imported types.
(Analyze_Pragma): Allow CIL or Java imported functions returning
access-to-subprogram types.
From-SVN: r146720
* make.adb, prj.adb, prj.ads, makeutl.adb, makeutl.ads:
(Project_Data.Dir_Path): field removed, since it can be computed
directly from .Directory, and is needed only once when processing the
project is buildgpr.adb or make.adb
From-SVN: r146719
2009-04-24 Arnaud Charlet <charlet@adacore.com>
* mlib-prj.adb: Use friendlier english identifier.
* gnatcmd.adb, make.adb: Use better english identifiers.
2009-04-24 Robert Dewar <dewar@adacore.com>
* clean.adb: Minor reformatting
From-SVN: r146715
2009-04-24 Robert Dewar <dewar@adacore.com>
* einfo.adb (OK_To_Rename): New flag
* einfo.ads (OK_To_Rename): New flag
* exp_ch3.adb (Expand_N_Object_Declaration): Rewrite as renames if
OK_To_Rename set.
* exp_ch4.adb (Expand_Concatenate): Mark temp variable OK_To_Rename
* sem_ch7.adb (Uninstall_Declarations): Allow for renames from
OK_To_Rename.
From-SVN: r146714
* loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
follow chains of regs with a single definition, and allow expressions
that are function_invariant_p.
From-SVN: r146700
2009-04-24 Emmanuel Briot <briot@adacore.com>
* prj-proc.adb, make.adb, mlib-prj.adb, prj.adb, prj.ads, makeutl.adb,
clean.adb, prj-nmsc.adb, prj-env.adb, prj-env.ads (Project_Data.Seen):
field removed. This is not a property of the
project, just a boolean used to traverse the project tree, and storing
it in the structure prevents doing multiple traversal in parallel.
(Project_Data.Checked): also removed, since it was playing the same role
as Seen when we had two nested loops, and this is no longer necessary
(For_All_Imported_Projects): removed, since in fact there was already
the equivalent in For_Every_Project_Imported. The latter was rewritten
to use a local hash table instead of Project_Data.Seen
Various loops were rewritten to use For_Every_Project_Imported, thus
removing the need for Project_Data.Seen. This avoids a lot of code
duplication
From-SVN: r146699
2009-04-24 Ed Schonberg <schonberg@adacore.com>
* sem_res.adb (Resolve_Actuals): Do not create blocks around code
statements, even though the actual of the call is a concatenation,
because the argument is static, and we want to preserve warning
messages about sequences of code statements that are not marked
volatile.
* sem_warn.adb: remove obsolete comment about warning being obsolete
* s-tasren.adb (Task_Do_Or_Queue): If a timed entry call is being
requeued and the delay has expired while within the accept statement
that executes the requeue, do not perform the requeue and indicate that
the timed call has been aborted.
2009-04-24 Emmanuel Briot <briot@adacore.com>
* mlib-prj.adb, prj.adb, prj.ads, prj-nmsc.adb, prj-env.adb
(Has_Ada_Sources, Has_Foreign_Sources): new subprograms
(Project_Data.Ada_Sources_Present, Foreign_Sources_Present): removed,
since they can be computed from the above.
From-SVN: r146698
2009-04-24 Vincent Celier <celier@adacore.com>
* gnatcmd.adb: Call Prj.Env.Initialize with the Project_Tree
* prj-env.adb: Move all global variables to the private part of the
project tree data.
Access these new components instead of the global variables no longer
in existence.
(Add_To_Path): New Project_Tree_Ref parameter, to access the new
components that were previously global variables.
* prj-env.ads (Initialize): New Project_Tree_Ref parameter
(Set_Mapping_File_Initial_State_To_Empty): New Project_Tree_Ref
parameter.
* prj-nmsc.adb (Compute_Unit_Name): New Project_Tree_Ref parameter to
be able to call Set_Mapping_File_Initial_State_To_Empty with it.
* prj.adb (Initialize): Do not call Prj.Env.Initialize
(Reset): Do not call Prj.Env.Initialize. Instead, initialize the new
components in the private part of the project tree data.
* prj.ads (Private_Project_Tree_Data): new components moved from
Prj.Env: Current_Source_Path_File, Current_Object_Path_File,
Ada_Path_Buffer, Ada_Path_Length, Ada_Prj_Include_File_Set,
Ada_Prj_Objects_File_Set, Fill_Mapping_File.
From-SVN: r146696
2009-04-24 Paolo Bonzini <bonzini@gnu.org>
PR middle-end/39867
* fold-const.c (fold_cond_expr_with_comparison): When folding
> and >= to MAX, make sure the MAX uses the same type as the
comparison operands.
testsuite:
2009-04-24 Paolo Bonzini <bonzini@gnu.org>
PR middle-end/39867
* gcc.dg/pr39867.c: New.
From-SVN: r146695
* config/frv/frv.c (frv_frame_access): Do not use reg+reg
addressing for DImode accesses.
(frv_print_operand_address): Handle PLUS case.
* config/frv/frv.h (FIXED_REGISTERS): Mark link register as
fixed.
From-SVN: r146694
2009-04-24 Vincent Celier <celier@adacore.com>
* opt.ads (Unchecked_Shared_Lib_Imports): New Boolean flag.
* prj-nmsc.adb (Check_Library): No error for imports by shared library
projects, when --unchecked-shared-lib-imports is used.
2009-04-24 Robert Dewar <dewar@adacore.com>
* sem_ch7.adb: Minor reformatting
From-SVN: r146693
* prj-proc.adb, prj.adb, prj.ads, prj-nmsc.adb, prj-env.adb
(Source_Id, Source_Data): use a real list to store sources rather than
using an external table to store the elements. This makes code more
efficient and more readable.
From-SVN: r146691
* prj-proc.adb, prj.adb, prj.ads, prj-nmsc.adb, prj-env.adb
(Source_Iterator): new type.
This removes the need for having the sources on three different
lists at the project tree, project and language level. They are now
on a single list.
From-SVN: r146689
2009-04-24 Emmanuel Briot <briot@adacore.com>
* prj.adb, prj.ads, prj-nmsc.adb, prj-env.adb (Language_Index): renamed
to Language_Ptr to better reflect its new implementation.
(Project_Data.First_Languages_Processing): renamed to Languages now
that the field with that name is no longer used
(Project_Data.Languages): removed, no longer used, and duplicates
information already available through First_Language_Processing.
(Prj.Language_Index): now an actual pointer, instead of an index into
a table. This makes the list somewhat more obvious, but more importantly
removes the need to pass a pointer to the project_tree_data in a few
places, and makes accessing the attributes of a languages more
efficient.
From-SVN: r146684
* fe.h (Set_Identifier_Casing): Add const to second parameter.
* gcc-interface/misc.c (internal_error_function): Make copy of retur
from pp_formatted_text before assigning BUFFER to it.
(gnat_init): Likewise for main_input_filename and gnat_argv.
(gnat_printable_name): Remove cast from call to Set_Identifier_Casing.
Co-Authored-By: Thomas Quinot <quinot@adacore.com>
From-SVN: r146678
* ttypes.ads (Target_Double_Float_Alignment): New variable.
(Target_Double_Scalar_Alignment): Likewise.
* get_targ.ads (Get_Strict_Alignment): Adjust external name.
(Get_Double_Float_Alignment): New imported function.
(Get_Double_Scalar_Alignment): Likewise.
* layout.adb (Set_Elem_Alignment): Take into account specific caps for
the alignment of "double" floating-point types and "double" or larger
scalar types, as parameterized by Target_Double_Float_Alignment and
Target_Double_Scalar_Alignment respectively.
* gcc-interface/gigi.h (double_float_alignment): Declare.
(double_scalar_alignment): Likewise.
(is_double_float_or_array): Likewise.
(is_double_scalar_or_array): Likewise.
(get_target_double_float_alignment): Likewise.
(get_target_double_scalar_alignment): Likewise.
* gcc-interface/targtyps.c (get_strict_alignment): Rename into...
(get_target_strict_alignment): ...this.
(get_target_double_float_alignment): New function.
(get_target_double_scalar_alignment): Likewise.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Signed_Integer_Subtype>:
Test the presence of an alignment clause for under-aligned integer
types. Take into account specific caps for the alignment of "double"
floating-point types and "double" or larger scalar types, as
parameterized by Target_Double_Float_Alignment and
Target_Double_Scalar_Alignment respectively.
(validate_alignment): Likewise.
* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Alignment>: Likewise.
(gigi): Initialize double_float_alignment and double_scalar_alignment.
* gcc-interface/utils.c (double_float_alignment): New global variable.
(double_scalar_alignment): Likewise.
(is_double_float_or_array): New predicate.
(is_double_scalar_or_array): Likewise.
From-SVN: r146675
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: If an
alignment is specified, do not promote that of the component type
beyond it.
<E_Array_Subtype>: Likewise.
From-SVN: r146670
2009-04-23 Paolo Bonzini <bonzini@gnu.org>
* config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
From-SVN: r146668