* init.c (__gnat_initialize): Call an Ada subprogram to perform the
table registration calls when need be. Ensures no reference to the crt
ctors symbol are issued in the SJLJ case, which avoids possible
undefined symbol errors in the case of modules to be statically linked
with the kernel.
Javier Miranda [Mon, 4 Oct 2004 15:01:03 +0000 (15:01 +0000)]
sem_ch4.adb (Try_Object_Operation): Reformat the code to expand in-line the code corresponding to subprogram...
2004-10-04 Javier Miranda <miranda@gnat.com>
* sem_ch4.adb (Try_Object_Operation): Reformat the code to expand
in-line the code corresponding to subprogram Analyze_Actuals. In
addition, analyze the actuals only in case of subprogram call.
Robert Dewar [Mon, 4 Oct 2004 15:00:06 +0000 (15:00 +0000)]
sem_ch5.adb (Unblocked_Exit_Count): Now used for blocks as well as IF and CASE.
2004-10-04 Robert Dewar <dewar@gnat.com>
* sem_ch5.adb (Unblocked_Exit_Count): Now used for blocks as well as
IF and CASE.
(Analyze_Block_Statement): Add circuitry to detect following dead code
(Check_Unreachable_Code): Handle case of block exit
Robert Dewar [Mon, 4 Oct 2004 14:59:10 +0000 (14:59 +0000)]
exp_ch4.adb (Is_Procedure_Actual): Correct so that this does not consider expressions buried within a procedure...
2004-10-04 Robert Dewar <dewar@gnat.com>
* exp_ch4.adb (Is_Procedure_Actual): Correct so that this does not
consider expressions buried within a procedure actual to be an actual.
This caused some blowups with uses of packed slices within a procedure
actual.
Robert Dewar [Mon, 4 Oct 2004 14:58:47 +0000 (14:58 +0000)]
exp_ch3.adb (Needs_Simple_Initialization): Modular packed arrays no longer need to be initialized to zero.
2004-10-04 Robert Dewar <dewar@gnat.com>
* exp_ch3.adb (Needs_Simple_Initialization): Modular packed arrays no
longer need to be initialized to zero.
(Get_Simple_Init_Val): Modular packed arrays no longer need to be
initialized to zero.
* checks.adb (Expr_Known_Valid): Packed arrays are now always
considered valid, even if the representation is modular. That's correct
now that we no longer initialize packed modular arrays to zero.
* exp_dbug.ads: Clarify documentation on handling of PAD and JM
suffixes. These are now documented as the only cases in which the
debugger ignores outer records.
Previously, the spec allowed arbitrary suffixes for this purpose.
Change name of LJM to JM for packed array pad records
Create separate section on packed array handling, and add a whole new
set of comments to this section describing the situation with packed
modular types and justification requirements depending on endianness.
Ed Schonberg [Mon, 4 Oct 2004 14:57:56 +0000 (16:57 +0200)]
sem_ch6.adb (Analyze_Subprogram_Body): Do not treat Inline as Inline_Always when in Configurable_Run_Time mode.
2004-10-04 Ed Schonberg <schonberg@gnat.com>
* sem_ch6.adb (Analyze_Subprogram_Body): Do not treat Inline as
Inline_Always when in Configurable_Run_Time mode.
* sem_prag.adb (Process_Convention): If entity is an inherited
subprogram, apply convention to parent subprogram if in same scope.
(Analyze_Pragma, case Inline): Do not treat Inline as Inline_Always
when in Configurable_Run_Time mode.
Ed Schonberg [Mon, 4 Oct 2004 14:57:11 +0000 (16:57 +0200)]
sem_ch12.adb (Check_Generic_Actuals): New predicate Denotes_Previous_Actual...
2004-10-04 Ed Schonberg <schonberg@gnat.com>
* sem_ch12.adb (Check_Generic_Actuals): New predicate
Denotes_Previous_Actual, to handle properly the case of a private
actual that is also the component type of a subsequent array actual.
The visibility status of the first actual is not affected when the
second is installed.
(Process_Nested_Formal): Subsidiary of Instantiate_Formal_Package, to
make fully recursive the treatment of formals of packages declared
with a box.
(Restore_Nested_Formal): Subsidiary of Restore_Private_Views, to undo
the above on exit from an instantiation.
(Denotes_Formal_Package): When called from Restore_Private_Views, ignore
current instantiation which is now complete.
(Analyze_Package_Instantiation): No instantiated body is needed if the
main unit is generic. Efficient, and avoid anomalies when a instance
appears in a package accessed through rtsfind.
Ed Schonberg [Mon, 4 Oct 2004 14:56:49 +0000 (16:56 +0200)]
exp_ch6.adb (Expand_N_Function_Call): If stack checking is enabled...
2004-10-04 Ed Schonberg <schonberg@gnat.com>
* exp_ch6.adb (Expand_N_Function_Call): If stack checking is enabled,
do not generate a declaration for a temporary if the call is part of a
library-level instantiation.
Ed Schonberg [Mon, 4 Oct 2004 14:56:27 +0000 (16:56 +0200)]
sem_util.adb (Explain_Limited_Type): Ignore internal components when searching for a limited component to flag.
2004-10-04 Ed Schonberg <schonberg@gnat.com>
* sem_util.adb (Explain_Limited_Type): Ignore internal components when
searching for a limited component to flag.
* exp_attr.adb (Freeze_Stream_Subprogram): Subsidiary procedure to
expansion of Input, to account for the fact that the implicit call
generated by the attribute reference must freeze the user-defined
stream subprogram. This is only relevant to 'Input, because it can
appear in an object declaration, prior to the body of the subprogram.
* sem_ch13.adb (Rep_Item_Too_Late): Make the error non-serious, so that
expansion can proceed and further errors uncovered.
(Minor clean up): Fix cases of using | instead of \ for continuation
messages.
Richard Kenner [Mon, 4 Oct 2004 14:56:04 +0000 (14:56 +0000)]
cuintp.c, [...]: Use gcc_assert and gcc_unreachable.
2004-10-04 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* cuintp.c, decl.c, utils2.c: Use gcc_assert and gcc_unreachable.
* trans.c (assoc_to_constructor): Fix unused var warning if no checking.
(gnat_gimplify_expr, case ADDR_EXPR): Fix error in last change.
Use gcc_assert and gcc_unreachable.
* decl.c (gnat_to_gnu_entity, case object): Check and process a
specified alignment before validating size.
(gnat_to_gnu_entity) <E_Modular_Integer_Subtype>: Create a
stripped-down declaration for the type of the inner field when making
a JM type.
* utils.c (finish_record_type): Do not compute the size in units
incrementally. Instead compute it once for the rep clause case.
Use gcc_assert and gcc_unreachable.
Vincent Celier [Mon, 4 Oct 2004 14:55:06 +0000 (14:55 +0000)]
prj-part.adb (Parse_Single_Project): Call Is_Extending_All (Extended_Project) only if Extended_Project is defined...
2004-10-04 Vincent Celier <celier@gnat.com>
* prj-part.adb (Parse_Single_Project): Call Is_Extending_All
(Extended_Project) only if Extended_Project is defined, to avoid
assertion error.
(Post_Parse_Context_Clause): Always call Set_Path_Name_Of with a
resolved path.
(Parse_Single_Project): Ditto.
* prj-env.adb (Set_Ada_Paths.Add.Recursive_Add): Do not call
Add_To_Project_Path for virtual projects.
* mlib-prj.ads, mlib-prj.adb (Build_Library): Call
Build_Dynamic_Library with an empty Options_2.
* mlib-utl.ads, mlib-utl.adb (Gcc): Parameter Options_2 has no
default anymore.
* makegpr.adb (Get_Imported_Directories.add): Remove trailing
directory separator, if any.
(Gprmake): Do not allow mains on the command line for library projects.
Do not attempt to link when the project is a library project.
(Library_Opts): New table to store Library_Options.
(Build_Library): If Library_Options is specified, pass these options
when building a shared library.
Jose Ruiz [Mon, 4 Oct 2004 14:51:59 +0000 (16:51 +0200)]
s-tposen.adb (Service_Entry): The object must be always unlocked at the end of this procedure now that the...
2004-10-04 Jose Ruiz <ruiz@act-europe.fr>
* s-tposen.adb (Service_Entry): The object must be always unlocked at
the end of this procedure now that the unlock operation was inserted
by the expander.
Jose Ruiz [Mon, 4 Oct 2004 14:51:17 +0000 (16:51 +0200)]
targparm.ads, [...] (Targparm_Tags): Add PAS value corresponding to the Preallocated_Stacks flags in System.
2004-10-04 Jose Ruiz <ruiz@act-europe.fr>
* targparm.ads, targparm.adb (Targparm_Tags): Add PAS value
corresponding to the Preallocated_Stacks flags in System.
(Get_Target_Parameters): Including the processing for
Preallocated_Stacks.
* system.ads, system-vxworks-x86.ads, system-darwin-ppc.ads,
system-vms_64.ads, system-unixware.ads, system-linux-ia64.ads,
system-freebsd-x86.ads, system-lynxos-ppc.ads, system-lynxos-x86.ads,
system-linux-x86_64.ads, system-tru64.ads, system-aix.ads,
system-vxworks-sparcv9.ads, system-vxworks-xscale.ads,
system-solaris-x86.ads, system-irix-o32.ads, system-irix-n32.ads,
system-hpux.ads, system-vxworks-m68k.ads, system-linux-x86.ads,
system-vxworks-mips.ads, system-os2.ads, system-interix.ads,
system-solaris-sparc.ads, system-solaris-sparcv9.ads, system-vms.ads,
system-mingw.ads, system-vms-zcx.ads, system-vxworks-ppc.ads,
system-vxworks-alpha.ads: Add the flag Preallocated_Stacks, that is
used to signal whether the compiler creates the required stacks and
descriptors for the different tasks (when True) or it is done by the
underlying operating system at run time (when False).
It is initially set to False in all targets.
* exp_ch9.adb (Expand_N_Task_Type_Declaration): Create the task stack
if it is supported by the target.
(Make_Task_Create_Call): Pass the stack address if it has been
previously created. Otherwise pass a Null_Address.
* snames.adb: Add _stack.
* snames.ads: Add Name_uStack. Required to allow the expander to
statically allocated task stacks.
* s-tarest.ads, s-tarest.adb (Create_Restricted_Task): Add
Stack_Address argument.
Check that its value is equal to Null_Address because this target does
not support the static stack allocation.
Thomas Quinot [Mon, 4 Oct 2004 14:50:08 +0000 (16:50 +0200)]
exp_dist.adb: Split declaration of asynchronous flag out of Add_RACW_Read_Attribute.
2004-10-04 Thomas Quinot <quinot@act-europe.fr>
* exp_dist.adb: Split declaration of asynchronous flag out of
Add_RACW_Read_Attribute.
Minor reformatting for better alignment with PolyORB version.
Store the entity for the asynchronous flag of an RACW, rather than the
expression, in the asynchronous flags table. This will allow this flag
to be used in other subprograms beside Add_RACW_Read_Attribute.
Thomas Quinot [Mon, 4 Oct 2004 14:49:35 +0000 (16:49 +0200)]
g-socket.ads, [...]: Add new sockets constant MSG_NOSIGNAL (Linux-specific).
2004-10-04 Thomas Quinot <quinot@act-europe.fr>
* g-socket.ads, g-socket.adb, g-socthi.adb, socket.c,
g-soccon-aix.ads, g-soccon-irix.ads, g-soccon-hpux.ads,
g-soccon-interix.ads, g-soccon-solaris.ads, g-soccon-vms.adb,
g-soccon-mingw.ads, g-soccon-vxworks.ads, g-soccon-freebsd.ads,
g-soccon.ads, g-soccon-unixware.ads, g-soccon-tru64.ads: Add new
sockets constant MSG_NOSIGNAL (Linux-specific).
Add new sockets constant MSG_Forced_Flags, list of flags to be set on
all Send operations.
For Linux, set MSG_NOSIGNAL on all send operations to prevent them
from trigerring SIGPIPE.
Rename components to avoid clash with Ada 2005 possible reserved
word 'interface'.
(Check_Selector): When the select system call returns with an error
condition, propagate Socket_Error to the caller.
Roger Sayle [Mon, 4 Oct 2004 00:19:57 +0000 (00:19 +0000)]
c_locale.cc (__convert_to_v): Use _GLIBCXX_HAVE_STRTOF instead _GLIBCXX_USE_C99 to check for strtof.
* config/locale/generic/c_locale.cc (__convert_to_v): Use
_GLIBCXX_HAVE_STRTOF instead _GLIBCXX_USE_C99 to check for strtof.
Likewise, use _GLIBCXX_HAVE_STRTOLD instead of _GLIBCXX_USE_C99
to check for presence of strtold.
Kazu Hirata [Sun, 3 Oct 2004 15:33:20 +0000 (15:33 +0000)]
re PR tree-optimization/16632 (A couple fold-const.c optimizations are non-functional)
PR tree-optimization/16632
* fold-const.c (fold) [EQ_EXPR]: When seeing if D & ~C != 0 to
fold (A & C) == D into 0, fold ~C. Similarly, for the case
where | is used instead of &.
Kazu Hirata [Sun, 3 Oct 2004 15:31:54 +0000 (15:31 +0000)]
fold-const.c (fold): When seeing if D & ~C != 0 to fold (A & C) == D into 0, fold ~C.
* fold-const.c (fold) [EQ_EXPR]: When seeing if D & ~C != 0 to
fold (A & C) == D into 0, fold ~C. Similarly, for the case
where | is used instead of &.
* simplify.c (range_check): Remove blank line at beginning of function.
(gfc_simplify_dint): Same at end of function.
(gfc_simplify_exponent, gfc_simplify_fraction): Simplify calculations.
(gfc_simplify_bound): Fix indentation.
(gfc_simplify_log10): Simplify calculation.
(gfc_simplify_min, gfc_simplify_max): Remove blank line at beginning
of function.
(gfc_simplify_nearest): Same at end of function.
(gfc_simplify_nint, gfc_simplify_idnint): Same at beginning of
function.
(gfc_simplify_rrspacing, gfc_simplify_set_exponent,
gfc_simplify_spacing): Simplify calulations.
tree-mudflap.c (mf_build_check_statement_for): Reorganize to take check-base and -limit arguments.
2004-10-02 Frank Ch. Eigler <fche@redhat.com>
* tree-mudflap.c (mf_build_check_statement_for): Reorganize to
take check-base and -limit arguments.
(mf_xform_derefs_1): Reorganize slightly to pass proper base/limit
check ranges for ARRAY_REF and COMPONENT_REF.
(execute_mudflap_fnction_ops, ..._decls): Limit unnecessary
instrumentation.
2004-10-02 Frank Ch. Eigler <fche@redhat.com>
* testsuite/libmudflap.c/pass50-frag.c, fail33-frag.c, fail34-frag.c:
New tests for proper base/limit checking for aggregates.
re PR treelang/17762 (treelang doesn't use mapped locations)
2004-10-02 James A. Morrison <phython@gcc.gnu.org>
PR other/17762
* lex.l: Include input.h and errors.h
(lineno): New variable.
(LINEMAP_POSITION_FOR_COLUMN): Define as noop when USE_MAPPED_LOCATION
is not defined.
Set column position with LINEMAP_POSITION_FOR_COLUMN.
Use error instead of fprintf.
Set input_location with the value returned by linemap_start_line when
USE_MAPPED_LOCATION is defined.
(dump_lex_value): Use LOCATION_LINE.
* parse.y: Include errors.h.
Use error and warning instead of fprintf.
(return): Move exp to rule scope and always set to $2. Test against
exp instead of $2.
(init): Set $$ to $2.
(print_token): Use LOCATION_LINE.
* tree1.c (treelang_init): Call treelang_init_decl_processing last.
Call linemap_add to set input_filename when USE_MAPPED_LOCATION is
defined.
(treelang_parse_file): Always start at line one.
Rename input_filename to main_input_filename when USE_MAPPED_LOCATION is
defined.
Leave main_input_filename when done parsing the input.
(insert_tree_name): Use error instead of fprintf.
* treetree.c (tree_code_get_expression): Wrap long line.
(tree_mark_addressable): Use %qD to print out DECLs.
2004-10-02 James A. Morrison <phython@gcc.gnu.org>
* compile/autofunc.tree: New File.
* compile/badchar.tree: New File.
* compile/externvar.tree: New File.
* compile/mismatch.tree: New File.
* compile/noproto.tree: New File.
* compile/novar.tree: New File.
* compile/var_defs.tree: Add duplicate variable.
2004-09-28 James A. Morrison <phython@gcc.gnu.org>
* parse.y (ELSE): Set tok to $1.
* treelang.texi: Wrap comments in @r{}. Indent example comments.
Use gcc when refering to the command line or website. Update function
definition.
Andrew Pinski [Fri, 1 Oct 2004 15:22:26 +0000 (15:22 +0000)]
re PR tree-optimization/17343 (a dispatch table can be shortened for certain switch statements)
2004-10-01 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/17343
* gcc.dg/tree-ssa/pr17343.c: New test.
2004-10-01 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/17343
* tree-cfg.c (group_case_labels): Get the label and not
the case expr for the default case.
When the label we looking at is the default, decrement the
new_size.
Paolo Carlini [Fri, 1 Oct 2004 09:22:49 +0000 (09:22 +0000)]
sstream.tcc (seekpos): Minor rearrangement of two conditionals consistently with seekoff.
2004-10-01 Paolo Carlini <pcarlini@suse.de>
* include/bits/sstream.tcc (seekpos): Minor rearrangement of two
conditionals consistently with seekoff.
* include/std/std_sstream.h (setbuf): Avoid a string temporary.
(_M_sync): Simplify a bit, clean-up comment.
Zdenek Dvorak [Fri, 1 Oct 2004 09:06:06 +0000 (11:06 +0200)]
tree-chrec.c (chrec_fold_plus_poly_poly, [...]): Use fold_convert or build_int_cst_type instead od fonvert.
* tree-chrec.c (chrec_fold_plus_poly_poly, chrec_fold_plus_1,
chrec_fold_multiply): Use fold_convert or build_int_cst_type instead
od fonvert.
* tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
add_to_evolution, set_nb_iterations_in_loop, follow_ssa_edge_in_rhs,
follow_ssa_edge_in_rhs): Ditto.
* tree-ssa-loop-ivopts.c (struct iv): Add base_object field.
(dump_iv): Dump base_object.
(dump_use, dump_cand): Use dump_iv.
(determine_base_object): New function.
(alloc_iv): Initialize base_object field.
(record_use): Clear the ssa_name field of iv.
(get_computation_cost_at): Do not use difference of addresses of
two different objects.
(may_eliminate_iv): Do not require the loop to have just single exit.
* tree-ssa-loop-niter.c (zero_p): Do not check for overflows.
(nonzero_p): New function.
(inverse, number_of_iterations_cond, simplify_using_outer_evolutions,
tree_simplify_using_condition, simplify_using_initial_conditions,
loop_niter_by_eval, find_loop_niter_by_eval,
estimate_numbers_of_iterations_loop, compare_trees,
upper_bound_in_type, lower_bound_in_type,
can_count_iv_in_wider_type_bound): Use buildN instead of build. Use
fold_convert or build_int_cst_type instead of convert. Use (non)zero_p
instead of integer_(non)zerop.
* config/i386/i386.c (ix86_build_builtin_va_list): Initialize
va_list_{g,f}pr_counter_field.
(ix86_setup_incoming_varargs): Don't do anything if reg_save
area will not be used. Only save registers that tree-stdarg.c
detected they need saving.
(ix86_va_start): Don't set up fields that won't be used.
* config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Initialize
va_list_{g,f}pr_counter_field.
(setup_incoming_varargs): Don't do anything if reg_save
area will not be used. Only save registers that tree-stdarg.c
detected they need saving.
(rs6000_va_start): Don't set up fields that won't be used.
Andrew Pinski [Fri, 1 Oct 2004 03:46:39 +0000 (03:46 +0000)]
re PR libobjc/16448 (FAIL: objc/execute/IMP.m compilation, -O0)
2004-09-16 Andrew Pinski <pinskia@physics.uc.edu>
PR libobjc/16448
* exception.c: Include config.h
(objc_exception_throw): Change _GLIBCXX_SJLJ_EXCEPTIONS to
SJLJ_EXCEPTIONS.
* configure.ac: Find out what exception handling code we use.
* configure: Regenerate.
* config.h.in: New file, regenerate.
Roger Sayle [Thu, 30 Sep 2004 23:44:30 +0000 (23:44 +0000)]
combine.c (force_to_mode): Only convert the expression (AND (NE FOO 0) CONST) into (AND FOO CONST) if...
* combine.c (force_to_mode) <NE_EXPR>: Only convert the expression
(AND (NE FOO 0) CONST) into (AND FOO CONST) if FOO has the same
machine mode as the result.