[commit: ghc] ghc-8.6: Fix a major copy'n'paste error in LLVM CodeGen (9a4ac75)

git at git.haskell.org git at git.haskell.org
Tue Jul 31 20:34:20 UTC 2018


Repository : ssh://git@git.haskell.org/ghc

On branch  : ghc-8.6
Link       : http://ghc.haskell.org/trac/ghc/changeset/9a4ac7567835c4ddf90d44500d4be7ddcaef4334/ghc

>---------------------------------------------------------------

commit 9a4ac7567835c4ddf90d44500d4be7ddcaef4334
Author: Krzysztof Gogolewski <krz.gogolewski at gmail.com>
Date:   Sun Jul 22 17:33:32 2018 +0200

    Fix a major copy'n'paste error in LLVM CodeGen
    
    Summary:
    In D4592, `AddWordC` is lowered as an unsigned subtraction instead
    of an unsigned addition when compiling with LLVM.
    
    This patch rectifies that.
    
    Reviewers: angerman, bgamari, monoidal
    
    Reviewed By: angerman, bgamari, monoidal
    
    Subscribers: osa1, rwbarton, thomie, carter
    
    Differential Revision: https://phabricator.haskell.org/D4969
    
    (cherry picked from commit f629442be93f4608e6bb53bfe2264a406230c546)


>---------------------------------------------------------------

9a4ac7567835c4ddf90d44500d4be7ddcaef4334
 compiler/llvmGen/LlvmCodeGen/CodeGen.hs  | 2 +-
 testsuite/tests/numeric/should_run/all.T | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/compiler/llvmGen/LlvmCodeGen/CodeGen.hs b/compiler/llvmGen/LlvmCodeGen/CodeGen.hs
index 678fffa..f25cb79 100644
--- a/compiler/llvmGen/LlvmCodeGen/CodeGen.hs
+++ b/compiler/llvmGen/LlvmCodeGen/CodeGen.hs
@@ -804,7 +804,7 @@ cmmPrimOpFunctions mop = do
                              ++ showSDoc dflags (ppr $ widthToLlvmInt w)
     MO_Add2 w       -> fsLit $ "llvm.uadd.with.overflow."
                              ++ showSDoc dflags (ppr $ widthToLlvmInt w)
-    MO_AddWordC w   -> fsLit $ "llvm.usub.with.overflow."
+    MO_AddWordC w   -> fsLit $ "llvm.uadd.with.overflow."
                              ++ showSDoc dflags (ppr $ widthToLlvmInt w)
     MO_SubWordC w   -> fsLit $ "llvm.usub.with.overflow."
                              ++ showSDoc dflags (ppr $ widthToLlvmInt w)
diff --git a/testsuite/tests/numeric/should_run/all.T b/testsuite/tests/numeric/should_run/all.T
index 140fa6c..eac0278 100644
--- a/testsuite/tests/numeric/should_run/all.T
+++ b/testsuite/tests/numeric/should_run/all.T
@@ -62,7 +62,7 @@ test('CarryOverflow', omit_ways(['ghci']), compile_and_run, [''])
 test('T9407', normal, compile_and_run, [''])
 test('T9810', normal, compile_and_run, [''])
 test('T10011', normal, compile_and_run, [''])
-test('T10962', omit_ways(['ghci']), compile_and_run, ['-O2'])
+test('T10962', [omit_ways(['ghci']), extra_ways(['llvm'])], compile_and_run, ['-O2'])
 test('T11702', extra_ways(['optasm']), compile_and_run, [''])
 test('T12136', normal, compile_and_run, [''])
 test('T15301', normal, compile_and_run, ['-O2'])



More information about the ghc-commits mailing list