Commit graph

1225 commits

Author SHA1 Message Date
Marijn Haverbeke
7f222423b7 Use a const for crate-num-zero (ast.local_crate) 2011-05-11 12:59:34 +02:00
Marijn Haverbeke
6b46113afc Cache external crate lookups in resolve.rs
According to --time-passes, resolution went from 2 to 0 seconds. Not
really the bottleneck... but if we want to be crazy fast, just
consider this a future bottleneck that was fixed very timely.
2011-05-11 12:32:37 +02:00
Marijn Haverbeke
e9c12ab1d0 Rewrite comp/middle/resolve.rs
* Cleans up the algorithm
 * Move first pass to walk (second still folds)
 * Support part of a type/value namespace split
   (crate metadata and module indices still need to be taught about this)
 * Remove a few blatant inefficiencies (import tables being recreated for
   every lookup, most importantly)
2011-05-11 12:32:37 +02:00
Graydon Hoare
dc0aab47a7 More alias-ification of trans. 2011-05-11 05:11:59 +00:00
Brian Anderson
a8e8585fbc Add meta info to rustc.rc 2011-05-10 21:31:14 -04:00
Patrick Walton
f627c2ff21 rustc: Don't interleave allocas with stores when copying arguments to allocas 2011-05-10 18:29:14 -07:00
Graydon Hoare
390ce40165 Begin alias-ifying trans. 2011-05-10 18:07:40 -07:00
Graydon Hoare
cf3e737eee Avoid mangle_name_by_type_only call in tydesc names unless debugging. 2011-05-10 18:07:40 -07:00
Patrick Walton
1448fc1a24 rustc: Lower the size limit on ty_to_short_str() and always call it in favor of direct calls to metadata.Encode.ty_str() in trans 2011-05-10 17:50:39 -07:00
Patrick Walton
7da9101e11 rustc: Make -g not take an argument 2011-05-10 17:50:39 -07:00
Patrick Walton
10c9266525 rustc: Number everything with an annotation 2011-05-10 17:27:59 -07:00
Graydon Hoare
7e8b57d1bb Only name LLVM values / blocks / types when saving temporaries. 2011-05-10 17:04:41 -07:00
Graydon Hoare
d6f1fcff6b Add --time-llvm-passes. 2011-05-10 16:10:08 -07:00
Patrick Walton
17daf1f9bf rustc: Cache intermediate results of metadata.Encode.ty_str. Shaves 30% off translation time. 2011-05-10 14:48:24 -07:00
Graydon Hoare
3bec4c8193 Switch memcpy to memmove since we're willing to compile x = x and such. 2011-05-10 14:22:14 -07:00
Patrick Walton
2849103f24 rustc: Get rid of native Rust glue for all upcalls except the exit task glue 2011-05-10 14:04:34 -07:00
Graydon Hoare
55f0f79a46 Re-enable use of llvm intrinsics for memcpy, memset. Should have aligned stack now. 2011-05-10 11:50:29 -07:00
Brian Anderson
1abb7a868e Fix long lines in fold.rs, typeck.rs 2011-05-09 22:11:56 -04:00
Graydon Hoare
4539f8a03c Alias-ify fold and its users, remove another 85kb. 2011-05-09 17:50:06 -07:00
Patrick Walton
cfcc8678e5 rustc: Give our upcall definitions the right values 2011-05-09 16:59:18 -07:00
Graydon Hoare
476442e48c Alias-ify walk, typeck, metadata. Cuts another 80kb off rustc. 2011-05-09 16:17:17 -07:00
Patrick Walton
071ed380fb rustc: Declare upcalls with real signatures; preparation for killing rust_native_rust_* stubs 2011-05-09 15:33:02 -07:00
Graydon Hoare
b00f3074d4 Remove boxes from token.t. 2011-05-09 14:17:45 -07:00
Patrick Walton
70c759030c rustc: Alias fix part 2 -- Check that the aliasness of function parameters matches. Add a test case. 2011-05-09 14:00:50 -07:00
Graydon Hoare
b2b33de819 Alias-ify a variety of fn signatures in ty. Cuts 180kb off rustc. 2011-05-09 13:09:20 -07:00
Patrick Walton
662e949540 rustc: Alias fix part 1 -- Separate out AST modes from typechecker modes, and introduce an "either value or alias" mode 2011-05-09 12:27:03 -07:00
Patrick Walton
bc879a4e1e rustc: Replace our homebrew list of passes with the standard function and module passes, along with the TargetData passes. 2011-05-09 11:44:47 -07:00
Patrick Walton
106216d673 rustc: Stop emitting zero-length arrays 2011-05-08 16:26:35 -07:00
Graydon Hoare
db3b9a4992 Stop stringifying integers to get integral constants. 2011-05-07 18:54:23 +00:00
Patrick Walton
a71fda40b8 rustc: Make llvm_err() conform to Postel's law a little better 2011-05-06 18:19:42 -07:00
Graydon Hoare
0f23bbac01 Fix GenericOS.getenv returning a raw str, return an Option.t[str] instead. 2011-05-06 16:30:39 -07:00
Patrick Walton
c624ed72b1 rustc: Uncomment LLVMAddStandardPasses, now that we have a native glue that supports 8 arguments. 2011-05-06 14:22:17 -07: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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Brian Anderson
ed40c85af5 Extract ast.is_exported from the resolve module 2011-05-02 22:07:36 -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
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
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
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
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
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
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
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
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