Commit ccdbfe93 by Bill Schmidt Committed by William Schmidt

re PR middle-end/55492 (__atomic_load doesn't match ACQUIRE memory model)

2012-09-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	PR tree-optimization/55492
	* doc/invoke.texi (max-slsr-cand-scan): New description.
	* gimple-ssa-strength-reduction.c (find_basis_for_candidate): Limit
	the time spent searching for a basis.
	* params.def (PARAM_MAX_SLSR_CANDIDATE_SCAN): New param.

From-SVN: r191178
parent b8f4e58f
2012-09-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/55492
* doc/invoke.texi (max-slsr-cand-scan): New description.
* gimple-ssa-strength-reduction.c (find_basis_for_candidate): Limit
the time spent searching for a basis.
* params.def (PARAM_MAX_SLSR_CANDIDATE_SCAN): New param.
2012-09-11 Richard Guenther <rguenther@suse.de> 2012-09-11 Richard Guenther <rguenther@suse.de>
* gimple.h (gimple_register_type): Remove. * gimple.h (gimple_register_type): Remove.
......
...@@ -9407,6 +9407,11 @@ having a regular register file and accurate register pressure classes. ...@@ -9407,6 +9407,11 @@ having a regular register file and accurate register pressure classes.
See @file{haifa-sched.c} in the GCC sources for more details. See @file{haifa-sched.c} in the GCC sources for more details.
The default choice depends on the target. The default choice depends on the target.
@item max-slsr-cand-scan
Set the maximum number of existing candidates that will be considered when
seeking a basis for a new straight-line strength reduction candidate.
@end table @end table
@end table @end table
......
...@@ -54,6 +54,7 @@ along with GCC; see the file COPYING3. If not see ...@@ -54,6 +54,7 @@ along with GCC; see the file COPYING3. If not see
#include "domwalk.h" #include "domwalk.h"
#include "pointer-set.h" #include "pointer-set.h"
#include "expmed.h" #include "expmed.h"
#include "params.h"
/* Information about a strength reduction candidate. Each statement /* Information about a strength reduction candidate. Each statement
in the candidate table represents an expression of one of the in the candidate table represents an expression of one of the
...@@ -353,10 +354,14 @@ find_basis_for_candidate (slsr_cand_t c) ...@@ -353,10 +354,14 @@ find_basis_for_candidate (slsr_cand_t c)
cand_chain_t chain; cand_chain_t chain;
slsr_cand_t basis = NULL; slsr_cand_t basis = NULL;
// Limit potential of N^2 behavior for long candidate chains.
int iters = 0;
int max_iters = PARAM_VALUE (PARAM_MAX_SLSR_CANDIDATE_SCAN);
mapping_key.base_expr = c->base_expr; mapping_key.base_expr = c->base_expr;
chain = (cand_chain_t) htab_find (base_cand_map, &mapping_key); chain = (cand_chain_t) htab_find (base_cand_map, &mapping_key);
for (; chain; chain = chain->next) for (; chain && iters < max_iters; chain = chain->next, ++iters)
{ {
slsr_cand_t one_basis = chain->cand; slsr_cand_t one_basis = chain->cand;
......
...@@ -979,6 +979,13 @@ DEFPARAM (PARAM_SCHED_PRESSURE_ALGORITHM, ...@@ -979,6 +979,13 @@ DEFPARAM (PARAM_SCHED_PRESSURE_ALGORITHM,
"Which -fsched-pressure algorithm to apply", "Which -fsched-pressure algorithm to apply",
1, 1, 2) 1, 1, 2)
/* Maximum length of candidate scans in straight-line strength reduction. */
DEFPARAM (PARAM_MAX_SLSR_CANDIDATE_SCAN,
"max-slsr-cand-scan",
"Maximum length of candidate scans for straight-line "
"strength reduction",
50, 1, 999999)
/* /*
Local variables: Local variables:
mode:c mode:c
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment