Always inlining PrintCurrentStackSlow of tsan library to fix tail-call issue
authorChuang-Yu Cheng <cycheng@multicorewareinc.com>
Wed, 20 Apr 2016 10:28:41 +0000 (10:28 +0000)
committerChuang-Yu Cheng <cycheng@multicorewareinc.com>
Wed, 20 Apr 2016 10:28:41 +0000 (10:28 +0000)
commite480455fd6bd3c69177613a146cc88c8117ce579
treef7e1802dbeb89cf4b4e972c8d4f37f629629963d
parent71630b9ea7ce151305e89f305dc02613bc5b0023
Always inlining PrintCurrentStackSlow of tsan library to fix tail-call issue

The real problem is that sanitizer_print_stack_trace obtains current PC and
expects the PC to be in the stack trace after function calls. We don't
prevent tail calls in sanitizer runtimes, so this assumption does not
necessary hold.

We add "always inline" attribute on PrintCurrentStackSlow to address this
issue, however this solution is not reliable enough, but unfortunately, we
don't see any simple, reliable solution.

Reviewers: samsonov hfinkel kbarton tjablin dvyukov kcc

http://reviews.llvm.org/D19148

Thanks Hal, dvyukov, and kcc for invaluable discussion, I have even borrowed
part of dvyukov's summary as my commit message!

llvm-svn: 266869
compiler-rt/lib/tsan/rtl/tsan_rtl_report.cc