Commit Graph

2429 Commits

Author SHA1 Message Date
Marijn Haverbeke
d39ca857fc Remove a few more superfluous 'mutable' keywords 2011-05-06 22:52:02 +02:00
Marijn Haverbeke
a3ec0b1f64 Rename std modules to be camelcased
(Have fun mergining your stuff with this.)
2011-05-06 22:51:19 +02:00
Graydon Hoare
44c1621525 Register new snapshots. 2011-05-06 13:34:56 -07:00
Patrick Walton
ab437253d3 rustc: Bump the number of native glues to 8 2011-05-06 12:50:48 -07:00
Patrick Walton
d089d9f9ed rustllvm: Add a binding to the LLVM standard module passes 2011-05-06 12:38:00 -07:00
Patrick Walton
5e2088f2fa rustc: For stack local derived tydescs, allocate the root tydesc separately from the parameter tydescs. This allows SROA, and consequently inlining, to work. 2011-05-06 12:37:59 -07:00
Patrick Walton
57a5c3ac9f rustc: Factor derived tydesc construction out of get_tydesc() 2011-05-06 12:37:59 -07:00
Patrick Walton
8e7aeed2d5 rustc: Include a representation of the type in question in the symbols generated for tydescs 2011-05-06 12:37:59 -07:00
Kelly Wilson
b4a0d891c0 Ge the host triple using LLVM. Fix a few 'mutable' warnings also. 2011-05-06 11:30:39 -07:00
Graydon Hoare
1e03f00404 Use #env to bake a git revision string into rustc's --version output. 2011-05-06 11:21:51 -07:00
Rafael Ávila de Espíndola
8df37716ce Fix OS X build. 2011-05-05 23:16:59 -04:00
Patrick Walton
883eb38b28 rustc: Remove some debugging code from decl_native_fn_and_pair() 2011-05-05 17:58:48 -07:00
Patrick Walton
81cda5ad45 rustc: Fix a bunch of argument-passing bugs in decl_native_fn_and_pair() 2011-05-05 17:48:10 -07:00
Graydon Hoare
9e3b096d98 Fix x86.rs triple for linux. 2011-05-05 17:20:27 -07:00
Lindsey Kuper
9d7fc21967 Consolidating expr_to_str functions. 2011-05-05 16:53:25 -07:00
Kelly Wilson
850dff486e Add quick sort function to the std lib. 2011-05-05 16:40:57 -07:00
Rafael Ávila de Espíndola
4445d6771d Use symbolic register names so that we get the correct encoding on OS X. 2011-05-05 19:00:42 -04:00
Rafael Ávila de Espíndola
d6deeffd95 Change the setup so that rust_activate_glue returns to rust_exit_task_glue
and rust_exit_task_glue calls the rust main.

This is simpler since we only need to setup one frame. It also matches
what ld.so does, so gdb is happy and stops a backtrace at rust_exit_task_glue
instead of continuing past whatever function happened to be before
rust_exit_task_glue is the object file.

This is the rt part and should be merged after the rust0 part.
2011-05-05 15:46:10 -07:00
Graydon Hoare
d85260bcc5 Register new stage0 snapshots. 2011-05-05 15:46:05 -07:00
Rafael Ávila de Espíndola
157f61f8c8 Change the setup so that rust_activate_glue returns to rust_exit_task_glue
and rust_exit_task_glue calls the rust main.

This is simpler since we only need to setup one frame. It also matches
what ld.so does, so gdb is happy and stops a backtrace at rust_exit_task_glue
instead of continuing past whatever function happened to be before
rust_exit_task_glue is the object file.

This is only the rustc changes and should be merged first.
2011-05-05 15:14:34 -07:00
Patrick Walton
2d9ccf3ae5 rustc: Add Rust intrinsic support to the crate metadata reader and writer 2011-05-05 14:35:18 -07:00
Graydon Hoare
50ac893b00 Attempt to fix fs.dirname harder. 2011-05-05 14:31:45 -07:00
Patrick Walton
9a1f0977a2 rustc: Fix bug in equal_abi that was preventing Rust intrinsics from working 2011-05-05 14:21:59 -07:00
Graydon Hoare
2131f2bb6b Because good hackers at least check to see if the code compiles. 2011-05-05 13:53:57 -07:00
Graydon Hoare
c80255e510 Fix assumption that only os_fs.path_sep can separate paths, sigh. 2011-05-05 13:42:52 -07:00
Graydon Hoare
f5f2f76339 Add --help, --version and -v flags (not yet supporting GIT_REV env var, waiting on snapshot). 2011-05-05 13:09:43 -07:00
Patrick Walton
a74feaf159 rustc: Link with intrinsics.bc; change intrinsics linkage to linkonce_odr 2011-05-05 12:46:22 -07:00
Patrick Walton
5fb6e6364b rustc: Add a binding to LLVM's bitcode parser 2011-05-05 11:34:45 -07:00
Tim Chevalier
6b742aec91 Enforce in typechecker that preds return a bool
as well as a test case
2011-05-05 11:26:07 -07:00
Tim Chevalier
acf9bd7909 Test cases for pred / check stuff 2011-05-05 11:26:07 -07:00
Tim Chevalier
e3a68e235c Bring back "pred" syntax for writing predicates for check
This commit reinstates the requirement that the predicate in a
"check" must be a manifest call to a special kind of function
declared with the new "pred" keyword instead of "fn". Preds must
have a boolean return type and can only call other preds; they
can't have any effects (as enforced by the typechecker).
The arguments to a predicate in a check expression must be
slot variables or literals.
2011-05-05 11:26:07 -07:00
Tim Chevalier
3060eadcba Check well-formedness of constraints
Check that the operand in a constraint is an explicit name,
and that the operands are all local variables or literals. Still need
to check that the name refers to a pure function.
2011-05-05 11:26:07 -07:00
Tim Chevalier
bc5650a9d0 Change checks to asserts in test/bench files 2011-05-05 11:26:07 -07:00
Tim Chevalier
4f892dd9d7 Check that the operand in a check is a call
In addition, fix bug in fold that was turning asserts into checks.

More typechecking still needs to be done.
2011-05-05 11:26:07 -07:00
Tim Chevalier
59a0e98096 Un-XFAILed not-a-pred in stage0 (it fails correctly) 2011-05-05 11:26:07 -07:00
Marijn Haverbeke
1f45dda9d2 Remove 'deprecated mutable...' from our code
This should make compilation a bit less noisy.
2011-05-05 20:19:43 +02:00
Marijn Haverbeke
3d738e9e06 Return a fresh, unreachable context after ret, break, and cont
This ensures we don't get compile errors on unreachable code (see
test/run-pass/artificial-block.rs for an example of sane code that
wasn't compiling). In the future, we might want to warn about
non-trivial code appearing in an unreachable context, and/or avoid
generating unreachable code altogether (though I'm sure LLVM will weed
it out as well).
2011-05-05 20:19:43 +02:00
Marijn Haverbeke
9432626b68 Eradicate fold from capture.rs
The pass now uses walk.
2011-05-05 20:19:43 +02:00
Ralph Giles
06f0713906 Mark valgrind's _qzz_res as unused to silence warnings on gcc 4.6.
This applies c11675 by Julian Seward from valgrind trunk
(svn://svn.valgrind.org/valgrind/trunk) to rustrt's included
copies of memcheck.h and valgrind.h, effectively backporting
the fix from the unreleased 3.6.2. The commit simply applies
the gcc 'unused' attribute to the relevant declarations.

This change allows compilation of the runtime code under
gcc 4.6 with -Werror, as the makefile currently requests.
2011-05-05 10:55:54 -07:00
Patrick Walton
fea623211f rustc: Add a Link module; move crate writing to it to slim down trans slightly 2011-05-05 10:48:02 -07:00
Patrick Walton
729648282b rustllvm: Add bindings to the LLVM linker 2011-05-04 21:27:00 -07:00
Patrick Walton
c47a075a99 rustllvm: Whitespace police in RustWrapper.cpp 2011-05-04 20:30:23 -07:00
Patrick Walton
bde44a03a9 rustc: Detect the system root and allow the user to override if necessary 2011-05-04 19:27:54 -07:00
Graydon Hoare
d55fa2a9a3 Add #env syntax extension for plucking strings out of the compilation environment. 2011-05-04 19:05:32 -07:00
Graydon Hoare
a7db032725 Re-snapshot to pick up fixed crasher bugs in resolve and performance improvements. 2011-05-04 19:05:32 -07:00
Patrick Walton
04f966f0bc build: Build intrinsics.bc 2011-05-04 18:29:08 -07:00
Marijn Haverbeke
898e089d7b Fix and re-enable destructors
There was some confusion on whether the destructors took their
argument by pointer or direct value. They now take it directly, just
like other methods. You no longer get a segfault when a constructor
actually does something with its self value.
2011-05-05 02:16:49 +02:00
Graydon Hoare
cdb6822405 Add a structure for passing option flags around the compiler, put it in session, and use it. 2011-05-04 16:59:21 -07:00
Brian Anderson
bd34770a92 Add missing ret statements to check_mod
Un-XFAIL compile-fail export tests
2011-05-04 19:29:27 -04:00
Graydon Hoare
ce9468761c Support new -g flag, only mangle glue names by type when it's passed. 2011-05-04 15:36:42 -07:00
Graydon Hoare
b73a640ce0 More export XFAILs. 2011-05-04 15:35:41 -07:00
Graydon Hoare
54dc34b658 Re-snapshot stage0 2011-05-04 14:45:09 -07:00
Graydon Hoare
978e3d0f4a XFAIL some compile-fail tests mysteriously failing on win32 tinderbox. 2011-05-04 14:44:57 -07:00
Graydon Hoare
4642d7a355 extend xfail-stage0 to stage1, stage2 on obj-dtor-2.rs 2011-05-04 11:23:05 -07:00
Graydon Hoare
456398a403 Change two compile-fail patterns to match rustc output. 2011-05-04 11:20:47 -07:00
Graydon Hoare
895ec07453 Try to fail nicely, again. 2011-05-04 15:04:53 +00:00
Graydon Hoare
99f1dffd49 Fail in a slightly more organized fashion for now. 2011-05-04 06:19:58 +00:00
Patrick Walton
dc181bca4e rustc: Stub Rust intrinsics. We check in the .ll file for now to temporarily dodge a dependency on clang. 2011-05-03 18:51:41 -07:00
Graydon Hoare
c36645b358 Assume xfail-stage0 implies stage1 and stage2 in tests, for now. 2011-05-03 18:14:02 -07:00
Patrick Walton
ac8eb20224 rustc: Stub support for Rust intrinsics 2011-05-03 18:03:59 -07:00
Patrick Walton
2bc17adc29 Revert "Rename the "llvm" API to "llvm-intrinsic"" due to tinderbox bustage
This reverts commit 6871c245a6.
2011-05-03 17:50:37 -07:00
Graydon Hoare
b81897d7e4 More python portability fixes (for windows). 2011-05-03 16:53:36 -07:00
Graydon Hoare
1965a156f0 Attempt to use more portable python 2011-05-03 16:22:00 -07:00
Graydon Hoare
b453c3c728 Start sketching --depend support in rustc. 2011-05-03 15:56:00 -07:00
Patrick Walton
6871c245a6 Rename the "llvm" API to "llvm-intrinsic" 2011-05-03 15:55:01 -07:00
Patrick Walton
e43729ccf2 rustc: Refactor metadata.Encode.* to not require a type abbreviation table if abbreviation isn't enabled 2011-05-03 14:41:05 -07:00
Patrick Walton
3f317ede41 rustc: Name type glue properly 2011-05-03 14:41:05 -07:00
Graydon Hoare
b5a6082d41 Update valgrind.h and memcheck.h to 3.6.0 2011-05-03 12:04:00 -07:00
Graydon Hoare
dbe5dc9768 Attempt to shift build to stage0-from-snapshots. 2011-05-03 11:34:44 -07:00
Graydon Hoare
54bfe8ee27 Small fixes to snapshot script. 2011-05-03 09:25:59 -07:00
Rafael Ávila de Espíndola
5617462388 Remove unused variable. 2011-05-03 11:06:57 -04:00
Rafael Ávila de Espíndola
a3ff02f126 Split start into rustc and rustboot versions. This introduces a bit of
duplication, but we will hopefully drop the rustboot one soon.

This is also a preparation for changing the rustc one to have the activate glue
return to the exit glue which will then call the main function.

This (returning to the function that calls main) matches what happens when
loader stats a program or a new thread. It lets gdb produce good backtraces
and should help with EH too.
2011-05-03 10:24:18 -04:00
Graydon Hoare
a919a3082d More snapshot logic refactoring. 2011-05-03 07:23:05 -07:00
Graydon Hoare
d987b49a4b More hacking on the snapshot system. 2011-05-02 23:37:52 -07:00
Brian Anderson
ed40c85af5 Extract ast.is_exported from the resolve module 2011-05-02 22:07:36 -04:00
Brian Anderson
3014a5887d Add some tests of tag-export interaction 2011-05-02 22:06:35 -04:00
Graydon Hoare
cb53065a21 Initial sketch of snapshot support code, based on code from marijn. 2011-05-02 18:56:13 -07:00
Brian Anderson
2fc58fc6a0 Revert "Use check instead of assert in export-unexported-dep"
This reverts commit 480eda0f10. The commit
adding the assert keyword has been restored.
2011-05-02 20:56:46 -04:00
Patrick Walton
ebc236e91c rustc: Time the Rust translation and LLVM passes separately 2011-05-02 17:50:46 -07:00
Patrick Walton
a833f152ba rustc: Remove the artificial block in ty.rs. Fixes self-hosting. Add a test case for this, XFAIL'd. 2011-05-02 17:50:46 -07:00
Patrick Walton
147a2d655f Un-revert "Use different syntax for checks that matter to typestate", fixing the problem.
This reverts commit d08b443fff.
2011-05-02 17:50:46 -07:00
Brian Anderson
480eda0f10 Use check instead of assert in export-unexported-dep 2011-05-02 20:48:52 -04:00
Graydon Hoare
d08b443fff Revert "Use different syntax for checks that matter to typestate"
This reverts commit aa25f22f19. It broke stage2, not sure why yet.
2011-05-02 17:35:33 -07:00
Brian Anderson
764de078e7 Add a regression test that exports can expose unexported items
While those unexported items can't be used by name outside the module in which
they are defined, they can be used as a sort of ADT.
2011-05-02 19:42:00 -04:00
Patrick Walton
9d21cf3b61 rustc: Allocate tydescs on the stack when it's safe to do so. 60% compile speed increase. 2011-05-02 15:28:59 -07:00
Tim Chevalier
aa25f22f19 Use different syntax for checks that matter to typestate
This giant commit changes the syntax of Rust to use "assert" for
"check" expressions that didn't mean anything to the typestate
system, and continue using "check" for checks that are used as
part of typestate checking.

Most of the changes are just replacing "check" with "assert" in test
cases and rustc.
2011-05-02 12:16:29 -07:00
Patrick Walton
870435caf5 rustc: Add a "fat tydesc" LLVM type to trans 2011-05-02 12:05:21 -07:00
Patrick Walton
f969b227c1 rustc: Disable frame pointer omission 2011-05-02 11:01:51 -07:00
Brian Anderson
a5ccead3fd Add a test that imports can't circumvent exports 2011-05-01 17:22:20 -04:00
Brian Anderson
1dd63ff42d Remove the search direction from resolve's fold environment
It's not actually involved in the fold so it can just be passed between the
functions that need it.
2011-05-01 16:57:36 -04:00
Brian Anderson
f25e678365 Add a regression test for use of unexported fully-qualified paths
An unexported foo.baz can't be resolved from inside foo when called as foo.baz
instead of just baz. This behavior may want to change eventually.
2011-05-01 16:57:36 -04:00
Brian Anderson
a697210234 Hide unexported tag variants 2011-05-01 16:57:36 -04:00
Brian Anderson
459b0ec833 Implement simple module export 2011-05-01 16:57:36 -04:00
Brian Anderson
d88776726a rustc: Preserve dots in input path when using an implicit output path
This avoids outputing, e.g. /test.bc for ../test.rs
2011-05-01 14:42:45 -04:00
Brian Anderson
e75edd5e43 Fix expr-alt-generic-box2.rs and un-XFAIL 2011-05-01 12:21:08 -04:00
Brian Anderson
831b0a7501 Un-XFAIL various tests in stage0 2011-05-01 12:15:42 -04:00
Ralph Giles
46fd8dfe21 Fix a typo in the documentation. 2011-05-01 00:16:00 -07:00
Patrick Walton
b101e26d92 rustc: Run scope cleanups in the implicit block created by log statements. Fixes a leak. 2011-04-29 19:19:54 -07:00
Patrick Walton
64a5afadf3 rustc: Add constants for LLVM function attributes 2011-04-29 16:58:49 -07:00
Graydon Hoare
02336e670f Re-XFAIL lib-io.rs, not quite working yet. 2011-04-29 16:55:45 -07:00
Patrick Walton
f6c472d816 rustc: Emit pure native glue; we don't call it yet 2011-04-29 16:40:30 -07:00
Patrick Walton
593fb195a4 rustc: Start threading a purity flag through upcalls 2011-04-29 15:39:48 -07:00
Graydon Hoare
c11d9f4268 Un-XFAIL most library tests. 2011-04-29 15:06:53 -07:00
Graydon Hoare
b9babe47da Temporarily disable dtors; they broke self-hosting. 2011-04-29 15:06:53 -07:00
Patrick Walton
1acf404361 rustc: First steps to determine whether tydescs escape 2011-04-29 15:01:07 -07:00
Graydon Hoare
7b95b5c033 Don't emit metadata unless compiling -shared. 2011-04-29 19:20:20 +00:00
Marijn Haverbeke
c39a95da90 Implement destructors in rustc
Unlike rustboot, rustc keeps it destructors in vtables. Entry 0 holds
either the destructor for the obj or a NULL pointer. The method
offsets start at 1.
2011-04-29 21:19:50 +02:00
Patrick Walton
9aeb67987c rustc: Temporarily add a switch and a corresponding makefile variable to disable typestate 2011-04-29 12:16:14 -07:00
Patrick Walton
adfacc5031 rustc: Add a --time-passes option 2011-04-29 11:55:20 -07:00
Patrick Walton
f0d24ff49e rustc: Handle alias parameters in native functions properly 2011-04-29 11:54:41 -07:00
Patrick Walton
5d3e553141 stdlib: Add a Time module to the standard library 2011-04-29 11:54:06 -07:00
Patrick Walton
c52fb52fbc rustc: Remove the wrong-compiler warning; we're self-hosting now. 2011-04-29 10:23:53 -07:00
Graydon Hoare
a2f68b2d58 Intern metadata while writing, shrink stage1 from 12mb to 5.7mb. 2011-04-29 15:26:28 +00:00
Patrick Walton
6daf440037 rustc: Fix vec append glue for strings. Add a test case. 2011-04-28 20:16:32 -07:00
Patrick Walton
3e08609ed7 rustc: Add some value names to the vec append glue function. Un-XFAIL vec-growth.rs. 2011-04-28 18:45:56 -07:00
Graydon Hoare
1f44887761 More attempts at fixing broken vec-append glue. 2011-04-28 18:39:12 -07:00
Patrick Walton
96d4577376 test: Add a test case for vec growth 2011-04-28 18:23:39 -07:00
Graydon Hoare
cd8cf44d1d Make the no-growth path (previously never exercised) in rustc *work*. 2011-04-28 18:11:00 -07:00
Graydon Hoare
bcad52451c Actually hit the no-growth path on vec-append. 2011-04-28 17:45:35 -07:00
Patrick Walton
66e5dfbde6 stdlib: Provide "array" as a friendlier shorthand for "vec[mutable? T]" 2011-04-28 17:15:32 -07:00
Graydon Hoare
e300b8047f Consider unop deref as an lval. Un-XFAIL vec-push. 2011-04-28 16:37:18 -07:00
Patrick Walton
f2fe26a821 rustc: Add a testcase for vector push (mutable aliases with *, really) 2011-04-28 16:22:13 -07:00
Patrick Walton
171883f437 rustc: Only use color if it's supported 2011-04-28 14:59:16 -07:00
Patrick Walton
660c742902 stdlib: Add a color_supported() function to Term 2011-04-28 14:54:00 -07:00
Graydon Hoare
f0e1bb75d1 Change vec-ref-count to handle 1 or 2, so long as non-leaky and non-creeping. un-XFAIL. 2011-04-28 14:50:03 -07:00
Graydon Hoare
c9e601b31d Drop args in native stubs too. 2011-04-28 14:35:12 -07:00
Patrick Walton
5f60937318 stdlib: Add getenv(3) to win32_os. 2011-04-28 14:35:22 -07:00
Patrick Walton
ffbbf42edd test: Add a test for vector reference counts, XFAIL'd in rustc 2011-04-28 14:35:22 -07:00
Graydon Hoare
bfa3c05994 Log refcounts in upcall_vec_grow. 2011-04-28 13:26:19 -07:00
Tim Chevalier
2c3808b511 Enable typestate_check
This was supposed to be in a previous commit. I don't know what happened.
2011-04-28 13:26:19 -07:00
Tim Chevalier
26e177a97a Enable typestate_check
Enable typestate checking (just for uninitialized vars) and un-XFAIL the
relevant tests for stage0.
2011-04-28 13:26:19 -07:00
Tim Chevalier
34dae82b48 Add a session field to ty_ctxt and change an err to span_err
I changed instantiate to print out a more helpful error message,
which required passing it a session argument. To avoid
threading extra arguments through a lot of functions,
I added a session field to ty_ctxt.
2011-04-28 13:26:19 -07:00
Tim Chevalier
f61e77e745 Reindented things and removed superfluous comments, nothing to see here 2011-04-28 13:26:19 -07:00
Tim Chevalier
844fe20720 Fix some nested patterns in rustc
In rustc, nested patterns were potentially matching when they shouldn't
match, because a loop index wasn't being incremented. Fixed it and added
one test case.
2011-04-28 13:26:19 -07:00
Tim Chevalier
54aff74af0 Slightly more helpful error message for "null lib handle"
I changed the error message to also suggest checking the -L flag
when this happens.
2011-04-28 13:26:19 -07:00
Tim Chevalier
93845d0bae Fix nested patterns in rustboot
The code for taking pattern-bound variables was being interspersed
with pattern code, so that if a nested pattern failed partway through,
a variable would be taken but never dropped (because the drop code
is inside the block representing the action for the pattern). For
example, in the pattern foo(?i, bar(some[t](_)), _), if the scrutinee
was foo(x, bar(none[t]), y), the variable i would be taken but never
dropped. The patch fixes this bug.
2011-04-28 13:26:19 -07:00
Tim Chevalier
25694582d9 Fix bug in handling of expr_alt (postcond for alts was being intersected with postcond for scrutinee) 2011-04-28 13:26:19 -07:00
Tim Chevalier
707cd0281d Fixed bug in typeck that wasn't filling in anns for stmts
(needed for typestate_check).

Also changed a (log; fail) to (log_err; fail) in typestate_check,
and added some more logging funs in util.common.
2011-04-28 13:26:19 -07:00
Tim Chevalier
0190ebfe07 Support all expression forms in typestate
Added support for self_method, cont, chan, port, recv, send, be,
do_while, spawn, and ext; handled break and cont correctly.
(However, there are no non-xfailed test cases for ext or spawn in
stage0 currently.)

Although the standard library compiles and all test cases pass with
typestate enabled, I left typestate checking disabled as rustc
terminates abnormally when building the standard library if so,
even though it does generate code correctly.
2011-04-28 13:26:19 -07:00
Tim Chevalier
7c4f8cb459 Further work on typestate_check
Lots of work on typestate_check, seems to get a lot of the way
through checking the standard library.

* Added for, for_each, assign_op, bind, cast, put, check, break,
and cont. (I'm not sure break and cont are actually handled correctly.)

* Fixed side-effect bug in seq_preconds so that unioning the
preconditions of a sequence of statements or expressions
is handled correctly.

* Pass poststate correctly through a stmt_decl.

* Handle expr_ret and expr_fail properly (after execution of a ret
or fail, everything is true -- this is needed to handle ifs and alts
where one branch is a ret or fail)

* Fixed bug in set_prestate_ann where a thing that needed to be
mutated wasn't getting passed as an alias

* Fixed bug in how expr_alt was treated (zero is not the identity
for intersect, who knew, right?)

* Update logging to reflect log_err vs. log

* Fixed find_locals so as to return all local decls and exclude
function arguments.

* Make union_postconds work on an empty vector (needed to handle
empty blocks correctly)

* Added _vec.cat_options, which takes a list of option[T] to a list
of T, ignoring any Nones

* Added two test cases.
2011-04-28 13:26:19 -07:00
Rafael Ávila de Espíndola
b0980b7d79 Add a very minimal set of .cfi_* statements to get part of backtraces
working (on hello world at least):

~/inst/gdb/bin/gdb --args ./foo
(gdb) b write
...
(gdb) r
...
Breakpoint 1, 0xf7f04270 in write () from /lib32/libc.so.6
(gdb) bt
0  0xf7f04270 in write () from /lib32/libc.so.6
1  0x0804931a in rust_native_cdecl_3 ()
2  0x080487d7 in _rust_wrapper3_ ()
3  0x0804890a in _rust_fn5_main ()
4  0x08049440 in rust_native_cdecl_7 ()
2011-04-28 16:19:20 -04:00
Graydon Hoare
6daca7ea8d Actually perform take/drop on args (oh my!) 2011-04-28 11:24:29 -07:00
Patrick Walton
91fe4ae090 rustc: Joseph and the Amazing Technicolor Error Messages 2011-04-28 10:51:12 -07:00
Patrick Walton
616ae95f6b stdlib: Use an unsafe cast to speed up the memory writer 2011-04-27 18:18:28 -07:00
Patrick Walton
180a389832 stdlib/rt: Add an unsafe function to cast immutable vectors to mutable ones 2011-04-27 18:14:56 -07:00
Patrick Walton
e3fa22ab13 rt: Add str_vec to the def file. Puts out burning tinderbox. 2011-04-27 14:40:16 -07:00
Graydon Hoare
776255695a Use cnames when present in ty.ty_to_str. 2011-04-27 13:36:39 -07:00
Graydon Hoare
12925505fb Cache sha1 values of types, use seq-based mangling for glue as it's private anyways. 2011-04-27 13:36:23 -07:00
Graydon Hoare
4c7886de80 Fix _str.bytes to trivial version. 2011-04-27 13:06:19 -07:00
Patrick Walton
fef8314c2e stdlib: Real fix for _uint.parse_buf(). 2011-04-27 11:59:22 -07:00
Patrick Walton
73044b3455 stdlib: Fix a crazy underflow bug in _uint.parse_buf. Oops. 2011-04-27 11:49:06 -07:00
Graydon Hoare
031e86ca2d Partly disable simplified-type glue optimization due to compile-time cost. 2011-04-27 16:03:45 +00:00
Patrick Walton
05587ebdff rustc: Ignore the return value of native functions that return nil. stage1 can build libstd now, though it leaks. 2011-04-26 19:01:30 -07:00
Patrick Walton
532a65485d rustc: Actually write the optimized bitcode when --save-temps is on 2011-04-26 19:01:24 -07:00
Brian Anderson
8216b5fc10 Fix the interaction between various flags in #fmt 2011-04-26 20:49:03 -04:00
Brian Anderson
2e12fbfc06 Support octal #fmt conversions 2011-04-26 20:20:17 -04:00
Brian Anderson
66b59e4b05 Make #fmt char conversions behave like printf 2011-04-26 20:20:17 -04:00
Graydon Hoare
e77f5b1561 Speed up calls to get_tydesc and kill cname-redundant glue generation. 2011-04-26 17:19:44 -07:00
Graydon Hoare
592cd5fa30 Disable frame-pointer elimination (not sure how this didn't get commited before). 2011-04-26 15:21:20 -07:00
Graydon Hoare
bc6e981537 Merge branch 'master' of ssh://github.com/graydon/rust 2011-04-26 20:39:33 +00:00
Graydon Hoare
418b23a538 Various bits of trans lint, nothing major. 2011-04-26 20:39:25 +00:00
Patrick Walton
ba3a4f6cc6 rustc: Cap ridiculous type name sizes 2011-04-26 13:08:48 -07:00
Patrick Walton
79d27ccb58 stdlib: Add a silly ANSI color library 2011-04-26 13:08:48 -07:00
Marijn Haverbeke
6b11f6c46f Change rustc to use GetOpts rather than ad-hoc command-line parsing
NOTE: all 'long' parameters now use a double dash, so --shared, rather
than gcc-style -shared.
2011-04-26 20:32:14 +02:00
Marijn Haverbeke
74c7457131 Add GetOpts module to std 2011-04-26 20:30:44 +02:00
Marijn Haverbeke
d0ed2e384a Add _str.slice to std lib 2011-04-26 17:38:14 +02:00
Patrick Walton
2746d20c83 rustc: Add a missing return value to Collect.ty_of_item() 2011-04-25 18:15:48 -07:00
Graydon Hoare
cf23db6be5 A little more guarding against wasted work in ty, typeck. 2011-04-25 18:08:13 -07:00
Patrick Walton
c4e13cd1fa rustc: Use the abbreviated type names to avoid LLVM bitcode size explosion 2011-04-25 17:00:25 -07:00
Graydon Hoare
da328b1ba9 Kick ty_var and ty_local entries out of the type store. Pre-compute presence of var, local, param and bound_params in types. 2011-04-25 16:40:25 -07:00
Patrick Walton
e0479c902b rustc: Add a -save-temps option to save bitcode and write output simultaneously; document command line switches 2011-04-25 14:08:12 -07:00
Patrick Walton
e102413aad rustc: Pass a "type context" around instead of directly passing the type store; prep for removing type annotations 2011-04-25 12:15:55 -07:00
Graydon Hoare
b258060a94 Avoid type_store hashtable access for a variety of cases, probably only ty_var matters. 2011-04-25 09:49:08 -07:00
Graydon Hoare
485399a8d5 Skip substitution and/or binding when there's no work to do. 2011-04-25 05:39:18 +00:00
Graydon Hoare
1b9e6b3ad2 Bind tag members as aliases rather than new locals. 2011-04-25 04:12:40 +00:00
Graydon Hoare
5fe21b5af0 Skip likely-zero initial probe, speed up map.rs. 2011-04-25 04:12:33 +00:00
Graydon Hoare
912c1fc81c Fix busted iter/put code. Un-XFAIL foreach-box-drop.rs. 2011-04-23 14:22:10 -07:00
Patrick Walton
2b298fa3e8 rustc: Use a silly "magic numbers" hack; seems to speed things up a bit. 2011-04-22 19:52:30 -07:00
Patrick Walton
94e5ca4df8 rustc: Include the cname in the hash to increase entropy 2011-04-22 19:26:00 -07:00
Patrick Walton
e0eccaddb2 rustc: Thread the type store through everything that needs to access type structures 2011-04-22 17:00:46 -07:00
Patrick Walton
3d62c9adf3 rustc: Move the type serialization logic to an Encode module 2011-04-22 14:48:25 -07:00
Patrick Walton
14d1c53a9c rustc: Remove direct access to the cname field of types 2011-04-22 13:45:21 -07:00
Patrick Walton
c7473c8260 rustc: Switch @ty.t to ty.t so that we can change it to a uint 2011-04-22 12:27:52 -07:00
Rafael Ávila de Espíndola
fac8cc3b06 Use -c in the Makefiles. 2011-04-22 15:15:52 -04:00
Patrick Walton
c1335510d5 rustc: Eliminate the direct use of ty.t.struct 2011-04-22 12:09:09 -07:00
Rafael Ávila de Espíndola
9eb1479746 Dispose the module.
Thanks to brson for noticing it.
2011-04-22 14:49:02 -04:00
Patrick Walton
106f783b33 rustc: Add a fast path when the types to be unified are exactly equal 2011-04-22 10:51:32 -07:00
Patrick Walton
9edaa7dba3 rustc: Add a fast path if there are no type substitutions to be made 2011-04-22 10:37:51 -07:00
Patrick Walton
9ab9bd9cc2 rustc: Improve the efficiency of lookup_item_type() slightly 2011-04-22 10:19:57 -07:00
Marijn Haverbeke
2361b65526 Switch to binary search in codemap.lookup_pos
Patrick observed excessive slowness when looking up positions
in rustc. This might help.
2011-04-22 12:11:00 +02:00
Graydon Hoare
d3eb3b42aa Minimize calls to hash function in map.rs 2011-04-22 01:06:20 -07:00
Patrick Walton
117aff8688 rustc: Intern types 2011-04-21 19:31:13 -07:00
Graydon Hoare
3b047bad6e New minimal test for current stage2 blocker. 2011-04-22 02:07:41 +00:00
Brian Anderson
540344acb9 Fix the signature of expr_ext
The extension body is just a string, not an expression.
2011-04-21 20:42:26 -04:00
Patrick Walton
c78b73b71d test: Un-XFAIL drop-parametric-closure-with-bound-box.rs, oops. 2011-04-21 17:36:10 -07:00
Patrick Walton
11c359962e test: XFAIL lib-box on stage0. Upstream LLVM doesn't have the library reading patch yet. 2011-04-21 17:35:25 -07:00
Patrick Walton
5e7336ec0d rustc: Add a shallow type equality function, not used yet 2011-04-21 17:06:01 -07:00
Patrick Walton
735435bf96 stdlib: Add a pointer equality function to the standard library and a test case 2011-04-21 16:44:17 -07:00
Patrick Walton
5dbf554bb3 rustc: Pass a type store around, which does nothing yet 2011-04-21 14:30:27 -07:00
Patrick Walton
3dbfc9310a rustc: Make the parser never assign any types, not even ty_nil 2011-04-21 13:00:06 -07:00
Patrick Walton
4d5fad696a rustc: Get rid of boring_ann(); it duplicates plain_ann() 2011-04-21 12:51:46 -07:00
Patrick Walton
ef0fcdd630 rustc: Create a unification context 2011-04-21 12:10:53 -07:00
Patrick Walton
f4b89f5d79 rustc: Move ty.unify to a separate namespace 2011-04-21 11:46:31 -07:00
Graydon Hoare
4509e6fd70 Change ty.eq_ty to avoid stringification. 2011-04-21 05:31:00 +00:00
Patrick Walton
1ee96891a0 rustc: Create an item collection context during typechecking; move collection to a module 2011-04-20 17:59:33 -07:00
Graydon Hoare
c0d98cec45 Fix walk bug that coupled with marijns work to regress stage1. 2011-04-20 22:52:33 +00:00
Patrick Walton
bc50a3ba44 rustc: Add a type unification cache 2011-04-20 15:26:55 -07:00
Patrick Walton
7596fcfba7 rustc: Define type hashing inductively 2011-04-20 14:34:17 -07:00
Patrick Walton
276a0f2de8 rustc: Precompute type hashes 2011-04-20 12:22:28 -07:00
Patrick Walton
cac7524c1a rustc: Remove all manual type construction outside ty.rs 2011-04-20 11:59:10 -07:00
Patrick Walton
38e842244c rustc: Remove all uses of plain_ty() and friends from outside of ty.rs 2011-04-20 11:23:36 -07:00
Patrick Walton
ac62488bb1 rustc: Introduce preferred type constructors, which will eventually precompute hashes and intern 2011-04-20 10:51:41 -07:00
Marijn Haverbeke
c49735d7c4 Remove last uses of fold from trans.rs 2011-04-20 17:43:37 +02:00
Marijn Haverbeke
757f1520d7 Change trans.collect_items to use walk, not fold 2011-04-20 17:23:45 +02:00
Marijn Haverbeke
4fe339d5ef Change collect_upvars from using fold to using walk 2011-04-20 12:35:34 +02:00
Marijn Haverbeke
fc6fbc1ed0 Integrate walk.rs 2011-04-20 12:35:07 +02:00
Graydon Hoare
9034a8fbd6 Fix #335, log context needs to be a scope to capture cleanups. 2011-04-20 04:55:55 +00:00
Graydon Hoare
2e6711fca5 Small fast-path hack to ty.hash_ty and eq_ty. 2011-04-19 18:46:54 -07:00
Patrick Walton
1080ac5349 rustc: Add a -noverify option 2011-04-19 18:31:27 -07:00
Graydon Hoare
d1b9ddc8d4 Add testcase for bootstrap blocker and fix for each result type to nil. 2011-04-19 16:53:12 -07:00
Patrick Walton
6651826677 rustc: Cache the results of type_of() 2011-04-19 16:41:08 -07:00
Patrick Walton
5475c0009c rustc: Use marijnh's stringifier for type hash and equality, since it's not sensitive to cnames 2011-04-19 16:41:08 -07:00
Graydon Hoare
928b25c9fb Un-XFAIL a few recently passing tests. 2011-04-19 15:41:45 -07:00
Patrick Walton
0ee997cee6 rustc: Make structured comparison glue instead of emitting it inline 2011-04-19 15:29:27 -07:00
Tim Chevalier
b7dd75c904 Handle nested items correctly in typestate_check
Summary says it all. Actually, only nested objects and functions
are handled, but that's better than before. The fold that I was using
before to traverse a crate wasn't working correctly, because annotations
have to reflect the number of local variables of the nearest enclosing
function (in turn, because annotations are represented as bit vectors).
The fold was traversing the AST in the wrong order, first filling in
the annotations correctly, but then re-traversing them with the bit
vector length for any outer nested functions, and so on.

Remedying this required writing a lot of tedious boilerplate code
because I scrapped the idea of using a fold altogether.

I also made typestate_check handle unary, field, alt, and fail.

Also, some miscellaneous changes:
* added annotations to blocks in typeck
* fix pprust so it can handle spawn
* added more logging functions in util.common
* fixed _vec.or
* added maybe and from_maybe in option
* removed fold_block field from ast_fold, since it was never used
2011-04-19 14:56:28 -07:00
Graydon Hoare
3d9cf15d0b Remove half-baked 'opacity' layer qualifier. 2011-04-19 14:00:04 -07:00
Graydon Hoare
d2bd07dcb0 Remove effect system from src. 2011-04-19 13:35:49 -07:00
Patrick Walton
d9d5eb82a7 rustc: Allow glue to be emitted even for scalar types; this is necessary to support compare glue 2011-04-19 11:25:40 -07:00
Patrick Walton
6599b310f7 rustc: Don't return "result" types from glue helper functions. This allows glue to fail. 2011-04-19 11:17:01 -07:00
Patrick Walton
37b5e91544 rustc: Assert that each basic block isn't terminated before adding instructions to it 2011-04-19 10:40:38 -07:00
Marijn Haverbeke
9287641c86 add rustboot-specific log upcalls to .def file 2011-04-19 18:12:49 +02:00
Marijn Haverbeke
880be6a940 Overhaul logging system in runtime
See https://github.com/graydon/rust/wiki/Logging-vision

The runtime logging categories are now treated in the same way as
modules in compiled code. Each domain now has a log_lvl that can be
used to restrict the logging from that domain (will be used to allow
logging to be restricted to a single domain).

Features dropped (can be brought back to life if there is interest):
  - Logger indentation
  - Multiple categories per log statement
  - I possibly broke some of the color code -- it confuses me
2011-04-19 16:57:13 +02:00
Marijn Haverbeke
6511d471ba replace error logging with log_err in stdlib and rustc 2011-04-19 16:57:13 +02:00
Marijn Haverbeke
6d3a423094 add log_err to rustc 2011-04-19 16:57:13 +02:00
Marijn Haverbeke
9bfc8bf11e Add log_err to rustboot 2011-04-19 16:57:13 +02:00
Brian Anderson
7f90000ab6 Precision overrides 0-padding in #fmt 2011-04-18 22:53:26 -04:00
Brian Anderson
59d5267936 Rearrange ExtFmt.RT.pad to recover some horizontal space 2011-04-18 21:36:04 -04:00
Brian Anderson
869b28e393 Left-justification overrides 0-padding in #fmt 2011-04-18 21:36:04 -04:00
Brian Anderson
d4f1a48111 Support 0 flag in #fmt 2011-04-18 21:36:04 -04:00
Graydon Hoare
4763cd39ca Boilerplate city, for anyone who wants it. 2011-04-18 18:32:05 -07:00
Patrick Walton
5f2cfa7351 rustc: Add an operation field to compare glue with ==, <=, and < modes 2011-04-18 12:57:00 -07:00
Rafael Ávila de Espíndola
9657e5d2d3 Revert 9ab42038bb while I find what is
wrong on Windows.
2011-04-18 15:37:04 -04:00
Graydon Hoare
8a6590a75f Remove use of 'use' from type-params-in-for-each.rs, put out darwin fire. 2011-04-18 12:20:50 -07:00
Rafael Ávila de Espíndola
9ab42038bb Change the makefiles to use -c. 2011-04-18 15:00:17 -04:00
Patrick Walton
abd78f2f04 rustc: Create stub glue for structural comparison 2011-04-18 11:14:38 -07:00
Marijn Haverbeke
ef62fae9db Add a proper check for rustboot
Uncomment log initialization.
2011-04-18 19:59:49 +02:00
Marijn Haverbeke
c40cf96656 Temporarily turn off logging initialization
Will be restored as soon as I find a way for the runtime
to figure out whether it is on rustboot or rustc.
2011-04-18 18:29:20 +02:00
Marijn Haverbeke
f6be25a870 Update foregoing patches to leave rust_crate alone.
Apparently it can't live in the main binary, since on non-Linux
platforms, dynamics libs won't find symbols in the binary. This
removes the crate_map pointer from rust_crate again, and instead
passes it as an extra argument to rust_start. Rustboot doesn't pass
this argument, but supposedly that's okay as long as we don't actually
use it on that platform.
2011-04-18 16:21:49 +02:00
Rafael Ávila de Espíndola
f12998e5d7 Add a -c option. 2011-04-18 10:02:52 -04:00
Marijn Haverbeke
148e6f7b00 Make log the log level configurable per module
This overloads the meaning of RUST_LOG to also allow
'module.submodule' or 'module.somethingelse=2' forms. The first turn
on all logging for a module (loglevel 3), the second sets its loglevel
to 2. Log levels are:

 0: Show only errors
 1: Errors and warnings
 2: Errors, warnings, and notes
 3: Everything, including debug logging

Right now, since we only have one 'log' operation, everything happens
at level 1 (warning), so the only meaningful thing that can be done
with the new RUST_LOG support is disable logging (=0) for some
modules.

TODOS:
 * Language support for logging at a specific level
 * Also add a log level field to tasks, query the current task as well
   as the current module before logging (log if one of them allows it)
 * Revise the C logging API to conform to this set-up (globals for
   per-module log level, query the task level before logging, stop
   using a global mask)

Implementation notes:

Crates now contain two extra data structures. A 'module map' that
contains names and pointers to the module-log-level globals for each
module in the crate that logs, and a 'crate map' that points at the
crate's module map, as well as at the crate maps of all external
crates it depends on. These are walked by the runtime (in
rust_crate.cpp) to set the currect log levels based on RUST_LOG.

These module log globals are allocated as-needed whenever a log
expression is encountered, and their location is hard-coded into the
logging code, which compares the current level to the log statement's
level, and skips over all logging code when it is lower.
2011-04-18 15:28:47 +02:00