Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
e57ac764
R
Rust
项目概览
int
/
Rust
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
e57ac764
编写于
8月 24, 2022
作者:
N
Nicholas Nethercote
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Box `thir::ExprKind::InlineAsm`.
This shrinks `thir::Expr`.
上级
b3245a8d
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
15 addition
and
12 deletion
+15
-12
compiler/rustc_middle/src/thir.rs
compiler/rustc_middle/src/thir.rs
+10
-7
compiler/rustc_middle/src/thir/visit.rs
compiler/rustc_middle/src/thir/visit.rs
+2
-2
compiler/rustc_mir_build/src/build/expr/into.rs
compiler/rustc_mir_build/src/build/expr/into.rs
+1
-1
compiler/rustc_mir_build/src/thir/cx/expr.rs
compiler/rustc_mir_build/src/thir/cx/expr.rs
+2
-2
未找到文件。
compiler/rustc_middle/src/thir.rs
浏览文件 @
e57ac764
...
...
@@ -133,6 +133,14 @@ pub struct ClosureExpr<'tcx> {
pub
fake_reads
:
Vec
<
(
ExprId
,
FakeReadCause
,
hir
::
HirId
)
>
,
}
#[derive(Clone,
Debug,
HashStable)]
pub
struct
InlineAsmExpr
<
'tcx
>
{
pub
template
:
&
'tcx
[
InlineAsmTemplatePiece
],
pub
operands
:
Box
<
[
InlineAsmOperand
<
'tcx
>
]
>
,
pub
options
:
InlineAsmOptions
,
pub
line_spans
:
&
'tcx
[
Span
],
}
#[derive(Copy,
Clone,
Debug,
HashStable)]
pub
enum
BlockSafety
{
Safe
,
...
...
@@ -432,12 +440,7 @@ pub enum ExprKind<'tcx> {
def_id
:
DefId
,
},
/// Inline assembly, i.e. `asm!()`.
InlineAsm
{
template
:
&
'tcx
[
InlineAsmTemplatePiece
],
operands
:
Box
<
[
InlineAsmOperand
<
'tcx
>
]
>
,
options
:
InlineAsmOptions
,
line_spans
:
&
'tcx
[
Span
],
},
InlineAsm
(
Box
<
InlineAsmExpr
<
'tcx
>>
),
/// An expression taking a reference to a thread local.
ThreadLocalRef
(
DefId
),
/// A `yield` expression.
...
...
@@ -804,7 +807,7 @@ mod size_asserts {
use
super
::
*
;
// These are in alphabetical order, which is easy to maintain.
static_assert_size!
(
Block
,
56
);
static_assert_size!
(
Expr
<
'_
>
,
80
);
static_assert_size!
(
Expr
<
'_
>
,
64
);
static_assert_size!
(
Pat
<
'_
>
,
24
);
static_assert_size!
(
Stmt
<
'_
>
,
72
);
}
compiler/rustc_middle/src/thir/visit.rs
浏览文件 @
e57ac764
use
super
::{
Arm
,
Block
,
ClosureExpr
,
Expr
,
ExprKind
,
Guard
,
InlineAsmOperand
,
Pat
,
PatKind
,
Stmt
,
StmtKind
,
Arm
,
Block
,
ClosureExpr
,
Expr
,
ExprKind
,
Guard
,
InlineAsm
Expr
,
InlineAsm
Operand
,
Pat
,
PatKind
,
Stmt
,
StmtKind
,
Thir
,
};
...
...
@@ -140,7 +140,7 @@ pub fn walk_expr<'a, 'tcx: 'a, V: Visitor<'a, 'tcx>>(visitor: &mut V, expr: &Exp
NamedConst
{
def_id
:
_
,
substs
:
_
,
user_ty
:
_
}
=>
{}
ConstParam
{
param
:
_
,
def_id
:
_
}
=>
{}
StaticRef
{
alloc_id
:
_
,
ty
:
_
,
def_id
:
_
}
=>
{}
InlineAsm
{
ref
operands
,
template
:
_
,
options
:
_
,
line_spans
:
_
}
=>
{
InlineAsm
(
box
InlineAsmExpr
{
ref
operands
,
template
:
_
,
options
:
_
,
line_spans
:
_
})
=>
{
for
op
in
&**
operands
{
use
InlineAsmOperand
::
*
;
match
op
{
...
...
compiler/rustc_mir_build/src/build/expr/into.rs
浏览文件 @
e57ac764
...
...
@@ -400,7 +400,7 @@ pub(crate) fn expr_into_dest(
);
block
.unit
()
}
ExprKind
::
InlineAsm
{
template
,
ref
operands
,
options
,
line_spans
}
=>
{
ExprKind
::
InlineAsm
(
box
InlineAsmExpr
{
template
,
ref
operands
,
options
,
line_spans
})
=>
{
use
rustc_middle
::{
mir
,
thir
};
let
operands
=
operands
.into_iter
()
...
...
compiler/rustc_mir_build/src/thir/cx/expr.rs
浏览文件 @
e57ac764
...
...
@@ -562,7 +562,7 @@ fn make_mirror_unadjusted(&mut self, expr: &'tcx hir::Expr<'tcx>) -> Expr<'tcx>
self
.convert_path_expr
(
expr
,
res
)
}
hir
::
ExprKind
::
InlineAsm
(
ref
asm
)
=>
ExprKind
::
InlineAsm
{
hir
::
ExprKind
::
InlineAsm
(
ref
asm
)
=>
ExprKind
::
InlineAsm
(
Box
::
new
(
InlineAsmExpr
{
template
:
asm
.template
,
operands
:
asm
.operands
...
...
@@ -621,7 +621,7 @@ fn make_mirror_unadjusted(&mut self, expr: &'tcx hir::Expr<'tcx>) -> Expr<'tcx>
.collect
(),
options
:
asm
.options
,
line_spans
:
asm
.line_spans
,
},
}
))
,
hir
::
ExprKind
::
ConstBlock
(
ref
anon_const
)
=>
{
let
ty
=
self
.typeck_results
()
.node_type
(
anon_const
.hir_id
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录