862911df9a
The purpose of the translation item collector is to find all monomorphic instances of functions, methods and statics that need to be translated into LLVM IR in order to compile the current crate. So far these instances have been discovered lazily during the trans path. For incremental compilation we want to know the set of these instances in advance, and that is what the trans::collect module provides. In the future, incremental and regular translation will be driven by the collector implemented here.
34 lines
842 B
Rust
34 lines
842 B
Rust
// Copyright 2012-2015 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 = "lib"]
|
|
|
|
#[inline]
|
|
pub fn inlined_fn(x: i32, y: i32) -> i32 {
|
|
|
|
let closure = |a, b| { a + b };
|
|
|
|
closure(x, y)
|
|
}
|
|
|
|
pub fn inlined_fn_generic<T>(x: i32, y: i32, z: T) -> (i32, T) {
|
|
|
|
let closure = |a, b| { a + b };
|
|
|
|
(closure(x, y), z)
|
|
}
|
|
|
|
pub fn non_inlined_fn(x: i32, y: i32) -> i32 {
|
|
|
|
let closure = |a, b| { a + b };
|
|
|
|
closure(x, y)
|
|
}
|