diff options
| author | bors <bors@rust-lang.org> | 2017-10-16 16:02:43 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-10-16 16:02:43 +0000 |
| commit | ba4e8d7db311b8a43a446cc20c30e4680b94c5d3 (patch) | |
| tree | dc28540b4527d8c761a70f091274a73399c246ae /src/test | |
| parent | a96ff3b591d3bcc0ae906cd28053046e2efd7bde (diff) | |
| parent | 5d415e8d080792615b424f3f0a931058519879b5 (diff) | |
| download | rust-ba4e8d7db311b8a43a446cc20c30e4680b94c5d3.tar.gz rust-ba4e8d7db311b8a43a446cc20c30e4680b94c5d3.zip | |
Auto merge of #45202 - alexcrichton:fix-inline-always, r=michaelwoerister
rustc: Handle #[inline(always)] at -O0 This commit updates the handling of `#[inline(always)]` functions at -O0 to ensure that it's always inlined regardless of the number of codegen units used. Closes #45201
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/codegen-units/partitioning/local-inlining-but-not-all.rs | 2 | ||||
| -rw-r--r-- | src/test/run-make/inline-always-many-cgu/Makefile | 8 | ||||
| -rw-r--r-- | src/test/run-make/inline-always-many-cgu/foo.rs | 25 |
3 files changed, 34 insertions, 1 deletions
diff --git a/src/test/codegen-units/partitioning/local-inlining-but-not-all.rs b/src/test/codegen-units/partitioning/local-inlining-but-not-all.rs index ccc8f03a40f..84464a627be 100644 --- a/src/test/codegen-units/partitioning/local-inlining-but-not-all.rs +++ b/src/test/codegen-units/partitioning/local-inlining-but-not-all.rs @@ -20,7 +20,7 @@ mod inline { //~ TRANS_ITEM fn local_inlining_but_not_all::inline[0]::inlined_function[0] @@ local_inlining_but_not_all-inline[External] - #[inline(always)] + #[inline] pub fn inlined_function() { diff --git a/src/test/run-make/inline-always-many-cgu/Makefile b/src/test/run-make/inline-always-many-cgu/Makefile new file mode 100644 index 00000000000..edf88a6327c --- /dev/null +++ b/src/test/run-make/inline-always-many-cgu/Makefile @@ -0,0 +1,8 @@ +-include ../tools.mk + +all: + $(RUSTC) foo.rs --emit llvm-ir -C codegen-units=2 + if grep -w call $(TMPDIR)/*.ll; then \ + echo "found call instruction when one wasn't expected"; \ + exit 1; \ + fi diff --git a/src/test/run-make/inline-always-many-cgu/foo.rs b/src/test/run-make/inline-always-many-cgu/foo.rs new file mode 100644 index 00000000000..539dcdfa9b3 --- /dev/null +++ b/src/test/run-make/inline-always-many-cgu/foo.rs @@ -0,0 +1,25 @@ +// Copyright 2017 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"] + +pub mod a { + #[inline(always)] + pub fn foo() { + } + + pub fn bar() { + } +} + +#[no_mangle] +pub fn bar() { + a::foo(); +} |
