
#11677: Dramatic de-optimization with "-O", "-O1", "-O2" options -------------------------------------+------------------------------------- Reporter: malphunction | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.3 Resolution: | Keywords: optimization | deoptimization Operating System: Linux | Architecture: x86_64 Type of failure: Runtime | (amd64) performance bug | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by bgamari): For the record, I concluded this by comparing the output of `-ddump-simpl -dsuppress-all` from the testcases compiled with `-O1` with and without the `evaluate $ deepseq`. The delta in the Core produced in these two cases is extremely small, {{{#!diff @@ -297,6 +302,16 @@ case $wa @ (String, String) ww1 (lvl3 `cast` ...) ipv4 of _ { (# ipv6, ipv7 #) -> case $sfromList @ [Char] ipv7 of dict' { __DEFAULT -> + case seq# + @ (Map String String) + @ RealWorld + (case $fNFDataMap_$crnf + @ [Char] @ [Char] ($sforce3 `cast` ...) ($sforce3 `cast` ...) dict' + of _ { () -> + dict' + }) + ipv6 + of _ { (# ipv8, ipv9 #) -> case readEither6 @ Int (run @ Int lvl2 ipv5) of _ { [] -> case error @@ -306,8 +321,8 @@ readEither4 of wild3 { }; - : x1 ds5 -> - case ds5 of _ { + : x1 ds6 -> + case ds6 of _ { [] -> case x1 of _ { I# ww3 -> case $wa @@ -316,25 +331,25 @@ ((\ (eta :: State# RealWorld) -> case wantReadableHandle_1 @ String hGetLine4 stdin (hGetLine2 `cast` ...) eta - of _ { (# ipv8, ipv9 #) -> - (# ipv8, $slookup1 @ [Char] ipv9 dict' #) + of _ { (# ipv10, ipv11 #) -> + (# ipv10, $slookup1 @ [Char] ipv11 ipv9 #) }) `cast` ...) - ipv6 - of _ { (# ipv8, ipv9 #) -> + ipv8 + of _ { (# ipv10, ipv11 #) -> hPutStr2 stdout - (case $wlenAcc @ [Char] (catMaybes1 @ String ipv9) 0# + (case $wlenAcc @ [Char] (catMaybes1 @ String ipv11) 0# of ww4 { __DEFAULT -> case $wshowSignedInt 0# ww4 ([] @ Char) of _ { (# ww6, ww7 #) -> : @ Char ww6 ww7 } }) True - ipv8 + ipv10 } }; - : ipv8 ipv9 -> + : ipv10 ipv11 -> case error @ 'PtrRepLifted @ Int }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11677#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler