summaryrefslogtreecommitdiff
path: root/gcc/loop-unroll.c
diff options
context:
space:
mode:
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>2009-11-25 10:55:54 +0000
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>2009-11-25 10:55:54 +0000
commit48e1416a24d50cacbb2a5e06a9ee61dd8cbee313 (patch)
tree4375f002b368e9044a1d9ca874026be04b7c3105 /gcc/loop-unroll.c
parent7f0f96af0499f0a9f8ee7198823d311f1a66ca9b (diff)
downloadgcc-48e1416a24d50cacbb2a5e06a9ee61dd8cbee313.tar.gz
Remove trailing white spaces.
2009-11-25 H.J. Lu <hongjiu.lu@intel.com> * alias.c: Remove trailing white spaces. * alloc-pool.c: Likewise. * alloc-pool.h: Likewise. * attribs.c: Likewise. * auto-inc-dec.c: Likewise. * basic-block.h: Likewise. * bb-reorder.c: Likewise. * bt-load.c: Likewise. * builtins.c: Likewise. * builtins.def: Likewise. * c-common.c: Likewise. * c-common.h: Likewise. * c-cppbuiltin.c: Likewise. * c-decl.c: Likewise. * c-format.c: Likewise. * c-lex.c: Likewise. * c-omp.c: Likewise. * c-opts.c: Likewise. * c-parser.c: Likewise. * c-pretty-print.c: Likewise. * c-tree.h: Likewise. * c-typeck.c: Likewise. * caller-save.c: Likewise. * calls.c: Likewise. * cfg.c: Likewise. * cfganal.c: Likewise. * cfgexpand.c: Likewise. * cfghooks.c: Likewise. * cfghooks.h: Likewise. * cfglayout.c: Likewise. * cfgloop.c: Likewise. * cfgloop.h: Likewise. * cfgloopmanip.c: Likewise. * cfgrtl.c: Likewise. * cgraph.c: Likewise. * cgraph.h: Likewise. * cgraphbuild.c: Likewise. * cgraphunit.c: Likewise. * cif-code.def: Likewise. * collect2.c: Likewise. * combine.c: Likewise. * convert.c: Likewise. * coverage.c: Likewise. * crtstuff.c: Likewise. * cse.c: Likewise. * cselib.c: Likewise. * dbgcnt.c: Likewise. * dbgcnt.def: Likewise. * dbgcnt.h: Likewise. * dbxout.c: Likewise. * dce.c: Likewise. * ddg.c: Likewise. * ddg.h: Likewise. * defaults.h: Likewise. * df-byte-scan.c: Likewise. * df-core.c: Likewise. * df-problems.c: Likewise. * df-scan.c: Likewise. * df.h: Likewise. * dfp.c: Likewise. * diagnostic.c: Likewise. * diagnostic.h: Likewise. * dominance.c: Likewise. * domwalk.c: Likewise. * double-int.c: Likewise. * double-int.h: Likewise. * dse.c: Likewise. * dwarf2asm.c: Likewise. * dwarf2asm.h: Likewise. * dwarf2out.c: Likewise. * ebitmap.c: Likewise. * ebitmap.h: Likewise. * emit-rtl.c: Likewise. * et-forest.c: Likewise. * except.c: Likewise. * except.h: Likewise. * expmed.c: Likewise. * expr.c: Likewise. * expr.h: Likewise. * final.c: Likewise. * flags.h: Likewise. * fold-const.c: Likewise. * function.c: Likewise. * function.h: Likewise. * fwprop.c: Likewise. * gcc.c: Likewise. * gcov-dump.c: Likewise. * gcov-io.c: Likewise. * gcov-io.h: Likewise. * gcov.c: Likewise. * gcse.c: Likewise. * genattr.c: Likewise. * genattrtab.c: Likewise. * genautomata.c: Likewise. * genchecksum.c: Likewise. * genconfig.c: Likewise. * genflags.c: Likewise. * gengtype-parse.c: Likewise. * gengtype.c: Likewise. * gengtype.h: Likewise. * genmddeps.c: Likewise. * genmodes.c: Likewise. * genopinit.c: Likewise. * genpreds.c: Likewise. * gensupport.c: Likewise. * ggc-common.c: Likewise. * ggc-page.c: Likewise. * ggc-zone.c: Likewise. * ggc.h: Likewise. * gimple-iterator.c: Likewise. * gimple-low.c: Likewise. * gimple-pretty-print.c: Likewise. * gimple.c: Likewise. * gimple.def: Likewise. * gimple.h: Likewise. * gimplify.c: Likewise. * graphds.c: Likewise. * graphite-clast-to-gimple.c: Likewise. * gthr-nks.h: Likewise. * gthr-posix.c: Likewise. * gthr-posix.h: Likewise. * gthr-posix95.h: Likewise. * gthr-single.h: Likewise. * gthr-tpf.h: Likewise. * gthr-vxworks.h: Likewise. * gthr.h: Likewise. * haifa-sched.c: Likewise. * hard-reg-set.h: Likewise. * hooks.c: Likewise. * hooks.h: Likewise. * hosthooks.h: Likewise. * hwint.h: Likewise. * ifcvt.c: Likewise. * incpath.c: Likewise. * init-regs.c: Likewise. * integrate.c: Likewise. * ipa-cp.c: Likewise. * ipa-inline.c: Likewise. * ipa-prop.c: Likewise. * ipa-pure-const.c: Likewise. * ipa-reference.c: Likewise. * ipa-struct-reorg.c: Likewise. * ipa-struct-reorg.h: Likewise. * ipa-type-escape.c: Likewise. * ipa-type-escape.h: Likewise. * ipa-utils.c: Likewise. * ipa-utils.h: Likewise. * ipa.c: Likewise. * ira-build.c: Likewise. * ira-color.c: Likewise. * ira-conflicts.c: Likewise. * ira-costs.c: Likewise. * ira-emit.c: Likewise. * ira-int.h: Likewise. * ira-lives.c: Likewise. * ira.c: Likewise. * jump.c: Likewise. * lambda-code.c: Likewise. * lambda-mat.c: Likewise. * lambda-trans.c: Likewise. * lambda.h: Likewise. * langhooks.c: Likewise. * lcm.c: Likewise. * libgcov.c: Likewise. * lists.c: Likewise. * loop-doloop.c: Likewise. * loop-init.c: Likewise. * loop-invariant.c: Likewise. * loop-iv.c: Likewise. * loop-unroll.c: Likewise. * lower-subreg.c: Likewise. * lto-cgraph.c: Likewise. * lto-compress.c: Likewise. * lto-opts.c: Likewise. * lto-section-in.c: Likewise. * lto-section-out.c: Likewise. * lto-streamer-in.c: Likewise. * lto-streamer-out.c: Likewise. * lto-streamer.c: Likewise. * lto-streamer.h: Likewise. * lto-symtab.c: Likewise. * lto-wpa-fixup.c: Likewise. * matrix-reorg.c: Likewise. * mcf.c: Likewise. * mode-switching.c: Likewise. * modulo-sched.c: Likewise. * omega.c: Likewise. * omega.h: Likewise. * omp-low.c: Likewise. * optabs.c: Likewise. * optabs.h: Likewise. * opts-common.c: Likewise. * opts.c: Likewise. * params.def: Likewise. * params.h: Likewise. * passes.c: Likewise. * plugin.c: Likewise. * postreload-gcse.c: Likewise. * postreload.c: Likewise. * predict.c: Likewise. * predict.def: Likewise. * pretty-print.c: Likewise. * pretty-print.h: Likewise. * print-rtl.c: Likewise. * print-tree.c: Likewise. * profile.c: Likewise. * read-rtl.c: Likewise. * real.c: Likewise. * recog.c: Likewise. * reg-stack.c: Likewise. * regcprop.c: Likewise. * reginfo.c: Likewise. * regmove.c: Likewise. * regrename.c: Likewise. * regs.h: Likewise. * regstat.c: Likewise. * reload.c: Likewise. * reload1.c: Likewise. * resource.c: Likewise. * rtl.c: Likewise. * rtl.def: Likewise. * rtl.h: Likewise. * rtlanal.c: Likewise. * sbitmap.c: Likewise. * sched-deps.c: Likewise. * sched-ebb.c: Likewise. * sched-int.h: Likewise. * sched-rgn.c: Likewise. * sched-vis.c: Likewise. * sdbout.c: Likewise. * sel-sched-dump.c: Likewise. * sel-sched-dump.h: Likewise. * sel-sched-ir.c: Likewise. * sel-sched-ir.h: Likewise. * sel-sched.c: Likewise. * sel-sched.h: Likewise. * sese.c: Likewise. * sese.h: Likewise. * simplify-rtx.c: Likewise. * stack-ptr-mod.c: Likewise. * stmt.c: Likewise. * stor-layout.c: Likewise. * store-motion.c: Likewise. * stringpool.c: Likewise. * stub-objc.c: Likewise. * sync-builtins.def: Likewise. * target-def.h: Likewise. * target.h: Likewise. * targhooks.c: Likewise. * targhooks.h: Likewise. * timevar.c: Likewise. * tlink.c: Likewise. * toplev.c: Likewise. * toplev.h: Likewise. * tracer.c: Likewise. * tree-affine.c: Likewise. * tree-affine.h: Likewise. * tree-browser.def: Likewise. * tree-call-cdce.c: Likewise. * tree-cfg.c: Likewise. * tree-cfgcleanup.c: Likewise. * tree-chrec.c: Likewise. * tree-chrec.h: Likewise. * tree-complex.c: Likewise. * tree-data-ref.c: Likewise. * tree-data-ref.h: Likewise. * tree-dfa.c: Likewise. * tree-dump.c: Likewise. * tree-dump.h: Likewise. * tree-eh.c: Likewise. * tree-flow-inline.h: Likewise. * tree-flow.h: Likewise. * tree-if-conv.c: Likewise. * tree-inline.c: Likewise. * tree-into-ssa.c: Likewise. * tree-loop-distribution.c: Likewise. * tree-loop-linear.c: Likewise. * tree-mudflap.c: Likewise. * tree-nested.c: Likewise. * tree-nomudflap.c: Likewise. * tree-nrv.c: Likewise. * tree-object-size.c: Likewise. * tree-optimize.c: Likewise. * tree-outof-ssa.c: Likewise. * tree-parloops.c: Likewise. * tree-pass.h: Likewise. * tree-phinodes.c: Likewise. * tree-predcom.c: Likewise. * tree-pretty-print.c: Likewise. * tree-profile.c: Likewise. * tree-scalar-evolution.c: Likewise. * tree-ssa-address.c: Likewise. * tree-ssa-alias.c: Likewise. * tree-ssa-ccp.c: Likewise. * tree-ssa-coalesce.c: Likewise. * tree-ssa-copy.c: Likewise. * tree-ssa-copyrename.c: Likewise. * tree-ssa-dce.c: Likewise. * tree-ssa-dom.c: Likewise. * tree-ssa-dse.c: Likewise. * tree-ssa-forwprop.c: Likewise. * tree-ssa-ifcombine.c: Likewise. * tree-ssa-live.c: Likewise. * tree-ssa-live.h: Likewise. * tree-ssa-loop-ch.c: Likewise. * tree-ssa-loop-im.c: Likewise. * tree-ssa-loop-ivcanon.c: Likewise. * tree-ssa-loop-ivopts.c: Likewise. * tree-ssa-loop-manip.c: Likewise. * tree-ssa-loop-niter.c: Likewise. * tree-ssa-loop-prefetch.c: Likewise. * tree-ssa-loop-unswitch.c: Likewise. * tree-ssa-loop.c: Likewise. * tree-ssa-math-opts.c: Likewise. * tree-ssa-operands.c: Likewise. * tree-ssa-operands.h: Likewise. * tree-ssa-phiopt.c: Likewise. * tree-ssa-phiprop.c: Likewise. * tree-ssa-pre.c: Likewise. * tree-ssa-propagate.c: Likewise. * tree-ssa-reassoc.c: Likewise. * tree-ssa-sccvn.c: Likewise. * tree-ssa-sink.c: Likewise. * tree-ssa-structalias.c: Likewise. * tree-ssa-ter.c: Likewise. * tree-ssa-threadedge.c: Likewise. * tree-ssa-threadupdate.c: Likewise. * tree-ssa-uncprop.c: Likewise. * tree-ssa.c: Likewise. * tree-ssanames.c: Likewise. * tree-switch-conversion.c: Likewise. * tree-tailcall.c: Likewise. * tree-vect-data-refs.c: Likewise. * tree-vect-generic.c: Likewise. * tree-vect-loop-manip.c: Likewise. * tree-vect-loop.c: Likewise. * tree-vect-patterns.c: Likewise. * tree-vect-slp.c: Likewise. * tree-vect-stmts.c: Likewise. * tree-vectorizer.c: Likewise. * tree-vectorizer.h: Likewise. * tree-vrp.c: Likewise. * tree.c: Likewise. * tree.def: Likewise. * tree.h: Likewise. * treestruct.def: Likewise. * unwind-compat.c: Likewise. * unwind-dw2-fde-glibc.c: Likewise. * unwind-dw2.c: Likewise. * value-prof.c: Likewise. * value-prof.h: Likewise. * var-tracking.c: Likewise. * varasm.c: Likewise. * varpool.c: Likewise. * vec.c: Likewise. * vec.h: Likewise. * vmsdbgout.c: Likewise. * web.c: Likewise. * xcoffout.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154645 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/loop-unroll.c')
-rw-r--r--gcc/loop-unroll.c240
1 files changed, 120 insertions, 120 deletions
diff --git a/gcc/loop-unroll.c b/gcc/loop-unroll.c
index 8812e68805b..6b7fe8ad091 100644
--- a/gcc/loop-unroll.c
+++ b/gcc/loop-unroll.c
@@ -32,7 +32,7 @@ along with GCC; see the file COPYING3. If not see
#include "output.h"
#include "expr.h"
#include "hashtab.h"
-#include "recog.h"
+#include "recog.h"
/* This pass performs loop unrolling and peeling. We only perform these
optimizations on innermost loops (with single exception) because
@@ -82,7 +82,7 @@ struct iv_to_split
unsigned loc[3]; /* Location where the definition of the induction
variable occurs in the insn. For example if
N_LOC is 2, the expression is located at
- XEXP (XEXP (single_set, loc[0]), loc[1]). */
+ XEXP (XEXP (single_set, loc[0]), loc[1]). */
};
/* Information about accumulators to expand. */
@@ -91,14 +91,14 @@ struct var_to_expand
{
rtx insn; /* The insn in that the variable expansion occurs. */
rtx reg; /* The accumulator which is expanded. */
- VEC(rtx,heap) *var_expansions; /* The copies of the accumulator which is expanded. */
+ VEC(rtx,heap) *var_expansions; /* The copies of the accumulator which is expanded. */
struct var_to_expand *next; /* Next entry in walking order. */
- enum rtx_code op; /* The type of the accumulation - addition, subtraction
+ enum rtx_code op; /* The type of the accumulation - addition, subtraction
or multiplication. */
int expansion_count; /* Count the number of expansions generated so far. */
int reuse_expansion; /* The expansion we intend to reuse to expand
- the accumulator. If REUSE_EXPANSION is 0 reuse
- the original accumulator. Else use
+ the accumulator. If REUSE_EXPANSION is 0 reuse
+ the original accumulator. Else use
var_expansions[REUSE_EXPANSION - 1]. */
unsigned accum_pos; /* The position in which the accumulator is placed in
the insn src. For example in x = x + something
@@ -462,13 +462,13 @@ peel_loop_completely (struct loop *loop)
edge ein;
struct niter_desc *desc = get_simple_loop_desc (loop);
struct opt_info *opt_info = NULL;
-
+
npeel = desc->niter;
if (npeel)
{
bool ok;
-
+
wont_exit = sbitmap_alloc (npeel + 1);
sbitmap_ones (wont_exit);
RESET_BIT (wont_exit, 0);
@@ -479,7 +479,7 @@ peel_loop_completely (struct loop *loop)
if (flag_split_ivs_in_unroller)
opt_info = analyze_insns_in_loop (loop);
-
+
opt_info_start_duplication (opt_info);
ok = duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop),
npeel,
@@ -492,7 +492,7 @@ peel_loop_completely (struct loop *loop)
gcc_assert (ok);
free (wont_exit);
-
+
if (opt_info)
{
apply_opt_in_copies (opt_info, npeel, false, true);
@@ -609,7 +609,7 @@ decide_unroll_constant_iterations (struct loop *loop, int flags)
loop->lpt_decision.decision = LPT_UNROLL_CONSTANT;
loop->lpt_decision.times = best_unroll;
-
+
if (dump_file)
fprintf (dump_file,
";; Decided to unroll the constant times rolling loop, %d times.\n",
@@ -649,7 +649,7 @@ unroll_loop_constant_iterations (struct loop *loop)
bool exit_at_end = loop_exit_at_end_p (loop);
struct opt_info *opt_info = NULL;
bool ok;
-
+
niter = desc->niter;
/* Should not get here (such loop should be peeled instead). */
@@ -661,10 +661,10 @@ unroll_loop_constant_iterations (struct loop *loop)
sbitmap_ones (wont_exit);
remove_edges = NULL;
- if (flag_split_ivs_in_unroller
+ if (flag_split_ivs_in_unroller
|| flag_variable_expansion_in_unroller)
opt_info = analyze_insns_in_loop (loop);
-
+
if (!exit_at_end)
{
/* The exit is not at the end of the loop; leave exit test
@@ -693,8 +693,8 @@ unroll_loop_constant_iterations (struct loop *loop)
gcc_assert (ok);
if (opt_info && exit_mod > 1)
- apply_opt_in_copies (opt_info, exit_mod, false, false);
-
+ apply_opt_in_copies (opt_info, exit_mod, false, false);
+
desc->noloop_assumptions = NULL_RTX;
desc->niter -= exit_mod;
desc->niter_max -= exit_mod;
@@ -719,7 +719,7 @@ unroll_loop_constant_iterations (struct loop *loop)
RESET_BIT (wont_exit, 0);
if (desc->noloop_assumptions)
RESET_BIT (wont_exit, 1);
-
+
opt_info_start_duplication (opt_info);
ok = duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop),
exit_mod + 1,
@@ -730,7 +730,7 @@ unroll_loop_constant_iterations (struct loop *loop)
? DLTHE_RECORD_COPY_NUMBER
: 0));
gcc_assert (ok);
-
+
if (opt_info && exit_mod > 0)
apply_opt_in_copies (opt_info, exit_mod + 1, false, false);
@@ -746,7 +746,7 @@ unroll_loop_constant_iterations (struct loop *loop)
}
/* Now unroll the loop. */
-
+
opt_info_start_duplication (opt_info);
ok = duplicate_loop_to_header_edge (loop, loop_latch_edge (loop),
max_unroll,
@@ -770,7 +770,7 @@ unroll_loop_constant_iterations (struct loop *loop)
{
basic_block exit_block = get_bb_copy (desc->in_edge->src);
/* Find a new in and out edge; they are in the last copy we have made. */
-
+
if (EDGE_SUCC (exit_block, 0)->dest == desc->out_edge->dest)
{
desc->out_edge = EDGE_SUCC (exit_block, 0);
@@ -869,7 +869,7 @@ decide_unroll_runtime_iterations (struct loop *loop, int flags)
loop->lpt_decision.decision = LPT_UNROLL_RUNTIME;
loop->lpt_decision.times = i - 1;
-
+
if (dump_file)
fprintf (dump_file,
";; Decided to unroll the runtime computable "
@@ -888,7 +888,7 @@ split_edge_and_insert (edge e, rtx insns)
if (!insns)
return NULL;
- bb = split_edge (e);
+ bb = split_edge (e);
emit_insn_after (insns, BB_END (bb));
/* ??? We used to assume that INSNS can contain control flow insns, and
@@ -973,11 +973,11 @@ unroll_loop_runtime_iterations (struct loop *loop)
bool exit_at_end = loop_exit_at_end_p (loop);
struct opt_info *opt_info = NULL;
bool ok;
-
+
if (flag_split_ivs_in_unroller
|| flag_variable_expansion_in_unroller)
opt_info = analyze_insns_in_loop (loop);
-
+
/* Remember blocks whose dominators will have to be updated. */
dom_bbs = NULL;
@@ -1119,7 +1119,7 @@ unroll_loop_runtime_iterations (struct loop *loop)
sbitmap_ones (wont_exit);
RESET_BIT (wont_exit, may_exit_copy);
opt_info_start_duplication (opt_info);
-
+
ok = duplicate_loop_to_header_edge (loop, loop_latch_edge (loop),
max_unroll,
wont_exit, desc->out_edge,
@@ -1129,7 +1129,7 @@ unroll_loop_runtime_iterations (struct loop *loop)
? DLTHE_RECORD_COPY_NUMBER
: 0));
gcc_assert (ok);
-
+
if (opt_info)
{
apply_opt_in_copies (opt_info, max_unroll, true, true);
@@ -1143,7 +1143,7 @@ unroll_loop_runtime_iterations (struct loop *loop)
basic_block exit_block = get_bb_copy (desc->in_edge->src);
/* Find a new in and out edge; they are in the last copy we have
made. */
-
+
if (EDGE_SUCC (exit_block, 0)->dest == desc->out_edge->dest)
{
desc->out_edge = EDGE_SUCC (exit_block, 0);
@@ -1266,7 +1266,7 @@ decide_peel_simple (struct loop *loop, int flags)
/* Success. */
loop->lpt_decision.decision = LPT_PEEL_SIMPLE;
loop->lpt_decision.times = npeel;
-
+
if (dump_file)
fprintf (dump_file, ";; Decided to simply peel the loop, %d times.\n",
loop->lpt_decision.times);
@@ -1294,15 +1294,15 @@ peel_loop_simple (struct loop *loop)
struct niter_desc *desc = get_simple_loop_desc (loop);
struct opt_info *opt_info = NULL;
bool ok;
-
+
if (flag_split_ivs_in_unroller && npeel > 1)
opt_info = analyze_insns_in_loop (loop);
-
+
wont_exit = sbitmap_alloc (npeel + 1);
sbitmap_zero (wont_exit);
-
+
opt_info_start_duplication (opt_info);
-
+
ok = duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop),
npeel, wont_exit, NULL,
NULL, DLTHE_FLAG_UPDATE_FREQ
@@ -1312,7 +1312,7 @@ peel_loop_simple (struct loop *loop)
gcc_assert (ok);
free (wont_exit);
-
+
if (opt_info)
{
apply_opt_in_copies (opt_info, npeel, false, false);
@@ -1411,7 +1411,7 @@ decide_unroll_stupid (struct loop *loop, int flags)
loop->lpt_decision.decision = LPT_UNROLL_STUPID;
loop->lpt_decision.times = i - 1;
-
+
if (dump_file)
fprintf (dump_file,
";; Decided to unroll the loop stupidly, %d times.\n",
@@ -1443,16 +1443,16 @@ unroll_loop_stupid (struct loop *loop)
struct niter_desc *desc = get_simple_loop_desc (loop);
struct opt_info *opt_info = NULL;
bool ok;
-
+
if (flag_split_ivs_in_unroller
|| flag_variable_expansion_in_unroller)
opt_info = analyze_insns_in_loop (loop);
-
-
+
+
wont_exit = sbitmap_alloc (nunroll + 1);
sbitmap_zero (wont_exit);
opt_info_start_duplication (opt_info);
-
+
ok = duplicate_loop_to_header_edge (loop, loop_latch_edge (loop),
nunroll, wont_exit,
NULL, NULL,
@@ -1461,7 +1461,7 @@ unroll_loop_stupid (struct loop *loop)
? DLTHE_RECORD_COPY_NUMBER
: 0));
gcc_assert (ok);
-
+
if (opt_info)
{
apply_opt_in_copies (opt_info, nunroll, true, true);
@@ -1513,7 +1513,7 @@ ve_info_hash (const void *ves)
return (hashval_t) INSN_UID (((const struct var_to_expand *) ves)->insn);
}
-/* Return true if IVTS1 and IVTS2 (which are really both of type
+/* Return true if IVTS1 and IVTS2 (which are really both of type
"var_to_expand *") refer to the same instruction. */
static int
@@ -1521,7 +1521,7 @@ ve_info_eq (const void *ivts1, const void *ivts2)
{
const struct var_to_expand *const i1 = (const struct var_to_expand *) ivts1;
const struct var_to_expand *const i2 = (const struct var_to_expand *) ivts2;
-
+
return i1->insn == i2->insn;
}
@@ -1534,12 +1534,12 @@ referenced_in_one_insn_in_loop_p (struct loop *loop, rtx reg)
unsigned i;
int count_ref = 0;
rtx insn;
-
- body = get_loop_body (loop);
+
+ body = get_loop_body (loop);
for (i = 0; i < loop->num_nodes; i++)
{
bb = body[i];
-
+
FOR_BB_INSNS (bb, insn)
{
if (rtx_referenced_p (reg, insn))
@@ -1550,14 +1550,14 @@ referenced_in_one_insn_in_loop_p (struct loop *loop, rtx reg)
}
/* Determine whether INSN contains an accumulator
- which can be expanded into separate copies,
+ which can be expanded into separate copies,
one for each copy of the LOOP body.
-
+
for (i = 0 ; i < n; i++)
sum += a[i];
-
+
==>
-
+
sum += a[i]
....
i = i+1;
@@ -1567,8 +1567,8 @@ referenced_in_one_insn_in_loop_p (struct loop *loop, rtx reg)
sum2 += a[i];
....
- Return NULL if INSN contains no opportunity for expansion of accumulator.
- Otherwise, allocate a VAR_TO_EXPAND structure, fill it with the relevant
+ Return NULL if INSN contains no opportunity for expansion of accumulator.
+ Otherwise, allocate a VAR_TO_EXPAND structure, fill it with the relevant
information and return a pointer to it.
*/
@@ -1583,10 +1583,10 @@ analyze_insn_to_expand_var (struct loop *loop, rtx insn)
set = single_set (insn);
if (!set)
return NULL;
-
+
dest = SET_DEST (set);
src = SET_SRC (set);
-
+
if (GET_CODE (src) != PLUS
&& GET_CODE (src) != MINUS
&& GET_CODE (src) != MULT)
@@ -1606,12 +1606,12 @@ analyze_insn_to_expand_var (struct loop *loop, rtx insn)
op1 = XEXP (src, 0);
op2 = XEXP (src, 1);
-
+
if (!REG_P (dest)
&& !(GET_CODE (dest) == SUBREG
&& REG_P (SUBREG_REG (dest))))
return NULL;
-
+
if (rtx_equal_p (dest, op1))
accum_pos = 0;
else if (rtx_equal_p (dest, op2))
@@ -1623,7 +1623,7 @@ analyze_insn_to_expand_var (struct loop *loop, rtx insn)
the initialization of the expansions with zero and the summation of
the expansions at the end of the computation will yield wrong results
for (x = something - x) thus avoid using it in that case. */
- if (accum_pos == 1
+ if (accum_pos == 1
&& GET_CODE (src) == MINUS)
return NULL;
@@ -1631,15 +1631,15 @@ analyze_insn_to_expand_var (struct loop *loop, rtx insn)
if (!referenced_in_one_insn_in_loop_p (loop, dest))
return NULL;
-
+
if (rtx_referenced_p (dest, something))
return NULL;
-
- mode1 = GET_MODE (dest);
+
+ mode1 = GET_MODE (dest);
mode2 = GET_MODE (something);
- if ((FLOAT_MODE_P (mode1)
- || FLOAT_MODE_P (mode2))
- && !flag_associative_math)
+ if ((FLOAT_MODE_P (mode1)
+ || FLOAT_MODE_P (mode2))
+ && !flag_associative_math)
return NULL;
if (dump_file)
@@ -1660,11 +1660,11 @@ analyze_insn_to_expand_var (struct loop *loop, rtx insn)
ves->expansion_count = 0;
ves->reuse_expansion = 0;
ves->accum_pos = accum_pos;
- return ves;
+ return ves;
}
/* Determine whether there is an induction variable in INSN that
- we would like to split during unrolling.
+ we would like to split during unrolling.
I.e. replace
@@ -1684,7 +1684,7 @@ analyze_insn_to_expand_var (struct loop *loop, rtx insn)
i = i0 + 2
...
- Return NULL if INSN contains no interesting IVs. Otherwise, allocate
+ Return NULL if INSN contains no interesting IVs. Otherwise, allocate
an IV_TO_SPLIT structure, fill it with the relevant information and return a
pointer to it. */
@@ -1734,7 +1734,7 @@ analyze_iv_to_split_insn (rtx insn)
ivts->next = NULL;
ivts->n_loc = 1;
ivts->loc[0] = 1;
-
+
return ivts;
}
@@ -1757,7 +1757,7 @@ analyze_insns_in_loop (struct loop *loop)
VEC (edge, heap) *edges = get_loop_exit_edges (loop);
edge exit;
bool can_apply = false;
-
+
iv_analysis_loop_init (loop);
body = get_loop_body (loop);
@@ -1769,10 +1769,10 @@ analyze_insns_in_loop (struct loop *loop)
opt_info->iv_to_split_head = NULL;
opt_info->iv_to_split_tail = &opt_info->iv_to_split_head;
}
-
+
/* Record the loop exit bb and loop preheader before the unrolling. */
opt_info->loop_preheader = loop_preheader_edge (loop)->src;
-
+
if (VEC_length (edge, edges) == 1)
{
exit = VEC_index (edge, edges, 0);
@@ -1782,7 +1782,7 @@ analyze_insns_in_loop (struct loop *loop)
can_apply = true;
}
}
-
+
if (flag_variable_expansion_in_unroller
&& can_apply)
{
@@ -1792,7 +1792,7 @@ analyze_insns_in_loop (struct loop *loop)
opt_info->var_to_expand_head = NULL;
opt_info->var_to_expand_tail = &opt_info->var_to_expand_head;
}
-
+
for (i = 0; i < loop->num_nodes; i++)
{
bb = body[i];
@@ -1803,10 +1803,10 @@ analyze_insns_in_loop (struct loop *loop)
{
if (!INSN_P (insn))
continue;
-
+
if (opt_info->insns_to_split)
ivts = analyze_iv_to_split_insn (insn);
-
+
if (ivts)
{
slot1 = htab_find_slot (opt_info->insns_to_split, ivts, INSERT);
@@ -1816,10 +1816,10 @@ analyze_insns_in_loop (struct loop *loop)
opt_info->iv_to_split_tail = &ivts->next;
continue;
}
-
+
if (opt_info->insns_with_var_to_expand)
ves = analyze_insn_to_expand_var (loop, insn);
-
+
if (ves)
{
slot2 = htab_find_slot (opt_info->insns_with_var_to_expand, ves, INSERT);
@@ -1830,7 +1830,7 @@ analyze_insns_in_loop (struct loop *loop)
}
}
}
-
+
VEC_free (edge, heap, edges);
free (body);
return opt_info;
@@ -1839,7 +1839,7 @@ analyze_insns_in_loop (struct loop *loop)
/* Called just before loop duplication. Records start of duplicated area
to OPT_INFO. */
-static void
+static void
opt_info_start_duplication (struct opt_info *opt_info)
{
if (opt_info)
@@ -1952,7 +1952,7 @@ split_iv (struct iv_to_split *ivts, rtx insn, unsigned delta)
seq = get_insns ();
end_sequence ();
emit_insn_before (seq, insn);
-
+
if (validate_change (insn, loc, var, 0))
return;
@@ -1970,7 +1970,7 @@ split_iv (struct iv_to_split *ivts, rtx insn, unsigned delta)
emit_move_insn (dest, src);
seq = get_insns ();
end_sequence ();
-
+
emit_insn_before (seq, insn);
delete_insn (insn);
}
@@ -1982,22 +1982,22 @@ static rtx
get_expansion (struct var_to_expand *ve)
{
rtx reg;
-
+
if (ve->reuse_expansion == 0)
reg = ve->reg;
else
reg = VEC_index (rtx, ve->var_expansions, ve->reuse_expansion - 1);
-
+
if (VEC_length (rtx, ve->var_expansions) == (unsigned) ve->reuse_expansion)
ve->reuse_expansion = 0;
- else
+ else
ve->reuse_expansion++;
-
+
return reg;
}
-/* Given INSN replace the uses of the accumulator recorded in VE
+/* Given INSN replace the uses of the accumulator recorded in VE
with a new register. */
static void
@@ -2005,10 +2005,10 @@ expand_var_during_unrolling (struct var_to_expand *ve, rtx insn)
{
rtx new_reg, set;
bool really_new_expansion = false;
-
+
set = single_set (insn);
gcc_assert (set);
-
+
/* Generate a new register only if the expansion limit has not been
reached. Else reuse an already existing expansion. */
if (PARAM_VALUE (PARAM_MAX_VARIABLE_EXPANSIONS) > ve->expansion_count)
@@ -2021,7 +2021,7 @@ expand_var_during_unrolling (struct var_to_expand *ve, rtx insn)
validate_change (insn, &SET_DEST (set), new_reg, 1);
validate_change (insn, &XEXP (SET_SRC (set), ve->accum_pos), new_reg, 1);
-
+
if (apply_change_group ())
if (really_new_expansion)
{
@@ -2037,7 +2037,7 @@ expand_var_during_unrolling (struct var_to_expand *ve, rtx insn)
way we can prevent cases where the sign of the final result is
effected by the sign of the expansion. Here is an example to
demonstrate this:
-
+
for (i = 0 ; i < n; i++)
sum += something;
@@ -2051,7 +2051,7 @@ expand_var_during_unrolling (struct var_to_expand *ve, rtx insn)
i = i+1
sum2 += something;
....
-
+
When SUM is initialized with -zero and SOMETHING is also -zero; the
final result of sum should be -zero thus the expansions sum1 and sum2
should be initialized with -zero as well (otherwise we will get +zero
@@ -2068,16 +2068,16 @@ insert_var_expansion_initialization (struct var_to_expand *ve,
if (VEC_length (rtx, ve->var_expansions) == 0)
return;
-
+
start_sequence ();
- if (ve->op == PLUS || ve->op == MINUS)
+ if (ve->op == PLUS || ve->op == MINUS)
for (i = 0; VEC_iterate (rtx, ve->var_expansions, i, var); i++)
{
if (honor_signed_zero_p)
zero_init = simplify_gen_unary (NEG, mode, CONST0_RTX (mode), mode);
else
zero_init = CONST0_RTX (mode);
-
+
emit_move_insn (var, zero_init);
}
else if (ve->op == MULT)
@@ -2086,15 +2086,15 @@ insert_var_expansion_initialization (struct var_to_expand *ve,
zero_init = CONST1_RTX (GET_MODE (var));
emit_move_insn (var, zero_init);
}
-
+
seq = get_insns ();
end_sequence ();
-
+
insn = BB_HEAD (place);
while (!NOTE_INSN_BASIC_BLOCK_P (insn))
insn = NEXT_INSN (insn);
-
- emit_insn_after (seq, insn);
+
+ emit_insn_after (seq, insn);
}
/* Combine the variable expansions at the loop exit. PLACE is the
@@ -2110,7 +2110,7 @@ combine_var_copies_in_loop_exit (struct var_to_expand *ve, basic_block place)
if (VEC_length (rtx, ve->var_expansions) == 0)
return;
-
+
start_sequence ();
if (ve->op == PLUS || ve->op == MINUS)
for (i = 0; VEC_iterate (rtx, ve->var_expansions, i, var); i++)
@@ -2124,13 +2124,13 @@ combine_var_copies_in_loop_exit (struct var_to_expand *ve, basic_block place)
sum = simplify_gen_binary (MULT, GET_MODE (ve->reg),
var, sum);
}
-
+
expr = force_operand (sum, ve->reg);
if (expr != ve->reg)
emit_move_insn (ve->reg, expr);
seq = get_insns ();
end_sequence ();
-
+
insn = BB_HEAD (place);
while (!NOTE_INSN_BASIC_BLOCK_P (insn))
insn = NEXT_INSN (insn);
@@ -2138,18 +2138,18 @@ combine_var_copies_in_loop_exit (struct var_to_expand *ve, basic_block place)
emit_insn_after (seq, insn);
}
-/* Apply loop optimizations in loop copies using the
- data which gathered during the unrolling. Structure
+/* Apply loop optimizations in loop copies using the
+ data which gathered during the unrolling. Structure
OPT_INFO record that data.
-
+
UNROLLING is true if we unrolled (not peeled) the loop.
REWRITE_ORIGINAL_BODY is true if we should also rewrite the original body of
the loop (as it should happen in complete unrolling, but not in ordinary
peeling of the loop). */
static void
-apply_opt_in_copies (struct opt_info *opt_info,
- unsigned n_copies, bool unrolling,
+apply_opt_in_copies (struct opt_info *opt_info,
+ unsigned n_copies, bool unrolling,
bool rewrite_original_loop)
{
unsigned i, delta;
@@ -2157,21 +2157,21 @@ apply_opt_in_copies (struct opt_info *opt_info,
rtx insn, orig_insn, next;
struct iv_to_split ivts_templ, *ivts;
struct var_to_expand ve_templ, *ves;
-
+
/* Sanity check -- we need to put initialization in the original loop
body. */
gcc_assert (!unrolling || rewrite_original_loop);
-
+
/* Allocate the basic variables (i0). */
if (opt_info->insns_to_split)
for (ivts = opt_info->iv_to_split_head; ivts; ivts = ivts->next)
allocate_basic_variable (ivts);
-
+
for (i = opt_info->first_new_block; i < (unsigned) last_basic_block; i++)
{
bb = BASIC_BLOCK (i);
orig_bb = get_bb_original (bb);
-
+
/* bb->aux holds position in copy sequence initialized by
duplicate_loop_to_header_edge. */
delta = determine_split_iv_delta ((size_t)bb->aux, n_copies,
@@ -2183,24 +2183,24 @@ apply_opt_in_copies (struct opt_info *opt_info,
next = NEXT_INSN (insn);
if (!INSN_P (insn))
continue;
-
+
while (!INSN_P (orig_insn))
orig_insn = NEXT_INSN (orig_insn);
-
+
ivts_templ.insn = orig_insn;
ve_templ.insn = orig_insn;
-
+
/* Apply splitting iv optimization. */
if (opt_info->insns_to_split)
{
ivts = (struct iv_to_split *)
htab_find (opt_info->insns_to_split, &ivts_templ);
-
+
if (ivts)
{
gcc_assert (GET_CODE (PATTERN (insn))
== GET_CODE (PATTERN (orig_insn)));
-
+
if (!delta)
insert_base_initialization (ivts, insn);
split_iv (ivts, insn, delta);
@@ -2212,7 +2212,7 @@ apply_opt_in_copies (struct opt_info *opt_info,
ves = (struct var_to_expand *)
htab_find (opt_info->insns_with_var_to_expand, &ve_templ);
if (ves)
- {
+ {
gcc_assert (GET_CODE (PATTERN (insn))
== GET_CODE (PATTERN (orig_insn)));
expand_var_during_unrolling (ves, insn);
@@ -2224,9 +2224,9 @@ apply_opt_in_copies (struct opt_info *opt_info,
if (!rewrite_original_loop)
return;
-
+
/* Initialize the variable expansions in the loop preheader
- and take care of combining them at the loop exit. */
+ and take care of combining them at the loop exit. */
if (opt_info->insns_with_var_to_expand)
{
for (ves = opt_info->var_to_expand_head; ves; ves = ves->next)
@@ -2234,7 +2234,7 @@ apply_opt_in_copies (struct opt_info *opt_info,
for (ves = opt_info->var_to_expand_head; ves; ves = ves->next)
combine_var_copies_in_loop_exit (ves, opt_info->loop_exit);
}
-
+
/* Rewrite also the original loop body. Find them as originals of the blocks
in the last copied iteration, i.e. those that have
get_bb_copy (get_bb_original (bb)) == bb. */
@@ -2244,17 +2244,17 @@ apply_opt_in_copies (struct opt_info *opt_info,
orig_bb = get_bb_original (bb);
if (get_bb_copy (orig_bb) != bb)
continue;
-
+
delta = determine_split_iv_delta (0, n_copies, unrolling);
for (orig_insn = BB_HEAD (orig_bb);
orig_insn != NEXT_INSN (BB_END (bb));
orig_insn = next)
{
next = NEXT_INSN (orig_insn);
-
+
if (!INSN_P (orig_insn))
continue;
-
+
ivts_templ.insn = orig_insn;
if (opt_info->insns_to_split)
{
@@ -2268,7 +2268,7 @@ apply_opt_in_copies (struct opt_info *opt_info,
continue;
}
}
-
+
}
}
}