Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
506dd705
R
Rust
项目概览
int
/
Rust
11 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
506dd705
编写于
8月 26, 2018
作者:
R
Ralf Jung
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix const_prop detecting unary neg underflows
上级
e6a5a941
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
1 deletion
+15
-1
src/librustc_mir/transform/const_prop.rs
src/librustc_mir/transform/const_prop.rs
+15
-1
未找到文件。
src/librustc_mir/transform/const_prop.rs
浏览文件 @
506dd705
...
...
@@ -14,7 +14,7 @@
use
rustc
::
hir
::
def
::
Def
;
use
rustc
::
mir
::{
Constant
,
Location
,
Place
,
Mir
,
Operand
,
Rvalue
,
Local
};
use
rustc
::
mir
::{
NullOp
,
StatementKind
,
Statement
,
BasicBlock
,
LocalKind
};
use
rustc
::
mir
::{
NullOp
,
UnOp
,
StatementKind
,
Statement
,
BasicBlock
,
LocalKind
};
use
rustc
::
mir
::{
TerminatorKind
,
ClearCrossCrate
,
SourceInfo
,
BinOp
,
ProjectionElem
};
use
rustc
::
mir
::
visit
::{
Visitor
,
PlaceContext
};
use
rustc
::
mir
::
interpret
::{
...
...
@@ -381,6 +381,20 @@ fn const_prop(
let
(
arg
,
_
)
=
self
.eval_operand
(
arg
,
source_info
)
?
;
let
val
=
self
.use_ecx
(
source_info
,
|
this
|
{
let
prim
=
this
.ecx
.read_scalar
(
arg
)
?
.not_undef
()
?
;
match
op
{
UnOp
::
Neg
=>
{
// Need to do overflow check here: For actual CTFE, MIR
// generation emits code that does this before calling the op.
let
size
=
arg
.layout.size
;
if
prim
.to_bits
(
size
)
?
==
(
1
<<
(
size
.bits
()
-
1
))
{
return
err!
(
OverflowNeg
);
}
}
UnOp
::
Not
=>
{
// Cannot overflow
}
}
// Now run the actual operation.
this
.ecx
.unary_op
(
op
,
prim
,
arg
.layout
)
})
?
;
Some
((
OpTy
::
from_scalar_value
(
val
,
place_layout
),
span
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录