3764 Commits

Author SHA1 Message Date
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