Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
3cc4450a
R
Rust
项目概览
int
/
Rust
大约 1 年 前同步成功
通知
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,发现更多精彩内容 >>
提交
3cc4450a
编写于
7月 26, 2018
作者:
M
Mark Rousskov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Simplify some handling of target_pointer_width
上级
2bc71971
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
6 addition
and
35 deletion
+6
-35
src/librustc_codegen_llvm/intrinsic.rs
src/librustc_codegen_llvm/intrinsic.rs
+4
-23
src/librustc_codegen_llvm/mir/rvalue.rs
src/librustc_codegen_llvm/mir/rvalue.rs
+2
-12
未找到文件。
src/librustc_codegen_llvm/intrinsic.rs
浏览文件 @
3cc4450a
...
...
@@ -1778,14 +1778,7 @@ enum Style { Float, Int(/* is signed? */ bool), Unsupported }
fn
int_type_width_signed
(
ty
:
Ty
,
cx
:
&
CodegenCx
)
->
Option
<
(
u64
,
bool
)
>
{
match
ty
.sty
{
ty
::
TyInt
(
t
)
=>
Some
((
match
t
{
ast
::
IntTy
::
Isize
=>
{
match
&
cx
.tcx.sess.target.target.target_pointer_width
[
..
]
{
"16"
=>
16
,
"32"
=>
32
,
"64"
=>
64
,
tws
=>
bug!
(
"Unsupported target word size for isize: {}"
,
tws
),
}
},
ast
::
IntTy
::
Isize
=>
cx
.tcx.sess.target.isize_ty
.bit_width
()
.unwrap
()
as
u64
,
ast
::
IntTy
::
I8
=>
8
,
ast
::
IntTy
::
I16
=>
16
,
ast
::
IntTy
::
I32
=>
32
,
...
...
@@ -1793,14 +1786,7 @@ fn int_type_width_signed(ty: Ty, cx: &CodegenCx) -> Option<(u64, bool)> {
ast
::
IntTy
::
I128
=>
128
,
},
true
)),
ty
::
TyUint
(
t
)
=>
Some
((
match
t
{
ast
::
UintTy
::
Usize
=>
{
match
&
cx
.tcx.sess.target.target.target_pointer_width
[
..
]
{
"16"
=>
16
,
"32"
=>
32
,
"64"
=>
64
,
tws
=>
bug!
(
"Unsupported target word size for usize: {}"
,
tws
),
}
},
ast
::
UintTy
::
Usize
=>
cx
.tcx.sess.target.usize_ty
.bit_width
()
.unwrap
()
as
u64
,
ast
::
UintTy
::
U8
=>
8
,
ast
::
UintTy
::
U16
=>
16
,
ast
::
UintTy
::
U32
=>
32
,
...
...
@@ -1813,14 +1799,9 @@ fn int_type_width_signed(ty: Ty, cx: &CodegenCx) -> Option<(u64, bool)> {
// Returns the width of a float TypeVariant
// Returns None if the type is not a float
fn
float_type_width
<
'tcx
>
(
sty
:
&
ty
::
TypeVariants
<
'tcx
>
)
->
Option
<
u64
>
{
use
rustc
::
ty
::
TyFloat
;
fn
float_type_width
<
'tcx
>
(
sty
:
&
ty
::
TypeVariants
<
'tcx
>
)
->
Option
<
u64
>
{
match
*
sty
{
TyFloat
(
t
)
=>
Some
(
match
t
{
ast
::
FloatTy
::
F32
=>
32
,
ast
::
FloatTy
::
F64
=>
64
,
}),
ty
::
TyFloat
(
t
)
=>
Some
(
t
.bit_width
()
as
u64
),
_
=>
None
,
}
}
src/librustc_codegen_llvm/mir/rvalue.rs
浏览文件 @
3cc4450a
...
...
@@ -733,18 +733,8 @@ fn get_overflow_intrinsic(oop: OverflowOp, bx: &Builder<'_, 'll, '_>, ty: Ty) ->
let
tcx
=
bx
.tcx
();
let
new_sty
=
match
ty
.sty
{
TyInt
(
Isize
)
=>
match
&
tcx
.sess.target.target.target_pointer_width
[
..
]
{
"16"
=>
TyInt
(
I16
),
"32"
=>
TyInt
(
I32
),
"64"
=>
TyInt
(
I64
),
_
=>
panic!
(
"unsupported target word size"
)
},
TyUint
(
Usize
)
=>
match
&
tcx
.sess.target.target.target_pointer_width
[
..
]
{
"16"
=>
TyUint
(
U16
),
"32"
=>
TyUint
(
U32
),
"64"
=>
TyUint
(
U64
),
_
=>
panic!
(
"unsupported target word size"
)
},
TyInt
(
Isize
)
=>
TyInt
(
tcx
.sess.target.isize_ty
),
TyUint
(
Usize
)
=>
TyUint
(
tcx
.sess.target.usize_ty
),
ref
t
@
TyUint
(
_
)
|
ref
t
@
TyInt
(
_
)
=>
t
.clone
(),
_
=>
panic!
(
"tried to get overflow intrinsic for op applied to non-int type"
)
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录