
#13360: Add a flag to enable inferring HasCallStack constraints -------------------------------------+------------------------------------- Reporter: gridaphobe | Owner: (none) Type: feature request | Status: new Priority: normal | Milestone: 8.4.1 Component: Compiler | Version: 8.0.1 Resolution: | Keywords: 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 saurabhnanda): **Question** -- if `error` is not there in the source code, does GHC optimise away `HasCallStack` completely? I'm seeing the same perf numbers for the two functions given below (the call to `throw` has been commented out): {{{ factorialCS :: (HasCallStack) => Integer -> Integer factorialCS 1 = 1 -- factorialCS 3 = throw $ CustomException "Error from CS version" callStack factorialCS n = n * factorialCS (n - 1) factorial :: Integer -> Integer factorial 1 = 1 -- factorial 3 = throw $ CustomException "Error from non-CS version" emptyCallStack factorial n = n * factorial (n - 1) }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13360#comment:21 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler