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
1a6dd8a2
Commit
1a6dd8a2
authored
Feb 06, 2004
by
Ulrich Weigand
Committed by
Ulrich Weigand
Feb 06, 2004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* cfganal.c (flow_call_edges_add): Never split a libcall block.
From-SVN: r77410
parent
1711adc2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
18 additions
and
1 deletions
+18
-1
gcc/ChangeLog
+4
-0
gcc/cfganal.c
+14
-1
No files found.
gcc/ChangeLog
View file @
1a6dd8a2
2004-02-06 Ulrich Weigand <uweigand@de.ibm.com>
* cfganal.c (flow_call_edges_add): Never split a libcall block.
2004-02-06 Daniel Berlin <dberlin@dberlin.org>
2004-02-06 Daniel Berlin <dberlin@dberlin.org>
* dwarf2out.c (output_loc_list): Don't use deltas if we have
* dwarf2out.c (output_loc_list): Don't use deltas if we have
...
...
gcc/cfganal.c
View file @
1a6dd8a2
...
@@ -333,6 +333,7 @@ flow_call_edges_add (sbitmap blocks)
...
@@ -333,6 +333,7 @@ flow_call_edges_add (sbitmap blocks)
for
(
i
=
0
;
i
<
last_bb
;
i
++
)
for
(
i
=
0
;
i
<
last_bb
;
i
++
)
{
{
basic_block
bb
=
BASIC_BLOCK
(
i
);
basic_block
bb
=
BASIC_BLOCK
(
i
);
rtx
libcall_end
=
NULL_RTX
;
rtx
insn
;
rtx
insn
;
rtx
prev_insn
;
rtx
prev_insn
;
...
@@ -350,9 +351,13 @@ flow_call_edges_add (sbitmap blocks)
...
@@ -350,9 +351,13 @@ flow_call_edges_add (sbitmap blocks)
edge
e
;
edge
e
;
rtx
split_at_insn
=
insn
;
rtx
split_at_insn
=
insn
;
/* Don't split libcalls. */
if
(
libcall_end
)
split_at_insn
=
libcall_end
;
/* Don't split the block between a call and an insn that should
/* Don't split the block between a call and an insn that should
remain in the same block as the call. */
remain in the same block as the call. */
if
(
GET_CODE
(
insn
)
==
CALL_INSN
)
else
if
(
GET_CODE
(
insn
)
==
CALL_INSN
)
while
(
split_at_insn
!=
BB_END
(
bb
)
while
(
split_at_insn
!=
BB_END
(
bb
)
&&
keep_with_call_p
(
NEXT_INSN
(
split_at_insn
)))
&&
keep_with_call_p
(
NEXT_INSN
(
split_at_insn
)))
split_at_insn
=
NEXT_INSN
(
split_at_insn
);
split_at_insn
=
NEXT_INSN
(
split_at_insn
);
...
@@ -381,6 +386,14 @@ flow_call_edges_add (sbitmap blocks)
...
@@ -381,6 +386,14 @@ flow_call_edges_add (sbitmap blocks)
make_edge
(
bb
,
EXIT_BLOCK_PTR
,
EDGE_FAKE
);
make_edge
(
bb
,
EXIT_BLOCK_PTR
,
EDGE_FAKE
);
}
}
/* Watch out for REG_LIBCALL/REG_RETVAL notes so that we know
whether we are currently in a libcall or not. Remember that
we are scanning backwards! */
if
(
find_reg_note
(
insn
,
REG_RETVAL
,
NULL_RTX
))
libcall_end
=
insn
;
if
(
find_reg_note
(
insn
,
REG_LIBCALL
,
NULL_RTX
))
libcall_end
=
NULL_RTX
;
if
(
insn
==
BB_HEAD
(
bb
))
if
(
insn
==
BB_HEAD
(
bb
))
break
;
break
;
}
}
...
...
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