Commit 8617e2e3 authored by Ian Rogers's avatar Ian Rogers Committed by Arnaldo Carvalho de Melo
Browse files

perf tests: Don't tail call optimize in unwind test



The tail call optimization can unexpectedly make the stack smaller and
cause the test to fail.

Signed-off-by: default avatarIan Rogers <irogers@google.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: clang-built-linux@googlegroups.com
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Quentin Monnet <quentin@isovalent.com>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lore.kernel.org/lkml/20200530082015.39162-3-irogers@google.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 21f2b7c1
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -94,7 +94,7 @@ static int unwind_entry(struct unwind_entry *entry, void *arg)
	return strcmp((const char *) symbol, funcs[idx]);
}

noinline int test_dwarf_unwind__thread(struct thread *thread)
__no_tail_call noinline int test_dwarf_unwind__thread(struct thread *thread)
{
	struct perf_sample sample;
	unsigned long cnt = 0;
@@ -125,7 +125,7 @@ noinline int test_dwarf_unwind__thread(struct thread *thread)

static int global_unwind_retval = -INT_MAX;

noinline int test_dwarf_unwind__compare(void *p1, void *p2)
__no_tail_call noinline int test_dwarf_unwind__compare(void *p1, void *p2)
{
	/* Any possible value should be 'thread' */
	struct thread *thread = *(struct thread **)p1;
@@ -144,7 +144,7 @@ noinline int test_dwarf_unwind__compare(void *p1, void *p2)
	return p1 - p2;
}

noinline int test_dwarf_unwind__krava_3(struct thread *thread)
__no_tail_call noinline int test_dwarf_unwind__krava_3(struct thread *thread)
{
	struct thread *array[2] = {thread, thread};
	void *fp = &bsearch;
@@ -163,12 +163,12 @@ noinline int test_dwarf_unwind__krava_3(struct thread *thread)
	return global_unwind_retval;
}

noinline int test_dwarf_unwind__krava_2(struct thread *thread)
__no_tail_call noinline int test_dwarf_unwind__krava_2(struct thread *thread)
{
	return test_dwarf_unwind__krava_3(thread);
}

noinline int test_dwarf_unwind__krava_1(struct thread *thread)
__no_tail_call noinline int test_dwarf_unwind__krava_1(struct thread *thread)
{
	return test_dwarf_unwind__krava_2(thread);
}