* 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.
* 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.
* 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.
* 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.
* 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.
* 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.
* config/spu/spu.h (enum spu_builtin_type): Move here from
spu-builtins.h.
(struct spu_builtin_description): Likewise. Add GTY marker.
Do not use enum spu_function_code or enum insn_code.
(spu_builtins): Add extern declaration.
* config/spu/spu.c: Do not include "spu-builtins.h".
(enum spu_function_code, enum spu_builtin_type_index,
V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
unsigned_V8HI_type_node, unsigned_V4SI_type_node,
unsigned_V2DI_type_node): Move here from spu-builtins.h.
(spu_builtin_types): Make static. Add GTY marker.
(spu_builtins): Add extern declaration with GTY marker.
Include "gt-spu.h".
* config/spu/spu-c.c: Do not include "spu-builtins.h".
(spu_resolve_overloaded_builtin): Do not use spu_function_code.
Check programmatically whether all parameters are scalar.
* gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
assignment from the constructor either if the target is volatile.
ada/
* einfo.ads (Is_True_Constant): Lift restriction on atomic objects.
* sinfo.ads (Object Declaration): Likewise.
(Assignment Statement): Likewise.
* freeze.adb (Expand_Atomic_Aggregate): Remove useless test.
Do not force Is_True_Constant to false on the temporary.
(Freeze_Entity): Do not force Is_True_Constant to false on names on
the RHS of object declarations.
* gcc-interface/trans.c (lvalue_required_p) <N_Object_Declaration>:
New case. Return 1 if the object is atomic.
<N_Assignment_Statement>: Likewise.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Subtype>
For packed array types, make the original array type a parallel type
for the modular type and its JM wrapper if the type is bit-packed.
<E_Array_Subtype>: Likewise. Do not generate the special XA parallel
record type for packed array types. Remove kludge.
gcc/cp/ChangeLog:
PR c++/38228
* pt.c (unify): Do not allow the result of a template argument
deduction to be a METHOD_TYPE.
* cvt.c (cp_convert): Report a meaningful error for non-valid use
of pointer to member functions during conversions.
* call.c (build_new_op): Report a meaningful error for non-valid
use of pointer to member functions in binary expressions.
* typeck.c (invalid_nonstatic_memfn_p): Do not crash when EXPR is
NULL;
gcc/testsuite/ChangeLog:
PR c++/38228
* g++.dg/expr/bound-mem-fun.C: New test.
* gcc-interface/gigi.h (create_index_type): Adjust head comment.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Signed_Integer_Subtype>:
Use front-end predicates to compute signedness and precision.
<E_String_Literal_Subtype>: Fold range type.
Make sure to set longest_float_type_node to a scalar type.
(elaborate_entity): Use consistent Constraint_Error spelling.
(substitute_in_type) <INTEGER_TYPE>: Always copy the type.
* gcc-interface/misc.c (gnat_print_type) <INTEGER_TYPE>: Use brief
output for the modulus, if any.
<ENUMERAL_TYPE>: Likewise for the RM size.
* gcc-interface/trans.c (gnat_to_gnu): Use consistent Constraint_Error
spelling.
* gcc-interface/utils.c (finish_record_type): Really test the alignment
of BLKmode bit-fields to compute their addressability.
(create_index_type): Adjust comments.
(create_param_decl): Create the biased subtype manually.
* gcc-interface/utils2.c (build_component_ref): Use consistent
Constraint_Error spelling.
* gcc-interface/ada-tree.h (union lang_tree_node): Use standard idiom.
(SET_TYPE_LANG_SPECIFIC): Likewise. Fix formatting.
(SET_DECL_LANG_SPECIFIC): Likewise.
Reorder macros.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Signed_Integer_Subtype>:
Update comment about use of build_range_type.
<E_Array_Type, E_Array_Subtype>: Use consistent naming convention.
<E_Array_Subtype>: Rework comments about TYPE_ACTUAL_BOUNDS and add
check for other cases of overloading.
* gcc-interface/trans.c (gigi): Use size_int in lieu of build_int_cst.
* gcc-interface/utils2.c (build_call_raise): Fix off-by-one error.
Use size_int in lieu of build_int_cst.
(build_call_alloc_dealloc): Use build_index_2_type in lieu of
build_range_type.
* config/v850/v850.md (epilogue): Remove suppressed code.
(return): Rename to return_simple and remove test of frame size.
* config/v850/v850.c (expand_epilogue): Rename call to gen_return
to gen_return_simple.
2009-04-22 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR C/31499
* c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
and RECORD_TYPE/UNION_TYPE. When outputing the actual element and the
value is a VECTOR_CST, the element type is the element type of the
vector.
2009-04-22 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR C/31499
* gcc.dg/vector-init-1.c: New testcase.
* gcc.dg/vector-init-2.c: New testcase.
* gcc-interface/utils2.c (build_binary_op) <PLUS_EXPR>: If operation's
type is an enumeral or a boolean type, change it to an integer type
with the same mode and signedness.
* config/rs6000/linux-unwind.h (get_regs): Remove type
puns. Change the type of `pc' to an array of unsigned ints and
update all users. Constify frame24.
gcc/cp/ChangeLog:
PR c++/39639
* parser.c (cp_parser_template_argument_list): Display an error
when an ellipsis is not preceded by a parameter pack. Also, warn
about variadic templates usage without -std=c++0x.
gcc/testsuite/ChangeLog:
PR c++/39639
* g++.dg/cpp0x/pr39639.C: New test.
manu [Wed, 22 Apr 2009 15:32:18 +0000 (15:32 +0000)]
2009-04-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR c++/14875
* c-common.c (c_parse_error): Take a token_flags parameter.
Use token_type for the token type instead.
Pass token_flags to cpp_type2name.
* c-common.h (c_parse_error): Update declaration.
* c-parser.c (c_parser_error): Pass 0 as token flags.
libcpp/
* lex.c (cpp_type2name): Take a flags parameter. Call
cpp_named_operator2name for named operators and cpp_digraph2name
for digraphs.
(cpp_digraph2name): New.
(cpp_spell_token): Use it.
(cpp_output_token): Likewise.
* include/cpplib.h (cpp_type2name): Update declaration.
* init.c (cpp_named_operator2name): New.
* internal.h (cpp_named_operator2name): Declare.
cp/
* parser.c (cp_parser_error): Pass token->flags to c_parse_error.
testsuite/
* g++.dg/parse/parser-pr14875.C: New.
* g++.dg/parse/parser-pr14875-2.C: New.
* g++.dg/parse/error6.C: Update match string.
* make.adb, prj-env.adb, prj-env.ads, prj-nmsc.adb, prj.adb,
prj.ads (Create_Mapping_File): merge the two versions for Ada_Only and
Multi_Language modes, to avoid code duplication.
(Project_Data.Include_Language): Removed.
* tempdir.adb (Create_Temp_File): Add a diagnostic in verbose mode when
the temporary file cannot be created, indicating the directory when the
creation was attempted.
2009-04-22 Emmanuel Briot <briot@adacore.com>
* prj-env.adb, prj-env.ads (Create_Mapping_File): we need to compare
the language names, not their indices.
* function.c (expand_function_end): Do not emit a jump to the "naked"
return label for fall-through returns.
* except.c (sjlj_emit_function_exit): Always place the call to the
unregister function at the location installed by expand_function_end.
* prj-proc.adb, prj-nmsc.adb (Check_Naming_Schemes): split into several
smaller subprograms.
Renamed to Check_File_Naming_Schemes to avoid confusion with the
other Check_Naming_Schemes functions that plays a totally different
role.
(Check_Unit_Based_Lang, Check_File_Based_Lang): new subprograms,
extracted from the above. These were partially rewritten to avoid
unnecessary code and temporary variables.
(Compute_Unit_Name): new subprogram, merge of Check_Unit_Based_Lang
and Get_Unit (which for now still exist since they contain mode-specific
code)
* prj.ads, prj.adb, prj-nmsc.adb, prj-proc.adb (Recursive_Process):
Remove duplicated code.
(Canonical_Case_File_Name): new subprogram
(Check_And_Normalize_Unit_Names): new subprogram
(Write_Attr): new subprogram
Better sharing of code
(Check_Naming_Ada_Only, Check_Naming_Multi_Lang): new subprogram, to
split Check_Naming and help find duplicated code
(Check_Common): new subprogram, sharing code between ada_only and
multi_language mode.
(Naming_Data.Dot_Repl_Loc): field removed
* prj-proc.adb, prj-nmsc.adb (Load_Naming_Exceptions): New subprogram.
Minor refactoring to reduce the size of
Process_Sources_In_Multi_Language_Mode.
Avoid extra copied of Source_Data, which we found in the past could be
quite slow.
(Mark_Excluded_Sources): new subprogram.
(Remove_Locally_Removed_Files_From_Units): merged into the above
Refactors Process_Sources_In_Multi_Language_Mode to reduce its size,
and allow better sharing of code between multi_lang and ada_only modes
(Project_Extends): removed, since exact duplicate of Prj.Is_Extending
* exp_ch6.adb (Make_Build_In_Place_Call_In_Assignment): Code cleanup.
Add a call to Move_Final_List when the target of the assignment is a
return object that needs finalization and the expression is a
controlled build-in-place function.
2009-04-22 Vincent Celier <celier@adacore.com>
* make.adb (Gnatmake, Bind_Step): call Set_Ada_Paths with
Including_Libraries set to True.
* lib-load.ads, lib-load.adb (Make_Child_Decl_Unit): New subprogram, to
create a unit table entry for the subprogram declaration created for a
child suprogram body that has no separate specification.
* sem_ch10.adb (Analyze_Compilation_Unit): For a child unit that is a
subprogram body, call Make_Child_Decl_Unit.
* lib.adb (Get_Cunit_Unit_Number): Verify that an entry not yet in the
table can only be the created specification of a child subprogram body
that is the main unit, which has not been entered in the table yet.
* errout.adb (Output_Messages): Ignore created specification of a
child subprogram body to prevent repeated listing of error messages.
* gnat1drv.adb (gnat1drv): The generated specification for a child
subprogram body does not generate code.
* s-bitops.adb, s-bitops.ads (Raise_Error): Do not use Ada 05 syntax,
since this unit is now part of bootstrap units, so must use Ada 95
syntax only.
2009-04-22 Thomas Quinot <quinot@adacore.com>
* a-tasatt.adb: Minor reformatting
2009-04-22 Bob Duff <duff@adacore.com>
* s-stalib.ads: Remove "with System;" since we're inside System, so
it's unnecessary.
2009-04-22 Vincent Celier <celier@adacore.com>
* prj-nmsc.adb (Add_Source): Always put the dependency file name in
the source record, as there may be a dependency file even if no object
file is created.
* sinfo.ads, par-load.adb, sem_ch10.adb, lib-load.ads, lib-load.adb
sem_ch12.adb: Change the meaning of the Library_Unit attribute to
include units containing instantiations, as well as units that are
generic instantiations.
* sem.adb: Include dependents and corresponding specs/bodies in the
unit walk.
* gcc-interface/Make-lang.in:
sem now depends on s-bitops, because of the packed array of Booleans.
PR fortran/39735
* decl.c (add_hidden_procptr_result): Bugfix for procptr results.
(match_procedure_decl): Set if_source.
* expr.c (gfc_check_pointer_assign): Bugfix: Return after error.
And: Check interface also for IFSRC_UNKNOWN (return type may be known).
* gfortran.h (typedef enum ifsrc): Remove IFSRC_USAGE,
add documentation. Rename copy_formal_args and copy_formal_args_intr.
* interface.c (gfc_compare_interfaces): Check for return types,
handle IFSRC_UNKNOWN.
(compare_intr_interfaces,compare_actual_formal_intr): Obsolete, removed.
(gfc_procedure_use): Modified handling of intrinsics.
* intrinsic.c (add_functions): Bugfix for "dim".
* resolve.c (resolve_intrinsic): New function to resolve intrinsics,
which copies the interface from isym to sym.
(resolve_procedure_expression,resolve_function): Use new function
'resolve_intrinsic'.
(resolve_symbol): Add function attribute for externals with return type
and use new function 'resolve_intrinsic'.
* symbol.c (ifsrc_types): Remove string for IFSRC_USAGE.
(copy_formal_args): Renamed to gfc_copy_formal_args.
(copy_formal_args_intr): Renamed to gfc_copy_formal_args_intr.
* trans-const.c (gfc_conv_const_charlen): Handle cl==NULL.
* gcc-interface/decl.c (gnat_to_gnu_entity): Compute is_type predicate
on entry. Defer common processing for types. Reorder and clean up.
Compute the equivalent GNAT node and the default size for types only.
<E_Modular_Integer_Type>: Directly use Esize for the type's precision.
<E_Access_Type>: For an unconstrained designated type, do not pretend
that a dummy type is always made.
<all> Fix nits in comments.
(validate_size): Fix formatting nits and comments.
(set_rm_size): Likewise.
* gcc-interface/utils.c (create_param_decl): Replace bogus argument
passed to TARGET_PROMOTE_PROTOTYPES hook.
* fe.h (Get_External_Name): Declare.
* gcc-interface/gigi.h (concat_id_with_name): Rename to...
(concat_name): ...this.
* gcc-interface/decl.c (gnat_to_gnu_entity): Rename gnu_entity_id to
gnu_entity_name and adjust for above renaming.
<E_Access_Type>: Use create_concat_name to get the name of the various
types associated with unconstrained array types.
(make_aligning_type): Adjust for above renaming.
(maybe_pad_type): Likewise.
(components_to_record): Likewise. Use get_identifier_with_length for
the encoding of the variant.
(get_entity_name): Use get_identifier_with_length.
(create_concat_name): Likewise. Use Get_External_Name if no suffix.
Do not fiddle with Name_Buffer.
(concat_id_with_name): Rename to...
(concat_name): ...this. Use get_identifier_with_length. Do not fiddle
with Name_Buffer.
* gcc-interface/utils.c (rest_of_record_type_compilation): Adjust for
above renaming.
* config/sh/sh.c (prepare_cbranch_operands): Use
LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
(expand_cbranchdi4): Likewise.
(from_compare): Add cast to enum type.
(expand_cbranchsi4): Use add_reg_note.
(output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
(sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
(sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
(sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
* config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
instead of CODE_FOR_nothing.
(cbranchdi4): Likewise. Fix the order of arguments for
gen_rtx_fmt_ee.
(push_fpscr): Use add_reg_note.
(pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
manu [Tue, 21 Apr 2009 19:49:23 +0000 (19:49 +0000)]
2009-04-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR c++/35711
cp/
* typeck.c (check_for_casting_away_constness): We diagnose casting
away any qualifiers not just constness.
(casts_away_constness): Mention that it handles more than just
constness.
testsuite/
* g++.dg/warn/pr35711.C: New.
* g++.dg/conversion/ptrmem2.C: Update.
* c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
NE_EXPR operations as well.
* c-parser.c (c_parser_condition): Do not set location information on
the condition.
(c_parser_conditional_expression): Likewise.
(c_parser_binary_expression): Set location information on operators.
* c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
TRUTH_NOT_EXPR has been folded.
* fold-const.c (fold_truth_not_expr): Copy location information from
the incoming expression to the outgoing one.
* gimplify.c (shortcut_cond_r): Add locus parameter. Pass it to
recursive calls on the LHS of the operator but pass that of the
operator to recursive calls on the RHS of the operator. Set it
on the COND_EXPR.
(shortcut_cond_expr): Set the locus of the operator on the second
COND_EXPR and that of the expression on the first in degenerate cases.
Pass the locus of the expression to calls to shortcut_cond_r.
Set the locus of the 'then' block on the associated jump, if any.
(gimplify_boolean_expr): Add locus parameter. Set it on the COND_EXPR.
(gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
expression to call to gimplify_boolean_expr.
ada/
* gcc-interface/trans.c (gnat_to_gnu): Do not overwrite location info.