Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
b4a0d891
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,发现更多精彩内容 >>
提交
b4a0d891
编写于
5月 06, 2011
作者:
K
Kelly Wilson
提交者:
Graydon Hoare
5月 06, 2011
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Ge the host triple using LLVM. Fix a few 'mutable' warnings also.
上级
1e03f004
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
42 addition
and
14 deletion
+42
-14
src/comp/driver/rustc.rs
src/comp/driver/rustc.rs
+26
-8
src/comp/lib/llvm.rs
src/comp/lib/llvm.rs
+3
-0
src/lib/sort.rs
src/lib/sort.rs
+6
-6
src/rustllvm/RustWrapper.cpp
src/rustllvm/RustWrapper.cpp
+6
-0
src/rustllvm/rustllvm.def.in
src/rustllvm/rustllvm.def.in
+1
-0
未找到文件。
src/comp/driver/rustc.rs
浏览文件 @
b4a0d891
...
...
@@ -161,11 +161,27 @@ fn usage(str argv0) {
--no-typestate don't run the typestate pass (unsafe!)
\n\n
"
);
}
fn
get_os
()
->
session
.os
{
auto
s
=
std
.os
.target_os
();
if
(
_
str
.eq
(
s
,
"win32"
))
{
ret
session
.os_win32
;
}
if
(
_
str
.eq
(
s
,
"macos"
))
{
ret
session
.os_macos
;
}
if
(
_
str
.eq
(
s
,
"linux"
))
{
ret
session
.os_linux
;
}
fn
get_os
(
str
triple
)
->
session
.os
{
if
(
_
str
.find
(
triple
,
"win32"
)
>
0
||
_
str
.find
(
triple
,
"mingw32"
)
>
0
)
{
ret
session
.os_win32
;
}
else
if
(
_
str
.find
(
triple
,
"darwin"
)
>
0
)
{
ret
session
.os_macos
;
}
else
if
(
_
str
.find
(
triple
,
"linux"
)
>
0
)
{
ret
session
.os_linux
;
}
}
fn
get_arch
(
str
triple
)
->
session
.arch
{
if
(
_
str
.find
(
triple
,
"i386"
)
>
0
||
_
str
.find
(
triple
,
"i486"
)
>
0
||
_
str
.find
(
triple
,
"i586"
)
>
0
||
_
str
.find
(
triple
,
"i686"
)
>
0
||
_
str
.find
(
triple
,
"i786"
)
>
0
)
{
ret
session
.arch_x86
;
}
else
if
(
_
str
.find
(
triple
,
"x86_64"
)
>
0
)
{
ret
session
.arch_x64
;
}
else
if
(
_
str
.find
(
triple
,
"arm"
)
>
0
||
_
str
.find
(
triple
,
"xscale"
)
>
0
)
{
ret
session
.arch_arm
;
}
}
fn
get_default_sysroot
(
str
binary
)
->
str
{
...
...
@@ -176,10 +192,12 @@ fn get_default_sysroot(str binary) -> str {
fn
main
(
vec
[
str
]
args
)
{
// FIXME: don't hard-wire this.
let
str
triple
=
std
._str.rustrt
.str_from_cstr
(
llvm
.llvm
.LLVMRustGetHostTriple
());
let
@
session
.config
target_cfg
=
@
rec
(
os
=
get_os
(),
arch
=
session
.arch_x86
,
@
rec
(
os
=
get_os
(
triple
),
arch
=
get_arch
(
triple
)
,
int_type
=
common
.ty_i32
,
uint_type
=
common
.ty_u32
,
float_type
=
common
.ty_f64
);
...
...
src/comp/lib/llvm.rs
浏览文件 @
b4a0d891
...
...
@@ -848,6 +848,9 @@ fn LLVMRustWriteOutputFile(PassManagerRef PM, ModuleRef M,
call. */
fn
LLVMRustGetLastError
()
->
sbuf
;
/** Returns a string describing the hosts triple */
fn
LLVMRustGetHostTriple
()
->
sbuf
;
/** Parses the bitcode in the given memory buffer. */
fn
LLVMRustParseBitcode
(
MemoryBufferRef
MemBuf
)
->
ModuleRef
;
...
...
src/lib/sort.rs
浏览文件 @
b4a0d891
...
...
@@ -45,10 +45,10 @@ fn swap[T](vec[mutable T] arr, uint x, uint y) {
arr
.
(
y
)
=
a
;
}
fn
part
[
T
](
lteq
[
mutable
T
]
compare_func
,
vec
[
mutable
T
]
arr
,
uint
left
,
fn
part
[
T
](
lteq
[
T
]
compare_func
,
vec
[
mutable
T
]
arr
,
uint
left
,
uint
right
,
uint
pivot
)
->
uint
{
fn
compare
[
T
](
lteq
[
mutable
T
]
compare_func
,
vec
[
mutable
T
]
arr
,
fn
compare
[
T
](
lteq
[
T
]
compare_func
,
vec
[
mutable
T
]
arr
,
uint
arr_idx
,
&
T
arr_value
)
->
bool
{
ret
compare_func
(
arr
.
(
arr_idx
),
arr_value
);
...
...
@@ -69,7 +69,7 @@ fn compare[T](lteq[mutable T] compare_func, vec[mutable T]arr,
ret
storage_index
;
}
fn
qsort
[
T
](
lteq
[
mutable
T
]
compare_func
,
vec
[
mutable
T
]
arr
,
uint
left
,
fn
qsort
[
T
](
lteq
[
T
]
compare_func
,
vec
[
mutable
T
]
arr
,
uint
left
,
uint
right
)
{
if
(
right
>
left
)
{
...
...
@@ -83,12 +83,12 @@ fn qsort[T](lteq[mutable T] compare_func, vec[mutable T] arr, uint left,
}
}
fn
quick_sort
[
T
](
lteq
[
mutable
T
]
compare_func
,
vec
[
mutable
T
]
arr
)
{
fn
quick_sort
[
T
](
lteq
[
T
]
compare_func
,
vec
[
mutable
T
]
arr
)
{
if
(
len
[
mutable
T
](
arr
)
==
0u
)
{
if
(
len
[
T
](
arr
)
==
0u
)
{
ret
;
}
qsort
[
T
](
compare_func
,
arr
,
0u
,
(
len
[
mutable
T
](
arr
))
-
1u
);
qsort
[
T
](
compare_func
,
arr
,
0u
,
(
len
[
T
](
arr
))
-
1u
);
}
// Local Variables:
...
...
src/rustllvm/RustWrapper.cpp
浏览文件 @
b4a0d891
...
...
@@ -20,6 +20,7 @@
#include "llvm/Target/TargetSelect.h"
#include "llvm/Target/TargetRegistry.h"
#include "llvm/Target/TargetOptions.h"
#include "llvm/Support/Host.h"
#include "llvm-c/Core.h"
#include "llvm-c/BitReader.h"
#include "llvm-c/Object.h"
...
...
@@ -106,3 +107,8 @@ extern "C" LLVMModuleRef LLVMRustParseBitcode(LLVMMemoryBufferRef MemBuf) {
?
NULL
:
M
;
}
extern
"C"
const
char
*
LLVMRustGetHostTriple
(
void
)
{
static
std
::
string
str
=
llvm
::
sys
::
getHostTriple
();
return
str
.
c_str
();
}
src/rustllvm/rustllvm.def.in
浏览文件 @
b4a0d891
LLVMRustCreateMemoryBufferWithContentsOfFile
LLVMRustWriteOutputFile
LLVMRustGetLastError
LLVMRustGetHostTriple
LLVMRustParseBitcode
LLVMLinkModules
LLVMCreateObjectFile
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录