Skip to content

Commit 7b8094f

Browse files
committed
---
yaml --- r: 85338 b: refs/heads/dist-snap c: a2ed09a h: refs/heads/master v: v3
1 parent 17afcc3 commit 7b8094f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+1524
-858
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ refs/heads/try: 0983ebe5310d4eb6d289f636f7ed0536c08bbc0e
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c
9-
refs/heads/dist-snap: 0932ab336ffd9c53d3a164e0f94fcab2206c3fee
9+
refs/heads/dist-snap: a2ed09a006b5ae3cb671feb52e6ee2ea0e4f0a3a
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1212
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0

branches/dist-snap/configure

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,6 @@ opt docs 1 "build documentation"
371371
opt optimize 1 "build optimized rust code"
372372
opt optimize-cxx 1 "build optimized C++ code"
373373
opt optimize-llvm 1 "build optimized LLVM"
374-
opt optimize-tests 1 "build tests with optimizations"
375374
opt llvm-assertions 1 "build LLVM with assertions"
376375
opt debug 0 "build with extra debug fun"
377376
opt ratchet-bench 0 "ratchet benchmarks"

branches/dist-snap/mk/tests.mk

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -552,15 +552,7 @@ TEST_SREQ$(1)_T_$(2)_H_$(3) = \
552552

553553
# The tests select when to use debug configuration on their own;
554554
# remove directive, if present, from CFG_RUSTC_FLAGS (issue #7898).
555-
CTEST_RUSTC_FLAGS := $$(subst --cfg debug,,$$(CFG_RUSTC_FLAGS))
556-
557-
# The tests can not be optimized while the rest of the compiler is optimized, so
558-
# filter out the optimization (if any) from rustc and then figure out if we need
559-
# to be optimized
560-
CTEST_RUSTC_FLAGS := $$(subst -O,,$$(CTEST_RUSTC_FLAGS))
561-
ifndef CFG_DISABLE_OPTIMIZE_TESTS
562-
CTEST_RUSTC_FLAGS += -O
563-
endif
555+
CTEST_RUSTC_FLAGS = $$(subst --cfg debug,,$$(CFG_RUSTC_FLAGS))
564556

565557
CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3) := \
566558
--compile-lib-path $$(HLIB$(1)_H_$(3)) \

branches/dist-snap/src/libextra/crypto/sha1.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ impl Sha1 {
159159
}
160160

161161
impl Digest for Sha1 {
162-
fn reset(&mut self) {
162+
pub fn reset(&mut self) {
163163
self.length_bits = 0;
164164
self.h[0] = 0x67452301u32;
165165
self.h[1] = 0xEFCDAB89u32;
@@ -169,9 +169,9 @@ impl Digest for Sha1 {
169169
self.buffer.reset();
170170
self.computed = false;
171171
}
172-
fn input(&mut self, msg: &[u8]) { add_input(self, msg); }
173-
fn result(&mut self, out: &mut [u8]) { return mk_result(self, out); }
174-
fn output_bits(&self) -> uint { 160 }
172+
pub fn input(&mut self, msg: &[u8]) { add_input(self, msg); }
173+
pub fn result(&mut self, out: &mut [u8]) { return mk_result(self, out); }
174+
pub fn output_bits(&self) -> uint { 160 }
175175
}
176176

177177
#[cfg(test)]

branches/dist-snap/src/libextra/enum_set.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ pub struct EnumSet<E> {
2121
/// An iterface for casting C-like enum to uint and back.
2222
pub trait CLike {
2323
/// Converts C-like enum to uint.
24-
fn to_uint(&self) -> uint;
24+
pub fn to_uint(&self) -> uint;
2525
/// Converts uint to C-like enum.
26-
fn from_uint(uint) -> Self;
26+
pub fn from_uint(uint) -> Self;
2727
}
2828

2929
fn bit<E:CLike>(e: E) -> uint {
@@ -142,11 +142,11 @@ mod test {
142142
}
143143

144144
impl CLike for Foo {
145-
fn to_uint(&self) -> uint {
145+
pub fn to_uint(&self) -> uint {
146146
*self as uint
147147
}
148148

149-
fn from_uint(v: uint) -> Foo {
149+
pub fn from_uint(v: uint) -> Foo {
150150
unsafe { cast::transmute(v) }
151151
}
152152
}

branches/dist-snap/src/libextra/num/bigint.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ impl ToStrRadix for BigUint {
537537
impl FromStrRadix for BigUint {
538538
/// Creates and initializes an BigUint.
539539
540-
fn from_str_radix(s: &str, radix: uint)
540+
pub fn from_str_radix(s: &str, radix: uint)
541541
-> Option<BigUint> {
542542
BigUint::parse_bytes(s.as_bytes(), radix)
543543
}

branches/dist-snap/src/libextra/terminfo/parm.rs

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,103 @@ impl FormatOp {
475475
}
476476
}
477477

478+
#[cfg(stage0)]
479+
fn format(val: Param, op: FormatOp, flags: Flags) -> Result<~[u8],~str> {
480+
let mut s = match val {
481+
Number(d) => {
482+
match op {
483+
FormatString => {
484+
return Err(~"non-number on stack with %s")
485+
}
486+
_ => {
487+
let radix = match op {
488+
FormatDigit => 10,
489+
FormatOctal => 8,
490+
FormatHex|FormatHEX => 16,
491+
FormatString => util::unreachable()
492+
};
493+
let mut s = ~[];
494+
match op {
495+
FormatDigit => {
496+
let sign = if flags.sign { SignAll } else { SignNeg };
497+
do int_to_str_bytes_common(d, radix, sign) |c| {
498+
s.push(c);
499+
}
500+
}
501+
_ => {
502+
do int_to_str_bytes_common(d as uint, radix, SignNone) |c| {
503+
s.push(c);
504+
}
505+
}
506+
};
507+
if flags.precision > s.len() {
508+
let mut s_ = vec::with_capacity(flags.precision);
509+
let n = flags.precision - s.len();
510+
s_.grow(n, &('0' as u8));
511+
s_.push_all_move(s);
512+
s = s_;
513+
}
514+
assert!(!s.is_empty(), "string conversion produced empty result");
515+
match op {
516+
FormatDigit => {
517+
if flags.space && !(s[0] == '-' as u8 || s[0] == '+' as u8) {
518+
s.unshift(' ' as u8);
519+
}
520+
}
521+
FormatOctal => {
522+
if flags.alternate && s[0] != '0' as u8 {
523+
s.unshift('0' as u8);
524+
}
525+
}
526+
FormatHex => {
527+
if flags.alternate {
528+
let s_ = util::replace(&mut s, ~['0' as u8, 'x' as u8]);
529+
s.push_all_move(s_);
530+
}
531+
}
532+
FormatHEX => {
533+
s = s.into_ascii().to_upper().into_bytes();
534+
if flags.alternate {
535+
let s_ = util::replace(&mut s, ~['0' as u8, 'X' as u8]);
536+
s.push_all_move(s_);
537+
}
538+
}
539+
FormatString => util::unreachable()
540+
}
541+
s
542+
}
543+
}
544+
}
545+
String(s) => {
546+
match op {
547+
FormatString => {
548+
let mut s = s.as_bytes().to_owned();
549+
if flags.precision > 0 && flags.precision < s.len() {
550+
s.truncate(flags.precision);
551+
}
552+
s
553+
}
554+
_ => {
555+
return Err(fmt!("non-string on stack with %%%c", op.to_char()))
556+
}
557+
}
558+
}
559+
};
560+
if flags.width > s.len() {
561+
let n = flags.width - s.len();
562+
if flags.left {
563+
s.grow(n, &(' ' as u8));
564+
} else {
565+
let mut s_ = vec::with_capacity(flags.width);
566+
s_.grow(n, &(' ' as u8));
567+
s_.push_all_move(s);
568+
s = s_;
569+
}
570+
}
571+
Ok(s)
572+
}
573+
574+
#[cfg(not(stage0))]
478575
fn format(val: Param, op: FormatOp, flags: Flags) -> Result<~[u8],~str> {
479576
let mut s = match val {
480577
Number(d) => {

branches/dist-snap/src/libextra/test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ pub struct Metric {
104104
pub struct MetricMap(TreeMap<~str,Metric>);
105105

106106
impl Clone for MetricMap {
107-
fn clone(&self) -> MetricMap {
107+
pub fn clone(&self) -> MetricMap {
108108
MetricMap((**self).clone())
109109
}
110110
}

branches/dist-snap/src/libextra/treemap.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,7 @@ impl<K: TotalOrd, V, T: Iterator<(K, V)>> Extendable<(K, V), T> for TreeMap<K, V
853853
}
854854

855855
impl<T: TotalOrd, Iter: Iterator<T>> FromIterator<T, Iter> for TreeSet<T> {
856-
fn from_iterator(iter: &mut Iter) -> TreeSet<T> {
856+
pub fn from_iterator(iter: &mut Iter) -> TreeSet<T> {
857857
let mut set = TreeSet::new();
858858
set.extend(iter);
859859
set

branches/dist-snap/src/libextra/url.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -701,7 +701,7 @@ pub fn to_str(url: &Url) -> ~str {
701701
}
702702

703703
impl ToStr for Url {
704-
fn to_str(&self) -> ~str {
704+
pub fn to_str(&self) -> ~str {
705705
to_str(self)
706706
}
707707
}

branches/dist-snap/src/librustc/back/rpath.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,19 @@ pub fn get_absolute_rpath(lib: &Path) -> Path {
130130
os::make_absolute(lib).dir_path()
131131
}
132132

133+
#[cfg(stage0)]
134+
pub fn get_install_prefix_rpath(target_triple: &str) -> Path {
135+
let install_prefix = env!("CFG_PREFIX");
136+
137+
if install_prefix == "" {
138+
fail!("rustc compiled without CFG_PREFIX environment variable");
139+
}
140+
141+
let tlib = filesearch::relative_target_lib_path(target_triple);
142+
os::make_absolute(&Path(install_prefix).push_rel(&tlib))
143+
}
144+
145+
#[cfg(not(stage0))]
133146
pub fn get_install_prefix_rpath(target_triple: &str) -> Path {
134147
let install_prefix = env!("CFG_PREFIX");
135148

branches/dist-snap/src/librustc/driver/driver.rs

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,14 @@ pub fn source_name(input: &input) -> @str {
6565
}
6666
}
6767
68-
pub fn default_configuration(sess: Session) ->
68+
pub fn default_configuration(sess: Session, argv0: @str, input: &input) ->
6969
ast::CrateConfig {
70-
let tos = match sess.targ_cfg.os {
71-
session::os_win32 => @"win32",
72-
session::os_macos => @"macos",
73-
session::os_linux => @"linux",
74-
session::os_android => @"android",
75-
session::os_freebsd => @"freebsd"
70+
let (libc, tos) = match sess.targ_cfg.os {
71+
session::os_win32 => (@"msvcrt.dll", @"win32"),
72+
session::os_macos => (@"libc.dylib", @"macos"),
73+
session::os_linux => (@"libc.so.6", @"linux"),
74+
session::os_android => (@"libc.so", @"android"),
75+
session::os_freebsd => (@"libc.so.7", @"freebsd")
7676
};
7777

7878
// ARM is bi-endian, however using NDK seems to default
@@ -92,7 +92,10 @@ pub fn default_configuration(sess: Session) ->
9292
mk(@"target_arch", arch),
9393
mk(@"target_endian", end),
9494
mk(@"target_word_size", wordsz),
95-
];
95+
mk(@"target_libc", libc),
96+
// Build bindings.
97+
mk(@"build_compiler", argv0),
98+
mk(@"build_input", source_name(input))];
9699
}
97100

98101
pub fn append_configuration(cfg: &mut ast::CrateConfig, name: @str) {
@@ -101,11 +104,11 @@ pub fn append_configuration(cfg: &mut ast::CrateConfig, name: @str) {
101104
}
102105
}
103106

104-
pub fn build_configuration(sess: Session) ->
107+
pub fn build_configuration(sess: Session, argv0: @str, input: &input) ->
105108
ast::CrateConfig {
106109
// Combine the configuration requested by the session (command line) with
107110
// some default and generated configuration items
108-
let default_cfg = default_configuration(sess);
111+
let default_cfg = default_configuration(sess, argv0, input);
109112
let mut user_cfg = sess.opts.cfg.clone();
110113
// If the user wants a test runner, then add the test cfg
111114
if sess.opts.test { append_configuration(&mut user_cfg, @"test") }
@@ -575,6 +578,25 @@ pub fn build_target_config(sopts: @session::options,
575578
return target_cfg;
576579
}
577580
581+
#[cfg(stage0)]
582+
pub fn host_triple() -> ~str {
583+
// Get the host triple out of the build environment. This ensures that our
584+
// idea of the host triple is the same as for the set of libraries we've
585+
// actually built. We can't just take LLVM's host triple because they
586+
// normalize all ix86 architectures to i386.
587+
//
588+
// Instead of grabbing the host triple (for the current host), we grab (at
589+
// compile time) the target triple that this rustc is built with and
590+
// calling that (at runtime) the host triple.
591+
let ht = env!("CFG_COMPILER_TRIPLE");
592+
return if ht != "" {
593+
ht.to_owned()
594+
} else {
595+
fail!("rustc built without CFG_COMPILER_TRIPLE")
596+
};
597+
}
598+
599+
#[cfg(not(stage0))]
578600
pub fn host_triple() -> ~str {
579601
// Get the host triple out of the build environment. This ensures that our
580602
// idea of the host triple is the same as for the set of libraries we've
@@ -977,7 +999,7 @@ pub fn list_metadata(sess: Session, path: &Path, out: @io::Writer) {
977999
mod test {
9781000

9791001
use driver::driver::{build_configuration, build_session};
980-
use driver::driver::{build_session_options, optgroups};
1002+
use driver::driver::{build_session_options, optgroups, str_input};
9811003

9821004
use extra::getopts::groups::getopts;
9831005
use extra::getopts;
@@ -995,7 +1017,7 @@ mod test {
9951017
let sessopts = build_session_options(
9961018
@"rustc", matches, diagnostic::emit);
9971019
let sess = build_session(sessopts, diagnostic::emit);
998-
let cfg = build_configuration(sess);
1020+
let cfg = build_configuration(sess, @"whatever", &str_input(@""));
9991021
assert!((attr::contains_name(cfg, "test")));
10001022
}
10011023

@@ -1013,7 +1035,7 @@ mod test {
10131035
let sessopts = build_session_options(
10141036
@"rustc", matches, diagnostic::emit);
10151037
let sess = build_session(sessopts, diagnostic::emit);
1016-
let cfg = build_configuration(sess);
1038+
let cfg = build_configuration(sess, @"whatever", &str_input(@""));
10171039
let mut test_items = cfg.iter().filter(|m| "test" == m.name());
10181040
assert!(test_items.next().is_some());
10191041
assert!(test_items.next().is_none());

branches/dist-snap/src/librustc/metadata/filesearch.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,16 @@ fn push_if_exists(vec: &mut ~[Path], p: &Path) {
200200

201201
// The name of the directory rustc expects libraries to be located.
202202
// On Unix should be "lib", on windows "bin"
203+
#[cfg(stage0)]
204+
pub fn libdir() -> ~str {
205+
let libdir = env!("CFG_LIBDIR");
206+
if libdir.is_empty() {
207+
fail!("rustc compiled without CFG_LIBDIR environment variable");
208+
}
209+
libdir.to_owned()
210+
}
211+
212+
#[cfg(not(stage0))]
203213
pub fn libdir() -> ~str {
204214
(env!("CFG_LIBDIR")).to_owned()
205215
}

branches/dist-snap/src/librustc/middle/check_const.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ pub fn check_expr(sess: Session,
160160
expr_field(*) |
161161
expr_index(*) |
162162
expr_tup(*) |
163+
expr_repeat(*) |
163164
expr_struct(*) => { }
164165
expr_addr_of(*) => {
165166
sess.span_err(

branches/dist-snap/src/librustc/middle/const_eval.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,8 @@ pub fn classify(e: &expr,
153153
lookup_constness(tcx, e)
154154
}
155155

156+
ast::expr_repeat(*) => general_const,
157+
156158
_ => non_const
157159
};
158160
tcx.ccache.insert(did, cn);

0 commit comments

Comments
 (0)