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
9da8a3ae
Commit
9da8a3ae
authored
Jun 26, 1999
by
Richard Henderson
Committed by
Richard Henderson
Jun 26, 1999
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* jump.c (jump_optimize_1): Validate the cmov copy to a temporary.
From-SVN: r27788
parent
e2b20631
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
42 additions
and
19 deletions
+42
-19
gcc/ChangeLog
+4
-0
gcc/jump.c
+38
-19
No files found.
gcc/ChangeLog
View file @
9da8a3ae
Sun Jun 27 02:39:08 1999 Richard Henderson <rth@cygnus.com>
* jump.c (jump_optimize_1): Validate the cmov copy to a temporary.
Sat Jun 26 17:18:18 1999 David Edelsohn <edelsohn@gnu.org>
* rs6000.c (print_operand, case 'L'): Use plus_constant_for_output.
...
...
gcc/jump.c
View file @
9da8a3ae
...
...
@@ -970,7 +970,8 @@ jump_optimize_1 (f, cross_jump, noop_moves, after_regscan, mark_labels_only)
if
(
target
)
{
rtx
seq1
,
seq2
,
last
;
rtx
seq1
,
seq2
,
last
;
int
copy_ok
;
/* Save the conditional move sequence but don't emit it
yet. On some machines, like the alpha, it is possible
...
...
@@ -980,8 +981,9 @@ jump_optimize_1 (f, cross_jump, noop_moves, after_regscan, mark_labels_only)
seq2
=
get_insns
();
end_sequence
();
/* Now that we can't fail, generate the copy insns that
preserve the compared values. */
/* "Now that we can't fail..." Famous last words.
Generate the copy insns that preserve the compared
values. */
start_sequence
();
emit_move_insn
(
cond0
,
XEXP
(
temp4
,
0
));
if
(
cond1
!=
XEXP
(
temp4
,
1
))
...
...
@@ -989,25 +991,42 @@ jump_optimize_1 (f, cross_jump, noop_moves, after_regscan, mark_labels_only)
seq1
=
get_insns
();
end_sequence
();
emit_insns_before
(
seq1
,
temp5
);
/* Insert conditional move after insn, to be sure that
the jump and a possible compare won't be separated
*/
last
=
emit_insns_after
(
seq2
,
insn
)
;
/* ??? We can also delete the insn that sets X to A.
Flow will do it too though. */
delete_insn
(
temp
)
;
next
=
NEXT_INSN
(
insn
)
;
delete_jump
(
insn
);
/* Validate the sequence -- this may be some weird
bit-extract-and-test instruction for which there
exists no complimentary bit-extract insn.
*/
copy_ok
=
1
;
for
(
last
=
seq1
;
last
;
last
=
NEXT_INSN
(
last
))
if
(
recog_memoized
(
last
)
<
0
)
{
copy_ok
=
0
;
break
;
}
if
(
after_regscan
)
if
(
copy_ok
)
{
reg_scan_update
(
seq1
,
NEXT_INSN
(
last
),
old_max_reg
);
old_max_reg
=
max_reg_num
();
emit_insns_before
(
seq1
,
temp5
);
/* Insert conditional move after insn, to be sure
that the jump and a possible compare won't be
separated. */
last
=
emit_insns_after
(
seq2
,
insn
);
/* ??? We can also delete the insn that sets X to A.
Flow will do it too though. */
delete_insn
(
temp
);
next
=
NEXT_INSN
(
insn
);
delete_jump
(
insn
);
if
(
after_regscan
)
{
reg_scan_update
(
seq1
,
NEXT_INSN
(
last
),
old_max_reg
);
old_max_reg
=
max_reg_num
();
}
changed
=
1
;
continue
;
}
changed
=
1
;
continue
;
}
else
end_sequence
();
...
...
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