Commit graph

96 commits

Author SHA1 Message Date
Alex Crichton
8d29367650 Fix build issues once LLVM has been upgraded
* LLVM now has a C interface to LLVMBuildAtomicRMW
* The exception handling support for the JIT seems to have been dropped
* Various interfaces have been added or headers have changed
2013-08-04 10:58:23 -07:00
James Miller
4a1a0fbed5 Add an atomic fence intrinsic 2013-07-28 20:26:49 +12:00
Michael Woerister
f389bd8f2a debuginfo: Support for tuple-style enums (WIP) 2013-07-19 07:55:24 +02:00
Michael Woerister
739f3eece9 debuginfo: Added support for c-style enums. 2013-07-19 07:55:24 +02:00
Vadim Chugunov
adff46250e Fixed rebase fallout . 2013-06-17 08:42:05 -07:00
Vadim Chugunov
65dd6218af Fixed remaining issues to pass debug-test/* tests.
Made debugger scripts source line insensitive.
2013-06-17 08:41:25 -07:00
Vadim Chugunov
6cc3189787 Made the while DebugContext mutable, not just created_* hashes
Disabled create_arg
2013-06-17 08:41:23 -07:00
Vadim Chugunov
868f9a88d6 Use DIBuilder in debuginfo 2013-06-17 08:41:23 -07:00
Alex Crichton
dc18321ef5 Don't run passes again on JIT code
These passes are already run beforehand, no need to do them twice.
2013-06-13 22:53:10 -07:00
Alex Crichton
a90fffe367 Revert "Revert "Have JIT execution take ownership of the LLVMContextRef""
This reverts commit 19adece68b.
2013-06-13 21:25:18 -07:00
Alex Crichton
1a3edecbf2 Revert "Revert "Remove all usage of the global LLVMContextRef""
This reverts commit 541c657a73.
2013-06-13 21:25:12 -07:00
Brian Anderson
541c657a73 Revert "Remove all usage of the global LLVMContextRef"
This reverts commit 779191cd4b.

Conflicts:
	src/librustc/middle/trans/base.rs
	src/librustc/middle/trans/common.rs
2013-06-13 13:08:57 -07:00
Brian Anderson
19adece68b Revert "Have JIT execution take ownership of the LLVMContextRef"
This reverts commit 5c5095d25e.

Conflicts:
	src/librusti/rusti.rc
2013-06-13 13:08:57 -07:00
Alex Crichton
5c5095d25e Have JIT execution take ownership of the LLVMContextRef
Also stop leaking the ExecutionEngine created for jit code by forcibly disposing
of it after the JIT code has finished executing
2013-06-10 13:17:04 -07:00
Alex Crichton
779191cd4b Remove all usage of the global LLVMContextRef
This allows parallel usage of the rustc library
2013-06-10 13:17:04 -07:00
James Miller
d694e283b3 Refactor optimization pass handling.
Refactor the optimization passes to explicitly use the passes. This commit
just re-implements the same passes as were already being run.

It also adds an option (behind `-Z`) to run the LLVM lint pass on the
unoptimized IR.
2013-05-29 14:16:49 +12:00
Brian Anderson
474d9983be rustllvm: Use target alignment for atomic load/store 2013-05-20 17:28:06 -07:00
James Miller
a289dcd187 Fix AtomicLoad builder code 2013-05-17 14:48:24 +12:00
Matthijs Hofstra
a9f2132606 Adds atomic_load, atomic_load_acq, atomic_store, and atomic_store_rel intrinsics.
The default versions (atomic_load and atomic_store) are sequentially consistent.
The atomic_load_acq intrinsic acquires as described in [1].
The atomic_store_rel intrinsic releases as described in [1].

[1]: http://llvm.org/docs/Atomics.html
2013-05-12 23:23:40 +02:00
Daniel Micay
86efd97a10 add gitattributes and fix whitespace issues 2013-05-03 20:01:42 -04:00
Seo Sanghyeon
da4bc490e6 Choose target features 2013-04-22 20:54:12 +09:00
Patrick Walton
90b65c8839 llvm: Fixes for RustWrapper. 2013-04-19 11:53:34 -07:00
Patrick Walton
af42d37547 rustllvm: Fix RustWrapper.cpp 2013-04-19 11:53:32 -07:00
Patrick Walton
f903ae9e72 librustc: Implement fast-ffi and use it in various places 2013-04-19 11:53:31 -07:00
Brian Anderson
a34948a2c5 rustllvm: Initialize target analysis passes
Without this the target info for certain optimizations will not be
created and the compiler will sometimes crash
2013-04-10 18:49:51 -07:00
Young-il Choi
4b4f48283b rustllvm: followup latest LLVM 2013-04-10 18:49:50 -07:00
Tim Chevalier
d6f455ebca rustllvm: Only initialize command-line arguments once
In my WIP on rustpkg, I was calling driver code that calls
LLVMRustWriteOutputFile more than once. This was making LLVM
unhappy, since that function has code that initializes the
command-line options for LLVM, and I guess you can't do that more
than once. So, check if they've already been initialized.
2013-04-05 17:18:26 -07:00
ILyoan
1ded138851 Enable arm error handling abi 2 2013-03-19 17:23:18 +09:00
ILyoan
f581b2f9dd Enable arm error handling abi 2013-03-19 17:23:08 +09:00
ILyoan
10df2ea9db Normalize target triple so that llvm can recognize target os correctly 2013-03-15 15:39:58 +09:00
Niko Matsakis
efc7f82bc4 Revamp foreign code not to consider the Rust modes. This requires
adjusting a few foreign functions that were declared with by-ref
mode.  This also allows us to remove by-val mode in the near future.

With copy mode, though, we have to be careful because Rust will implicitly pass
somethings by pointer but this may not be the C ABI rules.  For example, rust
will pass a struct Foo as a Foo*.  So I added some code into the adapters to
fix this (though the C ABI rules may put the pointer back, oh well).

This patch also includes a lint mode for the use of by-ref mode
in foreign functions as the semantics of this have changed.
2013-03-13 16:59:37 -04:00
Luqman Aden
fc78b93c41 Wrap llvm::InlineAsm::AsmDialect 2013-03-12 01:03:34 -07:00
Luqman Aden
ecccc0d649 Parse inline assembly. 2013-03-12 01:03:34 -07:00
Jyun-Yan You
5150b9811b rustc: MIPS32 support 2013-03-03 19:27:27 -08:00
kyeongwoon
987f824f23 Support ARM and Android
Conflicts:
	src/libcore/os.rs
	src/librustc/back/link.rs
	src/librustc/driver/driver.rs
	src/librustc/metadata/loader.rs
	src/librustc/middle/trans/base.rs
2013-01-13 16:43:39 -08:00
Brian Leibig
dda12f8ef6 Replace much of the REPL run code with a call to compile_upto 2012-12-28 13:51:02 -08:00
Patrick Walton
3ee1d3ebb8 rustllvm: Fix symbol resolution on Mac for rusti. rs=bugfix 2012-12-22 16:24:19 -05:00
Graydon Hoare
12c32e944d Add license boilerplate to more files. 2012-12-10 17:32:58 -08:00
Luqman Aden
e1db959ec2 rustc: add new intrinsics - atomic_cxchg{_acq,_rel} 2012-10-21 22:23:50 -04:00
Luca Bruno
97ecde297e Conditional usage of LLVM DebugFlag
DebugFlag is conditionally exported by LLVM in llvm/Support/Debug.h
in-between an #ifndef NDEBUG block; RustWrapper should not
unconditionally use it. This closes #3701.

Signed-off-by: Luca Bruno <lucab@debian.org>
2012-10-11 07:33:49 +02:00
Zack Corr
b3f418c10e jit: Remove old crate loading code and don't search through loaded crates (use llvm default instead) 2012-09-28 18:05:49 +10:00
Zack Corr
ca4455666e jit: Initialize native parser so rust-repl works 2012-09-27 16:07:33 +10:00
Zack Corr
ebe6b2d15c jit: Enable exception handling 2012-09-27 12:57:58 +10:00
Zack Corr
887b59b7be jit: Separate JIT execution into two functions and load crates before main lookup 2012-09-27 12:57:58 +10:00
Zack Corr
efb576a60d jit: Clean rustllvm code, let rustc expose __morestack instead of linking in libmorestack and return _rust_main and call it from rustc 2012-08-31 16:20:36 -07:00
Zack Corr
6723a5a0ea jit: Forgot header for inlining pass 2012-08-31 16:20:36 -07:00
Zack Corr
19ea3ab480 jit: Add passes and cleanup code 2012-08-31 16:20:36 -07:00
Zack Corr
795acb7395 jit: Link in __morestack and make it resolvable by JIT 2012-08-31 16:20:36 -07:00
Zack Corr
7993f48209 jit: Add custom memory manager (still segfaulting) 2012-08-31 16:20:35 -07:00
Zack Corr
d7aa9918ef Add experimental JIT compiler 2012-08-31 16:20:35 -07:00