about summary refs log tree commit diff
path: root/src/comp/back
AgeCommit message (Collapse)AuthorLines
2011-12-18rustc: Don't emit compact unwind info on macBrian Anderson-0/+8
It's not compatible with the subtlety of __morestack
2011-12-16reorder args to the various vec, option fns so blk comes lastNiko Matsakis-3/+3
2011-12-15massive refactor of how closures workNiko Matsakis-6/+8
2011-12-15Fix bug in library output filename construction: /tmp/foo.rc was being ↵Graydon Hoare-0/+7
linked as lib/tmp/foo-<hash>-<vers>.so not /tmp/foo-<hash>-<vers>.so
2011-12-14refactor trans into trans_closure; restore original closure reprNiko Matsakis-2/+2
2011-12-14insert a field into the closure storing number of ty descsNiko Matsakis-3/+2
2011-12-14get basic code generation working, clone type descs for lambda[send]Niko Matsakis-14/+26
2011-12-14rustc: Always write split stack prologuesBrian Anderson-6/+4
2011-12-13Copy first batch of material from libstd to libcore.Graydon Hoare-7/+7
2011-12-12rustc: Work around a segmentation faultHaitao Li-24/+24
On Linux/Mac, I got a segmentation fault: (gdb) bt #0 0x00000000007519af in glue_take584 () #1 0x00000000006d4bec in back::rpath::get_rpath_flags::_3899df2ca513c603 () #2 0x00000000006c7655 in back::link::link_binary::_7afde00a9791031c () #3 0x00000000007d3ff5 in driver::rustc::compile_input::thunk9212 () #4 0x0000000000710f24 in driver::rustc::time::_3e691b2a4ba58aee () #5 0x000000000071a79d in driver::rustc::compile_input::_7b4a41b87c18e034 () #6 0x000000000072f0a9 in driver::rustc::main::_cd8b8c8185af3dee () #7 0x000000000072f1ed in _rust_main () #8 0x00007ffff7e6e146 in task_start_wrapper (a=<optimized out>) at ../src/rt/rust_task.cpp:176 The variable `output` or `out_filename` becomes (null) after the definition of `fn unlib`. Move the function defintion to the beginning seems prevent the crash on Linux.
2011-12-12rustc: Refactor and get built on WindowsHaitao Li-14/+12
2011-12-12rustc: Hash includes direct dependent cratesHaitao Li-3/+11
2011-12-12rustc: build versioned library with hash in its nameHaitao Li-6/+13
Also updated build to install versioned libraries and added a few missing actions for `make clean`.
2011-12-08rustc: Determine the crate type (lib/bin) in the session, not session optsBrian Anderson-2/+2
This is in preparation for adding a #[crate_type] attribute
2011-12-06rt: Various tweaks to make __morestack unwinding work on linuxBrian Anderson-2/+4
When unwinding through __morestack the stack limit in the TLS is invalidated and must be reset. Instead of actually landing at __morestack we're just going to make all our Rust landing pads call upcall_reset_stack_limit, which will find the stack segment that corresponds to the current stack pointer and put the limit in the TLS. Also massively expand the stack segment red zone to make more room for the dynamic linker. Will fix in the future.
2011-12-04Upgrade LLVM to svn revision 145779Brian Anderson-4/+6
This pulls in commits 145765 & 145766, which are required for split stacks.
2011-11-28rustc: Link in libmorestack.a when --stack-growthBrian Anderson-0/+5
2011-11-25rustc: Fall back to intrinsics.ll if we can't parse the bcBrian Anderson-4/+42
This will allow us to transition to the new bitcode format.
2011-11-18get pure wrappers approach runningNiko Matsakis-6/+5
2011-11-17remove compile-command from local variable blocksNiko Matsakis-5/+0
2011-11-16Various fixes for x86_64 on linuxBrian Anderson-2/+7
Configure LLVM correctly, use the right data layout, add the readlink function back, fix C constants, etc.
2011-11-16fix natives with user-specified link names, remove unused importsNiko Matsakis-2/+2
2011-11-16begin efforts to use shim functions for c-stack callsNiko Matsakis-13/+6
2011-11-10Cleanup unused importsHaitao Li-19/+4
2011-11-07rustc: Add support of generating LLVM assemblyHaitao Li-5/+13
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-02add -m64 to gcc args if appropriateNiko Matsakis-4/+11
2011-11-02convert GEP to i32Niko Matsakis-3/+3
2011-11-02get things checking on ia32Niko Matsakis-5/+6
2011-11-02thread the context through so that int can be 64 bits on x86_64Niko Matsakis-13/+26
2011-11-02hack around on makefiles trying to get a 64 bit buildNiko Matsakis-0/+49
right now there are many temporary hacks, search for NDM to find them
2011-11-02start to isolate target strings so that they can be configured forNiko Matsakis-53/+73
x64 or other targets
2011-10-31rustc: Enable segmented stacks in LLVM when --stack-growth is onPatrick Walton-0/+1
2011-10-28Produce dyn libraries with proper namesHaitao Li-8/+7
Issue #744
2011-10-27Remove uint::max/min in favor if math::max/minMatt Brubeck-1/+2
2011-10-24fix c-stack-cdecl when used w/ i64Niko Matsakis-3/+7
2011-10-24switch over sqrt from llvm to c-stack-cdecl, exposing a bug inNiko Matsakis-1/+5
the supported return types of upcall_c_stack
2011-10-21Remove last uses of iterators from stdlibMarijn Haverbeke-3/+1
Issue #1056
2011-10-20Don't rely on main.ll anymoreMarijn Haverbeke-7/+1
I'll remove the actual file after I register a snapshot. Issue #992
2011-10-20Output linker errors, when linking failsMarijn Haverbeke-3/+4
2011-10-20Get rid of taskpointer-passing throughout the compilerMarijn Haverbeke-2/+2
Only intrinsics still take a dummy taskptr. We'll have to do some makefile stunts to snapshot a version without taskptrs-in-intrinsics. Issue #466
2011-10-20Remove taskptr argument from upcallsMarijn Haverbeke-23/+15
Issue #466
2011-10-17Change the linkage order on linux and add -ldlBrian Anderson-5/+6
-lrt and -ldl need to be specified after -lrustrt since they are only used by rustrt.
2011-10-16Only link librt on linuxBrian Anderson-1/+8
2011-10-16Fix link error by explicitly link needed DSOsHaitao Li-1/+1
Building Rust(version 280bc56) on Ubuntu 11.10 failed with link error, like: compile_and_link: stage0/lib/rustc/i686-unknown-linux-gnu/lib/libstd.so compile_and_link: stage0/lib/rustc/i686-unknown-linux-gnu/bin/rustc /local/src/rust/build/stage0/lib/rustc/i686-unknown-linux-gnu/lib/librustrt.so: undefined reference to `clock_gettime' collect2: ld returned 1 exit status error: linking with gcc failed with code 1 GCC toolchain released by Ubuntu 11.10 introduced a few compiler flags that are different with upstream GCC[1]. Flags "-Wl,--as-needed' and '-Wl,--no-copy-dt-needed-entries' are passed by default. Function clock_gettime from librt is used by librustrt, indirectly by rustc. It is necessary to explicitly pass the "-lrt" flags when building rustc. Please note since the toolchain changes will be the default in the next release(2.22) of binutils, this is not actually a Debian/Ubuntu specific issue. 1. https://wiki.ubuntu.com/OneiricOcelot/ReleaseNotes#GCC_4.6_Toolchain Signed-off-by: Haitao Li <lihaitao@gmail.com>
2011-10-12reimplement some of the unsafe stuff which got lostNiko Matsakis-10/+7
- blocks inherit unsafety - remove the --check-unsafe flag - add unsafe annotations where needed to get things to compile
2011-10-12continue to annotate functions as unsafe where neccessaryNiko Matsakis-2/+3
2011-10-12add unsafe tags into various points in the translation chainsNiko Matsakis-4/+6
and so forth
2011-10-10Adjust function signatures to allow for vecs being immediateMarijn Haverbeke-2/+2
Some code was relying on vectors being implicitly by-reference (as non-immediate value). This adds the necessary &&-sigils. Closes #1021
2011-10-06Hopefully make test_prefix_rpath_abs work on win32Brian Anderson-1/+1
2011-10-06Mac uses @executable_path instead of $ORIGINBrian Anderson-2/+2