Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dotNET Platform
runtime
提交
8fe39db6
R
runtime
项目概览
dotNET Platform
/
runtime
大约 1 年 前同步成功
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
runtime
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
8fe39db6
编写于
6月 27, 2022
作者:
J
Jakob Botsch Nielsen
提交者:
GitHub
6月 27, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Allow more permissive forward subbing into call arguments (#71161)
上级
c6584b4b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
1 addition
and
40 deletion
+1
-40
src/coreclr/jit/forwardsub.cpp
src/coreclr/jit/forwardsub.cpp
+1
-40
未找到文件。
src/coreclr/jit/forwardsub.cpp
浏览文件 @
8fe39db6
...
...
@@ -187,7 +187,6 @@ class ForwardSubVisitor final : public GenTreeVisitor<ForwardSubVisitor>
public:
enum
{
ComputeStack
=
true
,
DoPostOrder
=
true
,
UseExecutionOrder
=
true
};
...
...
@@ -197,7 +196,6 @@ public:
,
m_use
(
nullptr
)
,
m_node
(
nullptr
)
,
m_parentNode
(
nullptr
)
,
m_callAncestor
(
nullptr
)
,
m_lclNum
(
lclNum
)
,
m_useCount
(
0
)
,
m_useFlags
(
GTF_EMPTY
)
...
...
@@ -221,7 +219,7 @@ public:
// Screen out contextual "uses"
//
GenTree
*
const
parent
=
m_ancestors
.
Top
(
1
)
;
GenTree
*
const
parent
=
user
;
bool
const
isDef
=
parent
->
OperIs
(
GT_ASG
)
&&
(
parent
->
gtGetOp1
()
==
node
);
bool
const
isAddr
=
parent
->
OperIs
(
GT_ADDR
);
...
...
@@ -243,19 +241,6 @@ public:
m_use
=
use
;
m_useFlags
=
m_accumulatedFlags
;
m_parentNode
=
parent
;
// If this use contributes to a call arg we need to
// remember the call and handle it specially when we
// see it later in the postorder walk.
//
for
(
int
i
=
1
;
i
<
m_ancestors
.
Height
();
i
++
)
{
if
(
m_ancestors
.
Top
(
i
)
->
IsCall
())
{
m_callAncestor
=
m_ancestors
.
Top
(
i
)
->
AsCall
();
break
;
}
}
}
}
}
...
...
@@ -274,29 +259,6 @@ public:
}
}
// Is this the use's call ancestor?
//
if
((
m_callAncestor
!=
nullptr
)
&&
(
node
==
m_callAncestor
))
{
// To be conservative and avoid issues with morph
// reordering call args, we merge in effects of all args
// to this call.
//
// Remove this if/when morph's arg sorting is fixed.
//
GenTreeFlags
oldUseFlags
=
m_useFlags
;
for
(
CallArg
&
arg
:
m_callAncestor
->
gtArgs
.
Args
())
{
m_useFlags
|=
(
arg
.
GetNode
()
->
gtFlags
&
GTF_GLOB_EFFECT
);
}
if
(
oldUseFlags
!=
m_useFlags
)
{
JITDUMP
(
" [added other call arg use flags: 0x%x]"
,
m_useFlags
&
~
oldUseFlags
);
}
}
m_accumulatedFlags
|=
(
node
->
gtFlags
&
GTF_GLOB_EFFECT
);
return
fgWalkResult
::
WALK_CONTINUE
;
...
...
@@ -341,7 +303,6 @@ private:
GenTree
**
m_use
;
GenTree
*
m_node
;
GenTree
*
m_parentNode
;
GenTreeCall
*
m_callAncestor
;
unsigned
m_lclNum
;
unsigned
m_useCount
;
GenTreeFlags
m_useFlags
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录