Andreas Klebinger pushed to branch wip/andreask/occ_anal_tuning at Glasgow Haskell Compiler / GHC
Commits:
-
1275d360
by Matthew Pickering at 2025-10-03T06:05:56-04:00
-
c06b534b
by Matthew Pickering at 2025-10-03T06:06:40-04:00
-
41bdb16f
by Andreas Klebinger at 2025-10-06T18:04:34-04:00
-
1da0c700
by Andreas Klebinger at 2025-10-06T18:05:14-04:00
-
ec22d744
by Andreas Klebinger at 2025-10-07T08:03:44+00:00
26 changed files:
- compiler/GHC.hs
- compiler/GHC/Core/Opt/OccurAnal.hs
- compiler/GHC/Data/Word64Map/Internal.hs
- compiler/GHC/Driver/Backend.hs
- compiler/GHC/Driver/Backend/Internal.hs
- compiler/GHC/Driver/Downsweep.hs
- compiler/GHC/Driver/Pipeline.hs
- compiler/GHC/Driver/Session.hs
- compiler/GHC/Types/Unique/FM.hs
- compiler/GHC/Types/Var/Env.hs
- docs/users_guide/extending_ghc.rst
- ghc/Main.hs
- testsuite/driver/testglobals.py
- testsuite/driver/testlib.py
- testsuite/tests/concurrent/prog001/all.T
- testsuite/tests/driver/T5313.hs
- testsuite/tests/ghc-api/T10052/T10052.hs
- testsuite/tests/ghc-api/T8639_api.hs
- testsuite/tests/ghc-api/apirecomp001/myghc.hs
- testsuite/tests/ghci-wasm/T26431.hs
- testsuite/tests/ghci/linking/dyn/T3372.hs
- testsuite/tests/ghci/should_run/PackedDataCon/packeddatacon.T
- testsuite/tests/ghci/should_run/UnboxedTuples/unboxedtuples.T
- testsuite/tests/ghci/should_run/UnliftedDataTypeInterp/unlifteddatatypeinterp.T
- + testsuite/tests/perf/compiler/T26425.hs
- testsuite/tests/perf/compiler/all.T
Changes:
| ... | ... | @@ -30,7 +30,7 @@ module GHC ( |
| 30 | 30 | |
| 31 | 31 | -- * Flags and settings
|
| 32 | 32 | DynFlags(..), GeneralFlag(..), Severity(..), Backend, gopt,
|
| 33 | - ncgBackend, llvmBackend, viaCBackend, interpreterBackend, noBackend,
|
|
| 33 | + ncgBackend, llvmBackend, viaCBackend, bytecodeBackend, interpreterBackend, noBackend,
|
|
| 34 | 34 | GhcMode(..), GhcLink(..),
|
| 35 | 35 | parseDynamicFlags, parseTargetFiles,
|
| 36 | 36 | getSessionDynFlags,
|
| ... | ... | @@ -10,6 +10,10 @@ |
| 10 | 10 | -- bad for performance, so I increased the limit to allow it to unbox
|
| 11 | 11 | -- consistently.
|
| 12 | 12 | |
| 13 | +-- {-# OPTIONS_GHC -ddump-simpl -ddump-stg -dumpdir dumps -ddump-to-file #-}
|
|
| 14 | +-- {-# OPTIONS_GHC -fdistinct-constructor-tables -finfo-table-map #-}
|
|
| 15 | +-- {-# OPTIONS_GHC -ticky -ticky-allocd -ticky-LNE #-}
|
|
| 16 | + |
|
| 13 | 17 | {-
|
| 14 | 18 | (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
|
| 15 | 19 | |
| ... | ... | @@ -984,7 +988,7 @@ occAnalBind !env lvl ire (NonRec bndr rhs) thing_inside combine |
| 984 | 988 | = -- Analyse the RHS and /then/ the body
|
| 985 | 989 | let -- Analyse the rhs first, generating rhs_uds
|
| 986 | 990 | !(rhs_uds_s, bndr', rhs') = occAnalNonRecRhs env lvl ire mb_join bndr rhs
|
| 987 | - rhs_uds = foldr1 orUDs rhs_uds_s -- NB: orUDs. See (W4) of
|
|
| 991 | + rhs_uds = foldl1' orUDs rhs_uds_s -- NB: orUDs. See (W4) of
|
|
| 988 | 992 | -- Note [Occurrence analysis for join points]
|
| 989 | 993 | |
| 990 | 994 | -- Now analyse the body, adding the join point
|
| ... | ... | @@ -3650,8 +3654,10 @@ data WithTailUsageDetails a = WTUD !TailUsageDetails !a |
| 3650 | 3654 | -------------------
|
| 3651 | 3655 | -- UsageDetails API
|
| 3652 | 3656 | |
| 3653 | -andUDs, orUDs
|
|
| 3654 | - :: UsageDetails -> UsageDetails -> UsageDetails
|
|
| 3657 | +-- {-# NOINLINE andUDs #-}
|
|
| 3658 | +-- {-# NOINLINE orUDs #-}
|
|
| 3659 | +andUDs:: UsageDetails -> UsageDetails -> UsageDetails
|
|
| 3660 | +orUDs :: UsageDetails -> UsageDetails -> UsageDetails
|
|
| 3655 | 3661 | andUDs = combineUsageDetailsWith andLocalOcc
|
| 3656 | 3662 | orUDs = combineUsageDetailsWith orLocalOcc
|
| 3657 | 3663 | |
| ... | ... | @@ -3760,16 +3766,17 @@ restrictFreeVars bndrs fvs = restrictUniqSetToUFM bndrs fvs |
| 3760 | 3766 | combineUsageDetailsWith :: (LocalOcc -> LocalOcc -> LocalOcc)
|
| 3761 | 3767 | -> UsageDetails -> UsageDetails -> UsageDetails
|
| 3762 | 3768 | {-# INLINE combineUsageDetailsWith #-}
|
| 3769 | +{-# SCC combineUsageDetailsWith #-}
|
|
| 3763 | 3770 | combineUsageDetailsWith plus_occ_info
|
| 3764 | 3771 | uds1@(UD { ud_env = env1, ud_z_many = z_many1, ud_z_in_lam = z_in_lam1, ud_z_tail = z_tail1 })
|
| 3765 | 3772 | uds2@(UD { ud_env = env2, ud_z_many = z_many2, ud_z_in_lam = z_in_lam2, ud_z_tail = z_tail2 })
|
| 3766 | 3773 | | isEmptyVarEnv env1 = uds2
|
| 3767 | 3774 | | isEmptyVarEnv env2 = uds1
|
| 3768 | 3775 | | otherwise
|
| 3769 | - = UD { ud_env = plusVarEnv_C plus_occ_info env1 env2
|
|
| 3770 | - , ud_z_many = plusVarEnv z_many1 z_many2
|
|
| 3771 | - , ud_z_in_lam = plusVarEnv z_in_lam1 z_in_lam2
|
|
| 3772 | - , ud_z_tail = plusVarEnv z_tail1 z_tail2 }
|
|
| 3776 | + = UD { ud_env = {-# SCC ud_env #-} strictPlusVarEnv_C plus_occ_info env1 env2
|
|
| 3777 | + , ud_z_many = {-# SCC ud_z_many #-} strictPlusVarEnv z_many1 z_many2
|
|
| 3778 | + , ud_z_in_lam = {-# SCC ud_z_in_lam #-} strictPlusVarEnv z_in_lam1 z_in_lam2
|
|
| 3779 | + , ud_z_tail = {-# SCC ud_z_tail #-} strictPlusVarEnv z_tail1 z_tail2 }
|
|
| 3773 | 3780 | |
| 3774 | 3781 | lookupLetOccInfo :: UsageDetails -> Id -> OccInfo
|
| 3775 | 3782 | -- Don't use locally-generated occ_info for exported (visible-elsewhere)
|
| ... | ... | @@ -3,6 +3,7 @@ |
| 3 | 3 | |
| 4 | 4 | {-# OPTIONS_HADDOCK not-home #-}
|
| 5 | 5 | {-# OPTIONS_GHC -fno-warn-incomplete-uni-patterns #-}
|
| 6 | +{-# OPTIONS_GHC -ddump-simpl -ddump-stg-final -ddump-to-file -dumpdir dumps #-}
|
|
| 6 | 7 | |
| 7 | 8 | |
| 8 | 9 | -----------------------------------------------------------------------------
|
| ... | ... | @@ -47,6 +47,7 @@ module GHC.Driver.Backend |
| 47 | 47 | , llvmBackend
|
| 48 | 48 | , jsBackend
|
| 49 | 49 | , viaCBackend
|
| 50 | + , bytecodeBackend
|
|
| 50 | 51 | , interpreterBackend
|
| 51 | 52 | , noBackend
|
| 52 | 53 | , allBackends
|
| ... | ... | @@ -252,7 +253,7 @@ instance Show Backend where |
| 252 | 253 | show = backendDescription
|
| 253 | 254 | |
| 254 | 255 | |
| 255 | -ncgBackend, llvmBackend, viaCBackend, interpreterBackend, jsBackend, noBackend
|
|
| 256 | +ncgBackend, llvmBackend, viaCBackend, bytecodeBackend, interpreterBackend, jsBackend, noBackend
|
|
| 256 | 257 | :: Backend
|
| 257 | 258 | |
| 258 | 259 | -- | The native code generator.
|
| ... | ... | @@ -310,7 +311,11 @@ viaCBackend = Named ViaC |
| 310 | 311 | -- (foreign primops).
|
| 311 | 312 | --
|
| 312 | 313 | -- See "GHC.StgToByteCode"
|
| 313 | -interpreterBackend = Named Interpreter
|
|
| 314 | +bytecodeBackend = Named Bytecode
|
|
| 315 | + |
|
| 316 | +{-# DEPRECATED interpreterBackend "Renamed to bytecodeBackend" #-}
|
|
| 317 | +interpreterBackend = bytecodeBackend
|
|
| 318 | + |
|
| 314 | 319 | |
| 315 | 320 | -- | A dummy back end that generates no code.
|
| 316 | 321 | --
|
| ... | ... | @@ -419,7 +424,7 @@ backendDescription (Named NCG) = "native code generator" |
| 419 | 424 | backendDescription (Named LLVM) = "LLVM"
|
| 420 | 425 | backendDescription (Named ViaC) = "compiling via C"
|
| 421 | 426 | backendDescription (Named JavaScript) = "compiling to JavaScript"
|
| 422 | -backendDescription (Named Interpreter) = "byte-code interpreter"
|
|
| 427 | +backendDescription (Named Bytecode) = "byte-code interpreter"
|
|
| 423 | 428 | backendDescription (Named NoBackend) = "no code generated"
|
| 424 | 429 | |
| 425 | 430 | -- | This flag tells the compiler driver whether the back
|
| ... | ... | @@ -431,7 +436,7 @@ backendWritesFiles (Named NCG) = True |
| 431 | 436 | backendWritesFiles (Named LLVM) = True
|
| 432 | 437 | backendWritesFiles (Named ViaC) = True
|
| 433 | 438 | backendWritesFiles (Named JavaScript) = True
|
| 434 | -backendWritesFiles (Named Interpreter) = False
|
|
| 439 | +backendWritesFiles (Named Bytecode) = False
|
|
| 435 | 440 | backendWritesFiles (Named NoBackend) = False
|
| 436 | 441 | |
| 437 | 442 | -- | When the back end does write files, this value tells
|
| ... | ... | @@ -442,7 +447,7 @@ backendPipelineOutput (Named NCG) = Persistent |
| 442 | 447 | backendPipelineOutput (Named LLVM) = Persistent
|
| 443 | 448 | backendPipelineOutput (Named ViaC) = Persistent
|
| 444 | 449 | backendPipelineOutput (Named JavaScript) = Persistent
|
| 445 | -backendPipelineOutput (Named Interpreter) = NoOutputFile
|
|
| 450 | +backendPipelineOutput (Named Bytecode) = NoOutputFile
|
|
| 446 | 451 | backendPipelineOutput (Named NoBackend) = NoOutputFile
|
| 447 | 452 | |
| 448 | 453 | -- | This flag tells the driver whether the back end can
|
| ... | ... | @@ -453,7 +458,7 @@ backendCanReuseLoadedCode (Named NCG) = False |
| 453 | 458 | backendCanReuseLoadedCode (Named LLVM) = False
|
| 454 | 459 | backendCanReuseLoadedCode (Named ViaC) = False
|
| 455 | 460 | backendCanReuseLoadedCode (Named JavaScript) = False
|
| 456 | -backendCanReuseLoadedCode (Named Interpreter) = True
|
|
| 461 | +backendCanReuseLoadedCode (Named Bytecode) = True
|
|
| 457 | 462 | backendCanReuseLoadedCode (Named NoBackend) = False
|
| 458 | 463 | |
| 459 | 464 | -- | It is is true of every back end except @-fno-code@
|
| ... | ... | @@ -478,7 +483,7 @@ backendGeneratesCode (Named NCG) = True |
| 478 | 483 | backendGeneratesCode (Named LLVM) = True
|
| 479 | 484 | backendGeneratesCode (Named ViaC) = True
|
| 480 | 485 | backendGeneratesCode (Named JavaScript) = True
|
| 481 | -backendGeneratesCode (Named Interpreter) = True
|
|
| 486 | +backendGeneratesCode (Named Bytecode) = True
|
|
| 482 | 487 | backendGeneratesCode (Named NoBackend) = False
|
| 483 | 488 | |
| 484 | 489 | backendGeneratesCodeForHsBoot :: Backend -> Bool
|
| ... | ... | @@ -486,7 +491,7 @@ backendGeneratesCodeForHsBoot (Named NCG) = True |
| 486 | 491 | backendGeneratesCodeForHsBoot (Named LLVM) = True
|
| 487 | 492 | backendGeneratesCodeForHsBoot (Named ViaC) = True
|
| 488 | 493 | backendGeneratesCodeForHsBoot (Named JavaScript) = True
|
| 489 | -backendGeneratesCodeForHsBoot (Named Interpreter) = False
|
|
| 494 | +backendGeneratesCodeForHsBoot (Named Bytecode) = False
|
|
| 490 | 495 | backendGeneratesCodeForHsBoot (Named NoBackend) = False
|
| 491 | 496 | |
| 492 | 497 | -- | When set, this flag turns on interface writing for
|
| ... | ... | @@ -498,7 +503,7 @@ backendSupportsInterfaceWriting (Named NCG) = True |
| 498 | 503 | backendSupportsInterfaceWriting (Named LLVM) = True
|
| 499 | 504 | backendSupportsInterfaceWriting (Named ViaC) = True
|
| 500 | 505 | backendSupportsInterfaceWriting (Named JavaScript) = True
|
| 501 | -backendSupportsInterfaceWriting (Named Interpreter) = True
|
|
| 506 | +backendSupportsInterfaceWriting (Named Bytecode) = True
|
|
| 502 | 507 | backendSupportsInterfaceWriting (Named NoBackend) = False
|
| 503 | 508 | |
| 504 | 509 | -- | When preparing code for this back end, the type
|
| ... | ... | @@ -510,7 +515,7 @@ backendRespectsSpecialise (Named NCG) = True |
| 510 | 515 | backendRespectsSpecialise (Named LLVM) = True
|
| 511 | 516 | backendRespectsSpecialise (Named ViaC) = True
|
| 512 | 517 | backendRespectsSpecialise (Named JavaScript) = True
|
| 513 | -backendRespectsSpecialise (Named Interpreter) = False
|
|
| 518 | +backendRespectsSpecialise (Named Bytecode) = False
|
|
| 514 | 519 | backendRespectsSpecialise (Named NoBackend) = False
|
| 515 | 520 | |
| 516 | 521 | -- | This back end wants the `mi_top_env` field of a
|
| ... | ... | @@ -522,7 +527,7 @@ backendWantsGlobalBindings (Named LLVM) = False |
| 522 | 527 | backendWantsGlobalBindings (Named ViaC) = False
|
| 523 | 528 | backendWantsGlobalBindings (Named JavaScript) = False
|
| 524 | 529 | backendWantsGlobalBindings (Named NoBackend) = False
|
| 525 | -backendWantsGlobalBindings (Named Interpreter) = True
|
|
| 530 | +backendWantsGlobalBindings (Named Bytecode) = True
|
|
| 526 | 531 | |
| 527 | 532 | -- | The back end targets a technology that implements
|
| 528 | 533 | -- `switch` natively. (For example, LLVM or C.) Therefore
|
| ... | ... | @@ -534,7 +539,7 @@ backendHasNativeSwitch (Named NCG) = False |
| 534 | 539 | backendHasNativeSwitch (Named LLVM) = True
|
| 535 | 540 | backendHasNativeSwitch (Named ViaC) = True
|
| 536 | 541 | backendHasNativeSwitch (Named JavaScript) = True
|
| 537 | -backendHasNativeSwitch (Named Interpreter) = False
|
|
| 542 | +backendHasNativeSwitch (Named Bytecode) = False
|
|
| 538 | 543 | backendHasNativeSwitch (Named NoBackend) = False
|
| 539 | 544 | |
| 540 | 545 | -- | As noted in the documentation for
|
| ... | ... | @@ -548,7 +553,7 @@ backendPrimitiveImplementation (Named NCG) = NcgPrimitives |
| 548 | 553 | backendPrimitiveImplementation (Named LLVM) = LlvmPrimitives
|
| 549 | 554 | backendPrimitiveImplementation (Named JavaScript) = JSPrimitives
|
| 550 | 555 | backendPrimitiveImplementation (Named ViaC) = GenericPrimitives
|
| 551 | -backendPrimitiveImplementation (Named Interpreter) = GenericPrimitives
|
|
| 556 | +backendPrimitiveImplementation (Named Bytecode) = GenericPrimitives
|
|
| 552 | 557 | backendPrimitiveImplementation (Named NoBackend) = GenericPrimitives
|
| 553 | 558 | |
| 554 | 559 | -- | When this value is `IsValid`, the back end is
|
| ... | ... | @@ -560,7 +565,7 @@ backendSimdValidity (Named NCG) = IsValid |
| 560 | 565 | backendSimdValidity (Named LLVM) = IsValid
|
| 561 | 566 | backendSimdValidity (Named ViaC) = NotValid $ unlines ["SIMD vector instructions require using the NCG or the LLVM backend."]
|
| 562 | 567 | backendSimdValidity (Named JavaScript) = NotValid $ unlines ["SIMD vector instructions require using the NCG or the LLVM backend."]
|
| 563 | -backendSimdValidity (Named Interpreter) = NotValid $ unlines ["SIMD vector instructions require using the NCG or the LLVM backend."]
|
|
| 568 | +backendSimdValidity (Named Bytecode) = NotValid $ unlines ["SIMD vector instructions require using the NCG or the LLVM backend."]
|
|
| 564 | 569 | backendSimdValidity (Named NoBackend) = NotValid $ unlines ["SIMD vector instructions require using the NCG or the LLVM backend."]
|
| 565 | 570 | |
| 566 | 571 | -- | This flag says whether the back end supports large
|
| ... | ... | @@ -571,7 +576,7 @@ backendSupportsEmbeddedBlobs (Named NCG) = True |
| 571 | 576 | backendSupportsEmbeddedBlobs (Named LLVM) = False
|
| 572 | 577 | backendSupportsEmbeddedBlobs (Named ViaC) = False
|
| 573 | 578 | backendSupportsEmbeddedBlobs (Named JavaScript) = False
|
| 574 | -backendSupportsEmbeddedBlobs (Named Interpreter) = False
|
|
| 579 | +backendSupportsEmbeddedBlobs (Named Bytecode) = False
|
|
| 575 | 580 | backendSupportsEmbeddedBlobs (Named NoBackend) = False
|
| 576 | 581 | |
| 577 | 582 | -- | This flag tells the compiler driver that the back end
|
| ... | ... | @@ -586,7 +591,7 @@ backendNeedsPlatformNcgSupport (Named NCG) = True |
| 586 | 591 | backendNeedsPlatformNcgSupport (Named LLVM) = False
|
| 587 | 592 | backendNeedsPlatformNcgSupport (Named ViaC) = False
|
| 588 | 593 | backendNeedsPlatformNcgSupport (Named JavaScript) = False
|
| 589 | -backendNeedsPlatformNcgSupport (Named Interpreter) = False
|
|
| 594 | +backendNeedsPlatformNcgSupport (Named Bytecode) = False
|
|
| 590 | 595 | backendNeedsPlatformNcgSupport (Named NoBackend) = False
|
| 591 | 596 | |
| 592 | 597 | -- | This flag is set if the back end can generate code
|
| ... | ... | @@ -598,7 +603,7 @@ backendSupportsUnsplitProcPoints (Named NCG) = True |
| 598 | 603 | backendSupportsUnsplitProcPoints (Named LLVM) = False
|
| 599 | 604 | backendSupportsUnsplitProcPoints (Named ViaC) = False
|
| 600 | 605 | backendSupportsUnsplitProcPoints (Named JavaScript) = False
|
| 601 | -backendSupportsUnsplitProcPoints (Named Interpreter) = False
|
|
| 606 | +backendSupportsUnsplitProcPoints (Named Bytecode) = False
|
|
| 602 | 607 | backendSupportsUnsplitProcPoints (Named NoBackend) = False
|
| 603 | 608 | |
| 604 | 609 | -- | This flag guides the driver in resolving issues about
|
| ... | ... | @@ -616,7 +621,7 @@ backendSwappableWithViaC (Named NCG) = True |
| 616 | 621 | backendSwappableWithViaC (Named LLVM) = True
|
| 617 | 622 | backendSwappableWithViaC (Named ViaC) = False
|
| 618 | 623 | backendSwappableWithViaC (Named JavaScript) = False
|
| 619 | -backendSwappableWithViaC (Named Interpreter) = False
|
|
| 624 | +backendSwappableWithViaC (Named Bytecode) = False
|
|
| 620 | 625 | backendSwappableWithViaC (Named NoBackend) = False
|
| 621 | 626 | |
| 622 | 627 | -- | This flag is true if the back end works *only* with
|
| ... | ... | @@ -626,7 +631,7 @@ backendUnregisterisedAbiOnly (Named NCG) = False |
| 626 | 631 | backendUnregisterisedAbiOnly (Named LLVM) = False
|
| 627 | 632 | backendUnregisterisedAbiOnly (Named ViaC) = True
|
| 628 | 633 | backendUnregisterisedAbiOnly (Named JavaScript) = False
|
| 629 | -backendUnregisterisedAbiOnly (Named Interpreter) = False
|
|
| 634 | +backendUnregisterisedAbiOnly (Named Bytecode) = False
|
|
| 630 | 635 | backendUnregisterisedAbiOnly (Named NoBackend) = False
|
| 631 | 636 | |
| 632 | 637 | -- | This flag is set if the back end generates C code in
|
| ... | ... | @@ -637,7 +642,7 @@ backendGeneratesHc (Named NCG) = False |
| 637 | 642 | backendGeneratesHc (Named LLVM) = False
|
| 638 | 643 | backendGeneratesHc (Named ViaC) = True
|
| 639 | 644 | backendGeneratesHc (Named JavaScript) = False
|
| 640 | -backendGeneratesHc (Named Interpreter) = False
|
|
| 645 | +backendGeneratesHc (Named Bytecode) = False
|
|
| 641 | 646 | backendGeneratesHc (Named NoBackend) = False
|
| 642 | 647 | |
| 643 | 648 | -- | This flag says whether SPT (static pointer table)
|
| ... | ... | @@ -649,7 +654,7 @@ backendSptIsDynamic (Named NCG) = False |
| 649 | 654 | backendSptIsDynamic (Named LLVM) = False
|
| 650 | 655 | backendSptIsDynamic (Named ViaC) = False
|
| 651 | 656 | backendSptIsDynamic (Named JavaScript) = False
|
| 652 | -backendSptIsDynamic (Named Interpreter) = True
|
|
| 657 | +backendSptIsDynamic (Named Bytecode) = True
|
|
| 653 | 658 | backendSptIsDynamic (Named NoBackend) = False
|
| 654 | 659 | |
| 655 | 660 | -- | If this flag is unset, then the driver ignores the flag @-fbreak-points@,
|
| ... | ... | @@ -660,7 +665,7 @@ backendSupportsBreakpoints = \case |
| 660 | 665 | Named LLVM -> False
|
| 661 | 666 | Named ViaC -> False
|
| 662 | 667 | Named JavaScript -> False
|
| 663 | - Named Interpreter -> True
|
|
| 668 | + Named Bytecode -> True
|
|
| 664 | 669 | Named NoBackend -> False
|
| 665 | 670 | |
| 666 | 671 | -- | If this flag is set, then the driver forces the
|
| ... | ... | @@ -671,7 +676,7 @@ backendForcesOptimization0 (Named NCG) = False |
| 671 | 676 | backendForcesOptimization0 (Named LLVM) = False
|
| 672 | 677 | backendForcesOptimization0 (Named ViaC) = False
|
| 673 | 678 | backendForcesOptimization0 (Named JavaScript) = False
|
| 674 | -backendForcesOptimization0 (Named Interpreter) = True
|
|
| 679 | +backendForcesOptimization0 (Named Bytecode) = True
|
|
| 675 | 680 | backendForcesOptimization0 (Named NoBackend) = False
|
| 676 | 681 | |
| 677 | 682 | -- | I don't understand exactly how this works. But if
|
| ... | ... | @@ -683,7 +688,7 @@ backendNeedsFullWays (Named NCG) = False |
| 683 | 688 | backendNeedsFullWays (Named LLVM) = False
|
| 684 | 689 | backendNeedsFullWays (Named ViaC) = False
|
| 685 | 690 | backendNeedsFullWays (Named JavaScript) = False
|
| 686 | -backendNeedsFullWays (Named Interpreter) = True
|
|
| 691 | +backendNeedsFullWays (Named Bytecode) = True
|
|
| 687 | 692 | backendNeedsFullWays (Named NoBackend) = False
|
| 688 | 693 | |
| 689 | 694 | -- | This flag is also special for the interpreter: if a
|
| ... | ... | @@ -695,7 +700,7 @@ backendSpecialModuleSource (Named NCG) = const Nothing |
| 695 | 700 | backendSpecialModuleSource (Named LLVM) = const Nothing
|
| 696 | 701 | backendSpecialModuleSource (Named ViaC) = const Nothing
|
| 697 | 702 | backendSpecialModuleSource (Named JavaScript) = const Nothing
|
| 698 | -backendSpecialModuleSource (Named Interpreter) = \b -> if b then Just "interpreted" else Nothing
|
|
| 703 | +backendSpecialModuleSource (Named Bytecode) = \b -> if b then Just "interpreted" else Nothing
|
|
| 699 | 704 | backendSpecialModuleSource (Named NoBackend) = const (Just "nothing")
|
| 700 | 705 | |
| 701 | 706 | -- | This flag says whether the back end supports Haskell
|
| ... | ... | @@ -707,7 +712,7 @@ backendSupportsHpc (Named NCG) = True |
| 707 | 712 | backendSupportsHpc (Named LLVM) = True
|
| 708 | 713 | backendSupportsHpc (Named ViaC) = True
|
| 709 | 714 | backendSupportsHpc (Named JavaScript) = False
|
| 710 | -backendSupportsHpc (Named Interpreter) = False
|
|
| 715 | +backendSupportsHpc (Named Bytecode) = False
|
|
| 711 | 716 | backendSupportsHpc (Named NoBackend) = True
|
| 712 | 717 | |
| 713 | 718 | -- | This flag says whether the back end supports foreign
|
| ... | ... | @@ -718,7 +723,7 @@ backendSupportsCImport (Named NCG) = True |
| 718 | 723 | backendSupportsCImport (Named LLVM) = True
|
| 719 | 724 | backendSupportsCImport (Named ViaC) = True
|
| 720 | 725 | backendSupportsCImport (Named JavaScript) = True
|
| 721 | -backendSupportsCImport (Named Interpreter) = True
|
|
| 726 | +backendSupportsCImport (Named Bytecode) = True
|
|
| 722 | 727 | backendSupportsCImport (Named NoBackend) = True
|
| 723 | 728 | |
| 724 | 729 | -- | This flag says whether the back end supports foreign
|
| ... | ... | @@ -728,7 +733,7 @@ backendSupportsCExport (Named NCG) = True |
| 728 | 733 | backendSupportsCExport (Named LLVM) = True
|
| 729 | 734 | backendSupportsCExport (Named ViaC) = True
|
| 730 | 735 | backendSupportsCExport (Named JavaScript) = True
|
| 731 | -backendSupportsCExport (Named Interpreter) = False
|
|
| 736 | +backendSupportsCExport (Named Bytecode) = False
|
|
| 732 | 737 | backendSupportsCExport (Named NoBackend) = True
|
| 733 | 738 | |
| 734 | 739 | -- | When using this back end, it may be necessary or
|
| ... | ... | @@ -749,7 +754,7 @@ backendCDefs (Named NCG) = NoCDefs |
| 749 | 754 | backendCDefs (Named LLVM) = LlvmCDefs
|
| 750 | 755 | backendCDefs (Named ViaC) = NoCDefs
|
| 751 | 756 | backendCDefs (Named JavaScript) = NoCDefs
|
| 752 | -backendCDefs (Named Interpreter) = NoCDefs
|
|
| 757 | +backendCDefs (Named Bytecode) = NoCDefs
|
|
| 753 | 758 | backendCDefs (Named NoBackend) = NoCDefs
|
| 754 | 759 | |
| 755 | 760 | -- | This (defunctionalized) function generates code and
|
| ... | ... | @@ -768,7 +773,7 @@ backendCodeOutput (Named NCG) = NcgCodeOutput |
| 768 | 773 | backendCodeOutput (Named LLVM) = LlvmCodeOutput
|
| 769 | 774 | backendCodeOutput (Named ViaC) = ViaCCodeOutput
|
| 770 | 775 | backendCodeOutput (Named JavaScript) = JSCodeOutput
|
| 771 | -backendCodeOutput (Named Interpreter) = panic "backendCodeOutput: interpreterBackend"
|
|
| 776 | +backendCodeOutput (Named Bytecode) = panic "backendCodeOutput: bytecodeBackend"
|
|
| 772 | 777 | backendCodeOutput (Named NoBackend) = panic "backendCodeOutput: noBackend"
|
| 773 | 778 | |
| 774 | 779 | backendUseJSLinker :: Backend -> Bool
|
| ... | ... | @@ -776,7 +781,7 @@ backendUseJSLinker (Named NCG) = False |
| 776 | 781 | backendUseJSLinker (Named LLVM) = False
|
| 777 | 782 | backendUseJSLinker (Named ViaC) = False
|
| 778 | 783 | backendUseJSLinker (Named JavaScript) = True
|
| 779 | -backendUseJSLinker (Named Interpreter) = False
|
|
| 784 | +backendUseJSLinker (Named Bytecode) = False
|
|
| 780 | 785 | backendUseJSLinker (Named NoBackend) = False
|
| 781 | 786 | |
| 782 | 787 | -- | This (defunctionalized) function tells the compiler
|
| ... | ... | @@ -795,7 +800,7 @@ backendPostHscPipeline (Named NCG) = NcgPostHscPipeline |
| 795 | 800 | backendPostHscPipeline (Named LLVM) = LlvmPostHscPipeline
|
| 796 | 801 | backendPostHscPipeline (Named ViaC) = ViaCPostHscPipeline
|
| 797 | 802 | backendPostHscPipeline (Named JavaScript) = JSPostHscPipeline
|
| 798 | -backendPostHscPipeline (Named Interpreter) = NoPostHscPipeline
|
|
| 803 | +backendPostHscPipeline (Named Bytecode) = NoPostHscPipeline
|
|
| 799 | 804 | backendPostHscPipeline (Named NoBackend) = NoPostHscPipeline
|
| 800 | 805 | |
| 801 | 806 | -- | Somewhere in the compiler driver, when compiling
|
| ... | ... | @@ -809,7 +814,7 @@ backendNormalSuccessorPhase (Named NCG) = As False |
| 809 | 814 | backendNormalSuccessorPhase (Named LLVM) = LlvmOpt
|
| 810 | 815 | backendNormalSuccessorPhase (Named ViaC) = HCc
|
| 811 | 816 | backendNormalSuccessorPhase (Named JavaScript) = StopLn
|
| 812 | -backendNormalSuccessorPhase (Named Interpreter) = StopLn
|
|
| 817 | +backendNormalSuccessorPhase (Named Bytecode) = StopLn
|
|
| 813 | 818 | backendNormalSuccessorPhase (Named NoBackend) = StopLn
|
| 814 | 819 | |
| 815 | 820 | -- | Name of the back end, if any. Used to migrate legacy
|
| ... | ... | @@ -820,7 +825,7 @@ backendName (Named NCG) = NCG |
| 820 | 825 | backendName (Named LLVM) = LLVM
|
| 821 | 826 | backendName (Named ViaC) = ViaC
|
| 822 | 827 | backendName (Named JavaScript) = JavaScript
|
| 823 | -backendName (Named Interpreter) = Interpreter
|
|
| 828 | +backendName (Named Bytecode) = Bytecode
|
|
| 824 | 829 | backendName (Named NoBackend) = NoBackend
|
| 825 | 830 | |
| 826 | 831 | |
| ... | ... | @@ -833,7 +838,7 @@ allBackends = [ ncgBackend |
| 833 | 838 | , llvmBackend
|
| 834 | 839 | , viaCBackend
|
| 835 | 840 | , jsBackend
|
| 836 | - , interpreterBackend
|
|
| 841 | + , bytecodeBackend
|
|
| 837 | 842 | , noBackend
|
| 838 | 843 | ]
|
| 839 | 844 |
| ... | ... | @@ -28,6 +28,6 @@ data BackendName |
| 28 | 28 | | LLVM -- ^ Names the LLVM backend.
|
| 29 | 29 | | ViaC -- ^ Names the Via-C backend.
|
| 30 | 30 | | JavaScript -- ^ Names the JS backend.
|
| 31 | - | Interpreter -- ^ Names the ByteCode interpreter.
|
|
| 31 | + | Bytecode -- ^ Names the ByteCode interpreter.
|
|
| 32 | 32 | | NoBackend -- ^ Names the `-fno-code` backend.
|
| 33 | 33 | deriving (Eq, Show) |
| ... | ... | @@ -916,7 +916,7 @@ enableCodeGenWhen logger tmpfs staticLife dynLife unit_env mod_graph = do |
| 916 | 916 | else (,) <$> (new_temp_file (hiSuf_ dflags) (dynHiSuf_ dflags))
|
| 917 | 917 | <*> (new_temp_file (objectSuf_ dflags) (dynObjectSuf_ dflags))
|
| 918 | 918 | let new_dflags = case enable_spec of
|
| 919 | - EnableByteCode -> dflags { backend = interpreterBackend }
|
|
| 919 | + EnableByteCode -> dflags { backend = bytecodeBackend }
|
|
| 920 | 920 | EnableObject -> dflags { backend = defaultBackendOf ms }
|
| 921 | 921 | EnableByteCodeAndObject -> (gopt_set dflags Opt_ByteCodeAndObjectCode) { backend = defaultBackendOf ms}
|
| 922 | 922 | let ms' = ms
|
| ... | ... | @@ -281,8 +281,8 @@ compileOne' mHscMessage |
| 281 | 281 | -- was set), force it to generate byte-code. This is NOT transitive and
|
| 282 | 282 | -- only applies to direct targets.
|
| 283 | 283 | | loadAsByteCode
|
| 284 | - = ( interpreterBackend
|
|
| 285 | - , gopt_set (lcl_dflags { backend = interpreterBackend }) Opt_ForceRecomp
|
|
| 284 | + = ( bytecodeBackend
|
|
| 285 | + , gopt_set (lcl_dflags { backend = bytecodeBackend }) Opt_ForceRecomp
|
|
| 286 | 286 | )
|
| 287 | 287 | |
| 288 | 288 | | otherwise
|
| ... | ... | @@ -1931,7 +1931,7 @@ dynamic_flags_deps = [ |
| 1931 | 1931 | d { ghcLink=NoLink }) >> setBackend noBackend))
|
| 1932 | 1932 | , make_ord_flag defFlag "fbyte-code"
|
| 1933 | 1933 | (noArgM $ \dflags -> do
|
| 1934 | - setBackend interpreterBackend
|
|
| 1934 | + setBackend bytecodeBackend
|
|
| 1935 | 1935 | pure $ flip gopt_unset Opt_ByteCodeAndObjectCode (gopt_set dflags Opt_ByteCode))
|
| 1936 | 1936 | , make_ord_flag defFlag "fobject-code" $ noArgM $ \dflags -> do
|
| 1937 | 1937 | setBackend $ platformDefaultBackend (targetPlatform dflags)
|
| ... | ... | @@ -51,7 +51,9 @@ module GHC.Types.Unique.FM ( |
| 51 | 51 | delListFromUFM,
|
| 52 | 52 | delListFromUFM_Directly,
|
| 53 | 53 | plusUFM,
|
| 54 | + strictPlusUFM,
|
|
| 54 | 55 | plusUFM_C,
|
| 56 | + strictPlusUFM_C,
|
|
| 55 | 57 | plusUFM_CD,
|
| 56 | 58 | plusUFM_CD2,
|
| 57 | 59 | mergeUFM,
|
| ... | ... | @@ -251,16 +253,24 @@ delListFromUFM_Directly = foldl' delFromUFM_Directly |
| 251 | 253 | delFromUFM_Directly :: UniqFM key elt -> Unique -> UniqFM key elt
|
| 252 | 254 | delFromUFM_Directly (UFM m) u = UFM (M.delete (getKey u) m)
|
| 253 | 255 | |
| 254 | --- Bindings in right argument shadow those in the left
|
|
| 256 | +-- | Bindings in right argument shadow those in the left.
|
|
| 257 | +--
|
|
| 258 | +-- Unlike containers this union is right-biased for historic reasons.
|
|
| 255 | 259 | plusUFM :: UniqFM key elt -> UniqFM key elt -> UniqFM key elt
|
| 256 | --- M.union is left-biased, plusUFM should be right-biased.
|
|
| 257 | 260 | plusUFM (UFM x) (UFM y) = UFM (M.union y x)
|
| 258 | 261 | -- Note (M.union y x), with arguments flipped
|
| 259 | 262 | -- M.union is left-biased, plusUFM should be right-biased.
|
| 260 | 263 | |
| 264 | +-- | Right biased
|
|
| 265 | +strictPlusUFM :: UniqFM key elt -> UniqFM key elt -> UniqFM key elt
|
|
| 266 | +strictPlusUFM (UFM x) (UFM y) = UFM (MS.union y x)
|
|
| 267 | + |
|
| 261 | 268 | plusUFM_C :: (elt -> elt -> elt) -> UniqFM key elt -> UniqFM key elt -> UniqFM key elt
|
| 262 | 269 | plusUFM_C f (UFM x) (UFM y) = UFM (M.unionWith f x y)
|
| 263 | 270 | |
| 271 | +strictPlusUFM_C :: (elt -> elt -> elt) -> UniqFM key elt -> UniqFM key elt -> UniqFM key elt
|
|
| 272 | +strictPlusUFM_C f (UFM x) (UFM y) = UFM (MS.unionWith f x y)
|
|
| 273 | + |
|
| 264 | 274 | -- | `plusUFM_CD f m1 d1 m2 d2` merges the maps using `f` as the
|
| 265 | 275 | -- combinding function and `d1` resp. `d2` as the default value if
|
| 266 | 276 | -- there is no entry in `m1` reps. `m2`. The domain is the union of
|
| ... | ... | @@ -12,7 +12,8 @@ module GHC.Types.Var.Env ( |
| 12 | 12 | elemVarEnv, disjointVarEnv, anyVarEnv,
|
| 13 | 13 | extendVarEnv, extendVarEnv_C, extendVarEnv_Acc,
|
| 14 | 14 | extendVarEnvList,
|
| 15 | - plusVarEnv, plusVarEnv_C, plusVarEnv_CD, plusMaybeVarEnv_C,
|
|
| 15 | + strictPlusVarEnv, plusVarEnv, plusVarEnv_C, strictPlusVarEnv_C,
|
|
| 16 | + plusVarEnv_CD, plusMaybeVarEnv_C,
|
|
| 16 | 17 | plusVarEnvList, alterVarEnv,
|
| 17 | 18 | delVarEnvList, delVarEnv,
|
| 18 | 19 | minusVarEnv,
|
| ... | ... | @@ -511,6 +512,7 @@ extendVarEnv :: VarEnv a -> Var -> a -> VarEnv a |
| 511 | 512 | extendVarEnv_C :: (a->a->a) -> VarEnv a -> Var -> a -> VarEnv a
|
| 512 | 513 | extendVarEnv_Acc :: (a->b->b) -> (a->b) -> VarEnv b -> Var -> a -> VarEnv b
|
| 513 | 514 | plusVarEnv :: VarEnv a -> VarEnv a -> VarEnv a
|
| 515 | +strictPlusVarEnv :: VarEnv a -> VarEnv a -> VarEnv a
|
|
| 514 | 516 | plusVarEnvList :: [VarEnv a] -> VarEnv a
|
| 515 | 517 | extendVarEnvList :: VarEnv a -> [(Var, a)] -> VarEnv a
|
| 516 | 518 | varEnvDomain :: VarEnv elt -> UnVarSet
|
| ... | ... | @@ -522,6 +524,7 @@ delVarEnvList :: Foldable f => VarEnv a -> f Var -> VarEnv a |
| 522 | 524 | delVarEnv :: VarEnv a -> Var -> VarEnv a
|
| 523 | 525 | minusVarEnv :: VarEnv a -> VarEnv b -> VarEnv a
|
| 524 | 526 | plusVarEnv_C :: (a -> a -> a) -> VarEnv a -> VarEnv a -> VarEnv a
|
| 527 | +strictPlusVarEnv_C :: (a -> a -> a) -> VarEnv a -> VarEnv a -> VarEnv a
|
|
| 525 | 528 | plusVarEnv_CD :: (a -> a -> a) -> VarEnv a -> a -> VarEnv a -> a -> VarEnv a
|
| 526 | 529 | plusMaybeVarEnv_C :: (a -> a -> Maybe a) -> VarEnv a -> VarEnv a -> VarEnv a
|
| 527 | 530 | mapVarEnv :: (a -> b) -> VarEnv a -> VarEnv b
|
| ... | ... | @@ -548,6 +551,7 @@ extendVarEnv_C = addToUFM_C |
| 548 | 551 | extendVarEnv_Acc = addToUFM_Acc
|
| 549 | 552 | extendVarEnvList = addListToUFM
|
| 550 | 553 | plusVarEnv_C = plusUFM_C
|
| 554 | +strictPlusVarEnv_C = strictPlusUFM_C
|
|
| 551 | 555 | plusVarEnv_CD = plusUFM_CD
|
| 552 | 556 | plusMaybeVarEnv_C = plusMaybeUFM_C
|
| 553 | 557 | delVarEnvList = delListFromUFM
|
| ... | ... | @@ -556,6 +560,7 @@ delVarEnvList = delListFromUFM |
| 556 | 560 | delVarEnv = delFromUFM
|
| 557 | 561 | minusVarEnv = minusUFM
|
| 558 | 562 | plusVarEnv = plusUFM
|
| 563 | +strictPlusVarEnv = strictPlusUFM
|
|
| 559 | 564 | plusVarEnvList = plusUFMList
|
| 560 | 565 | -- lookupVarEnv is very hot (in part due to being called by substTyVar),
|
| 561 | 566 | -- if it's not inlined than the mere allocation of the Just constructor causes
|
| ... | ... | @@ -1719,7 +1719,7 @@ constructor from version 9.4 with the corresponding value from 9.6: |
| 1719 | 1719 | +-----------------+------------------------+
|
| 1720 | 1720 | | ``ViaC`` | ``viaCBackend`` |
|
| 1721 | 1721 | +-----------------+------------------------+
|
| 1722 | -| ``Interpreter`` | ``interpreterBackend`` |
|
|
| 1722 | +| ``Interpreter`` | ``bytecodeBackend`` |
|
|
| 1723 | 1723 | +-----------------+------------------------+
|
| 1724 | 1724 | | ``NoBackend`` | ``noBackend`` |
|
| 1725 | 1725 | +-----------------+------------------------+
|
| ... | ... | @@ -169,9 +169,9 @@ main' postLoadMode units dflags0 args flagWarnings = do |
| 169 | 169 | let dflt_backend = backend dflags0
|
| 170 | 170 | (mode, bcknd, link)
|
| 171 | 171 | = case postLoadMode of
|
| 172 | - DoInteractive -> (CompManager, interpreterBackend, LinkInMemory)
|
|
| 173 | - DoEval _ -> (CompManager, interpreterBackend, LinkInMemory)
|
|
| 174 | - DoRun -> (CompManager, interpreterBackend, LinkInMemory)
|
|
| 172 | + DoInteractive -> (CompManager, bytecodeBackend, LinkInMemory)
|
|
| 173 | + DoEval _ -> (CompManager, bytecodeBackend, LinkInMemory)
|
|
| 174 | + DoRun -> (CompManager, bytecodeBackend, LinkInMemory)
|
|
| 175 | 175 | DoMake -> (CompManager, dflt_backend, LinkBinary)
|
| 176 | 176 | DoBackpack -> (CompManager, dflt_backend, LinkBinary)
|
| 177 | 177 | DoMkDependHS -> (MkDepend, dflt_backend, LinkBinary)
|
| ... | ... | @@ -136,9 +136,12 @@ class TestConfig: |
| 136 | 136 | # Do we have interpreter support?
|
| 137 | 137 | self.have_interp = False
|
| 138 | 138 | |
| 139 | + # Do we have external interpreter support?
|
|
| 140 | + self.have_ext_interp = False
|
|
| 141 | + |
|
| 139 | 142 | # Are we cross-compiling?
|
| 140 | 143 | self.cross = False
|
| 141 | -
|
|
| 144 | + |
|
| 142 | 145 | # Does the RTS linker only support loading shared libraries?
|
| 143 | 146 | self.interp_force_dyn = False
|
| 144 | 147 |
| ... | ... | @@ -549,10 +549,12 @@ only_ghci = only_ways([WayName('ghci'), WayName('ghci-opt')]) |
| 549 | 549 | # -----
|
| 550 | 550 | |
| 551 | 551 | def valid_way( way: WayName ) -> bool:
|
| 552 | - if way in {'ghci', 'ghci-opt', 'ghci-ext'}:
|
|
| 552 | + if way in {'ghci', 'ghci-opt'}:
|
|
| 553 | 553 | return config.have_RTS_linker
|
| 554 | - if way == 'ghci-ext-prof':
|
|
| 555 | - return config.have_RTS_linker and config.have_profiling
|
|
| 554 | + if way in {'ghci-ext'}:
|
|
| 555 | + return config.have_ext_interp
|
|
| 556 | + if way in {'ghci-ext-prof'}:
|
|
| 557 | + return config.have_ext_interp and config.have_profiling
|
|
| 556 | 558 | return True
|
| 557 | 559 | |
| 558 | 560 | def extra_ways( ways: List[WayName] ):
|
| ... | ... | @@ -16,4 +16,4 @@ test('concprog001', [extra_files(['Arithmetic.hs', 'Converter.hs', 'Mult.hs', 'S |
| 16 | 16 | when(fast(), skip), only_ways(['threaded2']),
|
| 17 | 17 | fragile(16604),
|
| 18 | 18 | run_timeout_multiplier(2)],
|
| 19 | - multimod_compile_and_run, ['Mult', '']) |
|
| 19 | + multimod_compile_and_run, ['Mult', '-Wno-x-partial']) |
| ... | ... | @@ -7,7 +7,7 @@ main = do |
| 7 | 7 | -- begin initialize
|
| 8 | 8 | df0 <- GHC.getSessionDynFlags
|
| 9 | 9 | let df1 = df0{GHC.ghcMode = GHC.CompManager,
|
| 10 | - GHC.backend = GHC.interpreterBackend,
|
|
| 10 | + GHC.backend = GHC.bytecodeBackend,
|
|
| 11 | 11 | GHC.ghcLink = GHC.LinkInMemory,
|
| 12 | 12 | GHC.verbosity = 0}
|
| 13 | 13 | _ <- GHC.setSessionDynFlags df1
|
| ... | ... | @@ -24,7 +24,7 @@ runGhc' args act = do |
| 24 | 24 | logger <- getLogger
|
| 25 | 25 | (dflags1, _leftover, _warns) <- parseDynamicFlags logger dflags0 flags
|
| 26 | 26 | let dflags2 = dflags1 {
|
| 27 | - backend = interpreterBackend
|
|
| 27 | + backend = bytecodeBackend
|
|
| 28 | 28 | , ghcLink = LinkInMemory
|
| 29 | 29 | , verbosity = 1
|
| 30 | 30 | }
|
| ... | ... | @@ -11,7 +11,7 @@ main |
| 11 | 11 | = do { [libdir] <- getArgs
|
| 12 | 12 | ; runGhc (Just libdir) $ do
|
| 13 | 13 | flags <- getSessionDynFlags
|
| 14 | - setSessionDynFlags (flags{ backend = interpreterBackend, ghcLink = LinkInMemory})
|
|
| 14 | + setSessionDynFlags (flags{ backend = bytecodeBackend, ghcLink = LinkInMemory})
|
|
| 15 | 15 | target <- guessTarget "T8639_api_a.hs" Nothing Nothing
|
| 16 | 16 | setTargets [target]
|
| 17 | 17 | load LoadAllTargets
|
| ... | ... | @@ -37,7 +37,7 @@ main = do |
| 37 | 37 | prn "target nothing: ok"
|
| 38 | 38 | |
| 39 | 39 | dflags <- getSessionDynFlags
|
| 40 | - setSessionDynFlags $ dflags { backend = interpreterBackend }
|
|
| 40 | + setSessionDynFlags $ dflags { backend = bytecodeBackend }
|
|
| 41 | 41 | ok <- load LoadAllTargets
|
| 42 | 42 | when (failed ok) $ error "Couldn't load A.hs in interpreted mode"
|
| 43 | 43 | prn "target interpreted: ok"
|
| ... | ... | @@ -16,7 +16,7 @@ main = do |
| 16 | 16 | let dflags1 =
|
| 17 | 17 | dflags0
|
| 18 | 18 | { ghcMode = CompManager,
|
| 19 | - backend = interpreterBackend,
|
|
| 19 | + backend = bytecodeBackend,
|
|
| 20 | 20 | ghcLink = LinkInMemory
|
| 21 | 21 | }
|
| 22 | 22 | logger <- getLogger
|
| ... | ... | @@ -44,7 +44,7 @@ newGhcServer = do (libdir:_) <- getArgs |
| 44 | 44 | where ghc action libdir = GHC.runGhc (Just libdir) (init >> action)
|
| 45 | 45 | init = do df <- GHC.getSessionDynFlags
|
| 46 | 46 | GHC.setSessionDynFlags df{GHC.ghcMode = GHC.CompManager,
|
| 47 | - GHC.backend = GHC.interpreterBackend,
|
|
| 47 | + GHC.backend = GHC.bytecodeBackend,
|
|
| 48 | 48 | GHC.ghcLink = GHC.LinkInMemory,
|
| 49 | 49 | GHC.verbosity = 0}
|
| 50 | 50 |
| ... | ... | @@ -2,9 +2,8 @@ test('PackedDataCon', |
| 2 | 2 | [ extra_files(['Obj.hs', 'ByteCode.hs', 'Types.hs', 'Common.hs-incl']),
|
| 3 | 3 | req_interp,
|
| 4 | 4 | req_bco,
|
| 5 | - extra_ways(['ghci']),
|
|
| 6 | - when(config.have_ext_interp, extra_ways(['ghci', 'ghci-ext'])),
|
|
| 7 | - when(config.have_ext_interp and config.have_profiling, extra_ways(['ghci', 'ghci-ext', 'ghci-ext-prof']))
|
|
| 5 | + extra_ways(ghci_ways),
|
|
| 6 | + only_ways(ghci_ways),
|
|
| 8 | 7 | ],
|
| 9 | 8 | compile_and_run,
|
| 10 | 9 | ['']
|
| ... | ... | @@ -2,9 +2,8 @@ test('UnboxedTuples', |
| 2 | 2 | [ extra_files(['Obj.hs', 'ByteCode.hs', 'Common.hs-incl']),
|
| 3 | 3 | req_interp,
|
| 4 | 4 | req_bco,
|
| 5 | - extra_ways(['ghci']),
|
|
| 6 | - when(config.have_ext_interp, extra_ways(['ghci', 'ghci-ext'])),
|
|
| 7 | - when(config.have_ext_interp and config.have_profiling, extra_ways(['ghci', 'ghci-ext', 'ghci-ext-prof']))
|
|
| 5 | + only_ways(ghci_ways),
|
|
| 6 | + extra_ways(ghci_ways),
|
|
| 8 | 7 | ],
|
| 9 | 8 | compile_and_run,
|
| 10 | 9 | ['']
|
| ... | ... | @@ -2,9 +2,8 @@ test('UnliftedDataTypeInterp', |
| 2 | 2 | [ extra_files(['Obj.hs', 'ByteCode.hs', 'Types.hs', 'Common.hs-incl']),
|
| 3 | 3 | req_interp,
|
| 4 | 4 | req_bco,
|
| 5 | - extra_ways(['ghci']),
|
|
| 6 | - when(config.have_ext_interp, extra_ways(['ghci', 'ghci-ext'])),
|
|
| 7 | - when(config.have_ext_interp and config.have_profiling, extra_ways(['ghci', 'ghci-ext', 'ghci-ext-prof']))
|
|
| 5 | + only_ways(ghci_ways),
|
|
| 6 | + extra_ways(ghci_ways),
|
|
| 8 | 7 | ],
|
| 9 | 8 | compile_and_run,
|
| 10 | 9 | ['']
|
| 1 | +{-# LANGUAGE OverloadedStrings #-}
|
|
| 2 | + |
|
| 3 | +module Reproducer (strToInt) where
|
|
| 4 | + |
|
| 5 | +import qualified Data.Text as T
|
|
| 6 | + |
|
| 7 | +{- This program results in a nested chain of join points and cases which tests
|
|
| 8 | + primarily OccAnal and Unfolding performance.
|
|
| 9 | +-}
|
|
| 10 | + |
|
| 11 | +strToInt :: T.Text -> Maybe Int
|
|
| 12 | +strToInt txt = case txt of
|
|
| 13 | + "0" -> Just 0
|
|
| 14 | + "1" -> Just 1
|
|
| 15 | + "2" -> Just 2
|
|
| 16 | + "3" -> Just 3
|
|
| 17 | + "4" -> Just 4
|
|
| 18 | + "5" -> Just 5
|
|
| 19 | + "6" -> Just 6
|
|
| 20 | + "7" -> Just 7
|
|
| 21 | + "8" -> Just 8
|
|
| 22 | + "9" -> Just 9
|
|
| 23 | + "10" -> Just 10
|
|
| 24 | + "11" -> Just 11
|
|
| 25 | + "12" -> Just 12
|
|
| 26 | + "13" -> Just 13
|
|
| 27 | + "14" -> Just 14
|
|
| 28 | + "15" -> Just 15
|
|
| 29 | + "16" -> Just 16
|
|
| 30 | + "17" -> Just 17
|
|
| 31 | + "18" -> Just 18
|
|
| 32 | + "19" -> Just 19
|
|
| 33 | + "20" -> Just 20
|
|
| 34 | + "21" -> Just 21
|
|
| 35 | + "22" -> Just 22
|
|
| 36 | + "23" -> Just 23
|
|
| 37 | + "24" -> Just 24
|
|
| 38 | + "25" -> Just 25
|
|
| 39 | + "26" -> Just 26
|
|
| 40 | + "27" -> Just 27
|
|
| 41 | + "28" -> Just 28
|
|
| 42 | + "29" -> Just 29
|
|
| 43 | + "30" -> Just 30
|
|
| 44 | + "31" -> Just 31
|
|
| 45 | + "32" -> Just 32
|
|
| 46 | + "33" -> Just 33
|
|
| 47 | + "34" -> Just 34
|
|
| 48 | + "35" -> Just 35
|
|
| 49 | + "36" -> Just 36
|
|
| 50 | + "37" -> Just 37
|
|
| 51 | + "38" -> Just 38
|
|
| 52 | + "39" -> Just 39
|
|
| 53 | + "40" -> Just 40
|
|
| 54 | + "41" -> Just 41
|
|
| 55 | + "42" -> Just 42
|
|
| 56 | + "43" -> Just 43
|
|
| 57 | + "44" -> Just 44
|
|
| 58 | + "45" -> Just 45
|
|
| 59 | + "46" -> Just 46
|
|
| 60 | + "47" -> Just 47
|
|
| 61 | + "48" -> Just 48
|
|
| 62 | + "49" -> Just 49
|
|
| 63 | + "50" -> Just 50
|
|
| 64 | + "51" -> Just 51
|
|
| 65 | + "52" -> Just 52
|
|
| 66 | + "53" -> Just 53
|
|
| 67 | + "54" -> Just 54
|
|
| 68 | + "55" -> Just 55
|
|
| 69 | + "56" -> Just 56
|
|
| 70 | + "57" -> Just 57
|
|
| 71 | + "58" -> Just 58
|
|
| 72 | + "59" -> Just 59
|
|
| 73 | + "60" -> Just 60
|
|
| 74 | + "61" -> Just 61
|
|
| 75 | + "62" -> Just 62
|
|
| 76 | + "63" -> Just 63
|
|
| 77 | + "64" -> Just 64
|
|
| 78 | + "65" -> Just 65
|
|
| 79 | + "66" -> Just 66
|
|
| 80 | + "67" -> Just 67
|
|
| 81 | + "68" -> Just 68
|
|
| 82 | + "69" -> Just 69
|
|
| 83 | + "70" -> Just 70
|
|
| 84 | + "71" -> Just 71
|
|
| 85 | + "72" -> Just 72
|
|
| 86 | + "73" -> Just 73
|
|
| 87 | + "74" -> Just 74
|
|
| 88 | + "75" -> Just 75
|
|
| 89 | + "76" -> Just 76
|
|
| 90 | + "77" -> Just 77
|
|
| 91 | + "78" -> Just 78
|
|
| 92 | + "79" -> Just 79
|
|
| 93 | + "80" -> Just 80
|
|
| 94 | + "81" -> Just 81
|
|
| 95 | + "82" -> Just 82
|
|
| 96 | + "83" -> Just 83
|
|
| 97 | + "84" -> Just 84
|
|
| 98 | + "85" -> Just 85
|
|
| 99 | + "86" -> Just 86
|
|
| 100 | + "87" -> Just 87
|
|
| 101 | + "88" -> Just 88
|
|
| 102 | + "89" -> Just 89
|
|
| 103 | + "90" -> Just 90
|
|
| 104 | + "91" -> Just 91
|
|
| 105 | + "92" -> Just 92
|
|
| 106 | + "93" -> Just 93
|
|
| 107 | + "94" -> Just 94
|
|
| 108 | + "95" -> Just 95
|
|
| 109 | + "96" -> Just 96
|
|
| 110 | + "97" -> Just 97
|
|
| 111 | + "98" -> Just 98
|
|
| 112 | + "99" -> Just 99
|
|
| 113 | + "100" -> Just 100
|
|
| 114 | + "101" -> Just 101
|
|
| 115 | + "102" -> Just 102
|
|
| 116 | + "103" -> Just 103
|
|
| 117 | + "104" -> Just 104
|
|
| 118 | + "105" -> Just 105
|
|
| 119 | + "106" -> Just 106
|
|
| 120 | + "107" -> Just 107
|
|
| 121 | + "108" -> Just 108
|
|
| 122 | + "109" -> Just 109
|
|
| 123 | + "110" -> Just 110
|
|
| 124 | + "111" -> Just 111
|
|
| 125 | + "112" -> Just 112
|
|
| 126 | + "113" -> Just 113
|
|
| 127 | + "114" -> Just 114
|
|
| 128 | + "115" -> Just 115
|
|
| 129 | + "116" -> Just 116
|
|
| 130 | + "117" -> Just 117
|
|
| 131 | + "118" -> Just 118
|
|
| 132 | + "119" -> Just 119
|
|
| 133 | + "120" -> Just 120
|
|
| 134 | + "121" -> Just 121
|
|
| 135 | + "122" -> Just 122
|
|
| 136 | + "123" -> Just 123
|
|
| 137 | + "124" -> Just 124
|
|
| 138 | + "125" -> Just 125
|
|
| 139 | + "126" -> Just 126
|
|
| 140 | + "127" -> Just 127
|
|
| 141 | + "128" -> Just 128
|
|
| 142 | + "129" -> Just 129
|
|
| 143 | + "130" -> Just 130
|
|
| 144 | + "131" -> Just 131
|
|
| 145 | + "132" -> Just 132
|
|
| 146 | + "133" -> Just 133
|
|
| 147 | + "134" -> Just 134
|
|
| 148 | + "135" -> Just 135
|
|
| 149 | + "136" -> Just 136
|
|
| 150 | + "137" -> Just 137
|
|
| 151 | + "138" -> Just 138
|
|
| 152 | + "139" -> Just 139
|
|
| 153 | + "140" -> Just 140
|
|
| 154 | + "141" -> Just 141
|
|
| 155 | + "142" -> Just 142
|
|
| 156 | + "143" -> Just 143
|
|
| 157 | + "144" -> Just 144
|
|
| 158 | + "145" -> Just 145
|
|
| 159 | + "146" -> Just 146
|
|
| 160 | + "147" -> Just 147
|
|
| 161 | + "148" -> Just 148
|
|
| 162 | + "149" -> Just 149
|
|
| 163 | + "150" -> Just 150
|
|
| 164 | + "151" -> Just 151
|
|
| 165 | + "152" -> Just 152
|
|
| 166 | + "153" -> Just 153
|
|
| 167 | + "154" -> Just 154
|
|
| 168 | + "155" -> Just 155
|
|
| 169 | + "156" -> Just 156
|
|
| 170 | + "157" -> Just 157
|
|
| 171 | + "158" -> Just 158
|
|
| 172 | + "159" -> Just 159
|
|
| 173 | + "160" -> Just 160
|
|
| 174 | + "161" -> Just 161
|
|
| 175 | + "162" -> Just 162
|
|
| 176 | + "163" -> Just 163
|
|
| 177 | + "164" -> Just 164
|
|
| 178 | + "165" -> Just 165
|
|
| 179 | + "166" -> Just 166
|
|
| 180 | + "167" -> Just 167
|
|
| 181 | + "168" -> Just 168
|
|
| 182 | + "169" -> Just 169
|
|
| 183 | + "170" -> Just 170
|
|
| 184 | + "171" -> Just 171
|
|
| 185 | + "172" -> Just 172
|
|
| 186 | + "173" -> Just 173
|
|
| 187 | + "174" -> Just 174
|
|
| 188 | + "175" -> Just 175
|
|
| 189 | + "176" -> Just 176
|
|
| 190 | + "177" -> Just 177
|
|
| 191 | + "178" -> Just 178
|
|
| 192 | + "179" -> Just 179
|
|
| 193 | + "180" -> Just 180
|
|
| 194 | + "181" -> Just 181
|
|
| 195 | + "182" -> Just 182
|
|
| 196 | + "183" -> Just 183
|
|
| 197 | + "184" -> Just 184
|
|
| 198 | + "185" -> Just 185
|
|
| 199 | + "186" -> Just 186
|
|
| 200 | + "187" -> Just 187
|
|
| 201 | + "188" -> Just 188
|
|
| 202 | + "189" -> Just 189
|
|
| 203 | + "190" -> Just 190
|
|
| 204 | + "191" -> Just 191
|
|
| 205 | + "192" -> Just 192
|
|
| 206 | + "193" -> Just 193
|
|
| 207 | + "194" -> Just 194
|
|
| 208 | + "195" -> Just 195
|
|
| 209 | + "196" -> Just 196
|
|
| 210 | + "197" -> Just 197
|
|
| 211 | + "198" -> Just 198
|
|
| 212 | + "199" -> Just 199
|
|
| 213 | + "200" -> Just 200
|
|
| 214 | + "201" -> Just 201
|
|
| 215 | + "202" -> Just 202
|
|
| 216 | + "203" -> Just 203
|
|
| 217 | + "204" -> Just 204
|
|
| 218 | + "205" -> Just 205
|
|
| 219 | + "206" -> Just 206
|
|
| 220 | + "207" -> Just 207
|
|
| 221 | + "208" -> Just 208
|
|
| 222 | + "209" -> Just 209
|
|
| 223 | + "210" -> Just 210
|
|
| 224 | + "211" -> Just 211
|
|
| 225 | + "212" -> Just 212
|
|
| 226 | + "213" -> Just 213
|
|
| 227 | + "214" -> Just 214
|
|
| 228 | + "215" -> Just 215
|
|
| 229 | + "216" -> Just 216
|
|
| 230 | + "217" -> Just 217
|
|
| 231 | + "218" -> Just 218
|
|
| 232 | + "219" -> Just 219
|
|
| 233 | + "220" -> Just 220
|
|
| 234 | + "221" -> Just 221
|
|
| 235 | + "222" -> Just 222
|
|
| 236 | + "223" -> Just 223
|
|
| 237 | + "224" -> Just 224
|
|
| 238 | + "225" -> Just 225
|
|
| 239 | + "226" -> Just 226
|
|
| 240 | + "227" -> Just 227
|
|
| 241 | + "228" -> Just 228
|
|
| 242 | + "229" -> Just 229
|
|
| 243 | + "230" -> Just 230
|
|
| 244 | + "231" -> Just 231
|
|
| 245 | + "232" -> Just 232
|
|
| 246 | + "233" -> Just 233
|
|
| 247 | + "234" -> Just 234
|
|
| 248 | + "235" -> Just 235
|
|
| 249 | + "236" -> Just 236
|
|
| 250 | + "237" -> Just 237
|
|
| 251 | + "238" -> Just 238
|
|
| 252 | + "239" -> Just 239
|
|
| 253 | + "240" -> Just 240
|
|
| 254 | + "241" -> Just 241
|
|
| 255 | + "242" -> Just 242
|
|
| 256 | + "243" -> Just 243
|
|
| 257 | + "244" -> Just 244
|
|
| 258 | + "245" -> Just 245
|
|
| 259 | + "246" -> Just 246
|
|
| 260 | + "247" -> Just 247
|
|
| 261 | + "248" -> Just 248
|
|
| 262 | + "249" -> Just 249
|
|
| 263 | + "250" -> Just 250
|
|
| 264 | + "251" -> Just 251
|
|
| 265 | + "252" -> Just 252
|
|
| 266 | + "253" -> Just 253
|
|
| 267 | + "254" -> Just 254
|
|
| 268 | + "255" -> Just 255
|
|
| 269 | + "256" -> Just 256
|
|
| 270 | + "257" -> Just 257
|
|
| 271 | + "258" -> Just 258
|
|
| 272 | + "259" -> Just 259
|
|
| 273 | + "260" -> Just 260
|
|
| 274 | + "261" -> Just 261
|
|
| 275 | + "262" -> Just 262
|
|
| 276 | + "263" -> Just 263
|
|
| 277 | + "264" -> Just 264
|
|
| 278 | + "265" -> Just 265
|
|
| 279 | + "266" -> Just 266
|
|
| 280 | + "267" -> Just 267
|
|
| 281 | + "268" -> Just 268
|
|
| 282 | + "269" -> Just 269
|
|
| 283 | + "270" -> Just 270
|
|
| 284 | + "271" -> Just 271
|
|
| 285 | + "272" -> Just 272
|
|
| 286 | + "273" -> Just 273
|
|
| 287 | + "274" -> Just 274
|
|
| 288 | + "275" -> Just 275
|
|
| 289 | + "276" -> Just 276
|
|
| 290 | + "277" -> Just 277
|
|
| 291 | + "278" -> Just 278
|
|
| 292 | + "279" -> Just 279
|
|
| 293 | + "280" -> Just 280
|
|
| 294 | + "281" -> Just 281
|
|
| 295 | + "282" -> Just 282
|
|
| 296 | + "283" -> Just 283
|
|
| 297 | + "284" -> Just 284
|
|
| 298 | + "285" -> Just 285
|
|
| 299 | + "286" -> Just 286
|
|
| 300 | + "287" -> Just 287
|
|
| 301 | + "288" -> Just 288
|
|
| 302 | + "289" -> Just 289
|
|
| 303 | + "290" -> Just 290
|
|
| 304 | + "291" -> Just 291
|
|
| 305 | + "292" -> Just 292
|
|
| 306 | + "293" -> Just 293
|
|
| 307 | + "294" -> Just 294
|
|
| 308 | + "295" -> Just 295
|
|
| 309 | + "296" -> Just 296
|
|
| 310 | + "297" -> Just 297
|
|
| 311 | + "298" -> Just 298
|
|
| 312 | + "299" -> Just 299
|
|
| 313 | + "300" -> Just 300
|
|
| 314 | + "301" -> Just 301
|
|
| 315 | + "302" -> Just 302
|
|
| 316 | + "303" -> Just 303
|
|
| 317 | + "304" -> Just 304
|
|
| 318 | + "305" -> Just 305
|
|
| 319 | + "306" -> Just 306
|
|
| 320 | + "307" -> Just 307
|
|
| 321 | + "308" -> Just 308
|
|
| 322 | + "309" -> Just 309
|
|
| 323 | + "310" -> Just 310
|
|
| 324 | + "311" -> Just 311
|
|
| 325 | + "312" -> Just 312
|
|
| 326 | + "313" -> Just 313
|
|
| 327 | + "314" -> Just 314
|
|
| 328 | + "315" -> Just 315
|
|
| 329 | + "316" -> Just 316
|
|
| 330 | + "317" -> Just 317
|
|
| 331 | + "318" -> Just 318
|
|
| 332 | + "319" -> Just 319
|
|
| 333 | + "320" -> Just 320
|
|
| 334 | + "321" -> Just 321
|
|
| 335 | + "322" -> Just 322
|
|
| 336 | + "323" -> Just 323
|
|
| 337 | + "324" -> Just 324
|
|
| 338 | + "325" -> Just 325
|
|
| 339 | + "326" -> Just 326
|
|
| 340 | + "327" -> Just 327
|
|
| 341 | + "328" -> Just 328
|
|
| 342 | + "329" -> Just 329
|
|
| 343 | + "330" -> Just 330
|
|
| 344 | + "331" -> Just 331
|
|
| 345 | + "332" -> Just 332
|
|
| 346 | + "333" -> Just 333
|
|
| 347 | + "334" -> Just 334
|
|
| 348 | + "335" -> Just 335
|
|
| 349 | + "336" -> Just 336
|
|
| 350 | + "337" -> Just 337
|
|
| 351 | + "338" -> Just 338
|
|
| 352 | + "339" -> Just 339
|
|
| 353 | + "340" -> Just 340
|
|
| 354 | + "341" -> Just 341
|
|
| 355 | + "342" -> Just 342
|
|
| 356 | + "343" -> Just 343
|
|
| 357 | + "344" -> Just 344
|
|
| 358 | + "345" -> Just 345
|
|
| 359 | + "346" -> Just 346
|
|
| 360 | + "347" -> Just 347
|
|
| 361 | + "348" -> Just 348
|
|
| 362 | + "349" -> Just 349
|
|
| 363 | + "350" -> Just 350
|
|
| 364 | + "351" -> Just 351
|
|
| 365 | + "352" -> Just 352
|
|
| 366 | + "353" -> Just 353
|
|
| 367 | + "354" -> Just 354
|
|
| 368 | + "355" -> Just 355
|
|
| 369 | + "356" -> Just 356
|
|
| 370 | + "357" -> Just 357
|
|
| 371 | + "358" -> Just 358
|
|
| 372 | + "359" -> Just 359
|
|
| 373 | + "360" -> Just 360
|
|
| 374 | + "361" -> Just 361
|
|
| 375 | + "362" -> Just 362
|
|
| 376 | + "363" -> Just 363
|
|
| 377 | + "364" -> Just 364
|
|
| 378 | + "365" -> Just 365
|
|
| 379 | + "366" -> Just 366
|
|
| 380 | + "367" -> Just 367
|
|
| 381 | + "368" -> Just 368
|
|
| 382 | + "369" -> Just 369
|
|
| 383 | + "370" -> Just 370
|
|
| 384 | + "371" -> Just 371
|
|
| 385 | + "372" -> Just 372
|
|
| 386 | + "373" -> Just 373
|
|
| 387 | + "374" -> Just 374
|
|
| 388 | + "375" -> Just 375
|
|
| 389 | + "376" -> Just 376
|
|
| 390 | + "377" -> Just 377
|
|
| 391 | + "378" -> Just 378
|
|
| 392 | + "379" -> Just 379
|
|
| 393 | + "380" -> Just 380
|
|
| 394 | + "381" -> Just 381
|
|
| 395 | + "382" -> Just 382
|
|
| 396 | + "383" -> Just 383
|
|
| 397 | + "384" -> Just 384
|
|
| 398 | + "385" -> Just 385
|
|
| 399 | + "386" -> Just 386
|
|
| 400 | + "387" -> Just 387
|
|
| 401 | + "388" -> Just 388
|
|
| 402 | + "389" -> Just 389
|
|
| 403 | + "390" -> Just 390
|
|
| 404 | + "391" -> Just 391
|
|
| 405 | + "392" -> Just 392
|
|
| 406 | + "393" -> Just 393
|
|
| 407 | + "394" -> Just 394
|
|
| 408 | + "395" -> Just 395
|
|
| 409 | + "396" -> Just 396
|
|
| 410 | + "397" -> Just 397
|
|
| 411 | + "398" -> Just 398
|
|
| 412 | + "399" -> Just 399
|
|
| 413 | + "400" -> Just 400
|
|
| 414 | + "401" -> Just 401
|
|
| 415 | + "402" -> Just 402
|
|
| 416 | + "403" -> Just 403
|
|
| 417 | + "404" -> Just 404
|
|
| 418 | + "405" -> Just 405
|
|
| 419 | + "406" -> Just 406
|
|
| 420 | + "407" -> Just 407
|
|
| 421 | + "408" -> Just 408
|
|
| 422 | + "409" -> Just 409
|
|
| 423 | + "410" -> Just 410
|
|
| 424 | + "411" -> Just 411
|
|
| 425 | + "412" -> Just 412
|
|
| 426 | + "413" -> Just 413
|
|
| 427 | + "414" -> Just 414
|
|
| 428 | + "415" -> Just 415
|
|
| 429 | + "416" -> Just 416
|
|
| 430 | + "417" -> Just 417
|
|
| 431 | + "418" -> Just 418
|
|
| 432 | + "419" -> Just 419
|
|
| 433 | + "420" -> Just 420
|
|
| 434 | + "421" -> Just 421
|
|
| 435 | + "422" -> Just 422
|
|
| 436 | + "423" -> Just 423
|
|
| 437 | + "424" -> Just 424
|
|
| 438 | + "425" -> Just 425
|
|
| 439 | + "426" -> Just 426
|
|
| 440 | + "427" -> Just 427
|
|
| 441 | + "428" -> Just 428
|
|
| 442 | + "429" -> Just 429
|
|
| 443 | + "430" -> Just 430
|
|
| 444 | + "431" -> Just 431
|
|
| 445 | + "432" -> Just 432
|
|
| 446 | + "433" -> Just 433
|
|
| 447 | + "434" -> Just 434
|
|
| 448 | + "435" -> Just 435
|
|
| 449 | + "436" -> Just 436
|
|
| 450 | + "437" -> Just 437
|
|
| 451 | + "438" -> Just 438
|
|
| 452 | + "439" -> Just 439
|
|
| 453 | + "440" -> Just 440
|
|
| 454 | + "441" -> Just 441
|
|
| 455 | + "442" -> Just 442
|
|
| 456 | + "443" -> Just 443
|
|
| 457 | + "444" -> Just 444
|
|
| 458 | + "445" -> Just 445
|
|
| 459 | + "446" -> Just 446
|
|
| 460 | + "447" -> Just 447
|
|
| 461 | + "448" -> Just 448
|
|
| 462 | + "449" -> Just 449
|
|
| 463 | + "450" -> Just 450
|
|
| 464 | + "451" -> Just 451
|
|
| 465 | + "452" -> Just 452
|
|
| 466 | + "453" -> Just 453
|
|
| 467 | + "454" -> Just 454
|
|
| 468 | + "455" -> Just 455
|
|
| 469 | + "456" -> Just 456
|
|
| 470 | + "457" -> Just 457
|
|
| 471 | + "458" -> Just 458
|
|
| 472 | + "459" -> Just 459
|
|
| 473 | + "460" -> Just 460
|
|
| 474 | + "461" -> Just 461
|
|
| 475 | + "462" -> Just 462
|
|
| 476 | + "463" -> Just 463
|
|
| 477 | + "464" -> Just 464
|
|
| 478 | + "465" -> Just 465
|
|
| 479 | + "466" -> Just 466
|
|
| 480 | + "467" -> Just 467
|
|
| 481 | + "468" -> Just 468
|
|
| 482 | + "469" -> Just 469
|
|
| 483 | + "470" -> Just 470
|
|
| 484 | + "471" -> Just 471
|
|
| 485 | + "472" -> Just 472
|
|
| 486 | + "473" -> Just 473
|
|
| 487 | + "474" -> Just 474
|
|
| 488 | + "475" -> Just 475
|
|
| 489 | + "476" -> Just 476
|
|
| 490 | + "477" -> Just 477
|
|
| 491 | + "478" -> Just 478
|
|
| 492 | + "479" -> Just 479
|
|
| 493 | + "480" -> Just 480
|
|
| 494 | + "481" -> Just 481
|
|
| 495 | + "482" -> Just 482
|
|
| 496 | + "483" -> Just 483
|
|
| 497 | + "484" -> Just 484
|
|
| 498 | + "485" -> Just 485
|
|
| 499 | + "486" -> Just 486
|
|
| 500 | + "487" -> Just 487
|
|
| 501 | + "488" -> Just 488
|
|
| 502 | + "489" -> Just 489
|
|
| 503 | + "490" -> Just 490
|
|
| 504 | + "491" -> Just 491
|
|
| 505 | + "492" -> Just 492
|
|
| 506 | + "493" -> Just 493
|
|
| 507 | + "494" -> Just 494
|
|
| 508 | + "495" -> Just 495
|
|
| 509 | + "496" -> Just 496
|
|
| 510 | + "497" -> Just 497
|
|
| 511 | + "498" -> Just 498
|
|
| 512 | + "499" -> Just 499
|
|
| 513 | + "500" -> Just 500
|
|
| 514 | + "501" -> Just 501
|
|
| 515 | + "502" -> Just 502
|
|
| 516 | + "503" -> Just 503
|
|
| 517 | + "504" -> Just 504
|
|
| 518 | + "505" -> Just 505
|
|
| 519 | + "506" -> Just 506
|
|
| 520 | + "507" -> Just 507
|
|
| 521 | + "508" -> Just 508
|
|
| 522 | + "509" -> Just 509
|
|
| 523 | + "510" -> Just 510
|
|
| 524 | + "511" -> Just 511
|
|
| 525 | + "512" -> Just 512
|
|
| 526 | + "513" -> Just 513
|
|
| 527 | + "514" -> Just 514
|
|
| 528 | + "515" -> Just 515
|
|
| 529 | + "516" -> Just 516
|
|
| 530 | + "517" -> Just 517
|
|
| 531 | + "518" -> Just 518
|
|
| 532 | + "519" -> Just 519
|
|
| 533 | + "520" -> Just 520
|
|
| 534 | + "521" -> Just 521
|
|
| 535 | + "522" -> Just 522
|
|
| 536 | + "523" -> Just 523
|
|
| 537 | + "524" -> Just 524
|
|
| 538 | + "525" -> Just 525
|
|
| 539 | + "526" -> Just 526
|
|
| 540 | + "527" -> Just 527
|
|
| 541 | + "528" -> Just 528
|
|
| 542 | + "529" -> Just 529
|
|
| 543 | + "530" -> Just 530
|
|
| 544 | + "531" -> Just 531
|
|
| 545 | + "532" -> Just 532
|
|
| 546 | + "533" -> Just 533
|
|
| 547 | + "534" -> Just 534
|
|
| 548 | + "535" -> Just 535
|
|
| 549 | + "536" -> Just 536
|
|
| 550 | + "537" -> Just 537
|
|
| 551 | + "538" -> Just 538
|
|
| 552 | + "539" -> Just 539
|
|
| 553 | + "540" -> Just 540
|
|
| 554 | + "541" -> Just 541
|
|
| 555 | + "542" -> Just 542
|
|
| 556 | + "543" -> Just 543
|
|
| 557 | + "544" -> Just 544
|
|
| 558 | + "545" -> Just 545
|
|
| 559 | + "546" -> Just 546
|
|
| 560 | + "547" -> Just 547
|
|
| 561 | + "548" -> Just 548
|
|
| 562 | + "549" -> Just 549
|
|
| 563 | + "550" -> Just 550
|
|
| 564 | + "551" -> Just 551
|
|
| 565 | + "552" -> Just 552
|
|
| 566 | + "553" -> Just 553
|
|
| 567 | + "554" -> Just 554
|
|
| 568 | + "555" -> Just 555
|
|
| 569 | + "556" -> Just 556
|
|
| 570 | + "557" -> Just 557
|
|
| 571 | + "558" -> Just 558
|
|
| 572 | + "559" -> Just 559
|
|
| 573 | + "560" -> Just 560
|
|
| 574 | + "561" -> Just 561
|
|
| 575 | + "562" -> Just 562
|
|
| 576 | + "563" -> Just 563
|
|
| 577 | + "564" -> Just 564
|
|
| 578 | + "565" -> Just 565
|
|
| 579 | + "566" -> Just 566
|
|
| 580 | + "567" -> Just 567
|
|
| 581 | + "568" -> Just 568
|
|
| 582 | + "569" -> Just 569
|
|
| 583 | + "570" -> Just 570
|
|
| 584 | + "571" -> Just 571
|
|
| 585 | + "572" -> Just 572
|
|
| 586 | + "573" -> Just 573
|
|
| 587 | + "574" -> Just 574
|
|
| 588 | + "575" -> Just 575
|
|
| 589 | + "576" -> Just 576
|
|
| 590 | + "577" -> Just 577
|
|
| 591 | + "578" -> Just 578
|
|
| 592 | + "579" -> Just 579
|
|
| 593 | + "580" -> Just 580
|
|
| 594 | + "581" -> Just 581
|
|
| 595 | + "582" -> Just 582
|
|
| 596 | + "583" -> Just 583
|
|
| 597 | + "584" -> Just 584
|
|
| 598 | + "585" -> Just 585
|
|
| 599 | + "586" -> Just 586
|
|
| 600 | + "587" -> Just 587
|
|
| 601 | + "588" -> Just 588
|
|
| 602 | + "589" -> Just 589
|
|
| 603 | + "590" -> Just 590
|
|
| 604 | + "591" -> Just 591
|
|
| 605 | + "592" -> Just 592
|
|
| 606 | + "593" -> Just 593
|
|
| 607 | + "594" -> Just 594
|
|
| 608 | + "595" -> Just 595
|
|
| 609 | + "596" -> Just 596
|
|
| 610 | + "597" -> Just 597
|
|
| 611 | + "598" -> Just 598
|
|
| 612 | + "599" -> Just 599
|
|
| 613 | + "600" -> Just 600
|
|
| 614 | + "601" -> Just 601
|
|
| 615 | + "602" -> Just 602
|
|
| 616 | + "603" -> Just 603
|
|
| 617 | + "604" -> Just 604
|
|
| 618 | + "605" -> Just 605
|
|
| 619 | + "606" -> Just 606
|
|
| 620 | + "607" -> Just 607
|
|
| 621 | + "608" -> Just 608
|
|
| 622 | + "609" -> Just 609
|
|
| 623 | + "610" -> Just 610
|
|
| 624 | + "611" -> Just 611
|
|
| 625 | + "612" -> Just 612
|
|
| 626 | + "613" -> Just 613
|
|
| 627 | + "614" -> Just 614
|
|
| 628 | + "615" -> Just 615
|
|
| 629 | + "616" -> Just 616
|
|
| 630 | + "617" -> Just 617
|
|
| 631 | + "618" -> Just 618
|
|
| 632 | + "619" -> Just 619
|
|
| 633 | + "620" -> Just 620
|
|
| 634 | + "621" -> Just 621
|
|
| 635 | + "622" -> Just 622
|
|
| 636 | + "623" -> Just 623
|
|
| 637 | + "624" -> Just 624
|
|
| 638 | + "625" -> Just 625
|
|
| 639 | + "626" -> Just 626
|
|
| 640 | + "627" -> Just 627
|
|
| 641 | + "628" -> Just 628
|
|
| 642 | + "629" -> Just 629
|
|
| 643 | + "630" -> Just 630
|
|
| 644 | + "631" -> Just 631
|
|
| 645 | + "632" -> Just 632
|
|
| 646 | + "633" -> Just 633
|
|
| 647 | + "634" -> Just 634
|
|
| 648 | + "635" -> Just 635
|
|
| 649 | + "636" -> Just 636
|
|
| 650 | + "637" -> Just 637
|
|
| 651 | + "638" -> Just 638
|
|
| 652 | + "639" -> Just 639
|
|
| 653 | + "640" -> Just 640
|
|
| 654 | + "641" -> Just 641
|
|
| 655 | + "642" -> Just 642
|
|
| 656 | + "643" -> Just 643
|
|
| 657 | + "644" -> Just 644
|
|
| 658 | + "645" -> Just 645
|
|
| 659 | + "646" -> Just 646
|
|
| 660 | + "647" -> Just 647
|
|
| 661 | + "648" -> Just 648
|
|
| 662 | + "649" -> Just 649
|
|
| 663 | + "650" -> Just 650
|
|
| 664 | + _ -> Nothing |
| ... | ... | @@ -792,3 +792,8 @@ test('interpreter_steplocal', |
| 792 | 792 | ],
|
| 793 | 793 | ghci_script,
|
| 794 | 794 | ['interpreter_steplocal.script'])
|
| 795 | + |
|
| 796 | +test ('T26425',
|
|
| 797 | + [ collect_compiler_stats('all',5) ],
|
|
| 798 | + compile,
|
|
| 799 | + ['-O']) |