Commit Graph

397 Commits

Author SHA1 Message Date
Stefan Plantikow
fa27724a4b std: getopts now uses result::t (fixes #1289) 2011-12-18 18:55:39 -08:00
Brian Anderson
555006a304 rustc: Remove --stack-growth option 2011-12-17 16:58:26 -08:00
Marijn Haverbeke
58a81a68ed Finish resolving and calling of crate-external impls
Issue #1227
2011-12-16 22:18:38 +01:00
Niko Matsakis
2833ca478c reorder args to the various vec, option fns so blk comes last 2011-12-16 07:17:23 -08:00
Marijn Haverbeke
1dd2f1ec03 Get very simple impl method calls to compile
Resolution is still dumb, and no self support yet.
2011-12-16 11:46:57 +01:00
Marijn Haverbeke
888bc80025 Parse and resolve implementations.
Issue #1227
2011-12-16 11:46:57 +01:00
Haitao Li
9bb290c725 rustc: Implement non-renamed re-export across crates
First patch for issue #1115. Not yet ready for re-exported modules which
are renamed when importing them.
2011-12-16 17:16:00 +08:00
Graydon Hoare
8f0c475562 Add an --out-dir option to rustc. 2011-12-15 13:52:43 -08:00
Graydon Hoare
7694689044 Fix bug in library output filename construction: /tmp/foo.rc was being linked as lib/tmp/foo-<hash>-<vers>.so not /tmp/foo-<hash>-<vers>.so 2011-12-15 11:33:57 -08:00
Graydon Hoare
fa9ad984fb Copy first batch of material from libstd to libcore. 2011-12-13 16:34:50 -08:00
Haitao Li
6dbd4c21e9 rustc: build versioned library with hash in its name
Also updated build to install versioned libraries and added a few
missing actions for `make clean`.
2011-12-12 16:15:29 -08:00
Brian Anderson
54f72fbc10 rustc: Actually hook the crate_type attribute into session 2011-12-08 21:31:50 -08:00
Brian Anderson
9116a6d9b1 rustc: Support 'crate_type' attribute
[crate_type = "lib"] builds it as a library.
[crate_type = "bin"] builds it as an executable.

Executable is the default. --lib and --bin switches override.
2011-12-08 21:09:15 -08:00
Brian Anderson
6156295a4c rustc: Move linking into compile_input 2011-12-08 20:33:31 -08:00
Brian Anderson
fd81fb6a24 rustc: Determine the crate type (lib/bin) in the session, not session opts
This is in preparation for adding a #[crate_type] attribute
2011-12-08 20:08:00 -08:00
Graydon Hoare
e056ffa17d Inject the view_items for core in the right place, add comment documenting why the wrong place was wrong. 2011-12-07 13:33:00 -08:00
Marijn Haverbeke
e3eca9174b Change literal representation to not truncate
Also shuffles around the organization of numeric literals and types,
separating by int/uint/float instead of machine-vs-non-machine types.
This simplifies some code.

Closes #974
Closes #1252
2011-12-07 21:08:28 +01:00
Graydon Hoare
a1b215aea1 Add --no-core option and inject a use core/import core::* pair into crate unless it's given. 2011-12-06 14:40:30 -08:00
Graydon Hoare
baf3de4733 Rename --noverify flag to --no-verify. 2011-12-06 13:02:59 -08:00
Marijn Haverbeke
64ce092c27 Allow literal patterns to contain arbitrary literal expressions
This removes the need for the unary minus hacks, and allows some other
neat things like matching on 1 >> 4.

Issue #954
2011-12-02 13:42:51 +01:00
Marijn Haverbeke
b4217b383b Add a pass that checks that blocks are only used in safe ways
Closes #1188
2011-11-21 11:01:15 +01:00
Marijn Haverbeke
86c1f16a10 Fix bad interaction between last-use finding and references
The last-use pass now takes input from the alias pass to not mark things
as last uses that are still accessed through a reference.

Issue #925
2011-11-21 09:25:42 +01:00
Marijn Haverbeke
68db68c4cc Make trans use last_use info to not actually generate copies
Issue #925
2011-11-18 15:56:53 +01:00
Marijn Haverbeke
8f8ebb550c Implement a last-use-of-local finding algorithm
Issue #925
2011-11-18 12:49:01 +01:00
Niko Matsakis
adc79e2f44 remove compile-command from local variable blocks 2011-11-17 11:46:13 -08:00
Haitao Li
388eed383f rustc: Add a flag '--warn-unused-imports'
Followup of issue #889
2011-11-17 09:28:30 +01:00
Niko Matsakis
bfc81352aa remove unused flag (thanks lht) 2011-11-16 21:52:01 -08:00
Stefan Plantikow
99c421f01d Removed --no-typestate flag from rutsc
Fixes issue #1139
2011-11-16 18:52:46 -08:00
Brian Anderson
55f89dbed9 rustc: Fix help text for --sysroot 2011-11-16 18:35:30 -08:00
Niko Matsakis
9043bd9778 wrap long line; 2011-11-16 15:16:43 -08:00
Niko Matsakis
cb9675259f enable comments in generated asm, ll 2011-11-16 15:16:42 -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
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
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
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
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
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
1a68a98824 Disallow writing to function arguments again
Remove implicit copying hack.

Closes #1118
2011-11-03 10:57:54 +01: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
Brian Anderson
2cebef095e stdlib: Make io failures recoverable by returning a result 2011-10-29 01:25:11 -07:00
Brian Anderson
83219269d5 rustc: Remove broken --depend flag 2011-10-28 12:58:10 -07:00
Brian Anderson
2a2945e5de rustc: -h cleanup 2011-10-28 12:51:46 -07:00
Brian Anderson
d106a336cc rustc: Change --OptLevel to --opt-level 2011-10-28 12:49:19 -07:00
Brian Anderson
bab2b37fd0 rustc: Use consistent error handling in main 2011-10-28 11:57:01 -07:00
Brian Anderson
f2a3270b9c Reorder statements in rustc main to avoid bounds check 2011-10-28 11:17:07 -07:00
Haitao Li
a81fdf0a5a rustc: Lift output file name handling out of main 2011-10-28 11:12:10 -07:00
Haitao Li
7bb9a54c73 Produce dyn libraries with proper names
Issue #744
2011-10-28 11:05:43 -07:00
Marijn Haverbeke
cfdf193c46 Update our code to new type parameter kind syntax
Closes #1067
2011-10-25 15:56:55 +02:00
Brian Anderson
29ad3bdb10 Make fn denote a bare function. Convert fn to fn@ as needed 2011-10-20 18:23:48 -07:00
Brian Anderson
89466ffd74 Rename rustc::middle::unsafeck to fn_usage
I'm going to add further checks unrelated to unsafe.

Issue #1038
2011-10-13 12:25:57 -07:00
Niko Matsakis
e8a0e592da reimplement some of the unsafe stuff which got lost
- blocks inherit unsafety
  - remove the --check-unsafe flag
  - add unsafe annotations where needed to get things to compile
2011-10-12 16:33:07 -07:00
Niko Matsakis
9f9deff7af make a good error msg if you try to use an unsafe fn for a test 2011-10-12 16:33:07 -07:00
Niko Matsakis
81533ff737 add pass to check that unsafe fns cannot be used as values 2011-10-12 16:33:06 -07:00
Niko Matsakis
b9a9559c91 correct lines over 78 chars 2011-10-12 14:39:34 -07:00
Niko Matsakis
f3c68e7238 enable unsafe checking but only with a flag --check-unsafe 2011-10-12 14:39:34 -07:00
David Rajchenbach-Teller
8c9dd54ded [Renaming] str_to_float is now float::from_str, float_to_str is now float::to_str 2011-10-12 10:56:05 +02:00
David Rajchenbach-Teller
2ec85135e2 [Move] Moved str_to_float, float_to_str from compiler to lib 2011-10-11 16:41:34 +02:00
Marijn Haverbeke
33167f7dec Adjust function signatures to allow for vecs being immediate
Some code was relying on vectors being implicitly by-reference (as
non-immediate value). This adds the necessary &&-sigils.

Closes #1021
2011-10-10 16:01:51 +02:00
Marijn Haverbeke
9c037d2194 Revert "rustc: Add a workaround for a segfault with --time-passes (issue #1005)."
This reverts commit 100e0264b2.
2011-10-06 16:12:47 +02:00
Patrick Walton
100e0264b2 rustc: Add a workaround for a segfault with --time-passes (issue #1005). 2011-10-05 14:35:30 -07:00
Brian Anderson
1f2e999262 Use std::os::get_exe_path to determine sysroot 2011-10-04 21:35:06 -07:00
Brian Anderson
33ee73102d Remove some redundancy in metadata::creader 2011-10-04 21:35:06 -07:00
Brian Anderson
d91b7b61ef Encapsulate current sysroot and lib path handling into util::filesearch 2011-10-04 21:35:06 -07:00
Patrick Walton
e9287e55cc rustc: Stub a --stack-growth option; it's behind a flag for now because it requires patches to LLVM. 2011-09-30 18:21:39 -07:00
Brian Anderson
821dd6c02c Change the directory for target libs
This pushes them down from stageN/lib/rustc/$(target) to
stageN/lib/rustc/$(target)/lib in order to make room for a target bin dir
2011-09-30 17:19:24 -07:00
Brian Anderson
80829af872 Remove legacy library search paths 2011-09-29 23:12:31 -07:00
Brian Anderson
ab8338fb5a Make rustc's host triple agree with the build system's 2011-09-29 22:58:33 -07:00
Brian Anderson
0148daa058 Reorganize structure of build directory
Each stage is organized more according to Unix standards and to
accommodate multiple target architectures.

stageN/
  bin - rustc lives here
  lib - libraries that rustc needs
  lib/rustc/$(target_triple/ - target libraries
2011-09-29 22:58:33 -07:00
Brian Anderson
15e34deba3 Eliminate glue.o. Closes #990 2011-09-28 15:35:21 -07:00
Graydon Hoare
18c6cc6371 More steps to arch-specific target libs (#474) 2011-09-23 10:50:16 -07:00
Graydon Hoare
68d50b5928 Add target_triple to session::options. Use host triple by default, accept --target on command line. 2011-09-21 08:46:44 -07:00
Brian Anderson
de1b394c32 Move linker invocation from driver::rustc to back::link 2011-09-20 11:10:03 -07:00
Graydon Hoare
a4815b6742 Factor imports mindlessly. 2011-09-12 16:13:28 -07:00
Marijn Haverbeke
ca1df2b111 Pretty-print for new arg-mode syntax 2011-09-12 12:49:00 +02:00
Marijn Haverbeke
fc6b7c8b38 Reformat for new mode syntax, step 1
Long lines were fixed in a very crude way, as I'll be following up
with another reformat in a bit.
2011-09-12 12:04:14 +02:00
Marijn Haverbeke
4be7e1e5cd Pass all arguments by reference, make immut alias mode equiv to value
Arguments that can't be safely referenced will be implicitly copied.

(Warnings for expensive copies will be forthcoming.)

This will allow us to get rid of most of the ampersands in function
signatures. See [1].

[1] https://mail.mozilla.org/pipermail/rust-dev/2011-September/000759.html
2011-09-12 11:06:54 +02:00
Brian Anderson
5c49e4f4e9 Reformat. Issue #855 2011-09-02 22:11:42 -07:00
Brian Anderson
418d09e547 Convert all uses of #ifmt to #fmt. Issue #855 2011-09-01 18:54:03 -07:00
Brian Anderson
fc45eb785a Use #env to get the rustc version again. Issue #855 2011-09-01 17:49:39 -07:00
Brian Anderson
ab6bb035e5 Rename std::istr to std::str. Issue #855 2011-09-01 17:27:58 -07:00
Brian Anderson
e824775d53 Remove std::str. Issue #855 2011-09-01 16:09:15 -07:00
Brian Anderson
ad3dcc0689 Remove the last use of istr::to_estr from rustc. Issue #855 2011-09-01 13:21:29 -07:00
Brian Anderson
bb56a75343 Convert main functions to istrs. Issue #855 2011-09-01 12:14:35 -07:00
Marijn Haverbeke
6ba4eacddf Make resolve recognize upvars
Upvars are now marked with def_upvar throughout, not just when going
through freevars::lookup_def. This makes things less error-prone. One
thing to watch out for is that def_upvar is used in `for each` bodies
too, when they refer to a local outside the body.
2011-09-01 16:32:44 +02:00
Marijn Haverbeke
2d1dec78e7 Move mutability checking into its own pass.
Having it in the alias pass was slightly more efficient (finding
expression roots has to be done in both passes), but further muddled
up the already complex alias checker.

Also factors out some duplication in the mutability-checking code.
2011-09-01 16:32:38 +02:00
Brian Anderson
498e38b705 Convert uses of #fmt to #ifmt. Issue #855 2011-08-31 11:44:06 -07:00
Brian Anderson
eb70267e5e Convert #env to istrs. Temporarily disable usage in rustc. Issue #855 2011-08-30 21:08:07 -07:00
Brian Anderson
5f57a508af Convert misc compiler bits to istrs. Issue #855 2011-08-27 18:05:59 -07:00
Brian Anderson
cffd9b8044 Convert rustc driver to istrs. Issue #855 2011-08-27 17:47:06 -07:00
Brian Anderson
9857048929 Convert rustc::driver::session to istrs. Issue #855 2011-08-27 16:47:50 -07:00
Brian Anderson
3dc2419443 Convert rustc::syntax::codemap to istrs. Issue #855 2011-08-27 15:58:17 -07:00
Brian Anderson
cbad23a747 Convert pretty-printer to istrs. Issue #855 2011-08-27 15:54:46 -07:00
Brian Anderson
675073c266 Convert parser to istrs. Issue #855 2011-08-27 15:54:46 -07:00
Brian Anderson
d2ae28fc99 Convert rustc::util to istrs. Issue #855 2011-08-27 15:54:45 -07:00
Brian Anderson
54691f9a6c Convert rustc::metadata to istrs. Issue #855 2011-08-27 15:54:45 -07:00
Brian Anderson
9e01e05f3b Convert rustc::middle::trans to istrs. Issue #855 2011-08-27 15:54:45 -07:00
Brian Anderson
d7fa75413f Convert rustc::lib::llvm to istr::sbufs. Issue #855 2011-08-27 15:54:44 -07:00
Brian Anderson
a58bfced3c Convert back::link to istrs. Issue #855 2011-08-27 15:54:44 -07:00