don't allow AsmTempLabel in UNREG mode (Trac #14264)
authorSergei Trofimovich <slyfox@gentoo.org>
Sun, 24 Sep 2017 11:14:03 +0000 (12:14 +0100)
committerSergei Trofimovich <slyfox@gentoo.org>
Sun, 24 Sep 2017 12:28:25 +0000 (13:28 +0100)
AsmTempLabel is really a label that describes
label in assembly output (or equivalent like LLVM IR).

Unregisterised build does not handle it correctly.

This change does not fix UNREG build failure in
Ticket #14264 but reverts back to panic:
    pprCLbl AsmTempLabel

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
compiler/cmm/CLabel.hs

index 54395b6..9c664c2 100644 (file)
@@ -197,6 +197,7 @@ data CLabel
         {-# UNPACK #-} !Unique  -- Unique says which case expression
         CaseLabelInfo
 
         {-# UNPACK #-} !Unique  -- Unique says which case expression
         CaseLabelInfo
 
+  -- | Local temporary label used for native (or LLVM) code generation
   | AsmTempLabel
         {-# UNPACK #-} !Unique
 
   | AsmTempLabel
         {-# UNPACK #-} !Unique
 
@@ -1092,6 +1093,7 @@ instance Outputable CLabel where
 pprCLabel :: Platform -> CLabel -> SDoc
 
 pprCLabel platform (AsmTempLabel u)
 pprCLabel :: Platform -> CLabel -> SDoc
 
 pprCLabel platform (AsmTempLabel u)
+ | not (platformUnregisterised platform)
   =  getPprStyle $ \ sty ->
      if asmStyle sty then
         ptext (asmTempLabelPrefix platform) <> pprUniqueAlways u
   =  getPprStyle $ \ sty ->
      if asmStyle sty then
         ptext (asmTempLabelPrefix platform) <> pprUniqueAlways u