diff options
| author | bors <bors@rust-lang.org> | 2016-08-09 10:00:54 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-08-09 10:00:54 -0700 |
| commit | e1d2bc2916b5b5840789d7e7fc89e4647063bfa0 (patch) | |
| tree | e37e05fc527424276fbffc49774014871b254573 /src/test | |
| parent | f0139140f6a2d1207cb21336b0faca69b5a337b2 (diff) | |
| parent | e0b82d5c3a159fabf0dae4632f294f17eacda1d0 (diff) | |
| download | rust-e1d2bc2916b5b5840789d7e7fc89e4647063bfa0.tar.gz rust-e1d2bc2916b5b5840789d7e7fc89e4647063bfa0.zip | |
Auto merge of #35166 - nikomatsakis:incr-comp-ice-34991-2, r=mw
Address ICEs running w/ incremental compilation and building glium Fixes for various ICEs I encountered trying to build glium with incremental compilation enabled. Building glium now works. Of the 4 ICEs, I have test cases for 3 of them -- I didn't isolate a test for the last commit and kind of want to go do other things -- most notably, figuring out why incremental isn't saving much *effort*. But if it seems worthwhile and I can come back and try to narrow down the problem. r? @michaelwoerister Fixes #34991 Fixes #32015
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/incremental/callee_caller_cross_crate/b.rs | 1 | ||||
| -rw-r--r-- | src/test/incremental/dirty_clean.rs | 1 | ||||
| -rw-r--r-- | src/test/incremental/foreign.rs | 45 | ||||
| -rw-r--r-- | src/test/incremental/hello_world.rs | 1 | ||||
| -rw-r--r-- | src/test/incremental/inlined_hir_34991/main.rs | 33 | ||||
| -rw-r--r-- | src/test/incremental/krate_reassign_34991/auxiliary/a.rs | 14 | ||||
| -rw-r--r-- | src/test/incremental/krate_reassign_34991/main.rs | 30 | ||||
| -rw-r--r-- | src/test/incremental/rlib_cross_crate/b.rs | 2 | ||||
| -rw-r--r-- | src/test/incremental/spike.rs | 5 | ||||
| -rw-r--r-- | src/test/incremental/string_constant.rs | 1 | ||||
| -rw-r--r-- | src/test/incremental/struct_add_field.rs | 1 | ||||
| -rw-r--r-- | src/test/incremental/struct_change_field_name.rs | 1 | ||||
| -rw-r--r-- | src/test/incremental/struct_change_field_type.rs | 1 | ||||
| -rw-r--r-- | src/test/incremental/struct_change_field_type_cross_crate/b.rs | 1 | ||||
| -rw-r--r-- | src/test/incremental/struct_change_nothing.rs | 1 | ||||
| -rw-r--r-- | src/test/incremental/struct_remove_field.rs | 1 | ||||
| -rw-r--r-- | src/test/incremental/type_alias_cross_crate/b.rs | 1 |
17 files changed, 134 insertions, 6 deletions
diff --git a/src/test/incremental/callee_caller_cross_crate/b.rs b/src/test/incremental/callee_caller_cross_crate/b.rs index e81f828beb1..e8b187b5454 100644 --- a/src/test/incremental/callee_caller_cross_crate/b.rs +++ b/src/test/incremental/callee_caller_cross_crate/b.rs @@ -10,6 +10,7 @@ // aux-build:a.rs // revisions:rpass1 rpass2 +// compile-flags:-Z query-dep-graph #![feature(rustc_attrs)] diff --git a/src/test/incremental/dirty_clean.rs b/src/test/incremental/dirty_clean.rs index 9a3097831c5..64b7f2951d2 100644 --- a/src/test/incremental/dirty_clean.rs +++ b/src/test/incremental/dirty_clean.rs @@ -9,6 +9,7 @@ // except according to those terms. // revisions: rpass1 cfail2 +// compile-flags: -Z query-dep-graph #![allow(warnings)] #![feature(rustc_attrs)] diff --git a/src/test/incremental/foreign.rs b/src/test/incremental/foreign.rs new file mode 100644 index 00000000000..dbdebefaf31 --- /dev/null +++ b/src/test/incremental/foreign.rs @@ -0,0 +1,45 @@ +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// Test what happens we save incremental compilation state that makes +// use of foreign items. This used to ICE (#34991). + +// revisions: rpass1 + +#![feature(libc)] + +extern crate libc; + +use std::ffi::CString; + +mod mlibc { + use libc::{c_char, c_long, c_longlong}; + + extern { + pub fn atol(x: *const c_char) -> c_long; + pub fn atoll(x: *const c_char) -> c_longlong; + } +} + +fn atol(s: String) -> isize { + let c = CString::new(s).unwrap(); + unsafe { mlibc::atol(c.as_ptr()) as isize } +} + +fn atoll(s: String) -> i64 { + let c = CString::new(s).unwrap(); + unsafe { mlibc::atoll(c.as_ptr()) as i64 } +} + +pub fn main() { + assert_eq!(atol("1024".to_string()) * 10, atol("10240".to_string())); + assert_eq!((atoll("11111111111111111".to_string()) * 10), + atoll("111111111111111110".to_string())); +} diff --git a/src/test/incremental/hello_world.rs b/src/test/incremental/hello_world.rs index f98ae188bad..a06c25ac055 100644 --- a/src/test/incremental/hello_world.rs +++ b/src/test/incremental/hello_world.rs @@ -9,6 +9,7 @@ // except according to those terms. // revisions: rpass1 rpass2 +// compile-flags: -Z query-dep-graph #![allow(warnings)] #![feature(rustc_attrs)] diff --git a/src/test/incremental/inlined_hir_34991/main.rs b/src/test/incremental/inlined_hir_34991/main.rs new file mode 100644 index 00000000000..a150a8c4df7 --- /dev/null +++ b/src/test/incremental/inlined_hir_34991/main.rs @@ -0,0 +1,33 @@ +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// Regression test for #34991: an ICE occurred here because we inline +// some of the vector routines and give them a local def-id `X`. This +// got hashed after trans (`Hir(X)`). When we load back up, we get an +// error because the `X` is remapped to the original def-id (in +// libstd), and we can't hash a HIR node from std. + +// revisions:rpass1 rpass2 + +#![feature(rustc_attrs)] + +use std::vec::Vec; + +pub fn foo() -> Vec<i32> { + vec![1, 2, 3] +} + +pub fn bar() { + foo(); +} + +pub fn main() { + bar(); +} diff --git a/src/test/incremental/krate_reassign_34991/auxiliary/a.rs b/src/test/incremental/krate_reassign_34991/auxiliary/a.rs new file mode 100644 index 00000000000..865156095a4 --- /dev/null +++ b/src/test/incremental/krate_reassign_34991/auxiliary/a.rs @@ -0,0 +1,14 @@ +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![crate_type="rlib"] + +pub type X = u32; + diff --git a/src/test/incremental/krate_reassign_34991/main.rs b/src/test/incremental/krate_reassign_34991/main.rs new file mode 100644 index 00000000000..1c807059ddb --- /dev/null +++ b/src/test/incremental/krate_reassign_34991/main.rs @@ -0,0 +1,30 @@ +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// aux-build:a.rs +// revisions:rpass1 rpass2 + +#![feature(rustc_attrs)] + +#[cfg(rpass1)] +extern crate a; + +#[cfg(rpass1)] +pub fn use_X() -> u32 { + let x: a::X = 22; + x as u32 +} + +#[cfg(rpass2)] +pub fn use_X() -> u32 { + 22 +} + +pub fn main() { } diff --git a/src/test/incremental/rlib_cross_crate/b.rs b/src/test/incremental/rlib_cross_crate/b.rs index 55398370425..21b654bdf58 100644 --- a/src/test/incremental/rlib_cross_crate/b.rs +++ b/src/test/incremental/rlib_cross_crate/b.rs @@ -16,7 +16,7 @@ // aux-build:a.rs // revisions:rpass1 rpass2 rpass3 // no-prefer-dynamic - +// compile-flags: -Z query-dep-graph #![feature(rustc_attrs)] diff --git a/src/test/incremental/spike.rs b/src/test/incremental/spike.rs index 68af20d4191..257699cd3fc 100644 --- a/src/test/incremental/spike.rs +++ b/src/test/incremental/spike.rs @@ -35,14 +35,10 @@ mod x { X { x: 11, y: 11 } } - #[rustc_dirty(label="TypeckItemBody", cfg="rpass2")] - #[rustc_clean(label="ItemSignature", cfg="rpass2")] pub fn new() -> X { make() } - #[rustc_clean(label="TypeckItemBody", cfg="rpass2")] - #[rustc_clean(label="ItemSignature", cfg="rpass2")] pub fn sum(x: &X) -> u32 { x.x + x.y } @@ -51,7 +47,6 @@ mod x { mod y { use x; - #[rustc_clean(label="TypeckItemBody", cfg="rpass2")] pub fn assert_sum() -> bool { let x = x::new(); x::sum(&x) == 22 diff --git a/src/test/incremental/string_constant.rs b/src/test/incremental/string_constant.rs index 0aa728b94dd..f4062169256 100644 --- a/src/test/incremental/string_constant.rs +++ b/src/test/incremental/string_constant.rs @@ -9,6 +9,7 @@ // except according to those terms. // revisions: rpass1 rpass2 +// compile-flags: -Z query-dep-graph #![allow(warnings)] #![feature(rustc_attrs)] diff --git a/src/test/incremental/struct_add_field.rs b/src/test/incremental/struct_add_field.rs index cc8ef8aedd7..da1b32cd73d 100644 --- a/src/test/incremental/struct_add_field.rs +++ b/src/test/incremental/struct_add_field.rs @@ -12,6 +12,7 @@ // in between revisions (hashing should be stable). // revisions:rpass1 rpass2 +// compile-flags: -Z query-dep-graph #![feature(rustc_attrs)] diff --git a/src/test/incremental/struct_change_field_name.rs b/src/test/incremental/struct_change_field_name.rs index fe29ad66b5f..ba469c62002 100644 --- a/src/test/incremental/struct_change_field_name.rs +++ b/src/test/incremental/struct_change_field_name.rs @@ -12,6 +12,7 @@ // in between revisions (hashing should be stable). // revisions:rpass1 cfail2 +// compile-flags: -Z query-dep-graph #![feature(rustc_attrs)] diff --git a/src/test/incremental/struct_change_field_type.rs b/src/test/incremental/struct_change_field_type.rs index 1a50d515db6..65f3b1b4f36 100644 --- a/src/test/incremental/struct_change_field_type.rs +++ b/src/test/incremental/struct_change_field_type.rs @@ -12,6 +12,7 @@ // in between revisions (hashing should be stable). // revisions:rpass1 rpass2 +// compile-flags: -Z query-dep-graph #![feature(rustc_attrs)] diff --git a/src/test/incremental/struct_change_field_type_cross_crate/b.rs b/src/test/incremental/struct_change_field_type_cross_crate/b.rs index 7a4900d1d9a..95e15d0b7f9 100644 --- a/src/test/incremental/struct_change_field_type_cross_crate/b.rs +++ b/src/test/incremental/struct_change_field_type_cross_crate/b.rs @@ -10,6 +10,7 @@ // aux-build:a.rs // revisions:rpass1 rpass2 +// compile-flags: -Z query-dep-graph #![feature(rustc_attrs)] diff --git a/src/test/incremental/struct_change_nothing.rs b/src/test/incremental/struct_change_nothing.rs index 8095e1ecd84..2bc636153f7 100644 --- a/src/test/incremental/struct_change_nothing.rs +++ b/src/test/incremental/struct_change_nothing.rs @@ -12,6 +12,7 @@ // in between revisions (hashing should be stable). // revisions:rpass1 rpass2 +// compile-flags: -Z query-dep-graph #![feature(rustc_attrs)] diff --git a/src/test/incremental/struct_remove_field.rs b/src/test/incremental/struct_remove_field.rs index ae6399463b8..a7ed79d1a5a 100644 --- a/src/test/incremental/struct_remove_field.rs +++ b/src/test/incremental/struct_remove_field.rs @@ -12,6 +12,7 @@ // in between revisions (hashing should be stable). // revisions:rpass1 rpass2 +// compile-flags: -Z query-dep-graph #![feature(rustc_attrs)] diff --git a/src/test/incremental/type_alias_cross_crate/b.rs b/src/test/incremental/type_alias_cross_crate/b.rs index c5421fcbf5c..09d4db33198 100644 --- a/src/test/incremental/type_alias_cross_crate/b.rs +++ b/src/test/incremental/type_alias_cross_crate/b.rs @@ -10,6 +10,7 @@ // aux-build:a.rs // revisions:rpass1 rpass2 rpass3 +// compile-flags: -Z query-dep-graph #![feature(rustc_attrs)] |
