dse.c (struct group_info): Reorder fields for 64-bit hosts.
* dse.c (struct group_info): Reorder fields for 64-bit hosts. * matrix-reorg.c (struct matrix_info): Likewise. * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise. * rtl.h (struct mem_attrs): Likewise. * df.h (struct df): Likewise. * tree-data-ref.h (struct data_dependence_relation): Likewise. * ira-int.h (struct ira_allocno): Likewise. * df-scan.c (struct df_collection_rec): Likewise. * ira.c (struct equivalence): Likewise. * function.c (struct temp_slot): Likewise. * cfgloop.h (struct loop): Likewise. * parser.c (struct cp_token): Reorder fields for 64-bit hosts. (eof_token): Adjust. * include/cpplib.h (struct cpp_dir): Reorder fields for 64-bit hosts. From-SVN: r144938
This commit is contained in:
parent
9968d233b3
commit
8f5929e11f
16 changed files with 117 additions and 92 deletions
|
@ -1,3 +1,17 @@
|
||||||
|
2009-03-18 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* dse.c (struct group_info): Reorder fields for 64-bit hosts.
|
||||||
|
* matrix-reorg.c (struct matrix_info): Likewise.
|
||||||
|
* tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
|
||||||
|
* rtl.h (struct mem_attrs): Likewise.
|
||||||
|
* df.h (struct df): Likewise.
|
||||||
|
* tree-data-ref.h (struct data_dependence_relation): Likewise.
|
||||||
|
* ira-int.h (struct ira_allocno): Likewise.
|
||||||
|
* df-scan.c (struct df_collection_rec): Likewise.
|
||||||
|
* ira.c (struct equivalence): Likewise.
|
||||||
|
* function.c (struct temp_slot): Likewise.
|
||||||
|
* cfgloop.h (struct loop): Likewise.
|
||||||
|
|
||||||
2009-03-18 Sebastian Pop <sebastian.pop@amd.com>
|
2009-03-18 Sebastian Pop <sebastian.pop@amd.com>
|
||||||
|
|
||||||
PR middle-end/39447
|
PR middle-end/39447
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Natural loop functions
|
/* Natural loop functions
|
||||||
Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GCC.
|
This file is part of GCC.
|
||||||
|
|
||||||
|
@ -105,6 +105,9 @@ struct loop GTY ((chain_next ("%h.next")))
|
||||||
/* Index into loops array. */
|
/* Index into loops array. */
|
||||||
int num;
|
int num;
|
||||||
|
|
||||||
|
/* Number of loop insns. */
|
||||||
|
unsigned ninsns;
|
||||||
|
|
||||||
/* Basic block of loop header. */
|
/* Basic block of loop header. */
|
||||||
struct basic_block_def *header;
|
struct basic_block_def *header;
|
||||||
|
|
||||||
|
@ -114,9 +117,6 @@ struct loop GTY ((chain_next ("%h.next")))
|
||||||
/* For loop unrolling/peeling decision. */
|
/* For loop unrolling/peeling decision. */
|
||||||
struct lpt_decision lpt_decision;
|
struct lpt_decision lpt_decision;
|
||||||
|
|
||||||
/* Number of loop insns. */
|
|
||||||
unsigned ninsns;
|
|
||||||
|
|
||||||
/* Average number of executed insns per iteration. */
|
/* Average number of executed insns per iteration. */
|
||||||
unsigned av_ninsns;
|
unsigned av_ninsns;
|
||||||
|
|
||||||
|
@ -142,19 +142,20 @@ struct loop GTY ((chain_next ("%h.next")))
|
||||||
information in this field. */
|
information in this field. */
|
||||||
tree nb_iterations;
|
tree nb_iterations;
|
||||||
|
|
||||||
/* An integer estimation of the number of iterations. Estimate_state
|
|
||||||
describes what is the state of the estimation. */
|
|
||||||
enum loop_estimation estimate_state;
|
|
||||||
|
|
||||||
/* An integer guaranteed to bound the number of iterations of the loop
|
/* An integer guaranteed to bound the number of iterations of the loop
|
||||||
from above. */
|
from above. */
|
||||||
bool any_upper_bound;
|
|
||||||
double_int nb_iterations_upper_bound;
|
double_int nb_iterations_upper_bound;
|
||||||
|
|
||||||
/* An integer giving the expected number of iterations of the loop. */
|
/* An integer giving the expected number of iterations of the loop. */
|
||||||
bool any_estimate;
|
|
||||||
double_int nb_iterations_estimate;
|
double_int nb_iterations_estimate;
|
||||||
|
|
||||||
|
bool any_upper_bound;
|
||||||
|
bool any_estimate;
|
||||||
|
|
||||||
|
/* An integer estimation of the number of iterations. Estimate_state
|
||||||
|
describes what is the state of the estimation. */
|
||||||
|
enum loop_estimation estimate_state;
|
||||||
|
|
||||||
/* Upper bound on number of iterations of a loop. */
|
/* Upper bound on number of iterations of a loop. */
|
||||||
struct nb_iter_bound *bounds;
|
struct nb_iter_bound *bounds;
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2009-03-18 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* parser.c (struct cp_token): Reorder fields for 64-bit hosts.
|
||||||
|
(eof_token): Adjust.
|
||||||
|
|
||||||
2009-03-18 H.J. Lu <hongjiu.lu@intel.com>
|
2009-03-18 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
PR c++/39425
|
PR c++/39425
|
||||||
|
|
|
@ -77,6 +77,8 @@ typedef struct cp_token GTY (())
|
||||||
KEYWORD is RID_MAX) iff this name was looked up and found to be
|
KEYWORD is RID_MAX) iff this name was looked up and found to be
|
||||||
ambiguous. An error has already been reported. */
|
ambiguous. An error has already been reported. */
|
||||||
BOOL_BITFIELD ambiguous_p : 1;
|
BOOL_BITFIELD ambiguous_p : 1;
|
||||||
|
/* The location at which this token was found. */
|
||||||
|
location_t location;
|
||||||
/* The value associated with this token, if any. */
|
/* The value associated with this token, if any. */
|
||||||
union cp_token_value {
|
union cp_token_value {
|
||||||
/* Used for CPP_NESTED_NAME_SPECIFIER and CPP_TEMPLATE_ID. */
|
/* Used for CPP_NESTED_NAME_SPECIFIER and CPP_TEMPLATE_ID. */
|
||||||
|
@ -84,8 +86,6 @@ typedef struct cp_token GTY (())
|
||||||
/* Use for all other tokens. */
|
/* Use for all other tokens. */
|
||||||
tree GTY((tag ("0"))) value;
|
tree GTY((tag ("0"))) value;
|
||||||
} GTY((desc ("(%1.type == CPP_TEMPLATE_ID) || (%1.type == CPP_NESTED_NAME_SPECIFIER)"))) u;
|
} GTY((desc ("(%1.type == CPP_TEMPLATE_ID) || (%1.type == CPP_NESTED_NAME_SPECIFIER)"))) u;
|
||||||
/* The location at which this token was found. */
|
|
||||||
location_t location;
|
|
||||||
} cp_token;
|
} cp_token;
|
||||||
|
|
||||||
/* We use a stack of token pointer for saving token sets. */
|
/* We use a stack of token pointer for saving token sets. */
|
||||||
|
@ -95,8 +95,7 @@ DEF_VEC_ALLOC_P (cp_token_position,heap);
|
||||||
|
|
||||||
static cp_token eof_token =
|
static cp_token eof_token =
|
||||||
{
|
{
|
||||||
CPP_EOF, RID_MAX, 0, PRAGMA_NONE, false, 0, { NULL },
|
CPP_EOF, RID_MAX, 0, PRAGMA_NONE, false, 0, 0, { NULL }
|
||||||
0
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The cp_lexer structure represents the C++ lexer. It is responsible
|
/* The cp_lexer structure represents the C++ lexer. It is responsible
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Scanning of rtl for dataflow analysis.
|
/* Scanning of rtl for dataflow analysis.
|
||||||
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
|
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
|
||||||
2008 Free Software Foundation, Inc.
|
2008, 2009 Free Software Foundation, Inc.
|
||||||
Originally contributed by Michael P. Hayes
|
Originally contributed by Michael P. Hayes
|
||||||
(m.hayes@elec.canterbury.ac.nz, mhayes@redhat.com)
|
(m.hayes@elec.canterbury.ac.nz, mhayes@redhat.com)
|
||||||
Major rewrite contributed by Danny Berlin (dberlin@dberlin.org)
|
Major rewrite contributed by Danny Berlin (dberlin@dberlin.org)
|
||||||
|
@ -85,12 +85,12 @@ static HARD_REG_SET elim_reg_set;
|
||||||
struct df_collection_rec
|
struct df_collection_rec
|
||||||
{
|
{
|
||||||
df_ref * def_vec;
|
df_ref * def_vec;
|
||||||
unsigned int next_def;
|
|
||||||
df_ref * use_vec;
|
df_ref * use_vec;
|
||||||
|
unsigned int next_def;
|
||||||
unsigned int next_use;
|
unsigned int next_use;
|
||||||
df_ref * eq_use_vec;
|
df_ref * eq_use_vec;
|
||||||
unsigned int next_eq_use;
|
|
||||||
struct df_mw_hardreg **mw_vec;
|
struct df_mw_hardreg **mw_vec;
|
||||||
|
unsigned int next_eq_use;
|
||||||
unsigned int next_mw;
|
unsigned int next_mw;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
24
gcc/df.h
24
gcc/df.h
|
@ -1,6 +1,6 @@
|
||||||
/* Form lists of pseudo register references for autoinc optimization
|
/* Form lists of pseudo register references for autoinc optimization
|
||||||
for GNU compiler. This is part of flow optimization.
|
for GNU compiler. This is part of flow optimization.
|
||||||
Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008
|
Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Originally contributed by Michael P. Hayes
|
Originally contributed by Michael P. Hayes
|
||||||
(m.hayes@elec.canterbury.ac.nz, mhayes@redhat.com)
|
(m.hayes@elec.canterbury.ac.nz, mhayes@redhat.com)
|
||||||
|
@ -535,7 +535,6 @@ struct df
|
||||||
|
|
||||||
struct dataflow *problems_in_order[DF_LAST_PROBLEM_PLUS1];
|
struct dataflow *problems_in_order[DF_LAST_PROBLEM_PLUS1];
|
||||||
struct dataflow *problems_by_index[DF_LAST_PROBLEM_PLUS1];
|
struct dataflow *problems_by_index[DF_LAST_PROBLEM_PLUS1];
|
||||||
int num_problems_defined;
|
|
||||||
|
|
||||||
/* If not NULL, this subset of blocks of the program to be
|
/* If not NULL, this subset of blocks of the program to be
|
||||||
considered for analysis. At certain times, this will contain all
|
considered for analysis. At certain times, this will contain all
|
||||||
|
@ -543,14 +542,6 @@ struct df
|
||||||
of if we are analyzing a subset. See analyze_subset. */
|
of if we are analyzing a subset. See analyze_subset. */
|
||||||
bitmap blocks_to_analyze;
|
bitmap blocks_to_analyze;
|
||||||
|
|
||||||
/* If this is true, then only a subset of the blocks of the program
|
|
||||||
is considered to compute the solutions of dataflow problems. */
|
|
||||||
bool analyze_subset;
|
|
||||||
|
|
||||||
/* True if someone added or deleted something from regs_ever_live so
|
|
||||||
that the entry and exit blocks need be reprocessed. */
|
|
||||||
bool redo_entry_and_exit;
|
|
||||||
|
|
||||||
/* The following information is really the problem data for the
|
/* The following information is really the problem data for the
|
||||||
scanning instance but it is used too often by the other problems
|
scanning instance but it is used too often by the other problems
|
||||||
to keep getting it from there. */
|
to keep getting it from there. */
|
||||||
|
@ -568,6 +559,9 @@ struct df
|
||||||
|
|
||||||
struct df_insn_info **insns; /* Insn table, indexed by insn UID. */
|
struct df_insn_info **insns; /* Insn table, indexed by insn UID. */
|
||||||
unsigned int insns_size; /* Size of insn table. */
|
unsigned int insns_size; /* Size of insn table. */
|
||||||
|
|
||||||
|
int num_problems_defined;
|
||||||
|
|
||||||
bitmap hardware_regs_used; /* The set of hardware registers used. */
|
bitmap hardware_regs_used; /* The set of hardware registers used. */
|
||||||
/* The set of hard regs that are in the artificial uses at the end
|
/* The set of hard regs that are in the artificial uses at the end
|
||||||
of a regular basic block. */
|
of a regular basic block. */
|
||||||
|
@ -609,7 +603,15 @@ struct df
|
||||||
unsigned int ref_order;
|
unsigned int ref_order;
|
||||||
|
|
||||||
/* Problem specific control information. */
|
/* Problem specific control information. */
|
||||||
enum df_changeable_flags changeable_flags;
|
ENUM_BITFIELD (df_changeable_flags) changeable_flags : 8;
|
||||||
|
|
||||||
|
/* If this is true, then only a subset of the blocks of the program
|
||||||
|
is considered to compute the solutions of dataflow problems. */
|
||||||
|
bool analyze_subset;
|
||||||
|
|
||||||
|
/* True if someone added or deleted something from regs_ever_live so
|
||||||
|
that the entry and exit blocks need be reprocessed. */
|
||||||
|
bool redo_entry_and_exit;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DF_SCAN_BB_INFO(BB) (df_scan_get_bb_info((BB)->index))
|
#define DF_SCAN_BB_INFO(BB) (df_scan_get_bb_info((BB)->index))
|
||||||
|
|
18
gcc/dse.c
18
gcc/dse.c
|
@ -1,5 +1,5 @@
|
||||||
/* RTL dead store elimination.
|
/* RTL dead store elimination.
|
||||||
Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
Contributed by Richard Sandiford <rsandifor@codesourcery.com>
|
Contributed by Richard Sandiford <rsandifor@codesourcery.com>
|
||||||
and Kenneth Zadeck <zadeck@naturalbridge.com>
|
and Kenneth Zadeck <zadeck@naturalbridge.com>
|
||||||
|
@ -464,6 +464,14 @@ struct group_info
|
||||||
canonical ordering of these that is not based on addresses. */
|
canonical ordering of these that is not based on addresses. */
|
||||||
int id;
|
int id;
|
||||||
|
|
||||||
|
/* True if there are any positions that are to be processed
|
||||||
|
globally. */
|
||||||
|
bool process_globally;
|
||||||
|
|
||||||
|
/* True if the base of this group is either the frame_pointer or
|
||||||
|
hard_frame_pointer. */
|
||||||
|
bool frame_related;
|
||||||
|
|
||||||
/* A mem wrapped around the base pointer for the group in order to
|
/* A mem wrapped around the base pointer for the group in order to
|
||||||
do read dependency. */
|
do read dependency. */
|
||||||
rtx base_mem;
|
rtx base_mem;
|
||||||
|
@ -494,14 +502,6 @@ struct group_info
|
||||||
the positions that are occupied by stores for this group. */
|
the positions that are occupied by stores for this group. */
|
||||||
bitmap group_kill;
|
bitmap group_kill;
|
||||||
|
|
||||||
/* True if there are any positions that are to be processed
|
|
||||||
globally. */
|
|
||||||
bool process_globally;
|
|
||||||
|
|
||||||
/* True if the base of this group is either the frame_pointer or
|
|
||||||
hard_frame_pointer. */
|
|
||||||
bool frame_related;
|
|
||||||
|
|
||||||
/* The offset_map is used to map the offsets from this base into
|
/* The offset_map is used to map the offsets from this base into
|
||||||
positions in the global bitmaps. It is only created after all of
|
positions in the global bitmaps. It is only created after all of
|
||||||
the all of stores have been scanned and we know which ones we
|
the all of stores have been scanned and we know which ones we
|
||||||
|
|
|
@ -458,8 +458,6 @@ struct temp_slot GTY(())
|
||||||
struct temp_slot *prev;
|
struct temp_slot *prev;
|
||||||
/* The rtx to used to reference the slot. */
|
/* The rtx to used to reference the slot. */
|
||||||
rtx slot;
|
rtx slot;
|
||||||
/* The alignment (in bits) of the slot. */
|
|
||||||
unsigned int align;
|
|
||||||
/* The size, in units, of the slot. */
|
/* The size, in units, of the slot. */
|
||||||
HOST_WIDE_INT size;
|
HOST_WIDE_INT size;
|
||||||
/* The type of the object in the slot, or zero if it doesn't correspond
|
/* The type of the object in the slot, or zero if it doesn't correspond
|
||||||
|
@ -467,6 +465,8 @@ struct temp_slot GTY(())
|
||||||
It can be reused if objects of the type of the new slot will always
|
It can be reused if objects of the type of the new slot will always
|
||||||
conflict with objects of the type of the old slot. */
|
conflict with objects of the type of the old slot. */
|
||||||
tree type;
|
tree type;
|
||||||
|
/* The alignment (in bits) of the slot. */
|
||||||
|
unsigned int align;
|
||||||
/* Nonzero if this temporary is currently in use. */
|
/* Nonzero if this temporary is currently in use. */
|
||||||
char in_use;
|
char in_use;
|
||||||
/* Nonzero if this temporary has its address taken. */
|
/* Nonzero if this temporary has its address taken. */
|
||||||
|
|
|
@ -240,8 +240,6 @@ struct ira_allocno
|
||||||
/* Mode of the allocno which is the mode of the corresponding
|
/* Mode of the allocno which is the mode of the corresponding
|
||||||
pseudo-register. */
|
pseudo-register. */
|
||||||
enum machine_mode mode;
|
enum machine_mode mode;
|
||||||
/* Final rtx representation of the allocno. */
|
|
||||||
rtx reg;
|
|
||||||
/* Hard register assigned to given allocno. Negative value means
|
/* Hard register assigned to given allocno. Negative value means
|
||||||
that memory was allocated to the allocno. During the reload,
|
that memory was allocated to the allocno. During the reload,
|
||||||
spilled allocno has value equal to the corresponding stack slot
|
spilled allocno has value equal to the corresponding stack slot
|
||||||
|
@ -249,6 +247,8 @@ struct ira_allocno
|
||||||
reload (at this point pseudo-register has only one allocno) which
|
reload (at this point pseudo-register has only one allocno) which
|
||||||
did not get stack slot yet. */
|
did not get stack slot yet. */
|
||||||
int hard_regno;
|
int hard_regno;
|
||||||
|
/* Final rtx representation of the allocno. */
|
||||||
|
rtx reg;
|
||||||
/* Allocnos with the same regno are linked by the following member.
|
/* Allocnos with the same regno are linked by the following member.
|
||||||
Allocnos corresponding to inner loops are first in the list (it
|
Allocnos corresponding to inner loops are first in the list (it
|
||||||
corresponds to depth-first traverse of the loops). */
|
corresponds to depth-first traverse of the loops). */
|
||||||
|
@ -312,33 +312,29 @@ struct ira_allocno
|
||||||
correspondingly minimal and maximal conflict ids of allocnos with
|
correspondingly minimal and maximal conflict ids of allocnos with
|
||||||
which given allocno can conflict. */
|
which given allocno can conflict. */
|
||||||
int min, max;
|
int min, max;
|
||||||
/* The unique member value represents given allocno in conflict bit
|
|
||||||
vectors. */
|
|
||||||
int conflict_id;
|
|
||||||
/* Vector of accumulated conflicting allocnos with NULL end marker
|
/* Vector of accumulated conflicting allocnos with NULL end marker
|
||||||
(if CONFLICT_VEC_P is true) or conflict bit vector otherwise.
|
(if CONFLICT_VEC_P is true) or conflict bit vector otherwise.
|
||||||
Only allocnos with the same cover class are in the vector or in
|
Only allocnos with the same cover class are in the vector or in
|
||||||
the bit vector. */
|
the bit vector. */
|
||||||
void *conflict_allocno_array;
|
void *conflict_allocno_array;
|
||||||
|
/* The unique member value represents given allocno in conflict bit
|
||||||
|
vectors. */
|
||||||
|
int conflict_id;
|
||||||
/* Allocated size of the previous array. */
|
/* Allocated size of the previous array. */
|
||||||
unsigned int conflict_allocno_array_size;
|
unsigned int conflict_allocno_array_size;
|
||||||
/* Number of accumulated conflicts in the vector of conflicting
|
|
||||||
allocnos. */
|
|
||||||
int conflict_allocnos_num;
|
|
||||||
/* Initial and accumulated hard registers conflicting with this
|
/* Initial and accumulated hard registers conflicting with this
|
||||||
allocno and as a consequences can not be assigned to the allocno.
|
allocno and as a consequences can not be assigned to the allocno.
|
||||||
All non-allocatable hard regs and hard regs of cover classes
|
All non-allocatable hard regs and hard regs of cover classes
|
||||||
different from given allocno one are included in the sets. */
|
different from given allocno one are included in the sets. */
|
||||||
HARD_REG_SET conflict_hard_regs, total_conflict_hard_regs;
|
HARD_REG_SET conflict_hard_regs, total_conflict_hard_regs;
|
||||||
|
/* Number of accumulated conflicts in the vector of conflicting
|
||||||
|
allocnos. */
|
||||||
|
int conflict_allocnos_num;
|
||||||
/* Accumulated frequency of calls which given allocno
|
/* Accumulated frequency of calls which given allocno
|
||||||
intersects. */
|
intersects. */
|
||||||
int call_freq;
|
int call_freq;
|
||||||
/* Accumulated number of the intersected calls. */
|
/* Accumulated number of the intersected calls. */
|
||||||
int calls_crossed_num;
|
int calls_crossed_num;
|
||||||
/* Non NULL if we remove restoring value from given allocno to
|
|
||||||
MEM_OPTIMIZED_DEST at loop exit (see ira-emit.c) because the
|
|
||||||
allocno value is not changed inside the loop. */
|
|
||||||
ira_allocno_t mem_optimized_dest;
|
|
||||||
/* TRUE if the allocno assigned to memory was a destination of
|
/* TRUE if the allocno assigned to memory was a destination of
|
||||||
removed move (see ira-emit.c) at loop exit because the value of
|
removed move (see ira-emit.c) at loop exit because the value of
|
||||||
the corresponding pseudo-register is not changed inside the
|
the corresponding pseudo-register is not changed inside the
|
||||||
|
@ -383,6 +379,10 @@ struct ira_allocno
|
||||||
vector where a bit with given index represents allocno with the
|
vector where a bit with given index represents allocno with the
|
||||||
same number. */
|
same number. */
|
||||||
unsigned int conflict_vec_p : 1;
|
unsigned int conflict_vec_p : 1;
|
||||||
|
/* Non NULL if we remove restoring value from given allocno to
|
||||||
|
MEM_OPTIMIZED_DEST at loop exit (see ira-emit.c) because the
|
||||||
|
allocno value is not changed inside the loop. */
|
||||||
|
ira_allocno_t mem_optimized_dest;
|
||||||
/* Array of usage costs (accumulated and the one updated during
|
/* Array of usage costs (accumulated and the one updated during
|
||||||
coloring) for each hard register of the allocno cover class. The
|
coloring) for each hard register of the allocno cover class. The
|
||||||
member value can be NULL if all costs are the same and equal to
|
member value can be NULL if all costs are the same and equal to
|
||||||
|
|
10
gcc/ira.c
10
gcc/ira.c
|
@ -1864,21 +1864,21 @@ mark_elimination (int from, int to)
|
||||||
|
|
||||||
struct equivalence
|
struct equivalence
|
||||||
{
|
{
|
||||||
/* Set when an attempt should be made to replace a register
|
|
||||||
with the associated src_p entry. */
|
|
||||||
char replace;
|
|
||||||
/* Set when a REG_EQUIV note is found or created. Use to
|
/* Set when a REG_EQUIV note is found or created. Use to
|
||||||
keep track of what memory accesses might be created later,
|
keep track of what memory accesses might be created later,
|
||||||
e.g. by reload. */
|
e.g. by reload. */
|
||||||
rtx replacement;
|
rtx replacement;
|
||||||
rtx *src_p;
|
rtx *src_p;
|
||||||
|
/* The list of each instruction which initializes this register. */
|
||||||
|
rtx init_insns;
|
||||||
/* Loop depth is used to recognize equivalences which appear
|
/* Loop depth is used to recognize equivalences which appear
|
||||||
to be present within the same loop (or in an inner loop). */
|
to be present within the same loop (or in an inner loop). */
|
||||||
int loop_depth;
|
int loop_depth;
|
||||||
/* The list of each instruction which initializes this register. */
|
|
||||||
rtx init_insns;
|
|
||||||
/* Nonzero if this had a preexisting REG_EQUIV note. */
|
/* Nonzero if this had a preexisting REG_EQUIV note. */
|
||||||
int is_arg_equivalence;
|
int is_arg_equivalence;
|
||||||
|
/* Set when an attempt should be made to replace a register
|
||||||
|
with the associated src_p entry. */
|
||||||
|
char replace;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* reg_equiv[N] (where N is a pseudo reg number) is the equivalence
|
/* reg_equiv[N] (where N is a pseudo reg number) is the equivalence
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Matrix layout transformations.
|
/* Matrix layout transformations.
|
||||||
Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
|
Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||||
Contributed by Razya Ladelsky <razya@il.ibm.com>
|
Contributed by Razya Ladelsky <razya@il.ibm.com>
|
||||||
Originally written by Revital Eres and Mustafa Hagog.
|
Originally written by Revital Eres and Mustafa Hagog.
|
||||||
|
|
||||||
|
@ -261,9 +261,6 @@ struct matrix_info
|
||||||
|
|
||||||
gimple min_indirect_level_escape_stmt;
|
gimple min_indirect_level_escape_stmt;
|
||||||
|
|
||||||
/* Is the matrix transposed. */
|
|
||||||
bool is_transposed_p;
|
|
||||||
|
|
||||||
/* Hold the allocation site for each level (dimension).
|
/* Hold the allocation site for each level (dimension).
|
||||||
We can use NUM_DIMS as the upper bound and allocate the array
|
We can use NUM_DIMS as the upper bound and allocate the array
|
||||||
once with this number of elements and no need to use realloc and
|
once with this number of elements and no need to use realloc and
|
||||||
|
@ -272,6 +269,9 @@ struct matrix_info
|
||||||
|
|
||||||
int max_malloced_level;
|
int max_malloced_level;
|
||||||
|
|
||||||
|
/* Is the matrix transposed. */
|
||||||
|
bool is_transposed_p;
|
||||||
|
|
||||||
/* The location of the allocation sites (they must be in one
|
/* The location of the allocation sites (they must be in one
|
||||||
function). */
|
function). */
|
||||||
tree allocation_function_decl;
|
tree allocation_function_decl;
|
||||||
|
@ -303,7 +303,7 @@ struct matrix_info
|
||||||
|
|
||||||
/* An array of the accesses to be flattened.
|
/* An array of the accesses to be flattened.
|
||||||
elements are of type "struct access_site_info *". */
|
elements are of type "struct access_site_info *". */
|
||||||
VEC (access_site_info_p, heap) * access_l;
|
VEC (access_site_info_p, heap) * access_l;
|
||||||
|
|
||||||
/* A map of how the dimensions will be organized at the end of
|
/* A map of how the dimensions will be organized at the end of
|
||||||
the analyses. */
|
the analyses. */
|
||||||
|
|
|
@ -141,10 +141,10 @@ typedef struct
|
||||||
stricter alignment; OFFSET is the offset of the MEM within that object. */
|
stricter alignment; OFFSET is the offset of the MEM within that object. */
|
||||||
typedef struct mem_attrs GTY(())
|
typedef struct mem_attrs GTY(())
|
||||||
{
|
{
|
||||||
alias_set_type alias; /* Memory alias set. */
|
|
||||||
tree expr; /* expr corresponding to MEM. */
|
tree expr; /* expr corresponding to MEM. */
|
||||||
rtx offset; /* Offset from start of DECL, as CONST_INT. */
|
rtx offset; /* Offset from start of DECL, as CONST_INT. */
|
||||||
rtx size; /* Size in bytes, as a CONST_INT. */
|
rtx size; /* Size in bytes, as a CONST_INT. */
|
||||||
|
alias_set_type alias; /* Memory alias set. */
|
||||||
unsigned int align; /* Alignment of MEM in bits. */
|
unsigned int align; /* Alignment of MEM in bits. */
|
||||||
} mem_attrs;
|
} mem_attrs;
|
||||||
|
|
||||||
|
|
|
@ -291,14 +291,6 @@ struct data_dependence_relation
|
||||||
struct data_reference *a;
|
struct data_reference *a;
|
||||||
struct data_reference *b;
|
struct data_reference *b;
|
||||||
|
|
||||||
/* When the dependence relation is affine, it can be represented by
|
|
||||||
a distance vector. */
|
|
||||||
bool affine_p;
|
|
||||||
|
|
||||||
/* Set to true when the dependence relation is on the same data
|
|
||||||
access. */
|
|
||||||
bool self_reference_p;
|
|
||||||
|
|
||||||
/* A "yes/no/maybe" field for the dependence relation:
|
/* A "yes/no/maybe" field for the dependence relation:
|
||||||
|
|
||||||
- when "ARE_DEPENDENT == NULL_TREE", there exist a dependence
|
- when "ARE_DEPENDENT == NULL_TREE", there exist a dependence
|
||||||
|
@ -320,18 +312,26 @@ struct data_dependence_relation
|
||||||
/* The analyzed loop nest. */
|
/* The analyzed loop nest. */
|
||||||
VEC (loop_p, heap) *loop_nest;
|
VEC (loop_p, heap) *loop_nest;
|
||||||
|
|
||||||
/* An index in loop_nest for the innermost loop that varies for
|
|
||||||
this data dependence relation. */
|
|
||||||
unsigned inner_loop;
|
|
||||||
|
|
||||||
/* The classic direction vector. */
|
/* The classic direction vector. */
|
||||||
VEC (lambda_vector, heap) *dir_vects;
|
VEC (lambda_vector, heap) *dir_vects;
|
||||||
|
|
||||||
/* The classic distance vector. */
|
/* The classic distance vector. */
|
||||||
VEC (lambda_vector, heap) *dist_vects;
|
VEC (lambda_vector, heap) *dist_vects;
|
||||||
|
|
||||||
|
/* An index in loop_nest for the innermost loop that varies for
|
||||||
|
this data dependence relation. */
|
||||||
|
unsigned inner_loop;
|
||||||
|
|
||||||
/* Is the dependence reversed with respect to the lexicographic order? */
|
/* Is the dependence reversed with respect to the lexicographic order? */
|
||||||
bool reversed_p;
|
bool reversed_p;
|
||||||
|
|
||||||
|
/* When the dependence relation is affine, it can be represented by
|
||||||
|
a distance vector. */
|
||||||
|
bool affine_p;
|
||||||
|
|
||||||
|
/* Set to true when the dependence relation is on the same data
|
||||||
|
access. */
|
||||||
|
bool self_reference_p;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct data_dependence_relation *ddr_p;
|
typedef struct data_dependence_relation *ddr_p;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Induction variable optimizations.
|
/* Induction variable optimizations.
|
||||||
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Free Software
|
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
||||||
Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GCC.
|
This file is part of GCC.
|
||||||
|
|
||||||
|
@ -219,15 +219,12 @@ struct ivopts_data
|
||||||
/* The currently optimized loop. */
|
/* The currently optimized loop. */
|
||||||
struct loop *current_loop;
|
struct loop *current_loop;
|
||||||
|
|
||||||
/* Are we optimizing for speed? */
|
/* Numbers of iterations for all exits of the current loop. */
|
||||||
bool speed;
|
struct pointer_map_t *niters;
|
||||||
|
|
||||||
/* Number of registers used in it. */
|
/* Number of registers used in it. */
|
||||||
unsigned regs_used;
|
unsigned regs_used;
|
||||||
|
|
||||||
/* Numbers of iterations for all exits of the current loop. */
|
|
||||||
struct pointer_map_t *niters;
|
|
||||||
|
|
||||||
/* The size of version_info array allocated. */
|
/* The size of version_info array allocated. */
|
||||||
unsigned version_info_size;
|
unsigned version_info_size;
|
||||||
|
|
||||||
|
@ -237,9 +234,6 @@ struct ivopts_data
|
||||||
/* The bitmap of indices in version_info whose value was changed. */
|
/* The bitmap of indices in version_info whose value was changed. */
|
||||||
bitmap relevant;
|
bitmap relevant;
|
||||||
|
|
||||||
/* The maximum invariant id. */
|
|
||||||
unsigned max_inv_id;
|
|
||||||
|
|
||||||
/* The uses of induction variables. */
|
/* The uses of induction variables. */
|
||||||
VEC(iv_use_p,heap) *iv_uses;
|
VEC(iv_use_p,heap) *iv_uses;
|
||||||
|
|
||||||
|
@ -249,9 +243,15 @@ struct ivopts_data
|
||||||
/* A bitmap of important candidates. */
|
/* A bitmap of important candidates. */
|
||||||
bitmap important_candidates;
|
bitmap important_candidates;
|
||||||
|
|
||||||
|
/* The maximum invariant id. */
|
||||||
|
unsigned max_inv_id;
|
||||||
|
|
||||||
/* Whether to consider just related and important candidates when replacing a
|
/* Whether to consider just related and important candidates when replacing a
|
||||||
use. */
|
use. */
|
||||||
bool consider_all_candidates;
|
bool consider_all_candidates;
|
||||||
|
|
||||||
|
/* Are we optimizing for speed? */
|
||||||
|
bool speed;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* An assignment of iv candidates to uses. */
|
/* An assignment of iv candidates to uses. */
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2009-03-18 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* include/cpplib.h (struct cpp_dir): Reorder fields for 64-bit hosts.
|
||||||
|
|
||||||
2009-02-21 Joseph Myers <joseph@codesourcery.com>
|
2009-02-21 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* lex.c (lex_string): Return a CPP_LESS token for missing '>' in a
|
* lex.c (lex_string): Return a CPP_LESS token for missing '>' in a
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Definitions for CPP library.
|
/* Definitions for CPP library.
|
||||||
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
||||||
2004, 2005, 2007, 2008
|
2004, 2005, 2007, 2008, 2009
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Per Bothner, 1994-95.
|
Written by Per Bothner, 1994-95.
|
||||||
|
|
||||||
|
@ -516,14 +516,17 @@ struct cpp_dir
|
||||||
char *name;
|
char *name;
|
||||||
unsigned int len;
|
unsigned int len;
|
||||||
|
|
||||||
/* The canonicalized NAME as determined by lrealpath. This field
|
|
||||||
is only used by hosts that lack reliable inode numbers. */
|
|
||||||
char *canonical_name;
|
|
||||||
|
|
||||||
/* One if a system header, two if a system header that has extern
|
/* One if a system header, two if a system header that has extern
|
||||||
"C" guards for C++. */
|
"C" guards for C++. */
|
||||||
unsigned char sysp;
|
unsigned char sysp;
|
||||||
|
|
||||||
|
/* Is this a user-supplied directory? */
|
||||||
|
bool user_supplied_p;
|
||||||
|
|
||||||
|
/* The canonicalized NAME as determined by lrealpath. This field
|
||||||
|
is only used by hosts that lack reliable inode numbers. */
|
||||||
|
char *canonical_name;
|
||||||
|
|
||||||
/* Mapping of file names for this directory for MS-DOS and related
|
/* Mapping of file names for this directory for MS-DOS and related
|
||||||
platforms. A NULL-terminated array of (from, to) pairs. */
|
platforms. A NULL-terminated array of (from, to) pairs. */
|
||||||
const char **name_map;
|
const char **name_map;
|
||||||
|
@ -538,9 +541,6 @@ struct cpp_dir
|
||||||
directories in the search path. */
|
directories in the search path. */
|
||||||
ino_t ino;
|
ino_t ino;
|
||||||
dev_t dev;
|
dev_t dev;
|
||||||
|
|
||||||
/* Is this a user-supplied directory? */
|
|
||||||
bool user_supplied_p;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Name under which this program was invoked. */
|
/* Name under which this program was invoked. */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue