Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP4:GA
gcc33
pathlength.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File pathlength.patch of Package gcc33
* Makefile.in (cse.o): Add params.h dependency. * cse.c: Include params.h. (PATHLENGTH): Removed. (struct cse_basic_block_data): Make path array dynamic. (cse_end_of_basic_block): Use PARAM_MAX_CSE_PATH_LENGTH instead of PATHLENGTH. (cse_main, cse_basic_block): Allocate path array. * params.def (PARAM_MAX_CSE_PATH_LENGTH): New. Index: gcc/Makefile.in =================================================================== --- gcc/Makefile.in.orig 2009-11-20 13:04:56.000000000 +0100 +++ gcc/Makefile.in 2009-11-20 13:05:39.000000000 +0100 @@ -1520,7 +1520,7 @@ cselib.o : cselib.c $(CONFIG_H) $(SYSTEM output.h function.h cselib.h $(GGC_H) $(TM_P_H) gt-cselib.h cse.o : cse.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) hard-reg-set.h flags.h \ real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h output.h function.h \ - $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) $(TIMEVAR_H) + $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) $(TIMEVAR_H) $(PARAMS_H) gcse.o : gcse.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) hard-reg-set.h \ flags.h real.h insn-config.h ggc.h $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) \ function.h output.h toplev.h $(TM_P_H) $(PARAMS_H) except.h gt-gcse.h Index: gcc/cse.c =================================================================== --- gcc/cse.c.orig 2009-11-20 13:04:56.000000000 +0100 +++ gcc/cse.c 2009-11-20 13:05:39.000000000 +0100 @@ -38,6 +38,7 @@ Software Foundation, 59 Temple Place - S #include "output.h" #include "ggc.h" #include "timevar.h" +#include "params.h" /* The basic idea of common subexpression elimination is to go through the code, keeping a record of expressions that would @@ -561,10 +562,6 @@ static struct table_elt *last_jump_equiv static int constant_pool_entries_cost; -/* Define maximum length of a branch path. */ - -#define PATHLENGTH 10 - /* This data describes a block that will be processed by cse_basic_block. */ struct cse_basic_block_data @@ -588,7 +585,7 @@ struct cse_basic_block_data except that it is used when the destination label is not preceded by a BARRIER. */ enum taken {TAKEN, NOT_TAKEN, AROUND} status; - } path[PATHLENGTH]; + } *path; }; /* Nonzero if X has the form (PLUS frame-pointer integer). We check for @@ -7019,7 +7016,7 @@ cse_end_of_basic_block (insn, data, foll In this case invalidate_skipped_block will be called to invalidate any registers set in the block when following the jump. */ - else if ((follow_jumps || skip_blocks) && path_size < PATHLENGTH - 1 + else if ((follow_jumps || skip_blocks) && path_size < PARAM_VALUE (PARAM_MAX_CSE_PATH_LENGTH) - 1 && GET_CODE (p) == JUMP_INSN && GET_CODE (PATTERN (p)) == SET && GET_CODE (SET_SRC (PATTERN (p))) == IF_THEN_ELSE @@ -7149,6 +7146,9 @@ cse_main (f, nregs, after_loop, file) rtx insn = f; int i; + val.path = xmalloc (sizeof (struct branch_path) + * PARAM_VALUE (PARAM_MAX_CSE_PATH_LENGTH)); + cse_jumps_altered = 0; recorded_label_ref = 0; constant_pool_entries_cost = 0; @@ -7272,6 +7272,7 @@ cse_main (f, nregs, after_loop, file) end_alias_analysis (); free (uid_cuid); free (reg_eqv_table); + free (val.path); return cse_jumps_altered || recorded_label_ref; } @@ -7449,7 +7450,10 @@ cse_basic_block (from, to, next_branch, following branches in this case. */ to_usage = 0; val.path_size = 0; + val.path = xmalloc (sizeof (struct branch_path) + * PARAM_VALUE (PARAM_MAX_CSE_PATH_LENGTH)); cse_end_of_basic_block (insn, &val, 0, 0, 0); + free (val.path); /* If the tables we allocated have enough space left to handle all the SETs in the next basic block, Index: gcc/params.def =================================================================== --- gcc/params.def.orig 2009-11-20 13:04:56.000000000 +0100 +++ gcc/params.def 2009-11-20 13:05:39.000000000 +0100 @@ -294,6 +294,12 @@ DEFPARAM(PARAM_MISS_FALLTHRU_COST, "The cost of incorrectly predicted branch that is not taken", 0) +/* The maximum length of path considered in cse. */ +DEFPARAM(PARAM_MAX_CSE_PATH_LENGTH, + "max-cse-path-length", + "The maximum length of path considered in cse.", + 10) + #ifdef ENABLE_GC_ALWAYS_COLLECT # define GGC_MIN_EXPAND_DEFAULT 0 # define GGC_MIN_HEAPSIZE_DEFAULT 0
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor