* tree-ssa-threadupdate.c: Replace REDIRECTION_DATA varray with
a hash table. Extensive modifications throughout to support
that change.
(struct el): New.
(struct local_info): New.
(struct redirection_data): Add new INCOMING_EDGES and DO_NOT_DUPLICATE
fields.
(redirection_data): Now a hashtable.
(redirection_data_hash, redirection_data_eq): New.
(lookup_redirection_data, create_duplicates): New.
(create_edge_and_update_destionation_phis): New.
(fixup_template_block, redirect_edges): New.
(thread_block): Use hash table traversals instead of loops over
varray entries or incoming edge vectors.
From-SVN: r90941
2004-11-19 Andreas Tobler <a.tobler@schweiz.ch>
* tree-vectorizer.c (slpeel_verify_cfg_after_peeling): Define only
if checking is enabled.
From-SVN: r90939
2004-11-19 Paolo Carlini <pcarlini@suse.de>
* testsuite/22_locale/time_get/get_date/char/1.cc: In the checks
use, more correctly (and consistently with other testcases) the
return value of the facet (the iterator arguments are by value).
* testsuite/22_locale/time_get/get_date/char/12791.cc: Likewise.
* testsuite/22_locale/time_get/get_date/wchar_t/1.cc: Likewise.
* testsuite/22_locale/time_get/get_date/wchar_t/12791.cc: Likewise.
* testsuite/22_locale/time_get/get_monthname/char/1.cc: Likewise.
* testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Likewise.
* testsuite/22_locale/time_get/get_time/char/1.cc: Likewise.
* testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Likewise.
* testsuite/22_locale/time_get/get_weekday/char/1.cc: Likewise.
* testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Likewise.
* testsuite/22_locale/time_get/get_year/char/1.cc: Likewise.
* testsuite/22_locale/time_get/get_year/wchar_t/1.cc: Likewise.
From-SVN: r90938
2004-11-19 Mark Mitchell <mark@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
* lib/target-supports.exp (check_visibility_available): Really
test the compiler.
Co-Authored-By: Joseph Myers <joseph@codesourcery.com>
From-SVN: r90937
PR tree-opt/18181
* tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Peeling scheme
changed to suppoer uses-after-loop and to void creating flow paths
that shouldn't exist.
(slpeel_update_phi_nodes_for_guard): Takes additional two arguments.
Modified to fit the new peeling scheme. Avoid quadratic behavior.
(slpeel_add_loop_guard): Takes additional argument.
(slpeel_verify_cfg_after_peeling): New function.
(vect_update_ivs_after_vectorizer): Takes additional argument. Updated
documentation. Use 'exit-bb' instead of creating 'new-bb'.
(rename_variables_in_bb): Don't update phis for BBs out of loop, to fit
the new peeling scheme.
(copy_phi_nodes): Function removed. Its functionality moved to
update_phis_for_duplicate_loop.
(slpeel_update_phis_for_duplicate_loop): Functionality of copy_phi_nodes
moved here. Added documentation. Modified to fit the new peeling scheme.
(slpeel_make_loop_iterate_ntimes): Setting loop->single_exit not not
needed - done in slpeel_tree_peel_loop_to_edge.
(slpeel_tree_duplicate_loop_to_edge_cfg): Debug printouts compacted.
(vect_do_peeling_for_loop_bound): Add documentation. Call
slpeel_verify_cfg_after_peeling. Call vect_update_ivs_after_vectorizer
with additional argument.
(vect_do_peeling_for_alignment): Call slpeel_verify_cfg_after_peeling.
(vect_finish_stmt_generation): Avoid 80 column oveflow.
From-SVN: r90932
* tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Last two
arguments removed.
(slpeel_tree_peel_loop_to_edge): Call slpeel_make_loop_iterate_ntimes
without last two arguments. Update single_exit of loops.
(vect_update_niters_after_peeling): Removed. Its functionality was
moved to vect_do_peeling_for_alignment.
(vect_do_peeling_for_loop_bound): New name for function previously
called vect_transform_for_unknown_loop_bound.
(vect_transform_loop_bound): Call slpeel_make_loop_iterate_ntimes
instead of code that duplicates the same functionality.
(vect_do_peeling_for_alignment): Functionality of
vect_update_niters_after_peeling moved here.
(vect_transform_loop): Unify call to vect_do_peeling_for_loop_bound -
previously named vect_transform_for_unknown_loop_bound - for both known
and unknown loop bound cases.
From-SVN: r90931
* tree-vectorizer.c (slpeel_can_duplicate_loop_p): New name for function
previously called verify_loop_for_duplication. All conditions compacted
into one compound condition. Removed debug dumps.
(vect_analyze_loop_with_symbolic_num_of_iters): Removed. Some of the
functionality moved to vect_can_advance_ivs_p, and some to
vect_analyze_loop_form.
(vect_can_advance_ivs_p): New function. Contains functionality that was
taken out of vect_analyze_loop_with_symbolic_num_of_iters.
(slpeel_tree_peel_loop_to_edge): Call slpeel_can_duplicate_loop_p.
(vect_analyze_operations): Call vect_can_advance_ivs_p and
slpeel_can_duplicate_loop_p.
(vect_get_loop_niters): Added documentation.
(vect_analyze_loop_form): Check the loop entry always - not only in case
of unknown loop bound. Create preheader and exit bb if necessary. Apply
a check that used to take place in
vect_analyze_loop_with_symbolic_num_of_iters.
(vectorize_loops): Call verify_loop_closed_ssa under ENABLE_CHECKING.
Remove redundant call to rewrite_into_loop_closed_ssa.
(vect_compute_data_refs_alignment): Removed obsolete comment.
From-SVN: r90930
* tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): New name for
function previously called tree_duplicate_loop_to_edge.
(slpeel_tree_duplicate_loop_to_edge_cfg): New name for function
previously called tree_duplicate_loop_to_edge_cfg.
(slpeel_update_phis_for_duplicate_loop): Prefix 'slpeel' added to
function name.
(slpeel_update_phi_nodes_for_guard): Likewise.
(slpeel_make_loop_iterate_ntimes): Likewise.
(slpeel_add_loop_guard): Likewise.
(allocate_new_names, free_new_names): Function declaration moved to top
of file.
(rename_use_op, rename_def_op): Likewise.
(rename_variables_in_bb, rename_variables_in_loop): Likewise.
(vect_generate_tmps_on_preheader): Function declaration moved.
(vect_transform_for_unknown_loop_bound): Added missing function
declaration.
From-SVN: r90929
2004-11-19 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/18507
* tree-flow.h (tree2): Typedef because there is already a VEC(tree).
Define a VEC(tree2) for head.
(register_new_def): Change second argument to be a VEC(tree2).
* tree-ssa-dom.c (block_defs_stack): Change to be a VEC(tree2).
(tree_ssa_dominator_optimize): Initialize block_defs_stack with
the VEC(tree2) function. Also free it before returning.
(dom_opt_initialize_block): Use VEC_safe_push instead of VARRAY_PUSH_TREE
for block_defs_stack.
(restore_currdefs_to_original_value): Use VEC_length instead of
VARRAY_ACTIVE_SIZE. VEC_pop instead of VARRAY_TOP_TREE/VARRAY_POP.
(dom_opt_finalize_block): Use VEC_safe_push instead of VARRAY_PUSH_TREE
for block_defs_stack.
* tree-into-ssa.c (block_defs_stack): Change to be a VEC(tree2).
(rewrite_initialize_block): Use VEC_safe_push instead of VARRAY_PUSH_TREE
for block_defs_stack.
(ssa_register_new_def): Likewise.
(ssa_rewrite_initialize_block): Likewise.
(rewrite_finalize_block): Use VEC_length instead of
VARRAY_ACTIVE_SIZE. VEC_pop instead of VARRAY_TOP_TREE/VARRAY_POP.
(ssa_rewrite_finalize_block): Likewise.
(register_new_def): Change second argument to be a VEC(tree2).
Use VEC_safe_push instead of VARRAY_PUSH_TREE.
(rewrite_blocks): Initialize block_defs_stack with
the VEC(tree2) function. Also free it before returning.
(rewrite_ssa_into_ssa): Likewise.
From-SVN: r90926
* gnat_ugn.texi:
Remove extra paren check from list of checks for redundant constructs
Add documentation of new -gnatyx style check (check extra parens)
Remove paragraph about gnatelim debug options.
* gnat_rm.texi: Document that Ada.Streams now forbids creating stream
objects rather than forbidding dependencies on the package Ada.Streams.
* sinfo.ads: Add ??? note that we should document pragmas passed to
back end.
* g-expect.ads: Fix a few typos in the comments.
From-SVN: r90915
* makegpr.adb (Compile): Put the compiling switches (in package
Compiler and on the command line) immediately after "-c", instead of
at the end of the command line invocation of the compiler, when
compiling a non-Ada file.
(Build_Global_Archive): When there is no need to rebuild the archive,
set Global_Archive_Exists, so that the archive is passed to the linker
if one is needed.
From-SVN: r90914
* s-tposen.adb (Lock_Entry): Remove the code for raising Program_Error
for Detect_Blocking which is redundant with the check done within the
procedure Protected_Single_Entry_Call.
(Lock_Read_Only_Entry): Remove the code for raising Program_Error for
Detect_Blocking which is redundant with the check done within the
procedure Protected_Single_Entry_Call.
From-SVN: r90913
* init.c (__gnat_map_signal): map SIGSEGV to Storage_Error for AE653
vthreads.
(init_float): Eliminate initialization of floating point status for
AE653. The instructions have no effect for vThreads.
From-SVN: r90911
* gnat1drv.adb, gnatbind.adb, gnatchop.adb, gnatfind.adb, gnatlink.adb,
gnatls.adb, gnatxref.adb, gprep.adb: Output the copyright message on a
separate line from the version message.
From-SVN: r90910
* exp_pakd.adb (Convert_To_PAT_Type): After replacing the original
type of the object with the packed array type, set the Analyzed flag
on the object if it is an entity or simple indexed component, to avoid
spurious type errors.
From-SVN: r90909
* expect.c: Define __unix__ when __APPLE__ is defined.
* Makefile.in: Inform the value of the variable GMEM_LIB in the
Darwin-specific section.
* lang-specs.h: Change the placement of the %1 marker.
From-SVN: r90908
* exp_dbug.ads: Update documentation to reflect simpler encoding for
protected operations.
* exp_ch9.adb (Build_Selected_Name): Do not include "PT" suffix in
generated name, it complicates decoding in gdb and hinders debugging
of protected operations.
(Build_Barrier_Function_Specification): Set the Needs_Debug_Info
flag for the protected entry barrier function.
(Build_Protected_Entry_Specification): Set the Needs_Debug_Info
flag for the protected entry function.
From-SVN: r90907
* exp_ch4.adb (Expand_N_Selected_Component): If the component is the
discriminant of a constrained subtype, analyze the copy of the
corresponding constraint, because in some cases it may be only
partially analyzed.
Removes long-lived ??? comments.
* exp_ch7.adb (Establish_Transient_Scope): Remove complex code that
handled controlled or secondary-stack expressions within the
iteration_scheme of a loop.
* sem_ch5.adb (Analyze_Iteration_Scheme): Build a block to evaluate
bounds that may contain functions calls, to prevent memory leaks when
the bound contains a call to a function that uses the secondary stack.
(Check_Complex_Bounds): Subsidiary of Analyze_Iteration_Scheme, to
generate temporaries for loop bounds that might contain function calls
that require secondary stack and/or finalization actions.
* sem_ch4.adb (Analyze_Indexed_Component_Form): If the prefix is a
selected component and the selector is overloadable (not just a
function) treat as function call, Analyze_Call will disambiguate if
necessary.
(Analyze_Selected_Component): Do not generate an actual subtype for the
selected component if expansion is disabled. The actual subtype is only
needed for constraint checks.
(Analyze_Allocator): If restriction No_Streams is set, then do
not permit objects to be declared of a stream type, or of a
composite type containing a stream.
* restrict.ads: Remove the a-stream entry from Unit_Array, since
No_Streams no longer prohibits with'ing this package.
* sem_ch3.adb (Build_Derived_Record_Type): If the parent type has
discriminants, but the parent base has unknown discriminants, there is
no discriminant constraint to inherit. Such a discrepancy can arise
when the actual for a formal type with unknown discriminants is a
similar private type whose full view has discriminants.
(Analyze_Object_Declaration): If restriction No_Streams is set, then
do not permit objects to be declared of a stream type, or of a
composite type containing a stream.
From-SVN: r90906
* errout.ads, errout.adb: (First_Sloc): New function
* par-ch5.adb (P_Condition): Check for redundant parens is now a style
check (-gnatyx) instead of being included as a redundant construct
warning.
* sem_ch6.adb: Change name Style_Check_Subprogram_Order to
Style_Check_Order_Subprograms.
* style.ads, styleg.ads, styleg.adb, styleg-c.adb, stylesw.ads,
stylesw.adb: Add Style_Check_Xtra_Parens
* usage.adb: Add line for -gnatyx (check extra parens)
* vms_data.ads: Add entry for STYLE_CHECKS=XTRA_PARENS => -gnatyx
From-SVN: r90905
* einfo.ads, einfo.adb: Remove Is_Psected flag, no longer used
(Has_Rep_Pragma): New function
(Has_Attribute_Definition_Clause): New function
(Record_Rep_Pragma): Moved here from sem_ch13.adb
(Get_Rep_Pragma): Remove junk kludge for Stream_Convert pragma
* sem_ch13.ads, sem_ch13.adb (Record_Rep_Pragma): Moved to einfo.adb
* exp_prag.adb: (Expand_Pragma_Common_Object): New procedure
(Expand_Pragma_Psect_Object): New procedure
These procedures contain the revised and cleaned up processing for
these two pragmas. This processing was formerly in Sem_Prag, but
is more appropriately moved here. The cleanup involves making sure
that the pragmas are properly attached to the tree, and that no
nodes are improperly shared.
* sem_prag.adb: Move expansion of Common_Object and Psect_Object
pragmas to Exp_Prag, which is more appropriate.
Attach these two pragmas to the Rep_Item chain Use Rep_Item chain to
check for duplicates Remove use of Is_Psected flag, no longer needed.
Use new Make_String_Literal function with string.
* exp_attr.adb (Expand_Fpt_Attribute): The floating-point attributes
that are functions return universal values, that have to be converted
to the context type.
Use new Make_String_Literal function with string.
(Get_Stream_Convert_Pragma): New function, replaces the use of
Get_Rep_Pragma, which had to be kludged to work in this case.
* freeze.adb: Use new Has_Rep_Pragma function
* exp_intr.adb, exp_ch3.adb, sem_attr.adb: Use new Make_String_Literal
function with string.
Use new Has_Rep_Pragma function.
* tbuild.ads, tbuild.adb (Make_String_Literal): New function, takes
string argument.
From-SVN: r90904
* exp_dist.adb (Build_RPC_Receiver_Body): New subprogram. This
procedures factors the common processing for building an RPC receiver
for an RCI package or an RACW type.
Stylistic cleanup: change '/= Empty' to 'Present ()'; move body of
Build_Remote_Subprogram_Proxy_Type into proper alphabetical order.
(Get_PCS_Name): New subprogram. Returns the name of the PCS currently
in use.
(Specific_Add_RACW_Features): New subprogram. PCS-specific part of
Add_RACW_Features.
(Specific_Add_RAST_Features): New subprogram. PCS-specific part of
Add_RAST_Features.
(Assign_Subprogram_Identifier): New subprogram. Provision for assigning
distribution subprogram identifiers that are either subprogram numbers
or strings.
(Get_Subprogram_Ids): New subprogram. Retrieve both the numeric and
string distribution identifiers assigned to a given subprogram.
(Get_Subprogram_Id): Reimplement in terms of Get_Subprogram_Ids.
(Add_RAS_Dereference_TSS): Add comments.
(Build_General_Calling_Stubs): Note that the RACW_Type formal parameter
is not referenced yet because it will be used by the PolyORB DSA
implementation.
(Insert_Partition_Check): Remove fossile code.
(First_RCI_Subprogram_Id): Document this constant.
(Add_RAS_Access_TSS): Correct the setting of the Etype of the
RAS_Access TSS.
(Get_Pkg_Name_String): Remove subprogram. Usage occurrences are
replaced with calls to Get_Library_Unit_Name_String. Previously there
were several instances of the same code in different locations in the
compiler; this checkin completes the replacement of all of these
instances with calls to a common subprogram.
Minor reformatting.
* sem_dist.adb: Remove comment noting that RPC receiver generation
should be disabled for RACWs that implement RASs.
(Process_Partition_Id): Use new subprogram Get_Library_Unit_Name_String.
* sem_util.ads, sem_util.adb (Has_Stream): New function
(Get_Library_Unit_Name_String): New subprogram to retrieve the fully
qualified name of a library unit into the name buffer.
(Note_Possible_Modification): Generate a reference only
if the context comes from source.
* snames.ads (PCS_Names): New subtype corresponding to names of
supported implementations of the Partition Communication Subsystem
(PCS) (i.e. the runtime library support modules for the distributed
systems annex).
From-SVN: r90903
* a-exexpr.adb (Others_Value, All_Others_Value): New variables, the
address of which may be used to represent "others" and "all others"
choices in exception tables, instead of the current harcoded
(void *)0 and (void *)1.
(Setup_Exception): Do nothing in the GNAT SJLJ case.
* gigi.h (others_decl, all_others_decl): New decls representing the
new Others_Value and All_Others_Value objects.
(struct attrib): Rename "arg" component as "args", since GCC expects a
list of arguments in there.
* raise.c (GNAT_OTHERS, GNAT_ALL_OTHERS): Are now the address of the
corresponding objects exported by a-exexpr, instead of hardcoded dummy
addresses.
* trans.c (Exception_Handler_to_gnu_zcx): Use the address of
others_decl and all_others_decl instead of hardcoded dummy addresses
to represent "others" and "all others" choices, which is cleaner and
more flexible with respect to the possible eh pointer encoding policies.
* utils.c (init_gigi_decls): Initialize others_decl and all_others_decl.
(process_attributes): Account for the naming change of the "args"
attribute list entry component.
* decl.c (build_attr_list): Rename into prepend_attributes to allow
cumulating attributes for different entities into a single list.
(gnat_to_gnu_entity): Use prepend_attributes to build the list of
attributes for the current entity and propagate first subtype
attributes to other subtypes.
<E_Procedure>: Attribute arguments are attr->args and not
attr->arg any more.
(build_attr_list): Ditto. Make attr->args a TREE_LIST when there is an
argument provided, as this is what GCC expects. Use NULL_TREE instead
of 0 for trees.
From-SVN: r90900
(__gnat_portable_spawn): Fix cast of spawnvp third parameter
to avoid warnings.
Add also a cast to kill another warning.
(win32_no_block_spawn): Initialize CreateProcess's dwCreationFlags
parameter with the priority class of the parent process instead of
always using the NORMAL_PRIORITY_CLASS.
(__gnat_dup): New function.
(__gnat_dup2): New function.
(__gnat_is_symbolic_link): Enable the effective body of this
function when __APPLE__ is defined.
* g-os_lib.ads, g-os_lib.adb (Spawn): Two new procedures.
Update comments.
From-SVN: r90899
config/stormy16/stormy16.c (combine_bnp): Add code to handle zero_extension and
lshiftrt insns.
Replace uses of XEXP(...) with either SET_DEST() or SET_SRC() where
appropriate.
config/stormy16.stormy16.md (bclrx3, bsetx3): New patterns to handle bp and bn
insn patterns with a zero_extend rtx inside them.
From-SVN: r90898
* integrate.c (has_func_hard_reg_initial_val,
get_func_hard_reg_initial_val): Make them static.
* integrate.h: Remove the corresponding prototypes.
From-SVN: r90895
* config/arm/arm.c (const_double_needs_minipool): New function to
determine if a CONST_DOUBLE should be pushed to the minipool.
(note_invalid_constants): Use it.
From-SVN: r90881