2009-07-13 Emmanuel Briot <briot@adacore.com>
* prj-proc.adb, prj-proc.ads, prj.ads, prj-nmsc.adb, prj-nmsc.ads,
prj-pars.adb, prj-conf.adb, prj-conf.ads: Remove all remaining global
variables and tables in prj-nmsc.adb.
(Tree_Processing_Data): Renames Processing_Data, some new fields added
(Project_Processing_Data): New record
Simplify/unify check for missing sources.
From-SVN: r149558
2009-07-13 Emmanuel Briot <briot@adacore.com>
* gnatcmd.adb, make.adb, mlib-prj.adb, prj-part.adb, mlib.adb,
prj.adb, prj.ads, clean.adb, prj-nmsc.adb, prj-nmsc.ads, prj-pars.adb,
prj-pars.ads, prj-conf.adb, prj-conf.ads, prj-tree.adb,
prj-tree.ads (Immediate_Directory_Of): Removed.
(Prj.Pars): Now parse the project simulating a default config file.
(Add_Default_GNAT_Naming_Scheme): New subprogram
(Check_Naming_Multi_Lang): Fix default value for Dot_Replacement.
Remove gnatmake-specific parsing of source files.
(Check_Illegal_Suffix): Renames Is_Illegal_Suffix, since it now raises
the error itself to provide more precise diagnostics.
(Process_Exceptions_Unit_Based): Avoid duplicate error message when
a unit belongs to several projects.
(Copy_Interface_Sources): Search the full path of files to copy in the
list of sources of the application rather than in the list of units.
(Parse_Project_And_Apply_Config): Do not reset the name of the main
project file.
(Check_File): Use htables to find out whether a source is duplicated.
(Add_Source): check whether the source or unit were already seen earlier
* gcc-interface/Makefile.in: Update gnatmake dependencies.
From-SVN: r149557
2009-07-13 Robert Dewar <dewar@adacore.com>
* par-ch3.adb (P_Discrete_Choice_List): Choice can only be simple
expression if extensions permitted.
* par-ch4.adb (P_Membership_Test): New procedure (implement membership
set tests).
(P_Relation): Use P_Membership_Test
* par.adb (P_Membership_Test): New procedure (implement membership set
tests).
* sinfo.ads, sinfo.adb (N_In, N_Not_In) Add Alternatives field for sets.
* sprint.adb (Sprint_Node): Handle set form for membership tests.
From-SVN: r149556
2009-07-13 Thomas Quinot <quinot@adacore.com>
* exp_dist.adb (Add_RACW_Primitive_Declarations_And_Bodies):
Do not attempt to generate stubs for predefined primitives of
synchronized interfaces.
(Add_Stub_Type): Factor some code from the PCS-specific variants of
Build_Stub_Type.
2009-07-13 Ed Schonberg <schonberg@adacore.com>
* sem_disp.adb (Override_Dispatching_Operation): Functions inherit the
Controlling_Result flag from the operation they override.
From-SVN: r149553
2009-07-13 Robert Dewar <dewar@adacore.com>
* gnat_ugn.texi: The gnatf switch no longer is needed to get full
details on unsupported constructs.
* rtsfind.adb: Remove references to All_Errors_Mode, give errors
unconditionally.
* s-trafor-default.adb: Correct some warnings
* s-valwch.adb, a-calend.adb, freeze.adb, prj.ads, s-vmexta.adb,
sem.adb, sem_ch10.adb, sem_ch6.adb, sem_disp.adb, vxaddr2line.adb:
Minor reformatting.
* par-ch4.adb (Conditional_Expression): Capture proper location for
conditional expression, should point to IF.
* s-tassta.adb, a-wtdeau.adb, s-tasren.adb, s-arit64.adb, s-imgdec.adb,
s-direio.adb, s-tpobop.adb, g-socket.adb, s-tposen.adb, s-taskin.adb,
g-calend.adb, s-regpat.adb, s-scaval.adb, g-catiio.adb: Minor code
reorganization (use conditional expressions).
2009-07-13 Ed Schonberg <schonberg@adacore.com>
* exp_util.adb (Remove_Side_Effects): If the expression is a call to a
build-in-place function that returns an inherently limited type (not
just a task type) create proper object declaration so that extra
build-in-place actuals are properly added to the call.
From-SVN: r149551
2009-07-13 Emmanuel Briot <briot@adacore.com>
* prj-nmsc.adb: Avoid traversing the list of source files if
we have already processed all locally removed files.
2009-07-13 Jose Ruiz <ruiz@adacore.com>
* gnat_ugn.texi: Fix typo.
2009-07-13 Robert Dewar <dewar@adacore.com>
* freeze.adb: Minor reformatting
Minor code reorganization (use Nkind_In)
* exp_ch6.adb: Minor reformatting
From-SVN: r149546
2009-07-12 Paolo Carlini <paolo.carlini@oracle.com>
* include/std/type_traits (common_type): Remove workaround for
PR36628, now fixed.
From-SVN: r149537
PR c++/40689
* init.c (build_new_1): Handle initializer list as array initializer.
(build_vec_init): Likewise.
* typeck.c (cp_build_modify_expr): Likewise.
* typeck2.c (process_init_constructor_array): Error rather than abort
if too many initializers.
From-SVN: r149533
PR tree-optimization/40585
* except.c (expand_resx_expr): When there already is resume
instruction, produce linked list.
(build_post_landing_pads): Assert that resume is empty.
(connect_post_landing_pads): Handle resume lists.
(dump_eh_tree): Dump resume list.
From-SVN: r149530
* checks.adb (Apply_Address_Clause_Check): Remove Size_Warning_Output
local variable and do not test it in Compile_Time_Bad_Alignment.
Do not issue size or alignment warnings for the X'Address form.
* sem_util.ads (Find_Overlaid_Object): Delete.
(Find_Overlaid_Entity): New procedure.
* sem_util.adb (Find_Overlaid_Object): Rename to...
(Find_Overlaid_Entity): ...this and turn into a procedure. Report
whether the address is offseted within the overlaid entity.
(Has_Compatible_Alignment): Track the offset globally instead of
passing it to Check_Offset. For an indexed component, compute the
full offset when possible. If the resulting offset is zero, only
check the prefix.
(Check_Offset): Delete.
* sem_ch13.adb (Address_Clause_Check_Record): Add Off field.
(Address_Aliased_Entity): Delete.
(Analyze_Attribute_Definition_Clause) <Attribute_Address>: Call
Find_Overlaid_Entity to find the overlaid entity and the offset.
Adjust throughout for above change.
(Validate_Address_Clauses): Always use attributes of entities, not of
their type. Tweak message for warning. Call Has_Compatible_Alignment
if the address is offseted to warn about incompatible alignments.
* gcc-interface/gigi.h (annotate_object): Declare.
* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Annotate renaming
entity. Call annotate_object instead of annotating manually objects.
(annotate_object): New function.
* gcc-interface/trans.c (Subprogram_Body_to_gnu): Annotate parameters
at the end.
From-SVN: r149520
2009-07-11 Thomas Quinot <quinot@adacore.com>
* sem_util.adb, sem_res.adb, sem_warn.adb: Minor comment editing:
Lvalue -> lvalue
* exp_ch6.adb: Minor reformatting
2009-07-11 Ed Schonberg <schonberg@adacore.com>
* freeze.adb (Expand_Atomic_Aggregate): Clean up code, take into
account possible type qualification to determine whether aggregate
needs a target temporary to respect atomic type or object.
* exp_aggr.adb (Expand_Record_Aggregate): Use new version of
Expand_Atomic_Aggregate.
2009-07-11 Emmanuel Briot <briot@adacore.com>
* prj.adb, prj.ads, prj-nmsc.adb (Mark_Excluded_Sources): Speed up
algorithm.
(Excluded_Sources_Htable): No longer a global table.
Change error message to indicate which files are illegal in the list
of excluded files, as opposed to only the location in the project
file.
(Find_Source): New subprogram.
From-SVN: r149515
PR debug/40713
* dwarf2out.c (dw_fde_struct): Add in_std_section and
cold_in_std_section bits.
(dwarf2out_begin_prologue): Initialize them.
(dwarf2out_finish): Don't emit FDE range into .debug_ranges
if already covered by text_section or cold_text_section range.
From-SVN: r149514
PR rtl-optimization/40667
* defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
* doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
* config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
* config/i386/i386.c (ix86_minimum_alignment): New function.
* config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
* cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
* emit-rtl.c (gen_reg_rtx): Likewise.
* function.c (assign_parms): Likewise. If nominal_type needs
bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
rather than passed_type's alignment.
From-SVN: r149513
PR target/40668
* function.c (assign_parm_setup_stack): Adjust
MEM_OFFSET (data->stack_parm) if promoted_mode is different
from nominal_mode on big endian.
* gcc.c-torture/execute/pr40668.c: New test.
From-SVN: r149511
2009-07-11 Paolo Bonzini <bonzini@gnu.org>
* expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
2009-07-11 Paolo Bonzini <bonzini@gnu.org>
* gcc.c-torture/execute/20090711-1.c: New test.
From-SVN: r149509
2009-07-10 David Daney <ddaney@caviumnetworks.com>
PR target/39079
* testsuite/gcc.target/mips/mips.exp: Make -msynci a known option.
* gcc.target/mips/clear-cache-1.c (dg-options): Add -msynci.
2009-07-10 David Daney <ddaney@caviumnetworks.com>
PR target/39079
* config.gcc (supported_defaults): Add synci.
(with_synci): Add validation.
(all_defaults): Add synci.
* config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
ISA_HAS_SYNCI.
(synci): Same.
* config/mips/mips.opt (msynci): New option.
* config/mips/mips.c (mips_override_options): Warn on use of
-msynci for targets that do now support it.
* gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
msynci.
* gcc/doc/invoke.texi (-msynci): Document the new option.
* doc/install.texi (--with-synci): Document the new option.
From-SVN: r149500
2009-07-10 Thomas Quinot <quinot@adacore.com>
* exp_ch7.adb: Update comments.
2009-07-10 Arnaud Charlet <charlet@adacore.com>
* exp_ch13.adb (Expand_N_Record_Representation_Clause): Ignore mod
clause if -gnatI is set instead of crashing.
2009-07-10 Ed Schonberg <schonberg@adacore.com>
* sem_ch11.adb (Same_Expression): Null is always equal to itself.
Additional work to remove redundant successive raise statements, in
this case access checks.
2009-07-10 Vincent Celier <celier@adacore.com>
* make.adb (Compile): Always create a deep copy of the mapping file
argument (-gnatem=...) as it may be deallocate/reallocate by
Normalize_Arguments.
2009-07-10 Javier Miranda <miranda@adacore.com>
* einfo.adb (Directly_Designated_Type): Add assertion.
* sem_res.adb (Check_Fully_Declared_Prefix): Add missing check on
access types before using attribute Directly_Designated_Type.
2009-07-10 Emmanuel Briot <briot@adacore.com>
* prj.ads: Minor typo fix
2009-07-10 Ed Schonberg <schonberg@adacore.com>
* sem_ch6.adb (Add_Extra_Formal): Protected operations do no need
special treatment.
* exp_ch6.adb (Expand_Protected_Subprogram_Call): If rewritten
subprogram is a function call, resolve properly, to ensure that extra
actuals are added as needed.
From-SVN: r149474
2009-07-10 Richard Guenther <rguenther@suse.de>
PR tree-optimization/40496
* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
the PHI result with a compatible type.
* g++.dg/opt/pr40496.C: New testcase.
From-SVN: r149469
2009-07-10 Robert Dewar <dewar@adacore.com>
* exp_util.adb: Minor code reorganization (use N_Short_Circuit)
* exp_ch4.adb: Add ??? comment for conditional expressions on limited
types.
* checks.adb (In_Declarative_Region_Of_Subprogram_Body): New procedure,
replaces Safe_To_Capture_In_Parameter_Value, and properly handles the
case of conditional expressions that may not be elaborated.
* sem_util.adb (Safe_To_Capture_Value): Properly handle case of
conditional expression where we may not execute then then or else
branches.
From-SVN: r149468
2009-07-10 Javier Miranda <miranda@adacore.com>
* exp_ch3.adb (Expand_Freeze_Record_Type): Handle constructors of
non-tagged record types.
* sem_prag.adb
(Process_Import_Or_Interface): Allow the use of "pragma Import (CPP,..)"
with non-tagged types. Required to import C++ classes that have no
virtual primitives.
(Analyze_Pragma): For pragma CPP_Constructor. Allow the use of functions
returning non-tagged types. For backward compatibility, if the
constructor returns a class wide type we internally change the
returned type to the corresponding non class-wide type.
* sem_aggr.adb
(Valid_Ancestor_Type): CPP_Constructors code cleanup.
(Resolve_Extension_Aggregate): CPP_Constructors code cleanup.
(Resolve_Aggr_Expr): CPP_Constructors code cleanup.
(Resolve_Record_Aggregate): CPP_Constructors code cleanup.
* sem_ch3.adb
(Analyze_Object_Declaration): CPP_Constructors code cleanup.
* sem_ch5.adb (Analyze_Assignment): CPP_Constructors code cleanup.
* sem_util.adb (Is_CPP_Constructor_Call): Code cleanup.
* sem_res.adb (Resolve_Allocator): CPP_Constructors code cleanup.
* exp_ch4.adb (Expand_Allocator_Expression): CPP_Constructors code
cleanup.
* exp_aggr.adb (Build_Record_Aggr_Code): CPP_Constructors code clean up.
* gnat_rm.texi
(pragma CPP_Class): Document that it can be used now with non-tagged
record types.
(pragma CPP_Constructor): Document that it can be used now with
functions returning specific types. For backward compatibility
we also support functions returning class-wide types.
* gnat_ugn.texi
(Interfacing with C++ constructors): Update the examples to incorporate
the new syntax in which the functions used to import C++ constructors
return specific types.
(Interfacing with C++ at the Class Level): Update the examples to
incorporate the new syntax in which the functions used to import
C++ constructors return specific types.
From-SVN: r149466
2009-07-10 Thomas Quinot <quinot@adacore.com>
* exp_disp.adb (Make_Disp_Asynchronous_Select_Body,
Make_Disp_Conditional_Select_Body,
Make_Disp_Timed_Select_Body): For the case of a type that is neither an
interface nor a concurrent type, the primitive body is empty. Generate
a null statement so that it remains well formed.
2009-07-10 Ed Schonberg <schonberg@adacore.com>
* exp_aggr.adb (Build_Record_Aggr_Code): If the type has discriminants,
replace references to them in defaulted component expressions with
references to the values of the discriminants of the target object.
From-SVN: r149465