Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
d577ec7e
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,发现更多精彩内容 >>
提交
d577ec7e
编写于
8月 28, 2018
作者:
D
Denis Merigoux
提交者:
Eduard-Mihai Burtescu
11月 16, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
New files and folders for traits
Moved common enums to common
上级
7a2670e3
变更
23
隐藏空白更改
内联
并排
Showing
23 changed file
with
188 addition
and
172 deletion
+188
-172
src/librustc_codegen_llvm/abi.rs
src/librustc_codegen_llvm/abi.rs
+1
-1
src/librustc_codegen_llvm/asm.rs
src/librustc_codegen_llvm/asm.rs
+1
-1
src/librustc_codegen_llvm/base.rs
src/librustc_codegen_llvm/base.rs
+2
-2
src/librustc_codegen_llvm/builder.rs
src/librustc_codegen_llvm/builder.rs
+13
-13
src/librustc_codegen_llvm/common.rs
src/librustc_codegen_llvm/common.rs
+82
-1
src/librustc_codegen_llvm/debuginfo/gdb.rs
src/librustc_codegen_llvm/debuginfo/gdb.rs
+1
-1
src/librustc_codegen_llvm/debuginfo/mod.rs
src/librustc_codegen_llvm/debuginfo/mod.rs
+1
-1
src/librustc_codegen_llvm/debuginfo/source_loc.rs
src/librustc_codegen_llvm/debuginfo/source_loc.rs
+1
-1
src/librustc_codegen_llvm/glue.rs
src/librustc_codegen_llvm/glue.rs
+1
-1
src/librustc_codegen_llvm/interfaces/builder.rs
src/librustc_codegen_llvm/interfaces/builder.rs
+0
-81
src/librustc_codegen_llvm/interfaces/mod.rs
src/librustc_codegen_llvm/interfaces/mod.rs
+13
-0
src/librustc_codegen_llvm/intrinsic.rs
src/librustc_codegen_llvm/intrinsic.rs
+2
-2
src/librustc_codegen_llvm/lib.rs
src/librustc_codegen_llvm/lib.rs
+1
-1
src/librustc_codegen_llvm/llvm/ffi.rs
src/librustc_codegen_llvm/llvm/ffi.rs
+53
-53
src/librustc_codegen_llvm/llvm/mod.rs
src/librustc_codegen_llvm/llvm/mod.rs
+2
-2
src/librustc_codegen_llvm/meth.rs
src/librustc_codegen_llvm/meth.rs
+1
-1
src/librustc_codegen_llvm/mir/block.rs
src/librustc_codegen_llvm/mir/block.rs
+2
-2
src/librustc_codegen_llvm/mir/constant.rs
src/librustc_codegen_llvm/mir/constant.rs
+1
-1
src/librustc_codegen_llvm/mir/mod.rs
src/librustc_codegen_llvm/mir/mod.rs
+1
-1
src/librustc_codegen_llvm/mir/operand.rs
src/librustc_codegen_llvm/mir/operand.rs
+1
-1
src/librustc_codegen_llvm/mir/place.rs
src/librustc_codegen_llvm/mir/place.rs
+2
-2
src/librustc_codegen_llvm/mir/rvalue.rs
src/librustc_codegen_llvm/mir/rvalue.rs
+5
-2
src/librustc_codegen_llvm/mir/statement.rs
src/librustc_codegen_llvm/mir/statement.rs
+1
-1
未找到文件。
src/librustc_codegen_llvm/abi.rs
浏览文件 @
d577ec7e
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
use
type_of
::{
LayoutLlvmExt
,
PointerKind
};
use
type_of
::{
LayoutLlvmExt
,
PointerKind
};
use
value
::
Value
;
use
value
::
Value
;
use
trait
s
::
BuilderMethods
;
use
interface
s
::
BuilderMethods
;
use
rustc_target
::
abi
::{
HasDataLayout
,
LayoutOf
,
Size
,
TyLayout
,
Abi
as
LayoutAbi
};
use
rustc_target
::
abi
::{
HasDataLayout
,
LayoutOf
,
Size
,
TyLayout
,
Abi
as
LayoutAbi
};
use
rustc
::
ty
::{
self
,
Ty
};
use
rustc
::
ty
::{
self
,
Ty
};
...
...
src/librustc_codegen_llvm/asm.rs
浏览文件 @
d577ec7e
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
use
value
::
Value
;
use
value
::
Value
;
use
rustc
::
hir
;
use
rustc
::
hir
;
use
trait
s
::
BuilderMethods
;
use
interface
s
::
BuilderMethods
;
use
mir
::
place
::
PlaceRef
;
use
mir
::
place
::
PlaceRef
;
use
mir
::
operand
::
OperandValue
;
use
mir
::
operand
::
OperandValue
;
...
...
src/librustc_codegen_llvm/base.rs
浏览文件 @
d577ec7e
...
@@ -55,7 +55,7 @@
...
@@ -55,7 +55,7 @@
use
callee
;
use
callee
;
use
common
::{
C_bool
,
C_bytes_in_context
,
C_usize
};
use
common
::{
C_bool
,
C_bytes_in_context
,
C_usize
};
use
rustc_mir
::
monomorphize
::
item
::
DefPathBasedNames
;
use
rustc_mir
::
monomorphize
::
item
::
DefPathBasedNames
;
use
common
::{
C_struct_in_context
,
C_array
,
val_ty
};
use
common
::{
C_struct_in_context
,
C_array
,
val_ty
,
IntPredicate
,
RealPredicate
};
use
consts
;
use
consts
;
use
context
::
CodegenCx
;
use
context
::
CodegenCx
;
use
debuginfo
;
use
debuginfo
;
...
@@ -75,7 +75,7 @@
...
@@ -75,7 +75,7 @@
use
rustc_data_structures
::
sync
::
Lrc
;
use
rustc_data_structures
::
sync
::
Lrc
;
use
rustc_data_structures
::
indexed_vec
::
Idx
;
use
rustc_data_structures
::
indexed_vec
::
Idx
;
use
traits
::{
IntPredicate
,
RealPredicate
,
BuilderMethods
}
;
use
interfaces
::
BuilderMethods
;
use
std
::
any
::
Any
;
use
std
::
any
::
Any
;
use
std
::
cmp
;
use
std
::
cmp
;
...
...
src/librustc_codegen_llvm/builder.rs
浏览文件 @
d577ec7e
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
use
llvm
::{
AtomicRmwBinOp
,
AtomicOrdering
,
SynchronizationScope
,
AsmDialect
};
use
llvm
::{
AtomicRmwBinOp
,
AtomicOrdering
,
SynchronizationScope
,
AsmDialect
};
use
llvm
::{
self
,
False
,
OperandBundleDef
,
BasicBlock
};
use
llvm
::{
self
,
False
,
OperandBundleDef
,
BasicBlock
};
use
common
::
*
;
use
common
::
{
self
,
*
}
;
use
type_
;
use
type_
;
use
value
::
Value
;
use
value
::
Value
;
use
libc
::{
c_uint
,
c_char
};
use
libc
::{
c_uint
,
c_char
};
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
use
rustc
::
ty
::
layout
::{
Align
,
Size
};
use
rustc
::
ty
::
layout
::{
Align
,
Size
};
use
rustc
::
session
::{
config
,
Session
};
use
rustc
::
session
::{
config
,
Session
};
use
rustc_data_structures
::
small_c_str
::
SmallCStr
;
use
rustc_data_structures
::
small_c_str
::
SmallCStr
;
use
traits
::{
self
,
BuilderMethods
}
;
use
interfaces
::
BuilderMethods
;
use
syntax
;
use
syntax
;
use
std
::
borrow
::
Cow
;
use
std
::
borrow
::
Cow
;
...
@@ -194,7 +194,7 @@ fn invoke(&self,
...
@@ -194,7 +194,7 @@ fn invoke(&self,
args
:
&
[
&
'll
Value
],
args
:
&
[
&
'll
Value
],
then
:
&
'll
BasicBlock
,
then
:
&
'll
BasicBlock
,
catch
:
&
'll
BasicBlock
,
catch
:
&
'll
BasicBlock
,
bundle
:
Option
<&
traits
::
OperandBundleDef
<
'll
,
&
'll
Value
>>
)
->
&
'll
Value
{
bundle
:
Option
<&
common
::
OperandBundleDef
<
'll
,
&
'll
Value
>>
)
->
&
'll
Value
{
self
.count_insn
(
"invoke"
);
self
.count_insn
(
"invoke"
);
debug!
(
"Invoke {:?} with args ({:?})"
,
debug!
(
"Invoke {:?} with args ({:?})"
,
...
@@ -495,7 +495,7 @@ fn volatile_load(&self, ptr: &'ll Value) -> &'ll Value {
...
@@ -495,7 +495,7 @@ fn volatile_load(&self, ptr: &'ll Value) -> &'ll Value {
fn
atomic_load
(
fn
atomic_load
(
&
self
,
&
self
,
ptr
:
&
'll
Value
,
ptr
:
&
'll
Value
,
order
:
traits
::
AtomicOrdering
,
order
:
common
::
AtomicOrdering
,
size
:
Size
,
size
:
Size
,
)
->
&
'll
Value
{
)
->
&
'll
Value
{
self
.count_insn
(
"load.atomic"
);
self
.count_insn
(
"load.atomic"
);
...
@@ -582,7 +582,7 @@ fn store_with_flags(
...
@@ -582,7 +582,7 @@ fn store_with_flags(
}
}
fn
atomic_store
(
&
self
,
val
:
&
'll
Value
,
ptr
:
&
'll
Value
,
fn
atomic_store
(
&
self
,
val
:
&
'll
Value
,
ptr
:
&
'll
Value
,
order
:
traits
::
AtomicOrdering
,
size
:
Size
)
{
order
:
common
::
AtomicOrdering
,
size
:
Size
)
{
debug!
(
"Store {:?} -> {:?}"
,
val
,
ptr
);
debug!
(
"Store {:?} -> {:?}"
,
val
,
ptr
);
self
.count_insn
(
"store.atomic"
);
self
.count_insn
(
"store.atomic"
);
let
ptr
=
self
.check_store
(
val
,
ptr
);
let
ptr
=
self
.check_store
(
val
,
ptr
);
...
@@ -708,7 +708,7 @@ fn pointercast(&self, val: &'ll Value, dest_ty: Self::Type) -> &'ll Value {
...
@@ -708,7 +708,7 @@ fn pointercast(&self, val: &'ll Value, dest_ty: Self::Type) -> &'ll Value {
}
}
/* Comparisons */
/* Comparisons */
fn
icmp
(
&
self
,
op
:
traits
::
IntPredicate
,
lhs
:
&
'll
Value
,
rhs
:
&
'll
Value
)
->
&
'll
Value
{
fn
icmp
(
&
self
,
op
:
IntPredicate
,
lhs
:
&
'll
Value
,
rhs
:
&
'll
Value
)
->
&
'll
Value
{
self
.count_insn
(
"icmp"
);
self
.count_insn
(
"icmp"
);
let
op
=
llvm
::
IntPredicate
::
from_generic
(
op
);
let
op
=
llvm
::
IntPredicate
::
from_generic
(
op
);
unsafe
{
unsafe
{
...
@@ -716,7 +716,7 @@ fn icmp(&self, op: traits::IntPredicate, lhs: &'ll Value, rhs: &'ll Value) -> &'
...
@@ -716,7 +716,7 @@ fn icmp(&self, op: traits::IntPredicate, lhs: &'ll Value, rhs: &'ll Value) -> &'
}
}
}
}
fn
fcmp
(
&
self
,
op
:
traits
::
RealPredicate
,
lhs
:
&
'll
Value
,
rhs
:
&
'll
Value
)
->
&
'll
Value
{
fn
fcmp
(
&
self
,
op
:
RealPredicate
,
lhs
:
&
'll
Value
,
rhs
:
&
'll
Value
)
->
&
'll
Value
{
self
.count_insn
(
"fcmp"
);
self
.count_insn
(
"fcmp"
);
unsafe
{
unsafe
{
llvm
::
LLVMBuildFCmp
(
self
.llbuilder
,
op
as
c_uint
,
lhs
,
rhs
,
noname
())
llvm
::
LLVMBuildFCmp
(
self
.llbuilder
,
op
as
c_uint
,
lhs
,
rhs
,
noname
())
...
@@ -1066,8 +1066,8 @@ fn atomic_cmpxchg(
...
@@ -1066,8 +1066,8 @@ fn atomic_cmpxchg(
dst
:
&
'll
Value
,
dst
:
&
'll
Value
,
cmp
:
&
'll
Value
,
cmp
:
&
'll
Value
,
src
:
&
'll
Value
,
src
:
&
'll
Value
,
order
:
traits
::
AtomicOrdering
,
order
:
common
::
AtomicOrdering
,
failure_order
:
traits
::
AtomicOrdering
,
failure_order
:
common
::
AtomicOrdering
,
weak
:
bool
,
weak
:
bool
,
)
->
&
'll
Value
{
)
->
&
'll
Value
{
let
weak
=
if
weak
{
llvm
::
True
}
else
{
llvm
::
False
};
let
weak
=
if
weak
{
llvm
::
True
}
else
{
llvm
::
False
};
...
@@ -1085,10 +1085,10 @@ fn atomic_cmpxchg(
...
@@ -1085,10 +1085,10 @@ fn atomic_cmpxchg(
}
}
fn
atomic_rmw
(
fn
atomic_rmw
(
&
self
,
&
self
,
op
:
traits
::
AtomicRmwBinOp
,
op
:
common
::
AtomicRmwBinOp
,
dst
:
&
'll
Value
,
dst
:
&
'll
Value
,
src
:
&
'll
Value
,
src
:
&
'll
Value
,
order
:
traits
::
AtomicOrdering
,
order
:
common
::
AtomicOrdering
,
)
->
&
'll
Value
{
)
->
&
'll
Value
{
unsafe
{
unsafe
{
llvm
::
LLVMBuildAtomicRMW
(
llvm
::
LLVMBuildAtomicRMW
(
...
@@ -1101,7 +1101,7 @@ fn atomic_rmw(
...
@@ -1101,7 +1101,7 @@ fn atomic_rmw(
}
}
}
}
fn
atomic_fence
(
&
self
,
order
:
traits
::
AtomicOrdering
,
scope
:
traits
::
SynchronizationScope
)
{
fn
atomic_fence
(
&
self
,
order
:
common
::
AtomicOrdering
,
scope
:
common
::
SynchronizationScope
)
{
unsafe
{
unsafe
{
llvm
::
LLVMRustBuildAtomicFence
(
llvm
::
LLVMRustBuildAtomicFence
(
self
.llbuilder
,
self
.llbuilder
,
...
@@ -1227,7 +1227,7 @@ fn call_lifetime_intrinsic(&self, intrinsic: &str, ptr: &'ll Value, size: Size)
...
@@ -1227,7 +1227,7 @@ fn call_lifetime_intrinsic(&self, intrinsic: &str, ptr: &'ll Value, size: Size)
}
}
fn
call
(
&
self
,
llfn
:
&
'll
Value
,
args
:
&
[
&
'll
Value
],
fn
call
(
&
self
,
llfn
:
&
'll
Value
,
args
:
&
[
&
'll
Value
],
bundle
:
Option
<&
traits
::
OperandBundleDef
<
'll
,
&
'll
Value
>>
)
->
&
'll
Value
{
bundle
:
Option
<&
common
::
OperandBundleDef
<
'll
,
&
'll
Value
>>
)
->
&
'll
Value
{
self
.count_insn
(
"call"
);
self
.count_insn
(
"call"
);
debug!
(
"Call {:?} with args ({:?})"
,
debug!
(
"Call {:?} with args ({:?})"
,
...
...
src/librustc_codegen_llvm/common.rs
浏览文件 @
d577ec7e
...
@@ -28,7 +28,7 @@
...
@@ -28,7 +28,7 @@
use
rustc
::
ty
::{
self
,
Ty
,
TyCtxt
};
use
rustc
::
ty
::{
self
,
Ty
,
TyCtxt
};
use
rustc
::
ty
::
layout
::{
HasDataLayout
,
LayoutOf
};
use
rustc
::
ty
::
layout
::{
HasDataLayout
,
LayoutOf
};
use
rustc
::
hir
;
use
rustc
::
hir
;
use
traits
::{
BuilderMethods
,
OperandBundleDef
}
;
use
interfaces
::
BuilderMethods
;
use
libc
::{
c_uint
,
c_char
};
use
libc
::{
c_uint
,
c_char
};
...
@@ -49,6 +49,87 @@ pub fn type_is_freeze<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, ty: Ty<'tcx>) -> bo
...
@@ -49,6 +49,87 @@ pub fn type_is_freeze<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, ty: Ty<'tcx>) -> bo
ty
.is_freeze
(
tcx
,
ty
::
ParamEnv
::
reveal_all
(),
DUMMY_SP
)
ty
.is_freeze
(
tcx
,
ty
::
ParamEnv
::
reveal_all
(),
DUMMY_SP
)
}
}
pub
struct
OperandBundleDef
<
'a
,
Value
:
'a
>
{
pub
name
:
&
'a
str
,
pub
val
:
Value
}
impl
OperandBundleDef
<
'll
,
&
'll
Value
>
{
pub
fn
new
(
name
:
&
'll
str
,
val
:
&
'll
Value
)
->
Self
{
OperandBundleDef
{
name
,
val
}
}
}
pub
enum
IntPredicate
{
IntEQ
,
IntNE
,
IntUGT
,
IntUGE
,
IntULT
,
IntULE
,
IntSGT
,
IntSGE
,
IntSLT
,
IntSLE
}
#[allow(dead_code)]
pub
enum
RealPredicate
{
RealPredicateFalse
,
RealOEQ
,
RealOGT
,
RealOGE
,
RealOLT
,
RealOLE
,
RealONE
,
RealORD
,
RealUNO
,
RealUEQ
,
RealUGT
,
RealUGE
,
RealULT
,
RealULE
,
RealUNE
,
RealPredicateTrue
}
pub
enum
AtomicRmwBinOp
{
AtomicXchg
,
AtomicAdd
,
AtomicSub
,
AtomicAnd
,
AtomicNand
,
AtomicOr
,
AtomicXor
,
AtomicMax
,
AtomicMin
,
AtomicUMax
,
AtomicUMin
}
pub
enum
AtomicOrdering
{
#[allow(dead_code)]
NotAtomic
,
Unordered
,
Monotonic
,
// Consume, // Not specified yet.
Acquire
,
Release
,
AcquireRelease
,
SequentiallyConsistent
,
}
pub
enum
SynchronizationScope
{
// FIXME: figure out if this variant is needed at all.
#[allow(dead_code)]
Other
,
SingleThread
,
CrossThread
,
}
/*
/*
* A note on nomenclature of linking: "extern", "foreign", and "upcall".
* A note on nomenclature of linking: "extern", "foreign", and "upcall".
*
*
...
...
src/librustc_codegen_llvm/debuginfo/gdb.rs
浏览文件 @
d577ec7e
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
use
rustc
::
session
::
config
::
DebugInfo
;
use
rustc
::
session
::
config
::
DebugInfo
;
use
type_
::
Type
;
use
type_
::
Type
;
use
value
::
Value
;
use
value
::
Value
;
use
trait
s
::
BuilderMethods
;
use
interface
s
::
BuilderMethods
;
use
syntax
::
attr
;
use
syntax
::
attr
;
...
...
src/librustc_codegen_llvm/debuginfo/mod.rs
浏览文件 @
d577ec7e
...
@@ -45,7 +45,7 @@
...
@@ -45,7 +45,7 @@
use
syntax
::
ast
;
use
syntax
::
ast
;
use
syntax
::
symbol
::{
Symbol
,
InternedString
};
use
syntax
::
symbol
::{
Symbol
,
InternedString
};
use
rustc
::
ty
::
layout
::{
self
,
LayoutOf
};
use
rustc
::
ty
::
layout
::{
self
,
LayoutOf
};
use
trait
s
::
BuilderMethods
;
use
interface
s
::
BuilderMethods
;
pub
mod
gdb
;
pub
mod
gdb
;
mod
utils
;
mod
utils
;
...
...
src/librustc_codegen_llvm/debuginfo/source_loc.rs
浏览文件 @
d577ec7e
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
use
llvm
;
use
llvm
;
use
llvm
::
debuginfo
::
DIScope
;
use
llvm
::
debuginfo
::
DIScope
;
use
builder
::
Builder
;
use
builder
::
Builder
;
use
trait
s
::
BuilderMethods
;
use
interface
s
::
BuilderMethods
;
use
libc
::
c_uint
;
use
libc
::
c_uint
;
use
syntax_pos
::{
Span
,
Pos
};
use
syntax_pos
::{
Span
,
Pos
};
...
...
src/librustc_codegen_llvm/glue.rs
浏览文件 @
d577ec7e
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
use
rustc
::
ty
::
layout
::
LayoutOf
;
use
rustc
::
ty
::
layout
::
LayoutOf
;
use
rustc
::
ty
::{
self
,
Ty
};
use
rustc
::
ty
::{
self
,
Ty
};
use
value
::
Value
;
use
value
::
Value
;
use
traits
::{
IntPredicate
,
BuilderMethods
}
;
use
interfaces
::
BuilderMethods
;
pub
fn
size_and_align_of_dst
(
pub
fn
size_and_align_of_dst
(
bx
:
&
Builder
<
'_
,
'll
,
'tcx
>
,
bx
:
&
Builder
<
'_
,
'll
,
'tcx
>
,
...
...
src/librustc_codegen_llvm/
traits
.rs
→
src/librustc_codegen_llvm/
interfaces/builder
.rs
浏览文件 @
d577ec7e
...
@@ -14,92 +14,11 @@
...
@@ -14,92 +14,11 @@
use
rustc
::
ty
::
layout
::{
Align
,
Size
};
use
rustc
::
ty
::
layout
::{
Align
,
Size
};
use
rustc
::
session
::
Session
;
use
rustc
::
session
::
Session
;
use
builder
::
MemFlags
;
use
builder
::
MemFlags
;
use
value
::
Value
;
use
std
::
borrow
::
Cow
;
use
std
::
borrow
::
Cow
;
use
std
::
ops
::
Range
;
use
std
::
ops
::
Range
;
use
syntax
::
ast
::
AsmDialect
;
use
syntax
::
ast
::
AsmDialect
;
pub
struct
OperandBundleDef
<
'a
,
Value
:
'a
>
{
pub
name
:
&
'a
str
,
pub
val
:
Value
}
impl
OperandBundleDef
<
'll
,
&
'll
Value
>
{
pub
fn
new
(
name
:
&
'll
str
,
val
:
&
'll
Value
)
->
Self
{
OperandBundleDef
{
name
,
val
}
}
}
pub
enum
IntPredicate
{
IntEQ
,
IntNE
,
IntUGT
,
IntUGE
,
IntULT
,
IntULE
,
IntSGT
,
IntSGE
,
IntSLT
,
IntSLE
}
#[allow(dead_code)]
pub
enum
RealPredicate
{
RealPredicateFalse
,
RealOEQ
,
RealOGT
,
RealOGE
,
RealOLT
,
RealOLE
,
RealONE
,
RealORD
,
RealUNO
,
RealUEQ
,
RealUGT
,
RealUGE
,
RealULT
,
RealULE
,
RealUNE
,
RealPredicateTrue
}
pub
enum
AtomicRmwBinOp
{
AtomicXchg
,
AtomicAdd
,
AtomicSub
,
AtomicAnd
,
AtomicNand
,
AtomicOr
,
AtomicXor
,
AtomicMax
,
AtomicMin
,
AtomicUMax
,
AtomicUMin
}
pub
enum
AtomicOrdering
{
#[allow(dead_code)]
NotAtomic
,
Unordered
,
Monotonic
,
// Consume, // Not specified yet.
Acquire
,
Release
,
AcquireRelease
,
SequentiallyConsistent
,
}
pub
enum
SynchronizationScope
{
// FIXME: figure out if this variant is needed at all.
#[allow(dead_code)]
Other
,
SingleThread
,
CrossThread
,
}
pub
trait
BuilderMethods
<
'a
,
'll
:
'a
,
'tcx
:
'll
>
{
pub
trait
BuilderMethods
<
'a
,
'll
:
'a
,
'tcx
:
'll
>
{
...
...
src/librustc_codegen_llvm/interfaces/mod.rs
0 → 100644
浏览文件 @
d577ec7e
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
mod
builder
;
pub
use
self
::
builder
::
BuilderMethods
;
src/librustc_codegen_llvm/intrinsic.rs
浏览文件 @
d577ec7e
...
@@ -31,7 +31,7 @@
...
@@ -31,7 +31,7 @@
use
builder
::
Builder
;
use
builder
::
Builder
;
use
value
::
Value
;
use
value
::
Value
;
use
traits
::{
BuilderMethods
,
AtomicRmwBinOp
,
SynchronizationScope
}
;
use
interfaces
::
BuilderMethods
;
use
rustc
::
session
::
Session
;
use
rustc
::
session
::
Session
;
use
syntax_pos
::
Span
;
use
syntax_pos
::
Span
;
...
@@ -439,7 +439,7 @@ pub fn codegen_intrinsic_call(
...
@@ -439,7 +439,7 @@ pub fn codegen_intrinsic_call(
// This requires that atomic intrinsics follow a specific naming pattern:
// This requires that atomic intrinsics follow a specific naming pattern:
// "atomic_<operation>[_<ordering>]", and no ordering means SeqCst
// "atomic_<operation>[_<ordering>]", and no ordering means SeqCst
name
if
name
.starts_with
(
"atomic_"
)
=>
{
name
if
name
.starts_with
(
"atomic_"
)
=>
{
use
traits
::
AtomicOrdering
::
*
;
use
self
::
AtomicOrdering
::
*
;
let
split
:
Vec
<&
str
>
=
name
.split
(
'_'
)
.collect
();
let
split
:
Vec
<&
str
>
=
name
.split
(
'_'
)
.collect
();
...
...
src/librustc_codegen_llvm/lib.rs
浏览文件 @
d577ec7e
...
@@ -102,7 +102,7 @@ mod back {
...
@@ -102,7 +102,7 @@ mod back {
pub
mod
wasm
;
pub
mod
wasm
;
}
}
mod
trait
s
;
mod
interface
s
;
mod
abi
;
mod
abi
;
mod
allocator
;
mod
allocator
;
...
...
src/librustc_codegen_llvm/llvm/ffi.rs
浏览文件 @
d577ec7e
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
use
libc
::{
c_ulonglong
,
c_void
};
use
libc
::{
c_ulonglong
,
c_void
};
use
std
::
marker
::
PhantomData
;
use
std
::
marker
::
PhantomData
;
use
traits
;
use
common
;
use
syntax
;
use
syntax
;
use
super
::
RustString
;
use
super
::
RustString
;
...
@@ -144,18 +144,18 @@ pub enum IntPredicate {
...
@@ -144,18 +144,18 @@ pub enum IntPredicate {
}
}
impl
IntPredicate
{
impl
IntPredicate
{
pub
fn
from_generic
(
intpre
:
traits
::
IntPredicate
)
->
Self
{
pub
fn
from_generic
(
intpre
:
common
::
IntPredicate
)
->
Self
{
match
intpre
{
match
intpre
{
traits
::
IntPredicate
::
IntEQ
=>
IntPredicate
::
IntEQ
,
common
::
IntPredicate
::
IntEQ
=>
IntPredicate
::
IntEQ
,
traits
::
IntPredicate
::
IntNE
=>
IntPredicate
::
IntNE
,
common
::
IntPredicate
::
IntNE
=>
IntPredicate
::
IntNE
,
traits
::
IntPredicate
::
IntUGT
=>
IntPredicate
::
IntUGT
,
common
::
IntPredicate
::
IntUGT
=>
IntPredicate
::
IntUGT
,
traits
::
IntPredicate
::
IntUGE
=>
IntPredicate
::
IntUGE
,
common
::
IntPredicate
::
IntUGE
=>
IntPredicate
::
IntUGE
,
traits
::
IntPredicate
::
IntULT
=>
IntPredicate
::
IntULT
,
common
::
IntPredicate
::
IntULT
=>
IntPredicate
::
IntULT
,
traits
::
IntPredicate
::
IntULE
=>
IntPredicate
::
IntULE
,
common
::
IntPredicate
::
IntULE
=>
IntPredicate
::
IntULE
,
traits
::
IntPredicate
::
IntSGT
=>
IntPredicate
::
IntSGT
,
common
::
IntPredicate
::
IntSGT
=>
IntPredicate
::
IntSGT
,
traits
::
IntPredicate
::
IntSGE
=>
IntPredicate
::
IntSGE
,
common
::
IntPredicate
::
IntSGE
=>
IntPredicate
::
IntSGE
,
traits
::
IntPredicate
::
IntSLT
=>
IntPredicate
::
IntSLT
,
common
::
IntPredicate
::
IntSLT
=>
IntPredicate
::
IntSLT
,
traits
::
IntPredicate
::
IntSLE
=>
IntPredicate
::
IntSLE
,
common
::
IntPredicate
::
IntSLE
=>
IntPredicate
::
IntSLE
,
}
}
}
}
}
}
...
@@ -183,24 +183,24 @@ pub enum RealPredicate {
...
@@ -183,24 +183,24 @@ pub enum RealPredicate {
}
}
impl
RealPredicate
{
impl
RealPredicate
{
pub
fn
from_generic
(
realpred
:
traits
::
RealPredicate
)
->
Self
{
pub
fn
from_generic
(
realpred
:
common
::
RealPredicate
)
->
Self
{
match
realpred
{
match
realpred
{
traits
::
RealPredicate
::
RealPredicateFalse
=>
RealPredicate
::
RealPredicateFalse
,
common
::
RealPredicate
::
RealPredicateFalse
=>
RealPredicate
::
RealPredicateFalse
,
traits
::
RealPredicate
::
RealOEQ
=>
RealPredicate
::
RealOEQ
,
common
::
RealPredicate
::
RealOEQ
=>
RealPredicate
::
RealOEQ
,
traits
::
RealPredicate
::
RealOGT
=>
RealPredicate
::
RealOGT
,
common
::
RealPredicate
::
RealOGT
=>
RealPredicate
::
RealOGT
,
traits
::
RealPredicate
::
RealOGE
=>
RealPredicate
::
RealOGE
,
common
::
RealPredicate
::
RealOGE
=>
RealPredicate
::
RealOGE
,
traits
::
RealPredicate
::
RealOLT
=>
RealPredicate
::
RealOLT
,
common
::
RealPredicate
::
RealOLT
=>
RealPredicate
::
RealOLT
,
traits
::
RealPredicate
::
RealOLE
=>
RealPredicate
::
RealOLE
,
common
::
RealPredicate
::
RealOLE
=>
RealPredicate
::
RealOLE
,
traits
::
RealPredicate
::
RealONE
=>
RealPredicate
::
RealONE
,
common
::
RealPredicate
::
RealONE
=>
RealPredicate
::
RealONE
,
traits
::
RealPredicate
::
RealORD
=>
RealPredicate
::
RealORD
,
common
::
RealPredicate
::
RealORD
=>
RealPredicate
::
RealORD
,
traits
::
RealPredicate
::
RealUNO
=>
RealPredicate
::
RealUNO
,
common
::
RealPredicate
::
RealUNO
=>
RealPredicate
::
RealUNO
,
traits
::
RealPredicate
::
RealUEQ
=>
RealPredicate
::
RealUEQ
,
common
::
RealPredicate
::
RealUEQ
=>
RealPredicate
::
RealUEQ
,
traits
::
RealPredicate
::
RealUGT
=>
RealPredicate
::
RealUGT
,
common
::
RealPredicate
::
RealUGT
=>
RealPredicate
::
RealUGT
,
traits
::
RealPredicate
::
RealUGE
=>
RealPredicate
::
RealUGE
,
common
::
RealPredicate
::
RealUGE
=>
RealPredicate
::
RealUGE
,
traits
::
RealPredicate
::
RealULT
=>
RealPredicate
::
RealULT
,
common
::
RealPredicate
::
RealULT
=>
RealPredicate
::
RealULT
,
traits
::
RealPredicate
::
RealULE
=>
RealPredicate
::
RealULE
,
common
::
RealPredicate
::
RealULE
=>
RealPredicate
::
RealULE
,
traits
::
RealPredicate
::
RealUNE
=>
RealPredicate
::
RealUNE
,
common
::
RealPredicate
::
RealUNE
=>
RealPredicate
::
RealUNE
,
traits
::
RealPredicate
::
RealPredicateTrue
=>
RealPredicate
::
RealPredicateTrue
common
::
RealPredicate
::
RealPredicateTrue
=>
RealPredicate
::
RealPredicateTrue
}
}
}
}
}
}
...
@@ -246,19 +246,19 @@ pub enum AtomicRmwBinOp {
...
@@ -246,19 +246,19 @@ pub enum AtomicRmwBinOp {
}
}
impl
AtomicRmwBinOp
{
impl
AtomicRmwBinOp
{
pub
fn
from_generic
(
op
:
traits
::
AtomicRmwBinOp
)
->
Self
{
pub
fn
from_generic
(
op
:
common
::
AtomicRmwBinOp
)
->
Self
{
match
op
{
match
op
{
traits
::
AtomicRmwBinOp
::
AtomicXchg
=>
AtomicRmwBinOp
::
AtomicXchg
,
common
::
AtomicRmwBinOp
::
AtomicXchg
=>
AtomicRmwBinOp
::
AtomicXchg
,
traits
::
AtomicRmwBinOp
::
AtomicAdd
=>
AtomicRmwBinOp
::
AtomicAdd
,
common
::
AtomicRmwBinOp
::
AtomicAdd
=>
AtomicRmwBinOp
::
AtomicAdd
,
traits
::
AtomicRmwBinOp
::
AtomicSub
=>
AtomicRmwBinOp
::
AtomicSub
,
common
::
AtomicRmwBinOp
::
AtomicSub
=>
AtomicRmwBinOp
::
AtomicSub
,
traits
::
AtomicRmwBinOp
::
AtomicAnd
=>
AtomicRmwBinOp
::
AtomicAnd
,
common
::
AtomicRmwBinOp
::
AtomicAnd
=>
AtomicRmwBinOp
::
AtomicAnd
,
traits
::
AtomicRmwBinOp
::
AtomicNand
=>
AtomicRmwBinOp
::
AtomicNand
,
common
::
AtomicRmwBinOp
::
AtomicNand
=>
AtomicRmwBinOp
::
AtomicNand
,
traits
::
AtomicRmwBinOp
::
AtomicOr
=>
AtomicRmwBinOp
::
AtomicOr
,
common
::
AtomicRmwBinOp
::
AtomicOr
=>
AtomicRmwBinOp
::
AtomicOr
,
traits
::
AtomicRmwBinOp
::
AtomicXor
=>
AtomicRmwBinOp
::
AtomicXor
,
common
::
AtomicRmwBinOp
::
AtomicXor
=>
AtomicRmwBinOp
::
AtomicXor
,
traits
::
AtomicRmwBinOp
::
AtomicMax
=>
AtomicRmwBinOp
::
AtomicMax
,
common
::
AtomicRmwBinOp
::
AtomicMax
=>
AtomicRmwBinOp
::
AtomicMax
,
traits
::
AtomicRmwBinOp
::
AtomicMin
=>
AtomicRmwBinOp
::
AtomicMin
,
common
::
AtomicRmwBinOp
::
AtomicMin
=>
AtomicRmwBinOp
::
AtomicMin
,
traits
::
AtomicRmwBinOp
::
AtomicUMax
=>
AtomicRmwBinOp
::
AtomicUMax
,
common
::
AtomicRmwBinOp
::
AtomicUMax
=>
AtomicRmwBinOp
::
AtomicUMax
,
traits
::
AtomicRmwBinOp
::
AtomicUMin
=>
AtomicRmwBinOp
::
AtomicUMin
common
::
AtomicRmwBinOp
::
AtomicUMin
=>
AtomicRmwBinOp
::
AtomicUMin
}
}
}
}
}
}
...
@@ -279,15 +279,15 @@ pub enum AtomicOrdering {
...
@@ -279,15 +279,15 @@ pub enum AtomicOrdering {
}
}
impl
AtomicOrdering
{
impl
AtomicOrdering
{
pub
fn
from_generic
(
ao
:
traits
::
AtomicOrdering
)
->
Self
{
pub
fn
from_generic
(
ao
:
common
::
AtomicOrdering
)
->
Self
{
match
ao
{
match
ao
{
traits
::
AtomicOrdering
::
NotAtomic
=>
AtomicOrdering
::
NotAtomic
,
common
::
AtomicOrdering
::
NotAtomic
=>
AtomicOrdering
::
NotAtomic
,
traits
::
AtomicOrdering
::
Unordered
=>
AtomicOrdering
::
Unordered
,
common
::
AtomicOrdering
::
Unordered
=>
AtomicOrdering
::
Unordered
,
traits
::
AtomicOrdering
::
Monotonic
=>
AtomicOrdering
::
Monotonic
,
common
::
AtomicOrdering
::
Monotonic
=>
AtomicOrdering
::
Monotonic
,
traits
::
AtomicOrdering
::
Acquire
=>
AtomicOrdering
::
Acquire
,
common
::
AtomicOrdering
::
Acquire
=>
AtomicOrdering
::
Acquire
,
traits
::
AtomicOrdering
::
Release
=>
AtomicOrdering
::
Release
,
common
::
AtomicOrdering
::
Release
=>
AtomicOrdering
::
Release
,
traits
::
AtomicOrdering
::
AcquireRelease
=>
AtomicOrdering
::
AcquireRelease
,
common
::
AtomicOrdering
::
AcquireRelease
=>
AtomicOrdering
::
AcquireRelease
,
traits
::
AtomicOrdering
::
SequentiallyConsistent
=>
common
::
AtomicOrdering
::
SequentiallyConsistent
=>
AtomicOrdering
::
SequentiallyConsistent
AtomicOrdering
::
SequentiallyConsistent
}
}
}
}
...
@@ -306,11 +306,11 @@ pub enum SynchronizationScope {
...
@@ -306,11 +306,11 @@ pub enum SynchronizationScope {
}
}
impl
SynchronizationScope
{
impl
SynchronizationScope
{
pub
fn
from_generic
(
sc
:
traits
::
SynchronizationScope
)
->
Self
{
pub
fn
from_generic
(
sc
:
common
::
SynchronizationScope
)
->
Self
{
match
sc
{
match
sc
{
traits
::
SynchronizationScope
::
Other
=>
SynchronizationScope
::
Other
,
common
::
SynchronizationScope
::
Other
=>
SynchronizationScope
::
Other
,
traits
::
SynchronizationScope
::
SingleThread
=>
SynchronizationScope
::
SingleThread
,
common
::
SynchronizationScope
::
SingleThread
=>
SynchronizationScope
::
SingleThread
,
traits
::
SynchronizationScope
::
CrossThread
=>
SynchronizationScope
::
CrossThread
,
common
::
SynchronizationScope
::
CrossThread
=>
SynchronizationScope
::
CrossThread
,
}
}
}
}
}
}
...
...
src/librustc_codegen_llvm/llvm/mod.rs
浏览文件 @
d577ec7e
...
@@ -28,7 +28,7 @@
...
@@ -28,7 +28,7 @@
use
std
::
cell
::
RefCell
;
use
std
::
cell
::
RefCell
;
use
libc
::{
self
,
c_uint
,
c_char
,
size_t
};
use
libc
::{
self
,
c_uint
,
c_char
,
size_t
};
use
rustc_data_structures
::
small_c_str
::
SmallCStr
;
use
rustc_data_structures
::
small_c_str
::
SmallCStr
;
use
traits
;
use
common
;
pub
mod
archive_ro
;
pub
mod
archive_ro
;
pub
mod
diagnostic
;
pub
mod
diagnostic
;
...
@@ -273,7 +273,7 @@ pub fn new(name: &str, vals: &[&'a Value]) -> Self {
...
@@ -273,7 +273,7 @@ pub fn new(name: &str, vals: &[&'a Value]) -> Self {
OperandBundleDef
{
raw
:
def
}
OperandBundleDef
{
raw
:
def
}
}
}
pub
fn
from_generic
(
bundle
:
&
traits
::
OperandBundleDef
<
'a
,
&
'a
Value
>
)
->
Self
{
pub
fn
from_generic
(
bundle
:
&
common
::
OperandBundleDef
<
'a
,
&
'a
Value
>
)
->
Self
{
Self
::
new
(
bundle
.name
,
&
[
bundle
.val
])
Self
::
new
(
bundle
.name
,
&
[
bundle
.val
])
}
}
}
}
...
...
src/librustc_codegen_llvm/meth.rs
浏览文件 @
d577ec7e
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
use
type_
::
Type
;
use
type_
::
Type
;
use
value
::
Value
;
use
value
::
Value
;
use
trait
s
::
BuilderMethods
;
use
interface
s
::
BuilderMethods
;
use
rustc
::
ty
::{
self
,
Ty
};
use
rustc
::
ty
::{
self
,
Ty
};
use
rustc
::
ty
::
layout
::
HasDataLayout
;
use
rustc
::
ty
::
layout
::
HasDataLayout
;
...
...
src/librustc_codegen_llvm/mir/block.rs
浏览文件 @
d577ec7e
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
use
base
;
use
base
;
use
callee
;
use
callee
;
use
builder
::{
Builder
,
MemFlags
};
use
builder
::{
Builder
,
MemFlags
};
use
common
::{
self
,
C_bool
,
C_str_slice
,
C_struct
,
C_u32
,
C_uint_big
,
C_undef
};
use
common
::{
self
,
C_bool
,
C_str_slice
,
C_struct
,
C_u32
,
C_uint_big
,
C_undef
,
IntPredicate
};
use
consts
;
use
consts
;
use
meth
;
use
meth
;
use
monomorphize
;
use
monomorphize
;
...
@@ -26,7 +26,7 @@
...
@@ -26,7 +26,7 @@
use
type_
::
Type
;
use
type_
::
Type
;
use
value
::
Value
;
use
value
::
Value
;
use
traits
::{
IntPredicate
,
BuilderMethods
}
;
use
interfaces
::
BuilderMethods
;
use
syntax
::
symbol
::
Symbol
;
use
syntax
::
symbol
::
Symbol
;
use
syntax_pos
::
Pos
;
use
syntax_pos
::
Pos
;
...
...
src/librustc_codegen_llvm/mir/constant.rs
浏览文件 @
d577ec7e
...
@@ -26,7 +26,7 @@
...
@@ -26,7 +26,7 @@
use
syntax
::
ast
::
Mutability
;
use
syntax
::
ast
::
Mutability
;
use
syntax
::
source_map
::
Span
;
use
syntax
::
source_map
::
Span
;
use
value
::
Value
;
use
value
::
Value
;
use
trait
s
::
BuilderMethods
;
use
interface
s
::
BuilderMethods
;
use
super
::
super
::
callee
;
use
super
::
super
::
callee
;
use
super
::
FunctionCx
;
use
super
::
FunctionCx
;
...
...
src/librustc_codegen_llvm/mir/mod.rs
浏览文件 @
d577ec7e
...
@@ -26,7 +26,7 @@
...
@@ -26,7 +26,7 @@
use
abi
::{
ArgTypeExt
,
FnType
,
FnTypeExt
,
PassMode
};
use
abi
::{
ArgTypeExt
,
FnType
,
FnTypeExt
,
PassMode
};
use
type_
::
Type
;
use
type_
::
Type
;
use
value
::
Value
;
use
value
::
Value
;
use
trait
s
::
BuilderMethods
;
use
interface
s
::
BuilderMethods
;
use
syntax_pos
::{
DUMMY_SP
,
NO_EXPANSION
,
BytePos
,
Span
};
use
syntax_pos
::{
DUMMY_SP
,
NO_EXPANSION
,
BytePos
,
Span
};
use
syntax
::
symbol
::
keywords
;
use
syntax
::
symbol
::
keywords
;
...
...
src/librustc_codegen_llvm/mir/operand.rs
浏览文件 @
d577ec7e
...
@@ -21,7 +21,7 @@
...
@@ -21,7 +21,7 @@
use
type_
::
Type
;
use
type_
::
Type
;
use
glue
;
use
glue
;
use
trait
s
::
BuilderMethods
;
use
interface
s
::
BuilderMethods
;
use
std
::
fmt
;
use
std
::
fmt
;
...
...
src/librustc_codegen_llvm/mir/place.rs
浏览文件 @
d577ec7e
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
use
rustc
::
mir
::
tcx
::
PlaceTy
;
use
rustc
::
mir
::
tcx
::
PlaceTy
;
use
base
;
use
base
;
use
builder
::
Builder
;
use
builder
::
Builder
;
use
common
::{
CodegenCx
,
C_undef
,
C_usize
,
C_u8
,
C_u32
,
C_uint
,
C_null
,
C_uint_big
};
use
common
::{
CodegenCx
,
C_undef
,
C_usize
,
C_u8
,
C_u32
,
C_uint
,
C_null
,
C_uint_big
,
IntPredicate
};
use
consts
;
use
consts
;
use
type_of
::
LayoutLlvmExt
;
use
type_of
::
LayoutLlvmExt
;
use
type_
::
Type
;
use
type_
::
Type
;
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
use
glue
;
use
glue
;
use
mir
::
constant
::
const_alloc_to_llvm
;
use
mir
::
constant
::
const_alloc_to_llvm
;
use
traits
::{
IntPredicate
,
BuilderMethods
}
;
use
interfaces
::
BuilderMethods
;
use
super
::{
FunctionCx
,
LocalRef
};
use
super
::{
FunctionCx
,
LocalRef
};
use
super
::
operand
::{
OperandRef
,
OperandValue
};
use
super
::
operand
::{
OperandRef
,
OperandValue
};
...
...
src/librustc_codegen_llvm/mir/rvalue.rs
浏览文件 @
d577ec7e
...
@@ -20,14 +20,17 @@
...
@@ -20,14 +20,17 @@
use
builder
::
Builder
;
use
builder
::
Builder
;
use
callee
;
use
callee
;
use
common
::{
self
,
val_ty
};
use
common
::{
self
,
val_ty
};
use
common
::{
C_bool
,
C_u8
,
C_i32
,
C_u32
,
C_u64
,
C_undef
,
C_null
,
C_usize
,
C_uint
,
C_uint_big
};
use
common
::{
C_bool
,
C_u8
,
C_i32
,
C_u32
,
C_u64
,
C_undef
,
C_null
,
C_usize
,
C_uint
,
C_uint_big
,
IntPredicate
,
RealPredicate
};
use
consts
;
use
consts
;
use
monomorphize
;
use
monomorphize
;
use
type_
::
Type
;
use
type_
::
Type
;
use
type_of
::
LayoutLlvmExt
;
use
type_of
::
LayoutLlvmExt
;
use
value
::
Value
;
use
value
::
Value
;
use
traits
::{
IntPredicate
,
RealPredicate
,
BuilderMethods
}
;
use
interfaces
::
BuilderMethods
;
use
super
::{
FunctionCx
,
LocalRef
};
use
super
::{
FunctionCx
,
LocalRef
};
use
super
::
operand
::{
OperandRef
,
OperandValue
};
use
super
::
operand
::{
OperandRef
,
OperandValue
};
...
...
src/librustc_codegen_llvm/mir/statement.rs
浏览文件 @
d577ec7e
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
use
asm
;
use
asm
;
use
builder
::
Builder
;
use
builder
::
Builder
;
use
trait
s
::
BuilderMethods
;
use
interface
s
::
BuilderMethods
;
use
super
::
FunctionCx
;
use
super
::
FunctionCx
;
use
super
::
LocalRef
;
use
super
::
LocalRef
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录