Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
992c31e6
Commit
992c31e6
authored
Nov 11, 2006
by
Jan Hubicka
Committed by
Jan Hubicka
Nov 11, 2006
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* predict.c (predict_loops): Kill RTL variant.
From-SVN: r118694
parent
6039a0c7
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
9 additions
and
41 deletions
+9
-41
gcc/ChangeLog
+5
-1
gcc/predict.c
+4
-40
No files found.
gcc/ChangeLog
View file @
992c31e6
2006
-
11
-
11
Jan
Hubicka
<
jh
@suse
.
cz
>
*
predict
.
c
(
predict_loops
)
:
Kill
RTL
variant
.
2006
-
11
-
11
Jan
Hubicka
<
jh
@suse
.
cz
>
*
tree
-
pass
.
h
(
pass_purge_lineno_notes
)
:
Remove
declaration
.
*
modulo
-
sched
.
c
(
find_line_note
)
:
Remove
.
(
loop_canon_p
)
:
Do
not
worry
about
line
number
notes
.
...
...
@@ -98,7 +102,7 @@
*
local
-
alloc
.
c
(
update_equiv_regs
)
:
Copy
the
memory
RTX
to
be
used
in
REG_EQUIV
notes
.
*
gcse
.
c
(
try_replace_reg
)
:
Copy
the
replacement
.
*
i386
.
c
(
emit_i387_cw_initialization
)
:
Copy
stored_mode
*
i386
.
c
(
emit_i387_cw_initialization
)
:
Copy
stored_mode
.
(
assign_386_stack_local
)
:
Always
return
copied
memory
expression
*
function
.
c
(
instantiate_virtual_regs_in_insn
)
:
Copy
the
operand
duplicates
.
...
...
gcc/predict.c
View file @
992c31e6
...
...
@@ -631,11 +631,10 @@ combine_predictions_for_bb (basic_block bb)
When RTLSIMPLELOOPS is set, attempt to count number of iterations by analyzing
RTL otherwise use tree based approach. */
static
void
predict_loops
(
struct
loops
*
loops_info
,
bool
rtlsimpleloops
)
predict_loops
(
struct
loops
*
loops_info
)
{
unsigned
i
;
if
(
!
rtlsimpleloops
)
scev_initialize
(
loops_info
);
/* Try to predict out blocks in a loop that are not part of a
...
...
@@ -646,40 +645,11 @@ predict_loops (struct loops *loops_info, bool rtlsimpleloops)
unsigned
j
;
unsigned
n_exits
;
struct
loop
*
loop
=
loops_info
->
parray
[
i
];
struct
niter_desc
desc
;
unsigned
HOST_WIDE_INT
niter
;
edge
*
exits
;
struct
tree_niter_desc
niter_desc
;
exits
=
get_loop_exit_edges
(
loop
,
&
n_exits
);
if
(
rtlsimpleloops
)
{
iv_analysis_loop_init
(
loop
);
find_simple_exit
(
loop
,
&
desc
);
if
(
desc
.
simple_p
&&
desc
.
const_iter
)
{
int
prob
;
niter
=
desc
.
niter
+
1
;
if
(
niter
==
0
)
/* We might overflow here. */
niter
=
desc
.
niter
;
if
(
niter
>
(
unsigned
int
)
PARAM_VALUE
(
PARAM_MAX_PREDICTED_ITERATIONS
))
niter
=
PARAM_VALUE
(
PARAM_MAX_PREDICTED_ITERATIONS
);
prob
=
(
REG_BR_PROB_BASE
-
(
REG_BR_PROB_BASE
+
niter
/
2
)
/
niter
);
/* Branch prediction algorithm gives 0 frequency for everything
after the end of loop for loop having 0 probability to finish. */
if
(
prob
==
REG_BR_PROB_BASE
)
prob
=
REG_BR_PROB_BASE
-
1
;
predict_edge
(
desc
.
in_edge
,
PRED_LOOP_ITERATIONS
,
prob
);
}
}
else
{
struct
tree_niter_desc
niter_desc
;
for
(
j
=
0
;
j
<
n_exits
;
j
++
)
{
...
...
@@ -708,8 +678,6 @@ predict_loops (struct loops *loops_info, bool rtlsimpleloops)
predict_edge
(
exits
[
j
],
PRED_LOOP_ITERATIONS
,
probability
);
}
}
}
free
(
exits
);
bbs
=
get_loop_body
(
loop
);
...
...
@@ -726,8 +694,7 @@ predict_loops (struct loops *loops_info, bool rtlsimpleloops)
statements construct loops via "non-loop" constructs
in the source language and are better to be handled
separately. */
if
((
rtlsimpleloops
&&
!
can_predict_insn_p
(
BB_END
(
bb
)))
||
predicted_by_p
(
bb
,
PRED_CONTINUE
))
if
(
predicted_by_p
(
bb
,
PRED_CONTINUE
))
continue
;
/* Loop branch heuristics - predict an edge back to a
...
...
@@ -776,11 +743,8 @@ predict_loops (struct loops *loops_info, bool rtlsimpleloops)
free
(
bbs
);
}
if
(
!
rtlsimpleloops
)
{
scev_finalize
();
current_loops
=
NULL
;
}
}
/* Attempt to predict probabilities of BB outgoing edges using local
...
...
@@ -1303,7 +1267,7 @@ tree_estimate_probability (void)
tree_bb_level_predictions
();
mark_irreducible_loops
(
&
loops_info
);
predict_loops
(
&
loops_info
,
false
);
predict_loops
(
&
loops_info
);
FOR_EACH_BB
(
bb
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment