[Git][ghc/ghc][wip/24462-quickfix] Disable `-fasm-shortcutting` on -O2 and warn about its usage.

Zubin (@wz1000) gitlab at gitlab.haskell.org
Thu Apr 11 08:14:16 UTC 2024



Zubin pushed to branch wip/24462-quickfix at Glasgow Haskell Compiler / GHC


Commits:
4ae8d89e by Zubin Duggal at 2024-04-11T13:43:53+05:30
Disable `-fasm-shortcutting` on -O2 and warn about its usage.

This flag is known to result in unsound optimisations potentially resulting in
incorrect runtime behaviour (#24507).

- - - - -


5 changed files:

- compiler/GHC/Driver/Config/CmmToAsm.hs
- compiler/GHC/Driver/DynFlags.hs
- compiler/GHC/Driver/Session.hs
- docs/users_guide/bugs.rst
- docs/users_guide/using-optimisation.rst


Changes:

=====================================
compiler/GHC/Driver/Config/CmmToAsm.hs
=====================================
@@ -67,7 +67,8 @@ initNCGConfig dflags this_mod = NCGConfig
    , ncgDwarfSourceNotes    = osElfTarget (platformOS (targetPlatform dflags)) && debugLevel dflags > 2 -- We produce GHC-specific source-note DIEs only with -g3
    , ncgExposeInternalSymbols = gopt Opt_ExposeInternalSymbols dflags
    , ncgCmmStaticPred       = gopt Opt_CmmStaticPred dflags
-   , ncgEnableShortcutting  = gopt Opt_AsmShortcutting dflags
+                              -- Disabled due to https://gitlab.haskell.org/ghc/ghc/-/issues/24507
+   , ncgEnableShortcutting  = False -- gopt Opt_AsmShortcutting dflags
    , ncgComputeUnwinding    = debugLevel dflags > 0
    , ncgEnableDeadCodeElimination = not (gopt Opt_InfoTableMap dflags)
                                      -- Disable when -finfo-table-map is on (#20428)


=====================================
compiler/GHC/Driver/DynFlags.hs
=====================================
@@ -1263,7 +1263,8 @@ optLevelFlags -- see Note [Documenting optimisation flags]
     , ([1,2],   Opt_CaseMerge)
     , ([1,2],   Opt_CaseFolding)
     , ([1,2],   Opt_CmmElimCommonBlocks)
-    , ([2],     Opt_AsmShortcutting)
+    -- Disabled due to #24507
+    -- , ([2],     Opt_AsmShortcutting)
     , ([1,2],   Opt_CmmSink)
     , ([1,2],   Opt_CmmStaticPred)
     , ([1,2],   Opt_CSE)


=====================================
compiler/GHC/Driver/Session.hs
=====================================
@@ -2356,7 +2356,8 @@ fFlagsDeps = [
 -- See Note [Updating flag description in the User's Guide]
 -- See Note [Supporting CLI completion]
 -- Please keep the list of flags below sorted alphabetically
-  flagSpec "asm-shortcutting"                 Opt_AsmShortcutting,
+  depFlagSpec "asm-shortcutting"              Opt_AsmShortcutting
+    "this flag is disabled on this ghc version due to unsoundness concerns (https://gitlab.haskell.org/ghc/ghc/-/issues/24507)",
   flagGhciSpec "break-on-error"               Opt_BreakOnError,
   flagGhciSpec "break-on-exception"           Opt_BreakOnException,
   flagSpec "building-cabal-package"           Opt_BuildingCabalPackage,


=====================================
docs/users_guide/bugs.rst
=====================================
@@ -694,6 +694,9 @@ Bugs in GHC
 -  Because of a toolchain limitation we are unable to support full Unicode paths
    on Windows. On Windows we support up to Latin-1. See :ghc-ticket:`12971` for more.
 
+- ``-fasm-shortcutting`` may result in unsound optimisations and result in incorrect
+  runtime results. See :ghc-ticket:`24507` for more details.
+
 .. _bugs-ghci:
 
 Bugs in GHCi (the interactive GHC)


=====================================
docs/users_guide/using-optimisation.rst
=====================================
@@ -250,7 +250,7 @@ as such you shouldn't need to set any of them explicitly. A flag
     generator, merging basic blocks and avoiding jumps right after jumps.
 
 .. ghc-flag:: -fasm-shortcutting
-    :shortdesc: Enable shortcutting on assembly. Implied by :ghc-flag:`-O2`.
+    :shortdesc: Enable shortcutting on assembly.
     :type: dynamic
     :reverse: -fno-asm-shortcutting
     :category:
@@ -267,6 +267,9 @@ as such you shouldn't need to set any of them explicitly. A flag
     these. Note that due to platform limitations (:ghc-ticket:`21972`) this flag
     does nothing on macOS.
 
+    This flag is known to result in unsoundness in this version of GHC
+    (:ghc-ticket:`24507`).
+
 .. ghc-flag:: -fblock-layout-cfg
     :shortdesc: Use the new cfg based block layout algorithm. Implied by :ghc-flag:`-O`.
     :type: dynamic



View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/4ae8d89e376d79b4188c61e6469c7f01d8445768

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/4ae8d89e376d79b4188c61e6469c7f01d8445768
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20240411/a32ef16f/attachment-0001.html>


More information about the ghc-commits mailing list