David Daney [Fri, 10 Jul 2009 22:49:52 +0000 (22:49 +0000)]
re PR target/39079 (MIPS: __builtin___clear_cache() broken on SMP ISA_HAS_SYNCI systems.)
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.
* 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.
* 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.
Robert Dewar [Fri, 10 Jul 2009 09:43:01 +0000 (09:43 +0000)]
exp_util.adb: Minor code reorganization (use N_Short_Circuit)
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.
Javier Miranda [Fri, 10 Jul 2009 09:30:44 +0000 (09:30 +0000)]
exp_ch3.adb (Expand_Freeze_Record_Type): Handle constructors of non-tagged record types.
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.
* 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.
* 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.
* exp_ch7.adb (Build_Final_List): If the list is being built for a
Taft-Amendment type, place the finalization list in the package body,
to ensure that the tree for the spec is identical whenever it is
compiled.
2009-07-10 Javier Miranda <miranda@adacore.com>
* sem_ch3.adb (Build_Derived_Record_Type): Use the full-view when
inheriting attributes from a private Parent_Base.
Ed Schonberg [Fri, 10 Jul 2009 09:09:59 +0000 (11:09 +0200)]
sem_prag.adb (Analyze pragma, [...]): Analyze argument of pragma, to capture global references if the context is generic.
2009-07-10 Ed Schonberg <schonberg@adacore.com>
* sem_prag.adb (Analyze pragma, case Task_Name): Analyze argument of
pragma, to capture global references if the context is generic.
* exp_ch2.adb (Expand_Discriminant): If a task type discriminant
appears within the initialization procedure for the corresponding
record, replace it with the proper discriminal.
Tom Tromey [Thu, 9 Jul 2009 19:41:25 +0000 (19:41 +0000)]
unwind-dw2-fde-darwin.c: Include dwarf2.h.
gcc
* unwind-dw2-fde-darwin.c: Include dwarf2.h.
* config/mmix/mmix.c: Include dwarf2.h.
* config/rs6000/darwin-fallback.c: Include dwarf2.h.
* config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
* config/sh/sh.c: Include dwarf2.h.
* config/i386/i386.c: Include dwarf2.h.
* Makefile.in (DWARF2_H): Remove 'elf'.
* except.c: Include dwarf2.h.
* unwind-dw2.c: Include dwarf2.h.
* dwarf2out.c: Include dwarf2.h.
* unwind-dw2-fde-glibc.c: Include dwarf2.h.
* unwind-dw2-fde.c: Include dwarf2.h.
* dwarf2asm.c: Include dwarf2.h.
gcc/ada
* raise-gcc.c: Include dwarf2h (unconditionally).
include
* elf/dwarf2.h: Remove, renaming to...
* dwarf2.h: ... this.
Paul Thomas [Thu, 9 Jul 2009 16:48:50 +0000 (16:48 +0000)]
re PR fortran/40629 (Host association problem)
2008-07-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/40629
* resolve.c (check_host_association): Use the existing
accessible symtree and treat function expressions with
symbols that have procedure flavor.
2008-07-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/40629
* gfortran.dg/host_assoc_function_9.f90: New test.
* sem_prag.adb (Analyze_Pragma, case Precondition): Do not analyze the
condition, to prevent generation of visible code during expansion,
when Check is not enabled.
2009-07-09 Gary Dismukes <dismukes@adacore.com>
* checks.adb (Install_Static_Check): Call Possible_Local_Raise so that
the check gets registered for any available local handler
(Set_Local_Raise).
* sem_util.adb: Add with and use of Exp_Ch11.
(Apply_Compile_Time_Constraint_Error): Call Possible_Local_Raise so
that the check gets registered for any available local handler.
* exp_ch4.adb (Expand_N_Slice): Remove call to Enable_Range_Check
on slice ranges.
2009-07-09 Steve Baird <baird@adacore.com>
* exp_ch11.adb (Force_Static_Allocation_Of_Referenced_Objects): New
function.
(Expand_N_Exception_Declaration): Fix handling of exceptions
declared in a subprogram.
* freeze.adb (Freeze_Expression): If the expression is the name of a
function in a call, and the function has not been frozen yet, create
extra formals for it to ensure that the proper actuals are created
when expanding the call.
2009-07-09 Emmanuel Briot <briot@adacore.com>
* prj-pp.adb (Print): Fix handling of source index when set on a
declaration node.
Adam Nemet [Thu, 9 Jul 2009 05:32:21 +0000 (05:32 +0000)]
combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before creating LHS paradoxical subregs.
* combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
creating LHS paradoxical subregs. Fix surrounding returns to
use NULL_RTX rather than 0.
Jerry DeLisle [Thu, 9 Jul 2009 01:20:23 +0000 (01:20 +0000)]
re PR libfortran/40330 (incorrect IO)
2009-07-08 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/40330
PR libfortran/40662
* io/io.h (st_parameter_dt): Define format_not_saved bit used to signal
whether the parsed format data was previously saved. Used to determine
if the current format data should be freed or not.
* io/transfer.c (st_read_done): Use the format_not_saved bit.
(st_write_done): Likewise.
* io/format.c (parse_format_list): Add boolean pointer to arg list. This
pointer is used to return status to the caller regarding whether it is
safe to cache the parsed format data. Currently, if a FMT_STRING token
is encounetered, it is not safe to cache. Also, added a local boolean
variable to hold this information as recursive calls to
parse_format_list are made. Remove previous save_format logic.
(parse_format): Do not use the format caching facility if the current
unit is an internal unit or if it is not safe to save parsed format
data.
Mark Wielaard [Wed, 8 Jul 2009 18:07:47 +0000 (18:07 +0000)]
re PR debug/40659 (A simple struct member offset doesn't need a full dwarf location expression)
2009-07-08 Mark Wielaard <mjw@redhat.com>
PR debug/40659
* dwarf2out.c (add_data_member_location_attribute): When we have
only a constant offset don't emit a new location description using
DW_OP_plus_uconst, but just add the constant with add_AT_int, when
dwarf_version > 2.
DJ Delorie [Wed, 8 Jul 2009 04:19:16 +0000 (00:19 -0400)]
mep-ivc2.cpu (cpmovtocsar0_C3, [...]): Mark volatile.
* config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
cpmovtocc_P0S_P1): Mark volatile. Note which registers are
written to.
* config/mep/intrinsics.md: Regenerated.
* config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
registers when asm() or calls are detected.
* exp_ch6.adb (Expand_Actuals): Call Add_Call_By_Copy_Code for in out
parameters when the subtype of the actual is not known to be a subrange
of the formal's subtype.
(Expand_Call): Generate a range check only in the E_In_parameter case
(in out parameter range checks are now handled in Expand_Actuals).
* exp_ch4.adb (Expand_N_Slice): Restore code that calls
Enable_Range_Check.
* prj-nmsc.adb (Process_Naming): canonicalize file suffixes read in the
project file.
2009-07-07 Ed Schonberg <schonberg@adacore.com>
* exp_ch3.adb (Expand_Freeze_Record_Type): Add extra formals to
primitive operations, in case one of them is called in the
initialization procedure for the type.
Jakub Jelinek [Tue, 7 Jul 2009 12:18:38 +0000 (14:18 +0200)]
re PR middle-end/40669 (ICE in gimple_assign_set_rhs1 from eliminate_tail_call)
PR middle-end/40669
* tree-tailcall.c (adjust_return_value_with_ops,
create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
if it has complex or vector type.
Gary Dismukes [Tue, 7 Jul 2009 10:52:14 +0000 (10:52 +0000)]
checks.adb (Generate_Range_Check): Replace type conversions with unchecked conversions to support the case of...
2009-07-07 Gary Dismukes <dismukes@adacore.com>
* checks.adb (Generate_Range_Check): Replace type conversions with
unchecked conversions to support the case of performing range checks
on Enum'Val (permits integer values to be converted to enumeration).
* exp_attr.adb (Expand_N_Attribute_Reference, cases Attribute_Pred,
Attribute_Succ): Set Do_Range_Check to False before calling
Expand_Pred_Succ, to prevent gigi from generating any range checks.
(Expand_N_Attribute_Reference, case Attribute_Val):
Generate a range check when needed (and set Do_Range_Check to False).
* exp_ch3.adb (Expand_N_Object_Declaration): Generate a range check on
scalar object initialization if needed.
* exp_ch4.adb (Expand_Allocator_Expression): Generate range checks
when needed on scalar allocators.
(Expand_N_Qualified_Expression): Generate range check when needed.
(Expand_N_Slice): Remove call to Enable_Range_Check on slice ranges.
Checks on slice ranges handled in Resolve_Slice.
* exp_ch5.adb (Expand_N_Assignment_Statement): Generate a range check,
when needed, for all scalar assignments, not just discrete.
(Expand_Simple_Function_Return): Resolve the conversion created for a
scalar function return so that the conversion will get expanded to
generate a possible constraint check.
* exp_ch6.adb (Expand_Actuals): Call Add_Call_By_Copy_Code for out and
in out scalar actuals when subtypes don't match, to ensure generation
of return checks (and set Do_Range_Check to False).
(Expand_Call): Uncomment code to perform range checks, but make it apply
only to in and in out parameters (checks on parameter returns are
handled in Expand_Actuals). If a scalar actual for a call to a derived
subprogram is marked as needing a range check, peform it here (and set
Do_Range_Check to False).
* sem_aggr.adb (Resolve_*_Aggregate.Resolve_Aggr_Expr): Generate a
range check on scalar component associations when needed.
* sem_eval.adb (In_Subrange_Of): Return False when the first type has
infinities but the second type does not, as these aren't compatible
floating-point types.
* sem_res.adb (Resolve_Slice): In the case where the prefix of the
slice is itself a slice, pick up the Etype of the prefix. This handles
the case where the prefix was an Image attribute expanded to a slice,
and ensures that we get the subtype with the slice constraint rather
than the unconstrained subbtype of the 'Image.
Robert Dewar [Tue, 7 Jul 2009 10:36:25 +0000 (10:36 +0000)]
scng.adb: Minor reformattting
2009-07-07 Robert Dewar <dewar@adacore.com>
* scng.adb: Minor reformattting
* par-ch2.adb (Scan_Pragma_Argument_Association): Pragma argument
association allows conditional expression without parens.
* par-ch4.adb (P_Name): Attribute arguments can be conditional
expressions without enclosing parentheses, and also as parameters,
indexing expressions etc.
(P_Conditional_Expression): New procedure
(P_Expression_If_OK): New procedure
* par.adb (P_Conditional_Expression): New procedure
(P_Expression_If_OK): New procedure
* sem_ch4.adb (Analyze_Conditional_Expression): Allow for two argument
form of conditional expression.
* sem_res.adb (Resolve_Conditional_Expression): Deal with supplying
missing True argument if ELSE argument missing.
* sinfo.adb (Is_Elsif): New flag
* sinfo.ads (N_Conditional_Expression): This node is now a syntactic
part of the language, and the documentation is modified accordingly.
(Is_Elsif): New flag
DJ Delorie [Tue, 7 Jul 2009 02:33:47 +0000 (22:33 -0400)]
mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
* config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
* config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
unspecified accesses to control registers.
* config/mep/intrinsics.md: Regenerate.
* config/mep/intrinsics.h: Regenerate.
* config/mep/mep-intrin.h: Regenerate.