* tree-scalar-evolution.c (resolve_mixers): Exported. * tree-scalar-evolution.h (resolve_mixers): Declare. * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p, ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p, record_record_differ_p, record_array_differ_p, array_ptr_differ_p, base_object_differ_p, base_addr_differ_p, analyze_array_indexes, init_array_ref, init_pointer_ref, analyze_indirect_ref, strip_conversion, analyze_offset_expr, address_analysis, object_analysis, analyze_offset): Removed. (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias, split_constant_offset, canonicalize_base_object_address, object_address_invariant_in_loop_p, disjoint_objects_p, dr_may_alias_p, dr_address_invariant_p): New functions. (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices and dr_analyze_alias. (initialize_data_dependence_relation): Use dr_may_alias_p and object_address_invariant_in_loop_p. (compute_self_dependence): Handle the case when DDR_ARE_DEPENDENT (ddr) is chrec_dont_know. (find_data_references_in_stmt): Restrict the analysis of data references to the given loop nest. (find_data_references_in_loop): Made static. Pass loop nest to find_data_references_in_stmt. (compute_data_dependences_for_loop): Use DR_VOPS. (free_data_ref): Free DR_VOPS. * tree-data-ref.h (struct first_location_in_loop): Replaced by ... (struct innermost_loop_behavior): ... new. (struct base_object_info): Replaced by ... (struct indices): ... new. (struct dr_alias): New. (enum data_ref_type): Removed. (struct data_reference): Consist of struct innermost_loop_behavior, struct indices and struct dr_alias. (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed. (DR_MEMTAG): Renamed to ... (DR_SYMBOL_TAG): ... this. (find_data_references_in_loop): Declaration removed. * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT instead of DR_OFFSET_MISALIGNMENT. DR_ALIGNED_TO is never NULL. (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG. * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto. * gcc.dg/vect/no-section-anchors-vect-69.c: Fix outcome. * gcc.dg/tree-ssa/loop-30.c: New test. From-SVN: r124655
50 lines
1.7 KiB
C
50 lines
1.7 KiB
C
/* Scalar evolution detector.
|
|
Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
|
|
Contributed by Sebastian Pop <s.pop@laposte.net>
|
|
|
|
This file is part of GCC.
|
|
|
|
GCC is free software; you can redistribute it and/or modify it under
|
|
the terms of the GNU General Public License as published by the Free
|
|
Software Foundation; either version 2, or (at your option) any later
|
|
version.
|
|
|
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with GCC; see the file COPYING. If not, write to the Free
|
|
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
|
02110-1301, USA. */
|
|
|
|
#ifndef GCC_TREE_SCALAR_EVOLUTION_H
|
|
#define GCC_TREE_SCALAR_EVOLUTION_H
|
|
|
|
extern tree number_of_latch_executions (struct loop *);
|
|
extern tree number_of_exit_cond_executions (struct loop *);
|
|
extern tree get_loop_exit_condition (struct loop *);
|
|
|
|
extern void scev_initialize (void);
|
|
extern void scev_reset (void);
|
|
extern void scev_finalize (void);
|
|
extern tree analyze_scalar_evolution (struct loop *, tree);
|
|
extern tree instantiate_parameters (struct loop *, tree);
|
|
extern tree resolve_mixers (struct loop *, tree);
|
|
extern void gather_stats_on_scev_database (void);
|
|
extern void scev_analysis (void);
|
|
unsigned int scev_const_prop (void);
|
|
|
|
extern bool simple_iv (struct loop *, tree, tree, affine_iv *, bool);
|
|
|
|
/* Returns the loop of the polynomial chrec CHREC. */
|
|
|
|
static inline struct loop *
|
|
get_chrec_loop (tree chrec)
|
|
{
|
|
return get_loop (CHREC_VARIABLE (chrec));
|
|
}
|
|
|
|
#endif /* GCC_TREE_SCALAR_EVOLUTION_H */
|