[llvm-exegesis] Set stack pointer register after starting perf counter (#72489)
commit9eb80ab3787e1851be8c686651688e870b93506b
authorAiden Grossman <agrossman154@yahoo.com>
Wed, 29 Nov 2023 09:40:42 +0000 (29 01:40 -0800)
committerGitHub <noreply@github.com>
Wed, 29 Nov 2023 09:40:42 +0000 (29 01:40 -0800)
tree7ed74eb67d31e7d345eb7fd8569440f0097722f2
parente2a37e5130709e3e3df52fac97ed3f5356bc0a21
[llvm-exegesis] Set stack pointer register after starting perf counter (#72489)

Before this patch, in subprocess mode, llvm-exegesis setup the stack
pointer register with the rest of the registers when it was requested by
the user. This would cause a segfault when the instructions to start the
perf counter ran as they use the stack to preserve the three registers
needed to make the syscall. This patch moves the setup of the stack
register to after the configuration of the perf counter to fix this
issue so that we have a valid stack pointer for all the preceeding
operations.

Regression test added.

This fixes #72193.
llvm/test/tools/llvm-exegesis/X86/latency/subprocess-rsp.s [new file with mode: 0644]
llvm/tools/llvm-exegesis/lib/Assembler.cpp