OSDN Git Service
(root)
/
pf3gnuchains
/
gcc-fork.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
PR target/22224
[pf3gnuchains/gcc-fork.git]
/
gcc
/
tree-inline.c
diff --git
a/gcc/tree-inline.c
b/gcc/tree-inline.c
index
302d36b
..
bb2ee23
100644
(file)
--- a/
gcc/tree-inline.c
+++ b/
gcc/tree-inline.c
@@
-1711,6
+1711,7
@@
copy_bb (copy_body_data *id, basic_block bb, int frequency_scale,
other cases we hit a bug (incorrect node sharing is the
most common reason for missing edges). */
gcc_assert (dest->needed || !dest->analyzed
other cases we hit a bug (incorrect node sharing is the
most common reason for missing edges). */
gcc_assert (dest->needed || !dest->analyzed
+ || dest->address_taken
|| !id->src_node->analyzed);
if (id->transform_call_graph_edges == CB_CGE_MOVE_CLONES)
cgraph_create_edge_including_clones
|| !id->src_node->analyzed);
if (id->transform_call_graph_edges == CB_CGE_MOVE_CLONES)
cgraph_create_edge_including_clones
@@
-4944,6
+4945,15
@@
tree_function_versioning (tree old_decl, tree new_decl,
if (replace_info->replace_p)
{
tree op = replace_info->new_tree;
if (replace_info->replace_p)
{
tree op = replace_info->new_tree;
+ if (!replace_info->old_tree)
+ {
+ int i = replace_info->parm_num;
+ tree parm;
+ for (parm = DECL_ARGUMENTS (old_decl); i; parm = TREE_CHAIN (parm))
+ i --;
+ replace_info->old_tree = parm;
+ }
+
STRIP_NOPS (op);
STRIP_NOPS (op);