Haitao Li
88f29aab27
Use attributes for native module ABI and link name
...
This patch changes how to specify ABI and link name of a native module.
Before:
native "cdecl" mod llvm = "rustllvm" {...}
After:
#[abi = "cdecl"]
#[link_name = "rustllvm"]
native mod llvm {...}
The old optional syntax for ABI and link name is no longer supported.
Fixes issue #547
2011-11-16 11:35:13 -08:00
Haitao Li
fba0df72d3
Use attributes for native module ABI and link name [temp]
...
This patch adds support of using attributes to specify native mode ABI
and link name. The old optional syntax like:
native "cdecl" mod llvm = "rustllvm" { ... }
is still supported.
This is a transitional commit to avoid making a stage1 (backward
imcompatible) snapshot.
2011-11-16 23:45:07 +08:00
Haitao Li
3b683f5205
rustc: Use link_name attribute for native function
...
Fixes issue #906
2011-11-16 23:45:07 +08:00
Brian Anderson
a7188a6577
rustc: Don't sign extend uints during translation
...
Doing so produces incorrect results on a 32-bit compiler targeting 64-bits
2011-11-15 17:53:44 -08:00
Brian Anderson
dd5512ccb0
Support conditional compilation based on architecture
...
target_os = "x86" or target_os = "x86_64"
2011-11-15 16:33:09 -08:00
Haitao Li
eae478cd74
Use native fn's link name attribute if given
...
Fixes issue #905
2011-11-15 22:31:33 +08:00
Marijn Haverbeke
9ff6f816ba
Fix handling of loops and conditionals in alias.rs
...
It now threads information about invalidated aliases through the AST
properly. This makes it more permissive for conditionals (invalidating
an alias in one branch doesn't prevent you from using it in another),
and less permissive for loops (it now properly notices when a loop
invalidates an alias that it might still use in another iteration).
Closes #1144
2011-11-15 13:29:57 +01:00
Haitao Li
b8dd148444
rustllvm: Add a GetOrInsertFunction wrapper
...
Fixes issue #1161
Test-case-by: Brian Anderson <banderson@mozilla.com>
Signed-off-by: Haitao Li <lihaitao@gmail.com>
2011-11-15 00:33:29 +08:00
Brian Anderson
3cc2641fc3
Make various binops not typecheck for unsafe pointers. Closes #1173
2011-11-13 13:55:12 -08:00
Haitao Li
39084fb881
Remove unused "--check-unsafe" flag
...
Fixes issue #1138
2011-11-12 00:01:37 +08:00
Haitao Li
5a7249c935
Cleanup unused imports
2011-11-10 19:19:40 -08:00
Haitao Li
9bc2f1800d
rustc: Add support of warning on unused imports
...
Fixes issue #889
2011-11-10 19:19:10 -08:00
Josh Matthews
43cb74b830
Add float support to #fmt. Fix #1014 .
2011-11-10 11:40:34 -08:00
Brian Anderson
0d9e32d70d
Rename "c-stack-stdcall" ABI to "stdcall"
2011-11-09 18:45:25 -08:00
Brian Anderson
b7ab28b50f
Rename "c-stack-cdecl" ABI to "cdecl"
2011-11-09 18:44:12 -08:00
Brian Anderson
d26a96d2bb
Add "cdecl" as synonym for "c-stack-cdecl"
2011-11-09 16:47:44 -08:00
Brian Anderson
e96342820d
Add "stdcall" as synonym for "c-stack-stdcall"
2011-11-09 16:47:44 -08:00
Brian Anderson
1afc943c91
rustc: Rename native_abi_c_stack_cdecl to native_abi_cdecl
2011-11-09 16:47:44 -08:00
Brian Anderson
10c35959e7
rustc: Rename native_abi_c_stack_stdcall to native_abi_stdcall
2011-11-09 16:47:44 -08:00
Brian Anderson
c7f0ca6063
Remove native "x86stdcall" ABI
2011-11-09 16:47:43 -08:00
Brian Anderson
4a4d31cf0e
Make native "c-stack-stdcall" ABI work
...
The symbol name is based on the number of arguments, so we have to declare
it correctly.
For some reason GetLastError doesn't work now.
2011-11-09 15:29:53 -08:00
Joshua Wise
c8fae5dc75
trans: Add binops (except for logic and comparators) and unops to trans_const_expr. Working towards issue #570 .
2011-11-09 14:33:06 -08:00
Joshua Wise
e674a7e99f
middle: Add a pass to reject bad const expressions earlier. Currently just rejects unimplemented const expressions, but will be needed later.
2011-11-09 14:33:05 -08:00
Brian Anderson
4f3f04643f
Remove native "cdecl" ABI
2011-11-08 17:17:06 -08:00
Haitao Li
253242390c
Use ".ll" as default suffix of LLVM assembly file
...
This commit is a follow up of Issue #1147 .
Althought there are some inconsistency about this naming convention in
LLVM. For example, `clang' write LLVM assembly to a file with ".s" suffix,
while both `llvm-dis' and `opt' write to files with ".ll" suffices. We
think ".ll" makes more sense.
Also rustc manual page is updated.
2011-11-07 21:12:48 -08:00
Brian Anderson
fcd39b1191
Remove native "llvm" ABI
2011-11-07 15:29:05 -08:00
Brian Anderson
1103fe8ca0
Remove native "rust" ABI
2011-11-07 15:14:10 -08:00
David Rajchenbach-Teller
16bdb85cb4
[Parser] parser.rs: Made two error messages less ambiguous
2011-11-07 12:04:16 -08:00
Haitao Li
852e789e78
rustc: Set LLVM module identifier as crate name
2011-11-07 22:59:21 +08:00
Haitao Li
b12de98814
rustc: Add support of generating LLVM assembly
...
rustc generates output files in LLVM bitcode format if "--emit-llvm"
option is given. When used with the "-S" option, rustc generates LLVM
intermediate language assembly files.
Fixes Issue #476
2011-11-07 21:44:40 +08:00
Marijn Haverbeke
f3468d03a2
Fix a long line
2011-11-07 10:10:27 +01:00
Joshua Wise
07bab92970
llvm::mk_object_file should really return an option, since the underlying LLVM function can fail. Fixes a crash on OS X when rust has bad dylibs within eyeshot.
2011-11-07 09:56:30 +01:00
Marijn Haverbeke
1a68a98824
Disallow writing to function arguments again
...
Remove implicit copying hack.
Closes #1118
2011-11-03 10:57:54 +01:00
Niko Matsakis
8385d77b32
fix line too long
2011-11-02 14:14:20 -07:00
Niko Matsakis
ec77144713
add -m64 to gcc args if appropriate
2011-11-02 14:14:20 -07:00
Niko Matsakis
e012fd03f3
correct more i32 vs int mismatches
2011-11-02 14:14:19 -07:00
Niko Matsakis
602ae9139c
convert various ints to i32 and vice versa
2011-11-02 14:14:19 -07:00
Niko Matsakis
4bd05e5be2
convert GEP to i32
2011-11-02 14:14:19 -07:00
Niko Matsakis
f1bc9307d8
get things checking on ia32
2011-11-02 14:14:19 -07:00
Niko Matsakis
c0e9c42bd2
thread the context through so that int can be 64 bits on x86_64
2011-11-02 14:14:19 -07:00
Niko Matsakis
2521cda1ec
work on making the size of ints depend on the target arch
2011-11-02 14:14:19 -07:00
Niko Matsakis
9146bb09a1
work on making the size of ints depend on the target arch
2011-11-02 14:14:19 -07:00
Niko Matsakis
8011e3fabb
hack around on makefiles trying to get a 64 bit build
...
right now there are many temporary hacks, search for NDM to find them
2011-11-02 14:13:22 -07:00
Niko Matsakis
5b3bddcd87
start to isolate target strings so that they can be configured for
...
x64 or other targets
2011-11-02 14:13:22 -07:00
Marijn Haverbeke
eef9a0bd39
Evaluate alt expressions in their own block context
...
Closes #785
2011-11-02 14:30:51 +01:00
Marijn Haverbeke
d8d35e7c40
Rename car/cdr to head/tail in std::list
...
Closes #1086
2011-11-02 14:23:49 +01:00
Marijn Haverbeke
5b0c103b39
Make it possible to cast unsafe pointers with the 'as' operator
2011-11-02 12:20:12 +01:00
Marijn Haverbeke
eaf9e05611
Make 'lambda(...) -> ...' parse as a type
2011-11-02 12:20:11 +01:00
Marijn Haverbeke
4e9b8a28f7
Make resolving of imports behave more sanely
...
An import now ignores itself when resolving its target. This gets rid of
the previously existing (problematic) behaviour where the import would start
looking one scope up when its name was the same as its target's first
component.
Closes #1114
2011-11-02 12:20:11 +01:00
Marijn Haverbeke
7ed7e7fa79
Fix printing of parameterized tag types in ppaux
...
It was printing option::t[int] instead of option::t<int>
2011-11-02 12:20:11 +01:00