
#15929: Explore whether adding XRay attributes to LLVM IR is worthwhile -------------------------------------+------------------------------------- Reporter: mpickering | Owner: (none) Type: task | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.6.2 Resolution: | Keywords: newcomer Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by mpickering): I investigated some more and get the basic support working. None of the call stack stuff is useful for GHC as every call is a tail call so the call hierarchy is completely flat. Here is the branch: https://github.com/mpickering/ghc/tree/llvm-xray See this thread on llvm-devs for some of the problems and suggestions of the LLVM devs: http://lists.llvm.org/pipermail/llvm- dev/2018-December/128184.html Here's an example comment I was using to compile which correctly instrumented a binary. {{{ _build/stage1/bin/ghc -fllvm -ddump-llvm llvm.hs -opta="-v" -pgma=clang -pgmc=clang -pgml=clang -optl="-fxray-instrument" -optl="-fxray- instruction-threshold=1" -optlo="-O0" -O2 -g3 -fforce-recomp nofib/real/fulsom/Main.hs -inofib/real/fulsom/ }}} Problems 1. You have to pass `-O0` to `opt` as otherwise the LLVM verifier complains about our debugging information. See the email list for more information about this. 2. It didn't seem like every call was actually counted in some simple tests but I didn't look too closely. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15929#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler