powerpc32: fix 64-bit comparison (#16465)
authorSergei Trofimovich <slyfox@gentoo.org>
Wed, 20 Mar 2019 22:40:28 +0000 (22:40 +0000)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Fri, 31 May 2019 05:57:31 +0000 (01:57 -0400)
On powerpc32 64-bit comparison code generated dangling
target labels. This caused ghc build failure as:

    $ ./configure --target=powerpc-unknown-linux-gnu && make
    ...
    SCCs aren't in reverse dependent order
    bad blockId n3U

This happened because condIntCode' in PPC codegen generated
label name but did not place the label into `cmp_lo` code block.

The change adds the `cmp_lo` label into the case of negative
comparison.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
compiler/nativeGen/PPC/CodeGen.hs

index a9bddfd..8540c78 100644 (file)
@@ -949,6 +949,7 @@ condIntCode' True cond W64 x y
                  , BCC LE cmp_lo Nothing
                  , CMPL II32 x_lo (RIReg y_lo)
                  , BCC ALWAYS end_lbl Nothing
+                 , NEWBLOCK cmp_lo
                  , CMPL II32 y_lo (RIReg x_lo)
                  , BCC ALWAYS end_lbl Nothing