test: avoid infinite loop in out-of-stack.rs

This fixes #13238. It avoids an infinite loop when compiling
the tests with `-g`. Without this change, the debuginfo on
`black_box` prevents the method from being inlined, which
allows llvm to convert `silent_recurse` into a tail-call. This
then loops forever instead of consuming all the stack like it
is supposed to. This patch forces inlining `black_box`, which
triggers the right error.
This commit is contained in:
Erick Tryzelaar 2014-04-01 22:07:37 -07:00
parent 3961957bd6
commit 1b6997d069
1 changed files with 3 additions and 0 deletions

View File

@ -17,6 +17,9 @@ use std::os;
use std::str;
// lifted from the test module
// Inlining to avoid llvm turning the recursive functions into tail calls,
// which doesn't consume stack.
#[inline(always)]
pub fn black_box<T>(dummy: T) { unsafe { asm!("" : : "r"(&dummy)) } }
fn silent_recurse() {