{-# OPTIONS_GHC -w #-}
{-# OPTIONS -XMagicHash -XBangPatterns -XTypeSynonymInstances -XFlexibleInstances -cpp #-}
#if __GLASGOW_HASKELL__ >= 710
{-# OPTIONS_GHC -XPartialTypeSignatures #-}
#endif
{-# LANGUAGE TupleSections #-}

module GHC.Cmm.Parser ( parseCmmFile ) where

import GHC.Prelude
import qualified Prelude -- for happy-generated code

import GHC.StgToCmm.ExtCode
import GHC.Cmm.CallConv
import GHC.StgToCmm.Prof
import GHC.StgToCmm.Heap
import GHC.StgToCmm.Monad hiding ( getCode, getCodeR, getCodeScoped, emitLabel, emit
                               , emitStore, emitAssign, emitOutOfLine, withUpdFrameOff
                               , getUpdFrameOff )
import qualified GHC.StgToCmm.Monad as F
import GHC.StgToCmm.Utils
import GHC.StgToCmm.Foreign
import GHC.StgToCmm.Expr
import GHC.StgToCmm.Closure
import GHC.StgToCmm.Layout     hiding (ArgRep(..))
import GHC.StgToCmm.Ticky
import GHC.StgToCmm.Bind  ( emitBlackHoleCode, emitUpdateFrame )
import GHC.Core           ( Tickish(SourceNote) )

import GHC.Cmm.Opt
import GHC.Cmm.Graph
import GHC.Cmm
import GHC.Cmm.Utils
import GHC.Cmm.Switch     ( mkSwitchTargets )
import GHC.Cmm.Info
import GHC.Cmm.BlockId
import GHC.Cmm.Lexer
import GHC.Cmm.CLabel
import GHC.Cmm.Monad
import GHC.Runtime.Heap.Layout
import GHC.Parser.Lexer

import GHC.Types.CostCentre
import GHC.Types.ForeignCall
import GHC.Unit.Module
import GHC.Platform
import GHC.Types.Literal
import GHC.Types.Unique
import GHC.Types.Unique.FM
import GHC.Types.SrcLoc
import GHC.Driver.Session
import GHC.Utils.Error
import GHC.Data.StringBuffer
import GHC.Data.FastString
import GHC.Utils.Panic
import GHC.Settings.Constants
import GHC.Utils.Outputable
import GHC.Types.Basic
import GHC.Data.Bag     ( emptyBag, unitBag )
import GHC.Types.Var

import Control.Monad
import Data.Array
import Data.Char        ( ord )
import System.Exit
import Data.Maybe
import qualified Data.Map as M
import qualified Data.ByteString.Char8 as BS8

#include "HsVersions.h"
import qualified Data.Array as Happy_Data_Array
import qualified Data.Bits as Bits
import qualified GHC.Exts as Happy_GHC_Exts
import Control.Applicative(Applicative(..))
import Control.Monad (ap)

-- parser produced by Happy Version 1.19.12

newtype HappyAbsSyn  = HappyAbsSyn HappyAny
#if __GLASGOW_HASKELL__ >= 607
type HappyAny = Happy_GHC_Exts.Any
#else
type HappyAny = forall a . a
#endif
newtype HappyWrap4 = HappyWrap4 (CmmParse ())
happyIn4 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn4 :: CmmParse () -> HappyAbsSyn
happyIn4 CmmParse ()
x = HappyWrap4 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap4
HappyWrap4 CmmParse ()
x)
{-# INLINE happyIn4 #-}
happyOut4 :: (HappyAbsSyn ) -> HappyWrap4
happyOut4 :: HappyAbsSyn -> HappyWrap4
happyOut4 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap4
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut4 #-}
newtype HappyWrap5 = HappyWrap5 (CmmParse ())
happyIn5 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn5 :: CmmParse () -> HappyAbsSyn
happyIn5 CmmParse ()
x = HappyWrap5 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap5
HappyWrap5 CmmParse ()
x)
{-# INLINE happyIn5 #-}
happyOut5 :: (HappyAbsSyn ) -> HappyWrap5
happyOut5 :: HappyAbsSyn -> HappyWrap5
happyOut5 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap5
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut5 #-}
newtype HappyWrap6 = HappyWrap6 (CmmParse ())
happyIn6 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn6 :: CmmParse () -> HappyAbsSyn
happyIn6 CmmParse ()
x = HappyWrap6 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap6
HappyWrap6 CmmParse ()
x)
{-# INLINE happyIn6 #-}
happyOut6 :: (HappyAbsSyn ) -> HappyWrap6
happyOut6 :: HappyAbsSyn -> HappyWrap6
happyOut6 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap6
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut6 #-}
newtype HappyWrap7 = HappyWrap7 (CmmParse CLabel)
happyIn7 :: (CmmParse CLabel) -> (HappyAbsSyn )
happyIn7 :: CmmParse CLabel -> HappyAbsSyn
happyIn7 CmmParse CLabel
x = HappyWrap7 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse CLabel -> HappyWrap7
HappyWrap7 CmmParse CLabel
x)
{-# INLINE happyIn7 #-}
happyOut7 :: (HappyAbsSyn ) -> HappyWrap7
happyOut7 :: HappyAbsSyn -> HappyWrap7
happyOut7 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap7
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut7 #-}
newtype HappyWrap8 = HappyWrap8 ([CmmParse [CmmStatic]])
happyIn8 :: ([CmmParse [CmmStatic]]) -> (HappyAbsSyn )
happyIn8 :: [CmmParse [CmmStatic]] -> HappyAbsSyn
happyIn8 [CmmParse [CmmStatic]]
x = HappyWrap8 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([CmmParse [CmmStatic]] -> HappyWrap8
HappyWrap8 [CmmParse [CmmStatic]]
x)
{-# INLINE happyIn8 #-}
happyOut8 :: (HappyAbsSyn ) -> HappyWrap8
happyOut8 :: HappyAbsSyn -> HappyWrap8
happyOut8 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap8
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut8 #-}
newtype HappyWrap9 = HappyWrap9 (CmmParse [CmmStatic])
happyIn9 :: (CmmParse [CmmStatic]) -> (HappyAbsSyn )
happyIn9 :: CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9 CmmParse [CmmStatic]
x = HappyWrap9 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse [CmmStatic] -> HappyWrap9
HappyWrap9 CmmParse [CmmStatic]
x)
{-# INLINE happyIn9 #-}
happyOut9 :: (HappyAbsSyn ) -> HappyWrap9
happyOut9 :: HappyAbsSyn -> HappyWrap9
happyOut9 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap9
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut9 #-}
newtype HappyWrap10 = HappyWrap10 ([CmmParse CmmExpr])
happyIn10 :: ([CmmParse CmmExpr]) -> (HappyAbsSyn )
happyIn10 :: [CmmParse CmmExpr] -> HappyAbsSyn
happyIn10 [CmmParse CmmExpr]
x = HappyWrap10 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([CmmParse CmmExpr] -> HappyWrap10
HappyWrap10 [CmmParse CmmExpr]
x)
{-# INLINE happyIn10 #-}
happyOut10 :: (HappyAbsSyn ) -> HappyWrap10
happyOut10 :: HappyAbsSyn -> HappyWrap10
happyOut10 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap10
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut10 #-}
newtype HappyWrap11 = HappyWrap11 (CmmParse ())
happyIn11 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn11 :: CmmParse () -> HappyAbsSyn
happyIn11 CmmParse ()
x = HappyWrap11 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap11
HappyWrap11 CmmParse ()
x)
{-# INLINE happyIn11 #-}
happyOut11 :: (HappyAbsSyn ) -> HappyWrap11
happyOut11 :: HappyAbsSyn -> HappyWrap11
happyOut11 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap11
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut11 #-}
newtype HappyWrap12 = HappyWrap12 (Convention)
happyIn12 :: (Convention) -> (HappyAbsSyn )
happyIn12 :: Convention -> HappyAbsSyn
happyIn12 Convention
x = HappyWrap12 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (Convention -> HappyWrap12
HappyWrap12 Convention
x)
{-# INLINE happyIn12 #-}
happyOut12 :: (HappyAbsSyn ) -> HappyWrap12
happyOut12 :: HappyAbsSyn -> HappyWrap12
happyOut12 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap12
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut12 #-}
newtype HappyWrap13 = HappyWrap13 (CmmParse ())
happyIn13 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn13 :: CmmParse () -> HappyAbsSyn
happyIn13 CmmParse ()
x = HappyWrap13 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap13
HappyWrap13 CmmParse ()
x)
{-# INLINE happyIn13 #-}
happyOut13 :: (HappyAbsSyn ) -> HappyWrap13
happyOut13 :: HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap13
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut13 #-}
newtype HappyWrap14 = HappyWrap14 (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
happyIn14 :: (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])) -> (HappyAbsSyn )
happyIn14 :: CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
x = HappyWrap14 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyWrap14
HappyWrap14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
x)
{-# INLINE happyIn14 #-}
happyOut14 :: (HappyAbsSyn ) -> HappyWrap14
happyOut14 :: HappyAbsSyn -> HappyWrap14
happyOut14 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap14
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut14 #-}
newtype HappyWrap15 = HappyWrap15 (CmmParse ())
happyIn15 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn15 :: CmmParse () -> HappyAbsSyn
happyIn15 CmmParse ()
x = HappyWrap15 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap15
HappyWrap15 CmmParse ()
x)
{-# INLINE happyIn15 #-}
happyOut15 :: (HappyAbsSyn ) -> HappyWrap15
happyOut15 :: HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap15
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut15 #-}
newtype HappyWrap16 = HappyWrap16 (CmmParse ())
happyIn16 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn16 :: CmmParse () -> HappyAbsSyn
happyIn16 CmmParse ()
x = HappyWrap16 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap16
HappyWrap16 CmmParse ()
x)
{-# INLINE happyIn16 #-}
happyOut16 :: (HappyAbsSyn ) -> HappyWrap16
happyOut16 :: HappyAbsSyn -> HappyWrap16
happyOut16 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap16
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut16 #-}
newtype HappyWrap17 = HappyWrap17 ([(FastString, CLabel)])
happyIn17 :: ([(FastString, CLabel)]) -> (HappyAbsSyn )
happyIn17 :: [(FastString, CLabel)] -> HappyAbsSyn
happyIn17 [(FastString, CLabel)]
x = HappyWrap17 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([(FastString, CLabel)] -> HappyWrap17
HappyWrap17 [(FastString, CLabel)]
x)
{-# INLINE happyIn17 #-}
happyOut17 :: (HappyAbsSyn ) -> HappyWrap17
happyOut17 :: HappyAbsSyn -> HappyWrap17
happyOut17 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap17
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut17 #-}
newtype HappyWrap18 = HappyWrap18 ((FastString,  CLabel))
happyIn18 :: ((FastString,  CLabel)) -> (HappyAbsSyn )
happyIn18 :: (FastString, CLabel) -> HappyAbsSyn
happyIn18 (FastString, CLabel)
x = HappyWrap18 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ((FastString, CLabel) -> HappyWrap18
HappyWrap18 (FastString, CLabel)
x)
{-# INLINE happyIn18 #-}
happyOut18 :: (HappyAbsSyn ) -> HappyWrap18
happyOut18 :: HappyAbsSyn -> HappyWrap18
happyOut18 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap18
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut18 #-}
newtype HappyWrap19 = HappyWrap19 ([FastString])
happyIn19 :: ([FastString]) -> (HappyAbsSyn )
happyIn19 :: [FastString] -> HappyAbsSyn
happyIn19 [FastString]
x = HappyWrap19 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([FastString] -> HappyWrap19
HappyWrap19 [FastString]
x)
{-# INLINE happyIn19 #-}
happyOut19 :: (HappyAbsSyn ) -> HappyWrap19
happyOut19 :: HappyAbsSyn -> HappyWrap19
happyOut19 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap19
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut19 #-}
newtype HappyWrap20 = HappyWrap20 (CmmParse ())
happyIn20 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn20 :: CmmParse () -> HappyAbsSyn
happyIn20 CmmParse ()
x = HappyWrap20 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap20
HappyWrap20 CmmParse ()
x)
{-# INLINE happyIn20 #-}
happyOut20 :: (HappyAbsSyn ) -> HappyWrap20
happyOut20 :: HappyAbsSyn -> HappyWrap20
happyOut20 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap20
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut20 #-}
newtype HappyWrap21 = HappyWrap21 (CmmParse [(GlobalReg, Maybe CmmExpr)])
happyIn21 :: (CmmParse [(GlobalReg, Maybe CmmExpr)]) -> (HappyAbsSyn )
happyIn21 :: CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyAbsSyn
happyIn21 CmmParse [(GlobalReg, Maybe CmmExpr)]
x = HappyWrap21 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyWrap21
HappyWrap21 CmmParse [(GlobalReg, Maybe CmmExpr)]
x)
{-# INLINE happyIn21 #-}
happyOut21 :: (HappyAbsSyn ) -> HappyWrap21
happyOut21 :: HappyAbsSyn -> HappyWrap21
happyOut21 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap21
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut21 #-}
newtype HappyWrap22 = HappyWrap22 (CmmParse (Maybe CmmExpr))
happyIn22 :: (CmmParse (Maybe CmmExpr)) -> (HappyAbsSyn )
happyIn22 :: CmmParse (Maybe CmmExpr) -> HappyAbsSyn
happyIn22 CmmParse (Maybe CmmExpr)
x = HappyWrap22 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse (Maybe CmmExpr) -> HappyWrap22
HappyWrap22 CmmParse (Maybe CmmExpr)
x)
{-# INLINE happyIn22 #-}
happyOut22 :: (HappyAbsSyn ) -> HappyWrap22
happyOut22 :: HappyAbsSyn -> HappyWrap22
happyOut22 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap22
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut22 #-}
newtype HappyWrap23 = HappyWrap23 (CmmParse CmmExpr)
happyIn23 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
happyIn23 :: CmmParse CmmExpr -> HappyAbsSyn
happyIn23 CmmParse CmmExpr
x = HappyWrap23 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmExpr -> HappyWrap23
HappyWrap23 CmmParse CmmExpr
x)
{-# INLINE happyIn23 #-}
happyOut23 :: (HappyAbsSyn ) -> HappyWrap23
happyOut23 :: HappyAbsSyn -> HappyWrap23
happyOut23 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap23
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut23 #-}
newtype HappyWrap24 = HappyWrap24 (CmmReturnInfo)
happyIn24 :: (CmmReturnInfo) -> (HappyAbsSyn )
happyIn24 :: CmmReturnInfo -> HappyAbsSyn
happyIn24 CmmReturnInfo
x = HappyWrap24 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmReturnInfo -> HappyWrap24
HappyWrap24 CmmReturnInfo
x)
{-# INLINE happyIn24 #-}
happyOut24 :: (HappyAbsSyn ) -> HappyWrap24
happyOut24 :: HappyAbsSyn -> HappyWrap24
happyOut24 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap24
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut24 #-}
newtype HappyWrap25 = HappyWrap25 (CmmParse BoolExpr)
happyIn25 :: (CmmParse BoolExpr) -> (HappyAbsSyn )
happyIn25 :: CmmParse BoolExpr -> HappyAbsSyn
happyIn25 CmmParse BoolExpr
x = HappyWrap25 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse BoolExpr -> HappyWrap25
HappyWrap25 CmmParse BoolExpr
x)
{-# INLINE happyIn25 #-}
happyOut25 :: (HappyAbsSyn ) -> HappyWrap25
happyOut25 :: HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap25
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut25 #-}
newtype HappyWrap26 = HappyWrap26 (CmmParse BoolExpr)
happyIn26 :: (CmmParse BoolExpr) -> (HappyAbsSyn )
happyIn26 :: CmmParse BoolExpr -> HappyAbsSyn
happyIn26 CmmParse BoolExpr
x = HappyWrap26 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse BoolExpr -> HappyWrap26
HappyWrap26 CmmParse BoolExpr
x)
{-# INLINE happyIn26 #-}
happyOut26 :: (HappyAbsSyn ) -> HappyWrap26
happyOut26 :: HappyAbsSyn -> HappyWrap26
happyOut26 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap26
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut26 #-}
newtype HappyWrap27 = HappyWrap27 (Safety)
happyIn27 :: (Safety) -> (HappyAbsSyn )
happyIn27 :: Safety -> HappyAbsSyn
happyIn27 Safety
x = HappyWrap27 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (Safety -> HappyWrap27
HappyWrap27 Safety
x)
{-# INLINE happyIn27 #-}
happyOut27 :: (HappyAbsSyn ) -> HappyWrap27
happyOut27 :: HappyAbsSyn -> HappyWrap27
happyOut27 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap27
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut27 #-}
newtype HappyWrap28 = HappyWrap28 ([GlobalReg])
happyIn28 :: ([GlobalReg]) -> (HappyAbsSyn )
happyIn28 :: [GlobalReg] -> HappyAbsSyn
happyIn28 [GlobalReg]
x = HappyWrap28 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([GlobalReg] -> HappyWrap28
HappyWrap28 [GlobalReg]
x)
{-# INLINE happyIn28 #-}
happyOut28 :: (HappyAbsSyn ) -> HappyWrap28
happyOut28 :: HappyAbsSyn -> HappyWrap28
happyOut28 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap28
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut28 #-}
newtype HappyWrap29 = HappyWrap29 ([GlobalReg])
happyIn29 :: ([GlobalReg]) -> (HappyAbsSyn )
happyIn29 :: [GlobalReg] -> HappyAbsSyn
happyIn29 [GlobalReg]
x = HappyWrap29 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([GlobalReg] -> HappyWrap29
HappyWrap29 [GlobalReg]
x)
{-# INLINE happyIn29 #-}
happyOut29 :: (HappyAbsSyn ) -> HappyWrap29
happyOut29 :: HappyAbsSyn -> HappyWrap29
happyOut29 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap29
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut29 #-}
newtype HappyWrap30 = HappyWrap30 (Maybe (Integer,Integer))
happyIn30 :: (Maybe (Integer,Integer)) -> (HappyAbsSyn )
happyIn30 :: Maybe (Integer, Integer) -> HappyAbsSyn
happyIn30 Maybe (Integer, Integer)
x = HappyWrap30 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (Maybe (Integer, Integer) -> HappyWrap30
HappyWrap30 Maybe (Integer, Integer)
x)
{-# INLINE happyIn30 #-}
happyOut30 :: (HappyAbsSyn ) -> HappyWrap30
happyOut30 :: HappyAbsSyn -> HappyWrap30
happyOut30 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap30
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut30 #-}
newtype HappyWrap31 = HappyWrap31 ([CmmParse ([Integer],Either BlockId (CmmParse ()))])
happyIn31 :: ([CmmParse ([Integer],Either BlockId (CmmParse ()))]) -> (HappyAbsSyn )
happyIn31 :: [CmmParse ([Integer], Either BlockId (CmmParse ()))] -> HappyAbsSyn
happyIn31 [CmmParse ([Integer], Either BlockId (CmmParse ()))]
x = HappyWrap31 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([CmmParse ([Integer], Either BlockId (CmmParse ()))] -> HappyWrap31
HappyWrap31 [CmmParse ([Integer], Either BlockId (CmmParse ()))]
x)
{-# INLINE happyIn31 #-}
happyOut31 :: (HappyAbsSyn ) -> HappyWrap31
happyOut31 :: HappyAbsSyn -> HappyWrap31
happyOut31 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap31
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut31 #-}
newtype HappyWrap32 = HappyWrap32 (CmmParse ([Integer],Either BlockId (CmmParse ())))
happyIn32 :: (CmmParse ([Integer],Either BlockId (CmmParse ()))) -> (HappyAbsSyn )
happyIn32 :: CmmParse ([Integer], Either BlockId (CmmParse ())) -> HappyAbsSyn
happyIn32 CmmParse ([Integer], Either BlockId (CmmParse ()))
x = HappyWrap32 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse ([Integer], Either BlockId (CmmParse ())) -> HappyWrap32
HappyWrap32 CmmParse ([Integer], Either BlockId (CmmParse ()))
x)
{-# INLINE happyIn32 #-}
happyOut32 :: (HappyAbsSyn ) -> HappyWrap32
happyOut32 :: HappyAbsSyn -> HappyWrap32
happyOut32 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap32
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut32 #-}
newtype HappyWrap33 = HappyWrap33 (CmmParse (Either BlockId (CmmParse ())))
happyIn33 :: (CmmParse (Either BlockId (CmmParse ()))) -> (HappyAbsSyn )
happyIn33 :: CmmParse (Either BlockId (CmmParse ())) -> HappyAbsSyn
happyIn33 CmmParse (Either BlockId (CmmParse ()))
x = HappyWrap33 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse (Either BlockId (CmmParse ())) -> HappyWrap33
HappyWrap33 CmmParse (Either BlockId (CmmParse ()))
x)
{-# INLINE happyIn33 #-}
happyOut33 :: (HappyAbsSyn ) -> HappyWrap33
happyOut33 :: HappyAbsSyn -> HappyWrap33
happyOut33 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap33
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut33 #-}
newtype HappyWrap34 = HappyWrap34 ([Integer])
happyIn34 :: ([Integer]) -> (HappyAbsSyn )
happyIn34 :: [Integer] -> HappyAbsSyn
happyIn34 [Integer]
x = HappyWrap34 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([Integer] -> HappyWrap34
HappyWrap34 [Integer]
x)
{-# INLINE happyIn34 #-}
happyOut34 :: (HappyAbsSyn ) -> HappyWrap34
happyOut34 :: HappyAbsSyn -> HappyWrap34
happyOut34 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap34
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut34 #-}
newtype HappyWrap35 = HappyWrap35 (Maybe (CmmParse ()))
happyIn35 :: (Maybe (CmmParse ())) -> (HappyAbsSyn )
happyIn35 :: Maybe (CmmParse ()) -> HappyAbsSyn
happyIn35 Maybe (CmmParse ())
x = HappyWrap35 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (Maybe (CmmParse ()) -> HappyWrap35
HappyWrap35 Maybe (CmmParse ())
x)
{-# INLINE happyIn35 #-}
happyOut35 :: (HappyAbsSyn ) -> HappyWrap35
happyOut35 :: HappyAbsSyn -> HappyWrap35
happyOut35 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap35
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut35 #-}
newtype HappyWrap36 = HappyWrap36 (CmmParse ())
happyIn36 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn36 :: CmmParse () -> HappyAbsSyn
happyIn36 CmmParse ()
x = HappyWrap36 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap36
HappyWrap36 CmmParse ()
x)
{-# INLINE happyIn36 #-}
happyOut36 :: (HappyAbsSyn ) -> HappyWrap36
happyOut36 :: HappyAbsSyn -> HappyWrap36
happyOut36 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap36
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut36 #-}
newtype HappyWrap37 = HappyWrap37 (Maybe Bool)
happyIn37 :: (Maybe Bool) -> (HappyAbsSyn )
happyIn37 :: Maybe Bool -> HappyAbsSyn
happyIn37 Maybe Bool
x = HappyWrap37 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (Maybe Bool -> HappyWrap37
HappyWrap37 Maybe Bool
x)
{-# INLINE happyIn37 #-}
happyOut37 :: (HappyAbsSyn ) -> HappyWrap37
happyOut37 :: HappyAbsSyn -> HappyWrap37
happyOut37 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap37
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut37 #-}
newtype HappyWrap38 = HappyWrap38 (CmmParse CmmExpr)
happyIn38 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
happyIn38 :: CmmParse CmmExpr -> HappyAbsSyn
happyIn38 CmmParse CmmExpr
x = HappyWrap38 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmExpr -> HappyWrap38
HappyWrap38 CmmParse CmmExpr
x)
{-# INLINE happyIn38 #-}
happyOut38 :: (HappyAbsSyn ) -> HappyWrap38
happyOut38 :: HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap38
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut38 #-}
newtype HappyWrap39 = HappyWrap39 (CmmParse CmmExpr)
happyIn39 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
happyIn39 :: CmmParse CmmExpr -> HappyAbsSyn
happyIn39 CmmParse CmmExpr
x = HappyWrap39 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmExpr -> HappyWrap39
HappyWrap39 CmmParse CmmExpr
x)
{-# INLINE happyIn39 #-}
happyOut39 :: (HappyAbsSyn ) -> HappyWrap39
happyOut39 :: HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap39
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut39 #-}
newtype HappyWrap40 = HappyWrap40 (CmmType)
happyIn40 :: (CmmType) -> (HappyAbsSyn )
happyIn40 :: CmmType -> HappyAbsSyn
happyIn40 CmmType
x = HappyWrap40 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmType -> HappyWrap40
HappyWrap40 CmmType
x)
{-# INLINE happyIn40 #-}
happyOut40 :: (HappyAbsSyn ) -> HappyWrap40
happyOut40 :: HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap40
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut40 #-}
newtype HappyWrap41 = HappyWrap41 ([CmmParse (CmmExpr, ForeignHint)])
happyIn41 :: ([CmmParse (CmmExpr, ForeignHint)]) -> (HappyAbsSyn )
happyIn41 :: [CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
happyIn41 [CmmParse (CmmExpr, ForeignHint)]
x = HappyWrap41 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([CmmParse (CmmExpr, ForeignHint)] -> HappyWrap41
HappyWrap41 [CmmParse (CmmExpr, ForeignHint)]
x)
{-# INLINE happyIn41 #-}
happyOut41 :: (HappyAbsSyn ) -> HappyWrap41
happyOut41 :: HappyAbsSyn -> HappyWrap41
happyOut41 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap41
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut41 #-}
newtype HappyWrap42 = HappyWrap42 ([CmmParse (CmmExpr, ForeignHint)])
happyIn42 :: ([CmmParse (CmmExpr, ForeignHint)]) -> (HappyAbsSyn )
happyIn42 :: [CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
happyIn42 [CmmParse (CmmExpr, ForeignHint)]
x = HappyWrap42 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([CmmParse (CmmExpr, ForeignHint)] -> HappyWrap42
HappyWrap42 [CmmParse (CmmExpr, ForeignHint)]
x)
{-# INLINE happyIn42 #-}
happyOut42 :: (HappyAbsSyn ) -> HappyWrap42
happyOut42 :: HappyAbsSyn -> HappyWrap42
happyOut42 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap42
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut42 #-}
newtype HappyWrap43 = HappyWrap43 (CmmParse (CmmExpr, ForeignHint))
happyIn43 :: (CmmParse (CmmExpr, ForeignHint)) -> (HappyAbsSyn )
happyIn43 :: CmmParse (CmmExpr, ForeignHint) -> HappyAbsSyn
happyIn43 CmmParse (CmmExpr, ForeignHint)
x = HappyWrap43 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse (CmmExpr, ForeignHint) -> HappyWrap43
HappyWrap43 CmmParse (CmmExpr, ForeignHint)
x)
{-# INLINE happyIn43 #-}
happyOut43 :: (HappyAbsSyn ) -> HappyWrap43
happyOut43 :: HappyAbsSyn -> HappyWrap43
happyOut43 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap43
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut43 #-}
newtype HappyWrap44 = HappyWrap44 ([CmmParse CmmExpr])
happyIn44 :: ([CmmParse CmmExpr]) -> (HappyAbsSyn )
happyIn44 :: [CmmParse CmmExpr] -> HappyAbsSyn
happyIn44 [CmmParse CmmExpr]
x = HappyWrap44 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([CmmParse CmmExpr] -> HappyWrap44
HappyWrap44 [CmmParse CmmExpr]
x)
{-# INLINE happyIn44 #-}
happyOut44 :: (HappyAbsSyn ) -> HappyWrap44
happyOut44 :: HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap44
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut44 #-}
newtype HappyWrap45 = HappyWrap45 ([CmmParse CmmExpr])
happyIn45 :: ([CmmParse CmmExpr]) -> (HappyAbsSyn )
happyIn45 :: [CmmParse CmmExpr] -> HappyAbsSyn
happyIn45 [CmmParse CmmExpr]
x = HappyWrap45 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([CmmParse CmmExpr] -> HappyWrap45
HappyWrap45 [CmmParse CmmExpr]
x)
{-# INLINE happyIn45 #-}
happyOut45 :: (HappyAbsSyn ) -> HappyWrap45
happyOut45 :: HappyAbsSyn -> HappyWrap45
happyOut45 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap45
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut45 #-}
newtype HappyWrap46 = HappyWrap46 (CmmParse CmmExpr)
happyIn46 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
happyIn46 :: CmmParse CmmExpr -> HappyAbsSyn
happyIn46 CmmParse CmmExpr
x = HappyWrap46 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmExpr -> HappyWrap46
HappyWrap46 CmmParse CmmExpr
x)
{-# INLINE happyIn46 #-}
happyOut46 :: (HappyAbsSyn ) -> HappyWrap46
happyOut46 :: HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap46
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut46 #-}
newtype HappyWrap47 = HappyWrap47 ([CmmParse (LocalReg, ForeignHint)])
happyIn47 :: ([CmmParse (LocalReg, ForeignHint)]) -> (HappyAbsSyn )
happyIn47 :: [CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
happyIn47 [CmmParse (LocalReg, ForeignHint)]
x = HappyWrap47 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([CmmParse (LocalReg, ForeignHint)] -> HappyWrap47
HappyWrap47 [CmmParse (LocalReg, ForeignHint)]
x)
{-# INLINE happyIn47 #-}
happyOut47 :: (HappyAbsSyn ) -> HappyWrap47
happyOut47 :: HappyAbsSyn -> HappyWrap47
happyOut47 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap47
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut47 #-}
newtype HappyWrap48 = HappyWrap48 ([CmmParse (LocalReg, ForeignHint)])
happyIn48 :: ([CmmParse (LocalReg, ForeignHint)]) -> (HappyAbsSyn )
happyIn48 :: [CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
happyIn48 [CmmParse (LocalReg, ForeignHint)]
x = HappyWrap48 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([CmmParse (LocalReg, ForeignHint)] -> HappyWrap48
HappyWrap48 [CmmParse (LocalReg, ForeignHint)]
x)
{-# INLINE happyIn48 #-}
happyOut48 :: (HappyAbsSyn ) -> HappyWrap48
happyOut48 :: HappyAbsSyn -> HappyWrap48
happyOut48 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap48
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut48 #-}
newtype HappyWrap49 = HappyWrap49 (CmmParse (LocalReg, ForeignHint))
happyIn49 :: (CmmParse (LocalReg, ForeignHint)) -> (HappyAbsSyn )
happyIn49 :: CmmParse (LocalReg, ForeignHint) -> HappyAbsSyn
happyIn49 CmmParse (LocalReg, ForeignHint)
x = HappyWrap49 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse (LocalReg, ForeignHint) -> HappyWrap49
HappyWrap49 CmmParse (LocalReg, ForeignHint)
x)
{-# INLINE happyIn49 #-}
happyOut49 :: (HappyAbsSyn ) -> HappyWrap49
happyOut49 :: HappyAbsSyn -> HappyWrap49
happyOut49 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap49
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut49 #-}
newtype HappyWrap50 = HappyWrap50 (CmmParse LocalReg)
happyIn50 :: (CmmParse LocalReg) -> (HappyAbsSyn )
happyIn50 :: CmmParse LocalReg -> HappyAbsSyn
happyIn50 CmmParse LocalReg
x = HappyWrap50 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse LocalReg -> HappyWrap50
HappyWrap50 CmmParse LocalReg
x)
{-# INLINE happyIn50 #-}
happyOut50 :: (HappyAbsSyn ) -> HappyWrap50
happyOut50 :: HappyAbsSyn -> HappyWrap50
happyOut50 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap50
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut50 #-}
newtype HappyWrap51 = HappyWrap51 (CmmParse CmmReg)
happyIn51 :: (CmmParse CmmReg) -> (HappyAbsSyn )
happyIn51 :: CmmParse CmmReg -> HappyAbsSyn
happyIn51 CmmParse CmmReg
x = HappyWrap51 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmReg -> HappyWrap51
HappyWrap51 CmmParse CmmReg
x)
{-# INLINE happyIn51 #-}
happyOut51 :: (HappyAbsSyn ) -> HappyWrap51
happyOut51 :: HappyAbsSyn -> HappyWrap51
happyOut51 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap51
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut51 #-}
newtype HappyWrap52 = HappyWrap52 (Maybe [CmmParse LocalReg])
happyIn52 :: (Maybe [CmmParse LocalReg]) -> (HappyAbsSyn )
happyIn52 :: Maybe [CmmParse LocalReg] -> HappyAbsSyn
happyIn52 Maybe [CmmParse LocalReg]
x = HappyWrap52 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (Maybe [CmmParse LocalReg] -> HappyWrap52
HappyWrap52 Maybe [CmmParse LocalReg]
x)
{-# INLINE happyIn52 #-}
happyOut52 :: (HappyAbsSyn ) -> HappyWrap52
happyOut52 :: HappyAbsSyn -> HappyWrap52
happyOut52 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap52
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut52 #-}
newtype HappyWrap53 = HappyWrap53 ([CmmParse LocalReg])
happyIn53 :: ([CmmParse LocalReg]) -> (HappyAbsSyn )
happyIn53 :: [CmmParse LocalReg] -> HappyAbsSyn
happyIn53 [CmmParse LocalReg]
x = HappyWrap53 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([CmmParse LocalReg] -> HappyWrap53
HappyWrap53 [CmmParse LocalReg]
x)
{-# INLINE happyIn53 #-}
happyOut53 :: (HappyAbsSyn ) -> HappyWrap53
happyOut53 :: HappyAbsSyn -> HappyWrap53
happyOut53 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap53
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut53 #-}
newtype HappyWrap54 = HappyWrap54 ([CmmParse LocalReg])
happyIn54 :: ([CmmParse LocalReg]) -> (HappyAbsSyn )
happyIn54 :: [CmmParse LocalReg] -> HappyAbsSyn
happyIn54 [CmmParse LocalReg]
x = HappyWrap54 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([CmmParse LocalReg] -> HappyWrap54
HappyWrap54 [CmmParse LocalReg]
x)
{-# INLINE happyIn54 #-}
happyOut54 :: (HappyAbsSyn ) -> HappyWrap54
happyOut54 :: HappyAbsSyn -> HappyWrap54
happyOut54 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap54
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut54 #-}
newtype HappyWrap55 = HappyWrap55 (CmmParse LocalReg)
happyIn55 :: (CmmParse LocalReg) -> (HappyAbsSyn )
happyIn55 :: CmmParse LocalReg -> HappyAbsSyn
happyIn55 CmmParse LocalReg
x = HappyWrap55 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse LocalReg -> HappyWrap55
HappyWrap55 CmmParse LocalReg
x)
{-# INLINE happyIn55 #-}
happyOut55 :: (HappyAbsSyn ) -> HappyWrap55
happyOut55 :: HappyAbsSyn -> HappyWrap55
happyOut55 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap55
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut55 #-}
newtype HappyWrap56 = HappyWrap56 (CmmType)
happyIn56 :: (CmmType) -> (HappyAbsSyn )
happyIn56 :: CmmType -> HappyAbsSyn
happyIn56 CmmType
x = HappyWrap56 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmType -> HappyWrap56
HappyWrap56 CmmType
x)
{-# INLINE happyIn56 #-}
happyOut56 :: (HappyAbsSyn ) -> HappyWrap56
happyOut56 :: HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap56
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut56 #-}
newtype HappyWrap57 = HappyWrap57 (CmmType)
happyIn57 :: (CmmType) -> (HappyAbsSyn )
happyIn57 :: CmmType -> HappyAbsSyn
happyIn57 CmmType
x = HappyWrap57 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmType -> HappyWrap57
HappyWrap57 CmmType
x)
{-# INLINE happyIn57 #-}
happyOut57 :: (HappyAbsSyn ) -> HappyWrap57
happyOut57 :: HappyAbsSyn -> HappyWrap57
happyOut57 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap57
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut57 #-}
happyInTok :: (Located CmmToken) -> (HappyAbsSyn )
happyInTok :: Located CmmToken -> HappyAbsSyn
happyInTok Located CmmToken
x = Located CmmToken -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# Located CmmToken
x
{-# INLINE happyInTok #-}
happyOutTok :: (HappyAbsSyn ) -> (Located CmmToken)
happyOutTok :: HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
x = HappyAbsSyn -> Located CmmToken
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOutTok #-}


happyExpList :: HappyAddr
happyExpList :: HappyAddr
happyExpList = Addr# -> HappyAddr
HappyA# Addr#
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x37\x00\xc1\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xdf\x00\x04\xff\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\xd0\x63\xf3\xff\x03\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x08\x00\x00\x00\x00\x3d\x36\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x00\x40\x8f\xcd\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x08\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00\x00\x84\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x10\xc0\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x3f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\xfc\x0f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xff\xc3\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x0f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x08\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x22\x03\x02\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\xf0\x3f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xfc\x0f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xff\xc3\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x32\x20\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x08\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x7f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xf0\x3f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x04\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x1f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xff\xc3\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x00\x40\x8f\xcd\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x03\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x3f\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x0f\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x3f\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x0f\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x07\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x04\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\xf0\x3f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x0f\x3f\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x08\x00\x00\x00\x00\x3d\x36\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\xf4\xd8\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x00\x40\x8f\xcd\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#

{-# NOINLINE happyExpListPerState #-}
happyExpListPerState :: ByteOff -> [String]
happyExpListPerState ByteOff
st =
    [String]
token_strs_expected
  where token_strs :: [String]
token_strs = [String
"error",String
"%dummy",String
"%start_cmmParse",String
"cmm",String
"cmmtop",String
"cmmdata",String
"data_label",String
"statics",String
"static",String
"lits",String
"cmmproc",String
"maybe_conv",String
"maybe_body",String
"info",String
"body",String
"decl",String
"importNames",String
"importName",String
"names",String
"stmt",String
"unwind_regs",String
"expr_or_unknown",String
"foreignLabel",String
"opt_never_returns",String
"bool_expr",String
"bool_op",String
"safety",String
"vols",String
"globals",String
"maybe_range",String
"arms",String
"arm",String
"arm_body",String
"ints",String
"default",String
"else",String
"cond_likely",String
"expr",String
"expr0",String
"maybe_ty",String
"cmm_hint_exprs0",String
"cmm_hint_exprs",String
"cmm_hint_expr",String
"exprs0",String
"exprs",String
"reg",String
"foreign_results",String
"foreign_formals",String
"foreign_formal",String
"local_lreg",String
"lreg",String
"maybe_formals",String
"formals0",String
"formals",String
"formal",String
"type",String
"typenot8",String
"':'",String
"';'",String
"'{'",String
"'}'",String
"'['",String
"']'",String
"'('",String
"')'",String
"'='",String
"'`'",String
"'~'",String
"'/'",String
"'*'",String
"'%'",String
"'-'",String
"'+'",String
"'&'",String
"'^'",String
"'|'",String
"'>'",String
"'<'",String
"','",String
"'!'",String
"'..'",String
"'::'",String
"'>>'",String
"'<<'",String
"'>='",String
"'<='",String
"'=='",String
"'!='",String
"'&&'",String
"'||'",String
"'True'",String
"'False'",String
"'likely'",String
"'CLOSURE'",String
"'INFO_TABLE'",String
"'INFO_TABLE_RET'",String
"'INFO_TABLE_FUN'",String
"'INFO_TABLE_CONSTR'",String
"'INFO_TABLE_SELECTOR'",String
"'else'",String
"'export'",String
"'section'",String
"'goto'",String
"'if'",String
"'call'",String
"'jump'",String
"'foreign'",String
"'never'",String
"'prim'",String
"'reserve'",String
"'return'",String
"'returns'",String
"'import'",String
"'switch'",String
"'case'",String
"'default'",String
"'push'",String
"'unwind'",String
"'bits8'",String
"'bits16'",String
"'bits32'",String
"'bits64'",String
"'bits128'",String
"'bits256'",String
"'bits512'",String
"'float32'",String
"'float64'",String
"'gcptr'",String
"GLOBALREG",String
"NAME",String
"STRING",String
"INT",String
"FLOAT",String
"%eof"]
        bit_start :: ByteOff
bit_start = ByteOff
st ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
* ByteOff
134
        bit_end :: ByteOff
bit_end = (ByteOff
st ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
+ ByteOff
1) ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
* ByteOff
134
        read_bit :: ByteOff -> Bool
read_bit = HappyAddr -> ByteOff -> Bool
readArrayBit HappyAddr
happyExpList
        bits :: [Bool]
bits = (ByteOff -> Bool) -> [ByteOff] -> [Bool]
forall a b. (a -> b) -> [a] -> [b]
map ByteOff -> Bool
read_bit [ByteOff
bit_start..ByteOff
bit_end ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
- ByteOff
1]
        bits_indexed :: [(Bool, ByteOff)]
bits_indexed = [Bool] -> [ByteOff] -> [(Bool, ByteOff)]
forall a b. [a] -> [b] -> [(a, b)]
zip [Bool]
bits [ByteOff
0..ByteOff
133]
        token_strs_expected :: [String]
token_strs_expected = ((Bool, ByteOff) -> [String]) -> [(Bool, ByteOff)] -> [String]
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap (Bool, ByteOff) -> [String]
f [(Bool, ByteOff)]
bits_indexed
        f :: (Bool, ByteOff) -> [String]
f (Bool
False, ByteOff
_) = []
        f (Bool
True, ByteOff
nr) = [[String]
token_strs [String] -> ByteOff -> String
forall a. [a] -> ByteOff -> a
!! ByteOff
nr]

happyActOffsets :: HappyAddr
happyActOffsets :: HappyAddr
happyActOffsets = Addr# -> HappyAddr
HappyA# Addr#
"\x44\x01\x00\x00\xba\xff\x44\x01\x00\x00\x00\x00\xdf\xff\x00\x00\xcf\xff\x00\x00\x14\x00\x18\x00\x1c\x00\x1f\x00\x2c\x00\x33\x00\xe4\xff\x21\x00\xe0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x66\x00\x56\x00\x00\x00\x79\x00\xc9\x00\xcc\x00\xf2\x00\xb4\x00\xc6\x00\xc7\x00\xd8\x00\xda\x00\xe2\x00\x1a\x01\x19\x01\x00\x00\x00\x00\x2e\x00\x2f\x04\x00\x00\x18\x01\x1e\x01\x20\x01\x23\x01\x27\x01\x2a\x01\xf8\x00\x00\x00\xf9\x00\x00\x00\x00\x00\xe0\xff\x00\x00\x00\x00\x07\x01\x43\x01\x00\x00\x04\x01\x05\x01\x09\x01\x0a\x01\x0b\x01\x08\x01\x54\x01\x00\x00\x47\x01\x16\x01\x00\x00\x00\x00\x20\x00\x5f\x01\x20\x00\x20\x00\xfa\xff\x5d\x01\x23\x00\x00\x00\x22\x04\x26\x01\x63\x00\x72\x00\x72\x00\x72\x00\x72\x01\x75\x01\x74\x01\x35\x01\x00\x00\x10\x00\x00\x00\x2f\x04\x00\x00\x68\x01\x69\x01\x08\x00\x76\x01\x8e\x01\x92\x01\x00\x00\xa2\x01\x07\x01\xff\xff\xa7\x01\xb2\x01\xb5\x01\x02\x00\x77\x01\x73\x01\xbf\x01\xbc\x01\x00\x00\xd1\x01\x00\x00\x72\x00\x72\x00\x8f\x01\x72\x00\x00\x00\x00\x00\x00\x00\xbe\x01\xbe\x01\x00\x00\x00\x00\x9f\x01\xa0\x01\xa1\x01\x00\x00\x2f\x04\xb4\x01\xf5\x01\x72\x00\x00\x00\x00\x00\x72\x00\xfe\x01\x08\x02\x72\x00\x72\x00\xc7\x01\x72\x00\xab\x02\x16\x02\x63\x02\xfc\xff\x00\x00\xe7\x02\x63\x00\x63\x00\x11\x02\x0c\x02\x06\x02\x00\x00\x17\x02\x00\x00\xd5\x01\x72\x00\x72\x00\xd6\x01\x13\x02\x00\x00\x00\x00\x00\x00\xe3\x01\xe4\x01\xd3\x01\x30\x02\x00\x00\x25\x02\x26\x00\x26\x02\x00\x00\x00\x00\x5e\x00\x2f\x02\x94\x02\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x01\x00\x14\x02\x63\x00\x63\x00\x72\x00\x37\x02\x25\x00\x72\x00\x3b\x00\xbf\x02\x32\x02\x00\x00\x23\x02\xfb\x01\x3e\x02\x4c\x00\x00\x00\x3f\x02\xd3\x02\x46\x02\x33\x02\x49\x02\x3c\x02\x3d\x02\x4b\x02\x00\x00\x2f\x04\x00\x00\x7b\x00\x4d\x02\x00\x00\x94\x02\x72\x00\x19\x02\x00\x00\x4f\x02\x55\x02\x22\x02\x5a\x02\x61\x02\x6b\x02\x66\x02\x77\x02\x70\x02\x4a\x02\x00\x00\x72\x00\x00\x00\x31\x02\x39\x02\x3a\x02\x00\x00\x3b\x02\x00\x00\x00\x00\x7a\x02\x71\x02\xe7\x02\x00\x00\xc5\x00\x58\x02\x48\x02\x92\x02\x72\x00\xc5\x00\x00\x00\x8d\x02\x97\x02\x00\x00\x98\x02\x89\x02\x00\x00\xa2\x02\xcb\x00\x8b\x02\xac\x02\x20\x00\x6c\x02\xfb\x02\xfb\x02\xfb\x02\xfb\x02\x29\x00\x29\x00\xfb\x02\xfb\x02\x66\x01\x34\x04\x44\x04\x7b\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x02\xa3\x02\x00\x00\xba\x02\x00\x00\xbb\x02\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\xc0\x02\xd7\x00\xc1\x02\x8e\x02\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\xd1\x02\x9d\x02\xb0\x02\xa0\x02\x00\x00\xa4\x02\x00\x00\xe8\x02\xe9\x02\xea\x02\xfd\x02\xf5\x02\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x02\xc9\x02\xc8\x02\xd6\x02\x00\x00\x1c\x03\x11\x03\x00\x00\x24\x03\x28\x03\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x22\x03\x23\x03\x01\x03\x7c\x02\xe7\x01\xd3\x00\x2c\x03\x00\x00\x19\x03\x2f\x03\x3c\x03\x72\x00\xf6\x02\x00\x00\x00\x00\x72\x00\x00\x00\x3e\x03\x00\x00\x00\x00\x37\x03\x3f\x03\x00\x00\xf8\x02\x06\x00\x30\x03\x35\x03\x38\x03\x50\x03\x00\x00\x0d\x03\x16\x03\x17\x03\x00\x00\x20\x00\x25\x03\x00\x00\x20\x00\x60\x03\x20\x00\x67\x03\x3d\x03\x00\x00\x00\x00\x00\x00\x78\x03\x45\x03\x7c\x03\x84\x03\x00\x00\x86\x03\x8a\x03\x92\x03\x75\x03\x82\x03\x83\x03\x5a\x03\x40\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x03\x9f\x03\x00\x00\x00\x00\x00\x00"#

happyGotoOffsets :: HappyAddr
happyGotoOffsets :: HappyAddr
happyGotoOffsets = Addr# -> HappyAddr
HappyA# Addr#
"\xbf\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\xa0\x03\x00\x00\x8b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x03\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x03\x00\x00\x00\x00\xa9\x03\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x03\x00\x00\xc0\x03\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\xf3\x00\xfb\x00\x00\x00\x00\x00\xb5\x03\x00\x00\x4b\x04\x00\x00\x79\x01\x4f\x03\x51\x03\x5d\x03\x00\x00\x9a\x03\x00\x00\xbd\x03\x00\x00\x00\x00\x00\x00\x90\x01\x00\x00\xbc\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x03\x6d\x03\x00\x00\x79\x03\x00\x00\x00\x00\x00\x00\xac\x03\xad\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x01\x00\x00\x00\x00\x7b\x03\x00\x00\x00\x00\x30\x01\x00\x00\x00\x00\x93\x01\x87\x03\x00\x00\xf9\x02\x00\x00\xba\x03\x00\x00\xbb\x03\x00\x00\x00\x00\x7b\x01\x7d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x03\x89\x03\x95\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x03\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x03\xa3\x03\xa5\x03\xb1\x03\xb3\x03\xbf\x03\xc1\x03\xcd\x03\xcf\x03\xdb\x03\xdd\x03\xe9\x03\xeb\x03\xf7\x03\xf9\x03\x05\x04\x00\x00\x00\x00\x7f\x01\x95\x01\xfc\x02\x00\x00\xc7\x03\x10\x03\xbe\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\x00\x00\x00\x00\xe4\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x04\x00\x00\x00\x00\x00\x00\xe6\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x03\xf1\x00\x00\x00\x00\x00\x43\x03\xef\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x03\x51\x00\x13\x04\x15\x04\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x03\xfc\x00\xde\x03\x00\x00\xf5\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x03\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x03\xf2\x03\x00\x00\x00\x00\x41\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x03\xfa\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x00\x00\x2c\x01\x00\x00\x33\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#

happyAdjustOffset :: Happy_GHC_Exts.Int# -> Happy_GHC_Exts.Int#
happyAdjustOffset :: Int# -> Int#
happyAdjustOffset Int#
off = Int#
off

happyDefActions :: HappyAddr
happyDefActions :: HappyAddr
happyDefActions = Addr# -> HappyAddr
HappyA# Addr#
"\xfe\xff\x00\x00\x00\x00\xfe\xff\xfb\xff\xfc\xff\xeb\xff\xfa\xff\x00\x00\x5f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xff\x5e\xff\x5d\xff\x5c\xff\x5b\xff\x5a\xff\x59\xff\x58\xff\x57\xff\x56\xff\xe7\xff\x00\x00\xda\xff\x00\x00\xd8\xff\x00\x00\x00\x00\x00\x00\xd5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\xff\xea\xff\xfd\xff\x00\x00\x66\xff\xdd\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\xff\x00\x00\xd6\xff\xd7\xff\x00\x00\xdc\xff\xd9\xff\xf6\xff\x00\x00\xd4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\xff\x63\xff\x00\x00\xec\xff\xe9\xff\xe0\xff\x00\x00\xe0\xff\xe0\xff\x00\x00\x00\x00\x00\x00\xd3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\xff\x00\x00\x00\x00\x69\xff\x6a\xff\x61\xff\x64\xff\x67\xff\xee\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\xf6\xff\x00\x00\x5f\xff\x00\x00\x60\xff\x00\x00\x00\x00\x00\x00\x00\x00\x88\xff\x84\xff\x00\x00\xf3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x73\xff\x74\xff\x85\xff\x80\xff\x80\xff\xf5\xff\xf8\xff\x00\x00\x00\x00\x00\x00\xe2\xff\x66\xff\x00\x00\x00\x00\x00\x00\x62\xff\xd2\xff\x78\xff\x00\x00\x00\x00\x78\xff\x00\x00\x00\x00\x78\xff\x00\x00\x00\x00\x00\x00\x9c\xff\xb8\xff\xb7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x70\xff\x6d\xff\x00\x00\x6b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\xdf\xff\xe8\xff\x00\x00\x00\x00\x00\x00\x00\x00\x6c\xff\x00\x00\x6f\xff\x00\x00\xcb\xff\xb4\xff\x00\x00\xb8\xff\xb7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\xff\x00\x00\x00\x00\x78\xff\x00\x00\x76\xff\x00\x00\x77\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\x00\x00\xee\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\xff\x00\x00\x87\xff\x8a\xff\x00\x00\x8b\xff\x00\x00\x00\x00\x00\x00\xf4\xff\x00\x00\xee\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\xff\x78\xff\x7f\xff\x00\x00\x00\x00\x00\x00\xe1\xff\x00\x00\xf9\xff\xed\xff\x00\x00\xbe\xff\xbc\xff\xbd\xff\x00\x00\xa9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xff\x00\x00\x00\x00\xb0\xff\x00\x00\xad\xff\xc9\xff\x00\x00\xb5\xff\xb6\xff\x00\x00\xe0\xff\x00\x00\x8d\xff\x8c\xff\x8f\xff\x91\xff\x95\xff\x96\xff\x8e\xff\x90\xff\x92\xff\x93\xff\x94\xff\x97\xff\x98\xff\x99\xff\x9a\xff\x9b\xff\xb3\xff\x71\xff\x6e\xff\x00\x00\x00\x00\xd1\xff\x00\x00\xbb\xff\x00\x00\x78\xff\x7e\xff\x00\x00\x00\x00\xc4\xff\x00\x00\x00\x00\x00\x00\x00\x00\xaf\xff\xae\xff\x00\x00\xc1\xff\x75\xff\xca\xff\x00\x00\xa1\xff\xa9\xff\x00\x00\xc2\xff\x00\x00\xcd\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\xff\x00\x00\xf0\xff\xef\xff\xf2\xff\xf1\xff\x89\xff\x82\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbf\xff\x00\x00\xa4\xff\xa8\xff\x00\x00\x00\x00\xab\xff\xc8\xff\x78\xff\xac\xff\xc6\xff\x00\x00\x00\x00\xa0\xff\x00\x00\x00\x00\x7a\xff\x00\x00\x7d\xff\x7c\xff\x00\x00\x00\x00\x00\x00\xb2\xff\x79\xff\xd0\xff\x78\xff\xc3\xff\x00\x00\x9d\xff\x9e\xff\x00\x00\x00\x00\xcc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\xff\x00\x00\x00\x00\x00\x00\xa7\xff\xe0\xff\x00\x00\xa3\xff\xe0\xff\x00\x00\xe0\xff\x00\x00\xba\xff\xb1\xff\x7b\xff\xce\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xff\xa6\xff\xa5\xff\xa2\xff\x9f\xff\xc5\xff\xb9\xff\xcf\xff\x00\x00\x00\x00\xe4\xff\xe5\xff"#

happyCheck :: HappyAddr
happyCheck :: HappyAddr
happyCheck = Addr# -> HappyAddr
HappyA# Addr#
"\xff\xff\x02\x00\x12\x00\x07\x00\x03\x00\x25\x00\x07\x00\x4d\x00\x06\x00\x03\x00\x0b\x00\x04\x00\x05\x00\x0e\x00\x0f\x00\x23\x00\x08\x00\x01\x00\x22\x00\x23\x00\x02\x00\x36\x00\x2a\x00\x07\x00\x49\x00\x07\x00\x2a\x00\x07\x00\x20\x00\x21\x00\x16\x00\x07\x00\x34\x00\x35\x00\x02\x00\x07\x00\x34\x00\x35\x00\x07\x00\x07\x00\x05\x00\x49\x00\x4a\x00\x06\x00\x32\x00\x49\x00\x34\x00\x2e\x00\x02\x00\x03\x00\x0d\x00\x07\x00\x2e\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x07\x00\x34\x00\x35\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x2c\x00\x4b\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x07\x00\x34\x00\x35\x00\x36\x00\x0b\x00\x38\x00\x39\x00\x0e\x00\x0f\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x07\x00\x4a\x00\x49\x00\x48\x00\x0b\x00\x49\x00\x4a\x00\x0e\x00\x0f\x00\x22\x00\x23\x00\x02\x00\x25\x00\x26\x00\x27\x00\x07\x00\x17\x00\x2a\x00\x16\x00\x0b\x00\x20\x00\x21\x00\x0e\x00\x0f\x00\x36\x00\x48\x00\x49\x00\x34\x00\x35\x00\x0c\x00\x0d\x00\x0e\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x07\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x49\x00\x0e\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x00\x00\x01\x00\x02\x00\x49\x00\x00\x00\x01\x00\x02\x00\x07\x00\x02\x00\x03\x00\x0a\x00\x07\x00\x0c\x00\x03\x00\x0a\x00\x02\x00\x0c\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x04\x00\x05\x00\x20\x00\x21\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x34\x00\x35\x00\x0d\x00\x0e\x00\x34\x00\x35\x00\x22\x00\x23\x00\x0b\x00\x0c\x00\x49\x00\x0b\x00\x0c\x00\x10\x00\x0d\x00\x0e\x00\x10\x00\x34\x00\x35\x00\x0b\x00\x0c\x00\x16\x00\x0b\x00\x0c\x00\x10\x00\x1b\x00\x1c\x00\x10\x00\x49\x00\x49\x00\x0b\x00\x0c\x00\x2c\x00\x2d\x00\x2e\x00\x10\x00\x1b\x00\x1c\x00\x34\x00\x35\x00\x2b\x00\x02\x00\x4a\x00\x2b\x00\x2f\x00\x07\x00\x49\x00\x2f\x00\x49\x00\x34\x00\x35\x00\x2b\x00\x34\x00\x35\x00\x2b\x00\x2f\x00\x49\x00\x25\x00\x2f\x00\x16\x00\x34\x00\x35\x00\x2b\x00\x34\x00\x35\x00\x16\x00\x2f\x00\x16\x00\x0b\x00\x0c\x00\x16\x00\x34\x00\x35\x00\x10\x00\x16\x00\x0b\x00\x0c\x00\x16\x00\x49\x00\x49\x00\x10\x00\x01\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x4b\x00\x4b\x00\x49\x00\x22\x00\x23\x00\x4b\x00\x4b\x00\x4b\x00\x2b\x00\x28\x00\x29\x00\x2a\x00\x2f\x00\x08\x00\x16\x00\x2b\x00\x49\x00\x34\x00\x35\x00\x2f\x00\x04\x00\x34\x00\x35\x00\x09\x00\x34\x00\x35\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x49\x00\x2c\x00\x2d\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x07\x00\x05\x00\x07\x00\x38\x00\x48\x00\x16\x00\x16\x00\x1a\x00\x1b\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x16\x00\x49\x00\x15\x00\x16\x00\x15\x00\x16\x00\x15\x00\x16\x00\x15\x00\x16\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x22\x00\x23\x00\x22\x00\x23\x00\x22\x00\x23\x00\x22\x00\x23\x00\x2a\x00\x16\x00\x2a\x00\x04\x00\x2a\x00\x16\x00\x2a\x00\x15\x00\x16\x00\x05\x00\x34\x00\x35\x00\x34\x00\x35\x00\x34\x00\x35\x00\x34\x00\x35\x00\x22\x00\x23\x00\x22\x00\x23\x00\x07\x00\x05\x00\x28\x00\x29\x00\x2a\x00\x4b\x00\x2a\x00\x49\x00\x02\x00\x32\x00\x33\x00\x34\x00\x35\x00\x0a\x00\x34\x00\x35\x00\x34\x00\x35\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x05\x00\x19\x00\x49\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x4b\x00\x4b\x00\x4b\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x08\x00\x03\x00\x4b\x00\x02\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x09\x00\x4b\x00\x02\x00\x08\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x05\x00\x16\x00\x07\x00\x49\x00\x08\x00\x4a\x00\x0e\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x49\x00\x49\x00\x09\x00\x09\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x06\x00\x08\x00\x24\x00\x02\x00\x08\x00\x18\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x08\x00\x08\x00\x02\x00\x16\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x06\x00\x08\x00\x16\x00\x16\x00\x07\x00\x06\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x06\x00\x16\x00\x49\x00\x02\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x07\x00\x16\x00\x4a\x00\x02\x00\x08\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x0a\x00\x4a\x00\x02\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x07\x00\x4b\x00\x4b\x00\x4b\x00\x16\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x3a\x00\x4b\x00\x02\x00\x08\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x08\x00\x06\x00\x06\x00\x16\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x08\x00\x20\x00\x09\x00\x01\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x09\x00\x49\x00\x30\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x07\x00\x07\x00\x02\x00\x04\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x48\x00\x06\x00\x3b\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x3a\x00\x4b\x00\x48\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x08\x00\x16\x00\x16\x00\x16\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x4a\x00\x4a\x00\x16\x00\x4b\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x22\x00\x23\x00\x01\x00\x22\x00\x23\x00\x4a\x00\x28\x00\x29\x00\x2a\x00\x28\x00\x29\x00\x2a\x00\x16\x00\x04\x00\x01\x00\x08\x00\x08\x00\x2b\x00\x34\x00\x35\x00\x16\x00\x34\x00\x35\x00\x22\x00\x23\x00\x08\x00\x22\x00\x23\x00\x08\x00\x28\x00\x29\x00\x2a\x00\x28\x00\x29\x00\x2a\x00\x02\x00\x08\x00\x4a\x00\x03\x00\x03\x00\x4b\x00\x34\x00\x35\x00\x16\x00\x34\x00\x35\x00\x22\x00\x23\x00\x16\x00\x22\x00\x23\x00\x16\x00\x28\x00\x29\x00\x2a\x00\x28\x00\x29\x00\x2a\x00\x22\x00\x23\x00\x4a\x00\x08\x00\x26\x00\x27\x00\x34\x00\x35\x00\x2a\x00\x34\x00\x35\x00\x4a\x00\x4a\x00\x02\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x28\x00\x29\x00\x2a\x00\x29\x00\x2a\x00\x49\x00\x08\x00\x33\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x02\x00\x2a\x00\x37\x00\x08\x00\x02\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x04\x00\x2a\x00\x04\x00\x4b\x00\x02\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x04\x00\x2a\x00\x16\x00\x16\x00\x0f\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x4a\x00\x2a\x00\x08\x00\x08\x00\x08\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x09\x00\x2a\x00\x1a\x00\x0f\x00\x0f\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x30\x00\x2a\x00\x06\x00\x03\x00\x0f\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x11\x00\x2a\x00\x24\x00\x24\x00\x18\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x21\x00\x2a\x00\x2e\x00\x13\x00\x19\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x06\x00\x2a\x00\x06\x00\x2f\x00\x09\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x09\x00\x2a\x00\x19\x00\x1f\x00\x1e\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x11\x00\x2a\x00\x20\x00\x17\x00\x1e\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x14\x00\x2a\x00\xff\xff\x1d\x00\xff\xff\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\xff\xff\x2a\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xff\xff\x34\x00\x35\x00\x34\x00\x35\x00\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\x4a\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#

happyTable :: HappyAddr
happyTable :: HappyAddr
happyTable = Addr# -> HappyAddr
HappyA# Addr#
"\x00\x00\x7c\x00\x03\x01\xcd\x00\x18\x01\x21\x00\x7d\x00\xff\xff\xf1\x00\x87\x01\x7e\x00\x6e\x00\x6f\x00\x7f\x00\x80\x00\x53\x01\x8b\x00\x91\x00\x04\x01\x78\x00\x61\x01\x2f\x00\x79\x00\x92\x00\x26\x00\x62\x01\x79\x00\x2c\x00\xce\x00\xcf\x00\x8c\x00\x2b\x00\x7a\x00\x09\x00\x58\x00\x2a\x00\x7a\x00\x09\x00\x29\x00\x59\x00\xa8\x00\x22\x00\x23\x00\x10\x01\xaa\x00\x26\x00\xab\x00\x19\x01\x50\x00\x51\x00\x11\x01\x28\x00\x88\x01\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\x27\x00\x70\x00\x71\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x11\x00\xf2\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x72\xff\x7d\x00\x72\xff\x5e\x00\x5f\x00\x7e\x00\x13\x00\x60\x00\x7f\x00\x80\x00\x61\x00\x62\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x63\x00\x64\x00\x9f\x00\x24\x00\x26\x00\x12\x01\x7e\x00\xa6\x00\xa7\x00\x7f\x00\x80\x00\x69\x01\x78\x00\x40\x00\x6a\x01\x6b\x01\x6c\x01\x7d\x00\xa0\x00\x79\x00\x3f\x00\x7e\x00\xce\x00\xcf\x00\x7f\x00\x80\x00\x06\x01\x63\x00\x0d\x01\x7a\x00\x09\x00\xbc\x00\xbd\x00\xbe\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x7d\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x09\x00\x3e\x00\x7f\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x02\x00\x03\x00\x04\x00\x3d\x00\x2f\x00\x03\x00\x04\x00\x05\x00\x50\x00\x51\x00\x06\x00\x05\x00\x07\x00\x3c\x00\x06\x00\x3b\x00\x07\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x85\x00\x6f\x00\xce\x00\xcf\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\x08\x00\x09\x00\x1e\x00\x1f\x00\x08\x00\x09\x00\x65\x01\x66\x01\x51\x00\x52\x00\x39\x00\xac\x00\x52\x00\x53\x00\x40\x00\x1f\x00\x53\x00\xfa\x00\x09\x00\xab\x00\x52\x00\x3a\x00\x37\x01\x52\x00\x53\x00\x42\x01\x43\x01\x53\x00\x38\x00\x37\x00\x98\x01\x52\x00\x2b\x01\xa2\x00\xa3\x00\x53\x00\x5c\x01\x43\x01\x70\x00\x71\x00\x54\x00\x33\x00\x72\x01\x54\x00\x55\x00\x32\x00\x36\x00\x55\x00\x35\x00\x56\x00\x09\x00\x54\x00\x56\x00\x09\x00\x54\x00\x55\x00\x34\x00\x73\x00\x55\x00\x4a\x00\x56\x00\x09\x00\x54\x00\x56\x00\x09\x00\x49\x00\x55\x00\x48\x00\x96\x01\x52\x00\x47\x00\x56\x00\x09\x00\x53\x00\x46\x00\x94\x01\x52\x00\x45\x00\x26\x00\x43\x00\x53\x00\x6e\x00\x74\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x6d\x00\x6c\x00\x68\x00\xd4\x00\x78\x00\x6b\x00\x6a\x00\x69\x00\x54\x00\xdc\x00\xd6\x00\x79\x00\x55\x00\x67\x00\x66\x00\x54\x00\x65\x00\x56\x00\x09\x00\x55\x00\xae\x00\x7a\x00\x09\x00\xa9\x00\x56\x00\x09\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\xa1\x00\x11\x00\x12\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\x98\x00\x97\x00\x95\x00\x13\x00\x94\x00\x8f\x00\x8d\x00\xc6\x00\xc7\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x8a\x00\x1e\x00\x9b\x00\x9c\x00\xb8\x00\xb9\x00\xb7\x00\x9c\x00\x15\x01\x9c\x00\xe0\x00\x4b\x00\x4c\x00\x4d\x00\x09\x00\x9d\x00\x78\x00\xba\x00\x78\x00\x9d\x00\x78\x00\x9d\x00\x78\x00\x79\x00\x89\x00\x79\x00\x87\x00\x79\x00\x88\x00\x79\x00\x14\x01\x9c\x00\x77\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\xd4\x00\x78\x00\x9d\x00\x78\x00\x76\x00\x75\x00\xd9\x00\xd6\x00\x79\x00\xef\x00\x79\x00\xf0\x00\xee\x00\x8f\x00\x4c\x00\x4d\x00\x09\x00\xed\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x2f\x01\xec\x00\xe6\x00\xe9\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x73\x01\xe4\x00\xe3\x00\xe2\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xdf\x00\x08\x01\xe0\x00\xdc\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xdb\x00\xd8\x00\xb7\x00\xb6\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xd2\x00\xb5\x00\xd3\x00\xa6\x00\xb4\x00\xb0\x00\xaf\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x32\x01\x31\x01\x2d\x01\x2b\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\x2e\x01\x2a\x01\x17\x01\x13\x01\x0a\x01\x09\x01\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x07\x01\x03\x01\x01\x01\x00\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\x4e\x01\xff\x00\xfe\x00\xfd\x00\xfa\x00\xf6\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xf3\x00\xfc\x00\xf7\x00\x53\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xd0\x00\x8f\x00\xf4\x00\x52\x01\x51\x01\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x50\x01\x4f\x01\x4c\x01\x48\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\x74\x01\x4b\x01\x4a\x01\x49\x01\x47\x01\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x45\x01\x42\x01\x41\x01\x3e\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xf9\x00\x3d\x01\x3c\x01\x3b\x01\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x3a\x01\xce\x00\x35\x01\x39\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xd4\x00\x37\x01\x36\x01\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x34\x01\x33\x01\x64\x01\x67\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x0b\x01\x12\x01\x60\x01\x5f\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x8f\x00\x45\x01\x5c\x01\x94\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x55\x01\x59\x01\x58\x01\x57\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\x00\x00\x00\x00\x81\x01\x7f\x01\x56\x01\x80\x01\xc6\x00\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x78\x00\x7d\x01\xd4\x00\x78\x00\x7e\x01\xd5\x00\xd6\x00\x79\x00\x13\x01\xd6\x00\x79\x00\x7c\x01\x7b\x01\x7a\x01\x78\x01\x77\x01\x76\x01\x7a\x00\x09\x00\x70\x01\x7a\x00\x09\x00\xd4\x00\x78\x00\x71\x01\xd4\x00\x78\x00\x6f\x01\x0d\x01\xd6\x00\x79\x00\x4c\x01\xd6\x00\x79\x00\x91\x01\x8b\x01\x8f\x01\x8c\x01\x8a\x01\x5c\x01\x7a\x00\x09\x00\x85\x01\x7a\x00\x09\x00\xd4\x00\x78\x00\x84\x01\xd4\x00\x78\x00\x83\x01\x6d\x01\xd6\x00\x79\x00\x78\x01\xd6\x00\x79\x00\x69\x01\x78\x00\x9c\x01\x82\x01\x8f\x01\x6c\x01\x7a\x00\x09\x00\x79\x00\x7a\x00\x09\x00\x9b\x01\x9a\x01\x96\x01\xd4\x00\x78\x00\xd4\x00\x78\x00\x7a\x00\x09\x00\x8c\x01\xd6\x00\x79\x00\x3f\x01\x79\x00\x98\x01\x94\x01\x93\x01\x9a\x00\x78\x00\x99\x00\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\xa6\x01\x79\x00\xa5\x01\x9f\x01\xa4\x01\x98\x00\x78\x00\x77\x00\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\xa3\x01\x79\x00\xa2\x01\xa7\x01\xa1\x01\xea\x00\x78\x00\xe9\x00\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\xa0\x01\x79\x00\x9e\x01\x9d\x01\x2c\x00\xe7\x00\x78\x00\xdd\x00\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\xa8\x01\x79\x00\xaa\x01\xa9\x01\x2d\x00\xd8\x00\x78\x00\xb1\x00\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x4e\x00\x79\x00\x95\x00\x24\x00\x43\x00\xb0\x00\x78\x00\x28\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x30\x00\x79\x00\x8d\x00\x41\x00\x2c\x00\x27\x01\x78\x00\x26\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x92\x00\x79\x00\xe6\x00\xe4\x00\xd0\x00\x25\x01\x78\x00\x24\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\xcb\x00\x79\x00\xb2\x00\x2f\x01\x0e\x01\x23\x01\x78\x00\x22\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x01\x01\x79\x00\xf4\x00\x0b\x01\x45\x01\x21\x01\x78\x00\x20\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x3e\x01\x79\x00\x62\x01\x5d\x01\x5a\x01\x1f\x01\x78\x00\x1e\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x59\x01\x79\x00\x74\x01\x8d\x01\x88\x01\x1d\x01\x78\x00\x1c\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x91\x01\x79\x00\x00\x00\x85\x01\x00\x00\x1b\x01\x78\x00\x1a\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x19\x01\x78\x00\xf7\x00\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x68\x01\x78\x00\x67\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x00\x00\x79\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\x00\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x00\x00\x00\x00\x00\x00\xc6\x00\xc7\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x00\xc7\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\xa6\x00\xa7\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xa1\x00\xa2\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x4c\x00\x4d\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#

happyReduceArr :: Array
  ByteOff
  (Int#
   -> Located CmmToken
   -> Int#
   -> Happy_IntList
   -> HappyStk HappyAbsSyn
   -> PD HappyAbsSyn)
happyReduceArr = (ByteOff, ByteOff)
-> [(ByteOff,
     Int#
     -> Located CmmToken
     -> Int#
     -> Happy_IntList
     -> HappyStk HappyAbsSyn
     -> PD HappyAbsSyn)]
-> Array
     ByteOff
     (Int#
      -> Located CmmToken
      -> Int#
      -> Happy_IntList
      -> HappyStk HappyAbsSyn
      -> PD HappyAbsSyn)
forall i e. Ix i => (i, i) -> [(i, e)] -> Array i e
Happy_Data_Array.array (ByteOff
1, ByteOff
169) [
	(ByteOff
1 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_1),
	(ByteOff
2 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_2),
	(ByteOff
3 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_3),
	(ByteOff
4 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_4),
	(ByteOff
5 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_5),
	(ByteOff
6 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_6),
	(ByteOff
7 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_7),
	(ByteOff
8 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_8),
	(ByteOff
9 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_9),
	(ByteOff
10 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_10),
	(ByteOff
11 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_11),
	(ByteOff
12 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_12),
	(ByteOff
13 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_13),
	(ByteOff
14 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_14),
	(ByteOff
15 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_15),
	(ByteOff
16 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_16),
	(ByteOff
17 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_17),
	(ByteOff
18 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_18),
	(ByteOff
19 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_19),
	(ByteOff
20 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_20),
	(ByteOff
21 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_21),
	(ByteOff
22 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_22),
	(ByteOff
23 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_23),
	(ByteOff
24 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_24),
	(ByteOff
25 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_25),
	(ByteOff
26 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_26),
	(ByteOff
27 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_27),
	(ByteOff
28 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_28),
	(ByteOff
29 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_29),
	(ByteOff
30 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_30),
	(ByteOff
31 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_31),
	(ByteOff
32 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_32),
	(ByteOff
33 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_33),
	(ByteOff
34 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_34),
	(ByteOff
35 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_35),
	(ByteOff
36 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_36),
	(ByteOff
37 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_37),
	(ByteOff
38 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_38),
	(ByteOff
39 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_39),
	(ByteOff
40 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_40),
	(ByteOff
41 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_41),
	(ByteOff
42 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_42),
	(ByteOff
43 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_43),
	(ByteOff
44 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_44),
	(ByteOff
45 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_45),
	(ByteOff
46 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_46),
	(ByteOff
47 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_47),
	(ByteOff
48 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_48),
	(ByteOff
49 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_49),
	(ByteOff
50 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_50),
	(ByteOff
51 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_51),
	(ByteOff
52 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_52),
	(ByteOff
53 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_53),
	(ByteOff
54 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_54),
	(ByteOff
55 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_55),
	(ByteOff
56 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_56),
	(ByteOff
57 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_57),
	(ByteOff
58 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_58),
	(ByteOff
59 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_59),
	(ByteOff
60 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_60),
	(ByteOff
61 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_61),
	(ByteOff
62 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_62),
	(ByteOff
63 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_63),
	(ByteOff
64 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_64),
	(ByteOff
65 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_65),
	(ByteOff
66 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_66),
	(ByteOff
67 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_67),
	(ByteOff
68 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_68),
	(ByteOff
69 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_69),
	(ByteOff
70 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_70),
	(ByteOff
71 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_71),
	(ByteOff
72 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_72),
	(ByteOff
73 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_73),
	(ByteOff
74 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_74),
	(ByteOff
75 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_75),
	(ByteOff
76 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_76),
	(ByteOff
77 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_77),
	(ByteOff
78 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_78),
	(ByteOff
79 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_79),
	(ByteOff
80 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_80),
	(ByteOff
81 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_81),
	(ByteOff
82 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_82),
	(ByteOff
83 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_83),
	(ByteOff
84 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_84),
	(ByteOff
85 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_85),
	(ByteOff
86 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_86),
	(ByteOff
87 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_87),
	(ByteOff
88 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_88),
	(ByteOff
89 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_89),
	(ByteOff
90 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_90),
	(ByteOff
91 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_91),
	(ByteOff
92 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_92),
	(ByteOff
93 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_93),
	(ByteOff
94 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_94),
	(ByteOff
95 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_95),
	(ByteOff
96 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_96),
	(ByteOff
97 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_97),
	(ByteOff
98 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_98),
	(ByteOff
99 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_99),
	(ByteOff
100 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_100),
	(ByteOff
101 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_101),
	(ByteOff
102 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_102),
	(ByteOff
103 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_103),
	(ByteOff
104 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_104),
	(ByteOff
105 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_105),
	(ByteOff
106 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_106),
	(ByteOff
107 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_107),
	(ByteOff
108 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_108),
	(ByteOff
109 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_109),
	(ByteOff
110 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_110),
	(ByteOff
111 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_111),
	(ByteOff
112 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_112),
	(ByteOff
113 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_113),
	(ByteOff
114 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_114),
	(ByteOff
115 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_115),
	(ByteOff
116 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_116),
	(ByteOff
117 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_117),
	(ByteOff
118 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_118),
	(ByteOff
119 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_119),
	(ByteOff
120 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_120),
	(ByteOff
121 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_121),
	(ByteOff
122 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_122),
	(ByteOff
123 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_123),
	(ByteOff
124 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_124),
	(ByteOff
125 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_125),
	(ByteOff
126 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_126),
	(ByteOff
127 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_127),
	(ByteOff
128 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_128),
	(ByteOff
129 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_129),
	(ByteOff
130 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_130),
	(ByteOff
131 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_131),
	(ByteOff
132 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_132),
	(ByteOff
133 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_133),
	(ByteOff
134 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_134),
	(ByteOff
135 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_135),
	(ByteOff
136 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_136),
	(ByteOff
137 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_137),
	(ByteOff
138 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_138),
	(ByteOff
139 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_139),
	(ByteOff
140 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_140),
	(ByteOff
141 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_141),
	(ByteOff
142 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_142),
	(ByteOff
143 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_143),
	(ByteOff
144 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_144),
	(ByteOff
145 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_145),
	(ByteOff
146 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_146),
	(ByteOff
147 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_147),
	(ByteOff
148 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_148),
	(ByteOff
149 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_149),
	(ByteOff
150 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_150),
	(ByteOff
151 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_151),
	(ByteOff
152 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_152),
	(ByteOff
153 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_153),
	(ByteOff
154 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_154),
	(ByteOff
155 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_155),
	(ByteOff
156 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_156),
	(ByteOff
157 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_157),
	(ByteOff
158 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_158),
	(ByteOff
159 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_159),
	(ByteOff
160 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_160),
	(ByteOff
161 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_161),
	(ByteOff
162 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_162),
	(ByteOff
163 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_163),
	(ByteOff
164 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_164),
	(ByteOff
165 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_165),
	(ByteOff
166 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_166),
	(ByteOff
167 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_167),
	(ByteOff
168 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_168),
	(ByteOff
169 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_169)
	]

happy_n_terms :: ByteOff
happy_n_terms = ByteOff
78 :: Int
happy_n_nonterms :: ByteOff
happy_n_nonterms = ByteOff
54 :: Int

happyReduce_1 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_1 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_1 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
0# HappyAbsSyn
happyReduction_1
happyReduction_1 :: HappyAbsSyn
happyReduction_1  =  CmmParse () -> HappyAbsSyn
happyIn4
		 (() -> CmmParse ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
	)

happyReduce_2 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_2 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_2 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
0# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_2
happyReduction_2 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_2 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap5
happyOut5 HappyAbsSyn
happy_x_1 of { (HappyWrap5 CmmParse ()
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap4
happyOut4 HappyAbsSyn
happy_x_2 of { (HappyWrap4 CmmParse ()
happy_var_2) -> 
	CmmParse () -> HappyAbsSyn
happyIn4
		 (do CmmParse ()
happy_var_1; CmmParse ()
happy_var_2
	)}}

happyReduce_3 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_3 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_3 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
1# HappyAbsSyn -> HappyAbsSyn
happyReduction_3
happyReduction_3 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_3 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap11
happyOut11 HappyAbsSyn
happy_x_1 of { (HappyWrap11 CmmParse ()
happy_var_1) -> 
	CmmParse () -> HappyAbsSyn
happyIn5
		 (CmmParse ()
happy_var_1
	)}

happyReduce_4 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_4 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_4 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
1# HappyAbsSyn -> HappyAbsSyn
happyReduction_4
happyReduction_4 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_4 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap6
happyOut6 HappyAbsSyn
happy_x_1 of { (HappyWrap6 CmmParse ()
happy_var_1) -> 
	CmmParse () -> HappyAbsSyn
happyIn5
		 (CmmParse ()
happy_var_1
	)}

happyReduce_5 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_5 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_5 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
1# HappyAbsSyn -> HappyAbsSyn
happyReduction_5
happyReduction_5 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_5 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap16
happyOut16 HappyAbsSyn
happy_x_1 of { (HappyWrap16 CmmParse ()
happy_var_1) -> 
	CmmParse () -> HappyAbsSyn
happyIn5
		 (CmmParse ()
happy_var_1
	)}

happyReduce_6 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_6 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_6 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
8# Int#
1# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_6
happyReduction_6 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_6 (HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse ())
-> (CmmParse () -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_5)) -> 
	case HappyAbsSyn -> HappyWrap10
happyOut10 HappyAbsSyn
happy_x_6 of { (HappyWrap10 [CmmParse CmmExpr]
happy_var_6) -> 
	( P (CmmParse ()) -> PD (CmmParse ())
forall a. P a -> PD a
liftP (P (CmmParse ()) -> PD (CmmParse ()))
-> ((UnitId -> CmmParse ()) -> P (CmmParse ()))
-> (UnitId -> CmmParse ())
-> PD (CmmParse ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UnitId -> CmmParse ()) -> P (CmmParse ())
forall a. (UnitId -> a) -> P a
withHomeUnitId ((UnitId -> CmmParse ()) -> PD (CmmParse ()))
-> (UnitId -> CmmParse ()) -> PD (CmmParse ())
forall a b. (a -> b) -> a -> b
$ \UnitId
pkg ->
                   do [CmmExpr]
lits <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse CmmExpr]
happy_var_6;
                      UnitId -> FastString -> FastString -> [CmmLit] -> CmmParse ()
staticClosure UnitId
pkg FastString
happy_var_3 FastString
happy_var_5 ((CmmExpr -> CmmLit) -> [CmmExpr] -> [CmmLit]
forall a b. (a -> b) -> [a] -> [b]
map CmmExpr -> CmmLit
getLit [CmmExpr]
lits))}}})
	) (\CmmParse ()
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse () -> HappyAbsSyn
happyIn5 CmmParse ()
r))

happyReduce_7 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_7 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_7 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
6# Int#
2# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_7
happyReduction_7 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_7 (HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_String      String
happy_var_2)) -> 
	case HappyAbsSyn -> HappyWrap7
happyOut7 HappyAbsSyn
happy_x_4 of { (HappyWrap7 CmmParse CLabel
happy_var_4) -> 
	case HappyAbsSyn -> HappyWrap8
happyOut8 HappyAbsSyn
happy_x_5 of { (HappyWrap8 [CmmParse [CmmStatic]]
happy_var_5) -> 
	CmmParse () -> HappyAbsSyn
happyIn6
		 (do CLabel
lbl <- CmmParse CLabel
happy_var_4;
                     [[CmmStatic]]
ss <- [CmmParse [CmmStatic]] -> CmmParse [[CmmStatic]]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse [CmmStatic]]
happy_var_5;
                     FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code (CmmDecl -> FCode ()
emitDecl (Section -> GenCmmStatics 'False -> CmmDecl
forall d h g. Section -> d -> GenCmmDecl d h g
CmmData (SectionType -> CLabel -> Section
Section (String -> SectionType
section String
happy_var_2) CLabel
lbl) (CLabel -> [CmmStatic] -> GenCmmStatics 'False
forall (rawOnly :: Bool).
CLabel -> [CmmStatic] -> GenCmmStatics rawOnly
CmmStaticsRaw CLabel
lbl ([[CmmStatic]] -> [CmmStatic]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [[CmmStatic]]
ss))))
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_8 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_8 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_8 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
2# Int#
3# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_8
happyReduction_8 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_8 (HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse CLabel)
-> (CmmParse CLabel -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	( P (CmmParse CLabel) -> PD (CmmParse CLabel)
forall a. P a -> PD a
liftP (P (CmmParse CLabel) -> PD (CmmParse CLabel))
-> ((UnitId -> CmmParse CLabel) -> P (CmmParse CLabel))
-> (UnitId -> CmmParse CLabel)
-> PD (CmmParse CLabel)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UnitId -> CmmParse CLabel) -> P (CmmParse CLabel)
forall a. (UnitId -> a) -> P a
withHomeUnitId ((UnitId -> CmmParse CLabel) -> PD (CmmParse CLabel))
-> (UnitId -> CmmParse CLabel) -> PD (CmmParse CLabel)
forall a b. (a -> b) -> a -> b
$ \UnitId
pkg ->
                   CLabel -> CmmParse CLabel
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> NeedExternDecl -> FastString -> CLabel
mkCmmDataLabel UnitId
pkg (Bool -> NeedExternDecl
NeedExternDecl Bool
False) FastString
happy_var_1))})
	) (\CmmParse CLabel
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse CLabel -> HappyAbsSyn
happyIn7 CmmParse CLabel
r))

happyReduce_9 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_9 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_9 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
4# HappyAbsSyn
happyReduction_9
happyReduction_9 :: HappyAbsSyn
happyReduction_9  =  [CmmParse [CmmStatic]] -> HappyAbsSyn
happyIn8
		 ([]
	)

happyReduce_10 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_10 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_10 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
4# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_10
happyReduction_10 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_10 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap9
happyOut9 HappyAbsSyn
happy_x_1 of { (HappyWrap9 CmmParse [CmmStatic]
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap8
happyOut8 HappyAbsSyn
happy_x_2 of { (HappyWrap8 [CmmParse [CmmStatic]]
happy_var_2) -> 
	[CmmParse [CmmStatic]] -> HappyAbsSyn
happyIn8
		 (CmmParse [CmmStatic]
happy_var_1 CmmParse [CmmStatic]
-> [CmmParse [CmmStatic]] -> [CmmParse [CmmStatic]]
forall a. a -> [a] -> [a]
: [CmmParse [CmmStatic]]
happy_var_2
	)}}

happyReduce_11 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_11 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_11 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
5# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_11
happyReduction_11 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_11 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 CmmParse CmmExpr
happy_var_2) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 (do CmmExpr
e <- CmmParse CmmExpr
happy_var_2;
                             [CmmStatic] -> CmmParse [CmmStatic]
forall (m :: * -> *) a. Monad m => a -> m a
return [CmmLit -> CmmStatic
CmmStaticLit (CmmExpr -> CmmLit
getLit CmmExpr
e)]
	)}

happyReduce_12 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_12 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_12 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
5# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_12
happyReduction_12 :: p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_12 p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
happy_x_1 of { (HappyWrap56 CmmType
happy_var_1) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 ([CmmStatic] -> CmmParse [CmmStatic]
forall (m :: * -> *) a. Monad m => a -> m a
return [ByteOff -> CmmStatic
CmmUninitialised
                                                        (Width -> ByteOff
widthInBytes (CmmType -> Width
typeWidth CmmType
happy_var_1))]
	)}

happyReduce_13 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_13 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_13 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_13
happyReduction_13 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_13 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { (L SrcSpan
_ (CmmT_String      String
happy_var_4)) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 ([CmmStatic] -> CmmParse [CmmStatic]
forall (m :: * -> *) a. Monad m => a -> m a
return [String -> CmmStatic
mkString String
happy_var_4]
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}

happyReduce_14 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_14 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_14 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_14
happyReduction_14 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_14 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_3)) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 ([CmmStatic] -> CmmParse [CmmStatic]
forall (m :: * -> *) a. Monad m => a -> m a
return [ByteOff -> CmmStatic
CmmUninitialised
                                                        (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_3)]
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}

happyReduce_15 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_15 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_15 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_15
happyReduction_15 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_15 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap57
happyOut57 HappyAbsSyn
happy_x_1 of { (HappyWrap57 CmmType
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_3)) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 ([CmmStatic] -> CmmParse [CmmStatic]
forall (m :: * -> *) a. Monad m => a -> m a
return [ByteOff -> CmmStatic
CmmUninitialised
                                                (Width -> ByteOff
widthInBytes (CmmType -> Width
typeWidth CmmType
happy_var_1) ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
*
                                                        Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_3)]
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_16 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_16 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_16 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_16
happyReduction_16 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_16 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> HappyWrap10
happyOut10 HappyAbsSyn
happy_x_4 of { (HappyWrap10 [CmmParse CmmExpr]
happy_var_4) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 (do { [CmmExpr]
lits <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse CmmExpr]
happy_var_4
                ; DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
                     ; [CmmStatic] -> CmmParse [CmmStatic]
forall (m :: * -> *) a. Monad m => a -> m a
return ([CmmStatic] -> CmmParse [CmmStatic])
-> [CmmStatic] -> CmmParse [CmmStatic]
forall a b. (a -> b) -> a -> b
$ (CmmLit -> CmmStatic) -> [CmmLit] -> [CmmStatic]
forall a b. (a -> b) -> [a] -> [b]
map CmmLit -> CmmStatic
CmmStaticLit ([CmmLit] -> [CmmStatic]) -> [CmmLit] -> [CmmStatic]
forall a b. (a -> b) -> a -> b
$
                        DynFlags
-> CLabel
-> CostCentreStack
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
mkStaticClosure DynFlags
dflags (FastString
-> Maybe ByteOff -> ForeignLabelSource -> FunctionOrData -> CLabel
mkForeignLabel FastString
happy_var_3 Maybe ByteOff
forall a. Maybe a
Nothing ForeignLabelSource
ForeignLabelInExternalPackage FunctionOrData
IsData)
                         -- mkForeignLabel because these are only used
                         -- for CHARLIKE and INTLIKE closures in the RTS.
                        CostCentreStack
dontCareCCS ((CmmExpr -> CmmLit) -> [CmmExpr] -> [CmmLit]
forall a b. (a -> b) -> [a] -> [b]
map CmmExpr -> CmmLit
getLit [CmmExpr]
lits) [] [] [] }
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_17 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_17 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_17 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
6# HappyAbsSyn
happyReduction_17
happyReduction_17 :: HappyAbsSyn
happyReduction_17  =  [CmmParse CmmExpr] -> HappyAbsSyn
happyIn10
		 ([]
	)

happyReduce_18 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_18 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_18 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
6# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_18
happyReduction_18 :: HappyAbsSyn -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_18 HappyAbsSyn
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap10
happyOut10 HappyAbsSyn
happy_x_3 of { (HappyWrap10 [CmmParse CmmExpr]
happy_var_3) -> 
	[CmmParse CmmExpr] -> HappyAbsSyn
happyIn10
		 (CmmParse CmmExpr
happy_var_2 CmmParse CmmExpr -> [CmmParse CmmExpr] -> [CmmParse CmmExpr]
forall a. a -> [a] -> [a]
: [CmmParse CmmExpr]
happy_var_3
	)}}

happyReduce_19 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_19 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_19 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
7# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_19
happyReduction_19 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_19 (HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap14
happyOut14 HappyAbsSyn
happy_x_1 of { (HappyWrap14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap12
happyOut12 HappyAbsSyn
happy_x_2 of { (HappyWrap12 Convention
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap52
happyOut52 HappyAbsSyn
happy_x_3 of { (HappyWrap52 Maybe [CmmParse LocalReg]
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
happy_x_4 of { (HappyWrap13 CmmParse ()
happy_var_4) -> 
	CmmParse () -> HappyAbsSyn
happyIn11
		 (do ((CLabel
entry_ret_label, Maybe CmmInfoTable
info, [LocalReg]
stk_formals, [LocalReg]
formals), CmmAGraphScoped
agraph) <-
                       CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
-> CmmParse
     ((CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg]),
      CmmAGraphScoped)
forall a. CmmParse a -> CmmParse (a, CmmAGraphScoped)
getCodeScoped (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
 -> CmmParse
      ((CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg]),
       CmmAGraphScoped))
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
-> CmmParse
     ((CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg]),
      CmmAGraphScoped)
forall a b. (a -> b) -> a -> b
$ CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
forall a. CmmParse a -> CmmParse a
loopDecls (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
 -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg]))
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
forall a b. (a -> b) -> a -> b
$ do {
                         (CLabel
entry_ret_label, Maybe CmmInfoTable
info, [LocalReg]
stk_formals) <- CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
happy_var_1;
                         DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags;
                         [LocalReg]
formals <- [CmmParse LocalReg] -> CmmParse [LocalReg]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence ([CmmParse LocalReg]
-> Maybe [CmmParse LocalReg] -> [CmmParse LocalReg]
forall a. a -> Maybe a -> a
fromMaybe [] Maybe [CmmParse LocalReg]
happy_var_3);
                         String -> CmmParse () -> CmmParse ()
forall a. String -> CmmParse a -> CmmParse a
withName (DynFlags -> SDoc -> String
showSDoc DynFlags
dflags (CLabel -> SDoc
forall a. Outputable a => a -> SDoc
ppr CLabel
entry_ret_label))
                           CmmParse ()
happy_var_4;
                         (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
forall (m :: * -> *) a. Monad m => a -> m a
return (CLabel
entry_ret_label, Maybe CmmInfoTable
info, [LocalReg]
stk_formals, [LocalReg]
formals) }
                     let do_layout :: Bool
do_layout = Maybe [CmmParse LocalReg] -> Bool
forall a. Maybe a -> Bool
isJust Maybe [CmmParse LocalReg]
happy_var_3
                     FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code (Convention
-> Maybe CmmInfoTable
-> CLabel
-> [LocalReg]
-> [LocalReg]
-> CmmAGraphScoped
-> Bool
-> FCode ()
emitProcWithStackFrame Convention
happy_var_2 Maybe CmmInfoTable
info
                                CLabel
entry_ret_label [LocalReg]
stk_formals [LocalReg]
formals CmmAGraphScoped
agraph
                                Bool
do_layout )
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}}

happyReduce_20 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_20 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_20 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
8# HappyAbsSyn
happyReduction_20
happyReduction_20 :: HappyAbsSyn
happyReduction_20  =  Convention -> HappyAbsSyn
happyIn12
		 (Convention
NativeNodeCall
	)

happyReduce_21 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_21 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_21 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
8# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_21
happyReduction_21 :: p -> HappyAbsSyn
happyReduction_21 p
happy_x_1
	 =  Convention -> HappyAbsSyn
happyIn12
		 (Convention
NativeReturn
	)

happyReduce_22 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_22 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_22 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
9# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_22
happyReduction_22 :: p -> HappyAbsSyn
happyReduction_22 p
happy_x_1
	 =  CmmParse () -> HappyAbsSyn
happyIn13
		 (() -> CmmParse ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
	)

happyReduce_23 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_23 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_23 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
9# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_23
happyReduction_23 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_23 HappyAbsSyn
happy_x_3
	HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { Located CmmToken
happy_var_1 -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_2 of { (HappyWrap15 CmmParse ()
happy_var_2) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { Located CmmToken
happy_var_3 -> 
	CmmParse () -> HappyAbsSyn
happyIn13
		 (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_1 Located CmmToken
happy_var_3 CmmParse ()
happy_var_2
	)}}}

happyReduce_24 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_24 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_24 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
1# Int#
10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_24
happyReduction_24 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_24 (HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	( P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. P a -> PD a
liftP (P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> ((UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
    -> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. (UnitId -> a) -> P a
withHomeUnitId ((UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ \UnitId
pkg ->
                   do   FastString -> UnitId -> CmmParse ()
newFunctionName FastString
happy_var_1 UnitId
pkg
                        (CLabel, Maybe CmmInfoTable, [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> FastString -> CLabel
mkCmmCodeLabel UnitId
pkg FastString
happy_var_1, Maybe CmmInfoTable
forall a. Maybe a
Nothing, []))})
	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r))

happyReduce_25 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_25 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_25 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
14# Int#
10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_25
happyReduction_25 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_25 (HappyAbsSyn
happy_x_14 `HappyStk`
	HappyAbsSyn
happy_x_13 `HappyStk`
	HappyAbsSyn
happy_x_12 `HappyStk`
	HappyAbsSyn
happy_x_11 `HappyStk`
	HappyAbsSyn
happy_x_10 `HappyStk`
	HappyAbsSyn
happy_x_9 `HappyStk`
	HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_5)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_7)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_9 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_9)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_11 of { (L SrcSpan
_ (CmmT_String      String
happy_var_11)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_13 of { (L SrcSpan
_ (CmmT_String      String
happy_var_13)) -> 
	( P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. P a -> PD a
liftP (P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> ((UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
    -> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. (UnitId -> a) -> P a
withHomeUnitId ((UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ \UnitId
pkg ->
                   do DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
                      let prof :: ProfilingInfo
prof = DynFlags -> String -> String -> ProfilingInfo
profilingInfo DynFlags
dflags String
happy_var_11 String
happy_var_13
                          rep :: SMRep
rep  = ByteOff -> SMRep -> SMRep
mkRTSRep (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_9) (SMRep -> SMRep) -> SMRep -> SMRep
forall a b. (a -> b) -> a -> b
$
                                   DynFlags -> Bool -> ByteOff -> ByteOff -> ClosureTypeInfo -> SMRep
mkHeapRep DynFlags
dflags Bool
False (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5)
                                                   (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_7) ClosureTypeInfo
Thunk
                              -- not really Thunk, but that makes the info table
                              -- we want.
                      (CLabel, Maybe CmmInfoTable, [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> FastString -> CLabel
mkCmmEntryLabel UnitId
pkg FastString
happy_var_3,
                              CmmInfoTable -> Maybe CmmInfoTable
forall a. a -> Maybe a
Just (CmmInfoTable -> Maybe CmmInfoTable)
-> CmmInfoTable -> Maybe CmmInfoTable
forall a b. (a -> b) -> a -> b
$ CmmInfoTable :: CLabel
-> SMRep
-> ProfilingInfo
-> Maybe CLabel
-> Maybe (Id, CostCentreStack)
-> CmmInfoTable
CmmInfoTable { cit_lbl :: CLabel
cit_lbl = UnitId -> FastString -> CLabel
mkCmmInfoLabel UnitId
pkg FastString
happy_var_3
                                           , cit_rep :: SMRep
cit_rep = SMRep
rep
                                           , cit_prof :: ProfilingInfo
cit_prof = ProfilingInfo
prof, cit_srt :: Maybe CLabel
cit_srt = Maybe CLabel
forall a. Maybe a
Nothing, cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall a. Maybe a
Nothing },
                              []))}}}}}})
	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r))

happyReduce_26 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_26 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_26 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
16# Int#
10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_26
happyReduction_26 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_26 (HappyAbsSyn
happy_x_16 `HappyStk`
	HappyAbsSyn
happy_x_15 `HappyStk`
	HappyAbsSyn
happy_x_14 `HappyStk`
	HappyAbsSyn
happy_x_13 `HappyStk`
	HappyAbsSyn
happy_x_12 `HappyStk`
	HappyAbsSyn
happy_x_11 `HappyStk`
	HappyAbsSyn
happy_x_10 `HappyStk`
	HappyAbsSyn
happy_x_9 `HappyStk`
	HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_5)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_7)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_9 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_9)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_11 of { (L SrcSpan
_ (CmmT_String      String
happy_var_11)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_13 of { (L SrcSpan
_ (CmmT_String      String
happy_var_13)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_15 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_15)) -> 
	( P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. P a -> PD a
liftP (P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> ((UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
    -> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. (UnitId -> a) -> P a
withHomeUnitId ((UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ \UnitId
pkg ->
                   do DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
                      let prof :: ProfilingInfo
prof = DynFlags -> String -> String -> ProfilingInfo
profilingInfo DynFlags
dflags String
happy_var_11 String
happy_var_13
                          ty :: ClosureTypeInfo
ty   = ByteOff -> ArgDescr -> ClosureTypeInfo
Fun ByteOff
0 (ByteOff -> ArgDescr
ArgSpec (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_15))
                                -- Arity zero, arg_type happy_var_15
                          rep :: SMRep
rep = ByteOff -> SMRep -> SMRep
mkRTSRep (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_9) (SMRep -> SMRep) -> SMRep -> SMRep
forall a b. (a -> b) -> a -> b
$
                                    DynFlags -> Bool -> ByteOff -> ByteOff -> ClosureTypeInfo -> SMRep
mkHeapRep DynFlags
dflags Bool
False (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5)
                                                    (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_7) ClosureTypeInfo
ty
                      (CLabel, Maybe CmmInfoTable, [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> FastString -> CLabel
mkCmmEntryLabel UnitId
pkg FastString
happy_var_3,
                              CmmInfoTable -> Maybe CmmInfoTable
forall a. a -> Maybe a
Just (CmmInfoTable -> Maybe CmmInfoTable)
-> CmmInfoTable -> Maybe CmmInfoTable
forall a b. (a -> b) -> a -> b
$ CmmInfoTable :: CLabel
-> SMRep
-> ProfilingInfo
-> Maybe CLabel
-> Maybe (Id, CostCentreStack)
-> CmmInfoTable
CmmInfoTable { cit_lbl :: CLabel
cit_lbl = UnitId -> FastString -> CLabel
mkCmmInfoLabel UnitId
pkg FastString
happy_var_3
                                           , cit_rep :: SMRep
cit_rep = SMRep
rep
                                           , cit_prof :: ProfilingInfo
cit_prof = ProfilingInfo
prof, cit_srt :: Maybe CLabel
cit_srt = Maybe CLabel
forall a. Maybe a
Nothing, cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall a. Maybe a
Nothing },
                              []))}}}}}}})
	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r))

happyReduce_27 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_27 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_27 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
16# Int#
10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_27
happyReduction_27 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_27 (HappyAbsSyn
happy_x_16 `HappyStk`
	HappyAbsSyn
happy_x_15 `HappyStk`
	HappyAbsSyn
happy_x_14 `HappyStk`
	HappyAbsSyn
happy_x_13 `HappyStk`
	HappyAbsSyn
happy_x_12 `HappyStk`
	HappyAbsSyn
happy_x_11 `HappyStk`
	HappyAbsSyn
happy_x_10 `HappyStk`
	HappyAbsSyn
happy_x_9 `HappyStk`
	HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_5)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_7)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_9 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_9)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_11 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_11)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_13 of { (L SrcSpan
_ (CmmT_String      String
happy_var_13)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_15 of { (L SrcSpan
_ (CmmT_String      String
happy_var_15)) -> 
	( P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. P a -> PD a
liftP (P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> ((UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
    -> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. (UnitId -> a) -> P a
withHomeUnitId ((UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ \UnitId
pkg ->
                   do DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
                      let prof :: ProfilingInfo
prof = DynFlags -> String -> String -> ProfilingInfo
profilingInfo DynFlags
dflags String
happy_var_13 String
happy_var_15
                          ty :: ClosureTypeInfo
ty  = ByteOff -> ConstrDescription -> ClosureTypeInfo
Constr (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_9)  -- Tag
                                       (String -> ConstrDescription
BS8.pack String
happy_var_13)
                          rep :: SMRep
rep = ByteOff -> SMRep -> SMRep
mkRTSRep (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_11) (SMRep -> SMRep) -> SMRep -> SMRep
forall a b. (a -> b) -> a -> b
$
                                  DynFlags -> Bool -> ByteOff -> ByteOff -> ClosureTypeInfo -> SMRep
mkHeapRep DynFlags
dflags Bool
False (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5)
                                                  (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_7) ClosureTypeInfo
ty
                      (CLabel, Maybe CmmInfoTable, [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> FastString -> CLabel
mkCmmEntryLabel UnitId
pkg FastString
happy_var_3,
                              CmmInfoTable -> Maybe CmmInfoTable
forall a. a -> Maybe a
Just (CmmInfoTable -> Maybe CmmInfoTable)
-> CmmInfoTable -> Maybe CmmInfoTable
forall a b. (a -> b) -> a -> b
$ CmmInfoTable :: CLabel
-> SMRep
-> ProfilingInfo
-> Maybe CLabel
-> Maybe (Id, CostCentreStack)
-> CmmInfoTable
CmmInfoTable { cit_lbl :: CLabel
cit_lbl = UnitId -> FastString -> CLabel
mkCmmInfoLabel UnitId
pkg FastString
happy_var_3
                                           , cit_rep :: SMRep
cit_rep = SMRep
rep
                                           , cit_prof :: ProfilingInfo
cit_prof = ProfilingInfo
prof, cit_srt :: Maybe CLabel
cit_srt = Maybe CLabel
forall a. Maybe a
Nothing,cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall a. Maybe a
Nothing },
                              []))}}}}}}})
	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r))

happyReduce_28 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_28 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_28 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
12# Int#
10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_28
happyReduction_28 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_28 (HappyAbsSyn
happy_x_12 `HappyStk`
	HappyAbsSyn
happy_x_11 `HappyStk`
	HappyAbsSyn
happy_x_10 `HappyStk`
	HappyAbsSyn
happy_x_9 `HappyStk`
	HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_5)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_7)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_9 of { (L SrcSpan
_ (CmmT_String      String
happy_var_9)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_11 of { (L SrcSpan
_ (CmmT_String      String
happy_var_11)) -> 
	( P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. P a -> PD a
liftP (P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> ((UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
    -> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. (UnitId -> a) -> P a
withHomeUnitId ((UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ \UnitId
pkg ->
                   do DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
                      let prof :: ProfilingInfo
prof = DynFlags -> String -> String -> ProfilingInfo
profilingInfo DynFlags
dflags String
happy_var_9 String
happy_var_11
                          ty :: ClosureTypeInfo
ty  = ByteOff -> ClosureTypeInfo
ThunkSelector (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5)
                          rep :: SMRep
rep = ByteOff -> SMRep -> SMRep
mkRTSRep (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_7) (SMRep -> SMRep) -> SMRep -> SMRep
forall a b. (a -> b) -> a -> b
$
                                   DynFlags -> Bool -> ByteOff -> ByteOff -> ClosureTypeInfo -> SMRep
mkHeapRep DynFlags
dflags Bool
False ByteOff
0 ByteOff
0 ClosureTypeInfo
ty
                      (CLabel, Maybe CmmInfoTable, [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> FastString -> CLabel
mkCmmEntryLabel UnitId
pkg FastString
happy_var_3,
                              CmmInfoTable -> Maybe CmmInfoTable
forall a. a -> Maybe a
Just (CmmInfoTable -> Maybe CmmInfoTable)
-> CmmInfoTable -> Maybe CmmInfoTable
forall a b. (a -> b) -> a -> b
$ CmmInfoTable :: CLabel
-> SMRep
-> ProfilingInfo
-> Maybe CLabel
-> Maybe (Id, CostCentreStack)
-> CmmInfoTable
CmmInfoTable { cit_lbl :: CLabel
cit_lbl = UnitId -> FastString -> CLabel
mkCmmInfoLabel UnitId
pkg FastString
happy_var_3
                                           , cit_rep :: SMRep
cit_rep = SMRep
rep
                                           , cit_prof :: ProfilingInfo
cit_prof = ProfilingInfo
prof, cit_srt :: Maybe CLabel
cit_srt = Maybe CLabel
forall a. Maybe a
Nothing, cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall a. Maybe a
Nothing },
                              []))}}}}})
	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r))

happyReduce_29 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_29 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_29 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
6# Int#
10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_29
happyReduction_29 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_29 (HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_5)) -> 
	( P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. P a -> PD a
liftP (P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> ((UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
    -> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. (UnitId -> a) -> P a
withHomeUnitId ((UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ \UnitId
pkg ->
                   do let prof :: ProfilingInfo
prof = ProfilingInfo
NoProfilingInfo
                          rep :: SMRep
rep  = ByteOff -> SMRep -> SMRep
mkRTSRep (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5) (SMRep -> SMRep) -> SMRep -> SMRep
forall a b. (a -> b) -> a -> b
$ [Bool] -> SMRep
mkStackRep []
                      (CLabel, Maybe CmmInfoTable, [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> FastString -> CLabel
mkCmmRetLabel UnitId
pkg FastString
happy_var_3,
                              CmmInfoTable -> Maybe CmmInfoTable
forall a. a -> Maybe a
Just (CmmInfoTable -> Maybe CmmInfoTable)
-> CmmInfoTable -> Maybe CmmInfoTable
forall a b. (a -> b) -> a -> b
$ CmmInfoTable :: CLabel
-> SMRep
-> ProfilingInfo
-> Maybe CLabel
-> Maybe (Id, CostCentreStack)
-> CmmInfoTable
CmmInfoTable { cit_lbl :: CLabel
cit_lbl = UnitId -> FastString -> CLabel
mkCmmRetInfoLabel UnitId
pkg FastString
happy_var_3
                                           , cit_rep :: SMRep
cit_rep = SMRep
rep
                                           , cit_prof :: ProfilingInfo
cit_prof = ProfilingInfo
prof, cit_srt :: Maybe CLabel
cit_srt = Maybe CLabel
forall a. Maybe a
Nothing, cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall a. Maybe a
Nothing },
                              []))}})
	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r))

happyReduce_30 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_30 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_30 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
8# Int#
10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_30
happyReduction_30 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_30 (HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_5)) -> 
	case HappyAbsSyn -> HappyWrap53
happyOut53 HappyAbsSyn
happy_x_7 of { (HappyWrap53 [CmmParse LocalReg]
happy_var_7) -> 
	( P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. P a -> PD a
liftP (P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> ((UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
    -> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. (UnitId -> a) -> P a
withHomeUnitId ((UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> (UnitId -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ \UnitId
pkg ->
                   do DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
                      let platform :: Platform
platform = DynFlags -> Platform
targetPlatform DynFlags
dflags
                      [LocalReg]
live <- [CmmParse LocalReg] -> CmmParse [LocalReg]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse LocalReg]
happy_var_7
                      let prof :: ProfilingInfo
prof = ProfilingInfo
NoProfilingInfo
                          -- drop one for the info pointer
                          bitmap :: [Bool]
bitmap = Platform -> [LocalReg] -> [Bool]
mkLiveness Platform
platform (ByteOff -> [LocalReg] -> [LocalReg]
forall a. ByteOff -> [a] -> [a]
drop ByteOff
1 [LocalReg]
live)
                          rep :: SMRep
rep  = ByteOff -> SMRep -> SMRep
mkRTSRep (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5) (SMRep -> SMRep) -> SMRep -> SMRep
forall a b. (a -> b) -> a -> b
$ [Bool] -> SMRep
mkStackRep [Bool]
bitmap
                      (CLabel, Maybe CmmInfoTable, [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> FastString -> CLabel
mkCmmRetLabel UnitId
pkg FastString
happy_var_3,
                              CmmInfoTable -> Maybe CmmInfoTable
forall a. a -> Maybe a
Just (CmmInfoTable -> Maybe CmmInfoTable)
-> CmmInfoTable -> Maybe CmmInfoTable
forall a b. (a -> b) -> a -> b
$ CmmInfoTable :: CLabel
-> SMRep
-> ProfilingInfo
-> Maybe CLabel
-> Maybe (Id, CostCentreStack)
-> CmmInfoTable
CmmInfoTable { cit_lbl :: CLabel
cit_lbl = UnitId -> FastString -> CLabel
mkCmmRetInfoLabel UnitId
pkg FastString
happy_var_3
                                           , cit_rep :: SMRep
cit_rep = SMRep
rep
                                           , cit_prof :: ProfilingInfo
cit_prof = ProfilingInfo
prof, cit_srt :: Maybe CLabel
cit_srt = Maybe CLabel
forall a. Maybe a
Nothing, cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall a. Maybe a
Nothing },
                              [LocalReg]
live))}}})
	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r))

happyReduce_31 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_31 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_31 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
11# HappyAbsSyn
happyReduction_31
happyReduction_31 :: HappyAbsSyn
happyReduction_31  =  CmmParse () -> HappyAbsSyn
happyIn15
		 (() -> CmmParse ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
	)

happyReduce_32 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_32 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_32 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
11# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_32
happyReduction_32 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_32 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap16
happyOut16 HappyAbsSyn
happy_x_1 of { (HappyWrap16 CmmParse ()
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_2 of { (HappyWrap15 CmmParse ()
happy_var_2) -> 
	CmmParse () -> HappyAbsSyn
happyIn15
		 (do CmmParse ()
happy_var_1; CmmParse ()
happy_var_2
	)}}

happyReduce_33 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_33 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_33 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
11# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_33
happyReduction_33 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_33 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap20
happyOut20 HappyAbsSyn
happy_x_1 of { (HappyWrap20 CmmParse ()
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_2 of { (HappyWrap15 CmmParse ()
happy_var_2) -> 
	CmmParse () -> HappyAbsSyn
happyIn15
		 (do CmmParse ()
happy_var_1; CmmParse ()
happy_var_2
	)}}

happyReduce_34 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_34 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_34 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
12# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_34
happyReduction_34 :: p -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_34 p
happy_x_3
	HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
happy_x_1 of { (HappyWrap56 CmmType
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap19
happyOut19 HappyAbsSyn
happy_x_2 of { (HappyWrap19 [FastString]
happy_var_2) -> 
	CmmParse () -> HappyAbsSyn
happyIn16
		 ((FastString -> CmmParse LocalReg) -> [FastString] -> CmmParse ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (CmmType -> FastString -> CmmParse LocalReg
newLocal CmmType
happy_var_1) [FastString]
happy_var_2
	)}}

happyReduce_35 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_35 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_35 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
12# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_35
happyReduction_35 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_35 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap17
happyOut17 HappyAbsSyn
happy_x_2 of { (HappyWrap17 [(FastString, CLabel)]
happy_var_2) -> 
	CmmParse () -> HappyAbsSyn
happyIn16
		 (((FastString, CLabel) -> CmmParse ())
-> [(FastString, CLabel)] -> CmmParse ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (FastString, CLabel) -> CmmParse ()
newImport [(FastString, CLabel)]
happy_var_2
	)}

happyReduce_36 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_36 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_36 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
12# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p} {p}. p -> p -> p -> HappyAbsSyn
happyReduction_36
happyReduction_36 :: p -> p -> p -> HappyAbsSyn
happyReduction_36 p
happy_x_3
	p
happy_x_2
	p
happy_x_1
	 =  CmmParse () -> HappyAbsSyn
happyIn16
		 (() -> CmmParse ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
	)

happyReduce_37 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_37 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_37 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
13# HappyAbsSyn -> HappyAbsSyn
happyReduction_37
happyReduction_37 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_37 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap18
happyOut18 HappyAbsSyn
happy_x_1 of { (HappyWrap18 (FastString, CLabel)
happy_var_1) -> 
	[(FastString, CLabel)] -> HappyAbsSyn
happyIn17
		 ([(FastString, CLabel)
happy_var_1]
	)}

happyReduce_38 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_38 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_38 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
13# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_38
happyReduction_38 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_38 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap18
happyOut18 HappyAbsSyn
happy_x_1 of { (HappyWrap18 (FastString, CLabel)
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap17
happyOut17 HappyAbsSyn
happy_x_3 of { (HappyWrap17 [(FastString, CLabel)]
happy_var_3) -> 
	[(FastString, CLabel)] -> HappyAbsSyn
happyIn17
		 ((FastString, CLabel)
happy_var_1 (FastString, CLabel)
-> [(FastString, CLabel)] -> [(FastString, CLabel)]
forall a. a -> [a] -> [a]
: [(FastString, CLabel)]
happy_var_3
	)}}

happyReduce_39 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_39 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_39 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
14# HappyAbsSyn -> HappyAbsSyn
happyReduction_39
happyReduction_39 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_39 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	(FastString, CLabel) -> HappyAbsSyn
happyIn18
		 ((FastString
happy_var_1, FastString
-> Maybe ByteOff -> ForeignLabelSource -> FunctionOrData -> CLabel
mkForeignLabel FastString
happy_var_1 Maybe ByteOff
forall a. Maybe a
Nothing ForeignLabelSource
ForeignLabelInExternalPackage FunctionOrData
IsFunction)
	)}

happyReduce_40 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_40 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_40 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
14# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_40
happyReduction_40 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_40 HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_2)) -> 
	(FastString, CLabel) -> HappyAbsSyn
happyIn18
		 ((FastString
happy_var_2, FastString
-> Maybe ByteOff -> ForeignLabelSource -> FunctionOrData -> CLabel
mkForeignLabel FastString
happy_var_2 Maybe ByteOff
forall a. Maybe a
Nothing ForeignLabelSource
ForeignLabelInExternalPackage FunctionOrData
IsData)
	)}

happyReduce_41 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_41 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_41 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
14# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_41
happyReduction_41 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_41 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_String      String
happy_var_1)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_2)) -> 
	(FastString, CLabel) -> HappyAbsSyn
happyIn18
		 ((FastString
happy_var_2, UnitId -> FastString -> CLabel
mkCmmCodeLabel (FastString -> UnitId
UnitId (String -> FastString
mkFastString String
happy_var_1)) FastString
happy_var_2)
	)}}

happyReduce_42 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_42 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_42 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
15# HappyAbsSyn -> HappyAbsSyn
happyReduction_42
happyReduction_42 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_42 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	[FastString] -> HappyAbsSyn
happyIn19
		 ([FastString
happy_var_1]
	)}

happyReduce_43 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_43 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_43 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
15# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_43
happyReduction_43 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_43 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap19
happyOut19 HappyAbsSyn
happy_x_3 of { (HappyWrap19 [FastString]
happy_var_3) -> 
	[FastString] -> HappyAbsSyn
happyIn19
		 (FastString
happy_var_1 FastString -> [FastString] -> [FastString]
forall a. a -> [a] -> [a]
: [FastString]
happy_var_3
	)}}

happyReduce_44 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_44 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_44 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
16# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_44
happyReduction_44 :: p -> HappyAbsSyn
happyReduction_44 p
happy_x_1
	 =  CmmParse () -> HappyAbsSyn
happyIn20
		 (() -> CmmParse ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
	)

happyReduce_45 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_45 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_45 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
16# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_45
happyReduction_45 :: p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_45 p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (do BlockId
l <- FastString -> CmmParse BlockId
newLabel FastString
happy_var_1; BlockId -> CmmParse ()
emitLabel BlockId
l
	)}

happyReduce_46 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_46 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_46 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_46
happyReduction_46 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_46 (HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap51
happyOut51 HappyAbsSyn
happy_x_1 of { (HappyWrap51 CmmParse CmmReg
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { Located CmmToken
happy_var_2 -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { Located CmmToken
happy_var_4 -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (do CmmReg
reg <- CmmParse CmmReg
happy_var_1; CmmExpr
e <- CmmParse CmmExpr
happy_var_3; Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_2 Located CmmToken
happy_var_4 (CmmReg -> CmmExpr -> CmmParse ()
emitAssign CmmReg
reg CmmExpr
e)
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}}

happyReduce_47 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_47 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_47 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
7# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_47
happyReduction_47 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_47 (HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
happy_x_1 of { (HappyWrap56 CmmType
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { Located CmmToken
happy_var_2 -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_6 of { (HappyWrap38 CmmParse CmmExpr
happy_var_6) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { Located CmmToken
happy_var_7 -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_2 Located CmmToken
happy_var_7 (CmmType -> CmmParse CmmExpr -> CmmParse CmmExpr -> CmmParse ()
doStore CmmType
happy_var_1 CmmParse CmmExpr
happy_var_3 CmmParse CmmExpr
happy_var_6)
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}}}

happyReduce_48 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_48 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_48 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
10# Int#
16# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_48
happyReduction_48 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_48 (HappyAbsSyn
happy_x_10 `HappyStk`
	HappyAbsSyn
happy_x_9 `HappyStk`
	HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse ())
-> (CmmParse () -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> HappyWrap47
happyOut47 HappyAbsSyn
happy_x_1 of { (HappyWrap47 [CmmParse (LocalReg, ForeignHint)]
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_String      String
happy_var_3)) -> 
	case HappyAbsSyn -> HappyWrap23
happyOut23 HappyAbsSyn
happy_x_4 of { (HappyWrap23 CmmParse CmmExpr
happy_var_4) -> 
	case HappyAbsSyn -> HappyWrap41
happyOut41 HappyAbsSyn
happy_x_6 of { (HappyWrap41 [CmmParse (CmmExpr, ForeignHint)]
happy_var_6) -> 
	case HappyAbsSyn -> HappyWrap27
happyOut27 HappyAbsSyn
happy_x_8 of { (HappyWrap27 Safety
happy_var_8) -> 
	case HappyAbsSyn -> HappyWrap24
happyOut24 HappyAbsSyn
happy_x_9 of { (HappyWrap24 CmmReturnInfo
happy_var_9) -> 
	( String
-> [CmmParse (LocalReg, ForeignHint)]
-> CmmParse CmmExpr
-> [CmmParse (CmmExpr, ForeignHint)]
-> Safety
-> CmmReturnInfo
-> PD (CmmParse ())
foreignCall String
happy_var_3 [CmmParse (LocalReg, ForeignHint)]
happy_var_1 CmmParse CmmExpr
happy_var_4 [CmmParse (CmmExpr, ForeignHint)]
happy_var_6 Safety
happy_var_8 CmmReturnInfo
happy_var_9)}}}}}})
	) (\CmmParse ()
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse () -> HappyAbsSyn
happyIn20 CmmParse ()
r))

happyReduce_49 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_49 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_49 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
8# Int#
16# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_49
happyReduction_49 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_49 (HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse ())
-> (CmmParse () -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> HappyWrap47
happyOut47 HappyAbsSyn
happy_x_1 of { (HappyWrap47 [CmmParse (LocalReg, ForeignHint)]
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_4)) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_6 of { (HappyWrap44 [CmmParse CmmExpr]
happy_var_6) -> 
	( [CmmParse (LocalReg, ForeignHint)]
-> FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
primCall [CmmParse (LocalReg, ForeignHint)]
happy_var_1 FastString
happy_var_4 [CmmParse CmmExpr]
happy_var_6)}}})
	) (\CmmParse ()
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse () -> HappyAbsSyn
happyIn20 CmmParse ()
r))

happyReduce_50 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_50 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_50 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
5# Int#
16# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_50
happyReduction_50 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_50 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse ())
-> (CmmParse () -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_3 of { (HappyWrap44 [CmmParse CmmExpr]
happy_var_3) -> 
	( FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
stmtMacro FastString
happy_var_1 [CmmParse CmmExpr]
happy_var_3)}})
	) (\CmmParse ()
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse () -> HappyAbsSyn
happyIn20 CmmParse ()
r))

happyReduce_51 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_51 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_51 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
7# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_51
happyReduction_51 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_51 (HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap30
happyOut30 HappyAbsSyn
happy_x_2 of { (HappyWrap30 Maybe (Integer, Integer)
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap31
happyOut31 HappyAbsSyn
happy_x_5 of { (HappyWrap31 [CmmParse ([Integer], Either BlockId (CmmParse ()))]
happy_var_5) -> 
	case HappyAbsSyn -> HappyWrap35
happyOut35 HappyAbsSyn
happy_x_6 of { (HappyWrap35 Maybe (CmmParse ())
happy_var_6) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (do [([Integer], Either BlockId (CmmParse ()))]
as <- [CmmParse ([Integer], Either BlockId (CmmParse ()))]
-> CmmParse [([Integer], Either BlockId (CmmParse ()))]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse ([Integer], Either BlockId (CmmParse ()))]
happy_var_5; Maybe (Integer, Integer)
-> CmmParse CmmExpr
-> [([Integer], Either BlockId (CmmParse ()))]
-> Maybe (CmmParse ())
-> CmmParse ()
doSwitch Maybe (Integer, Integer)
happy_var_2 CmmParse CmmExpr
happy_var_3 [([Integer], Either BlockId (CmmParse ()))]
as Maybe (CmmParse ())
happy_var_6
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}}

happyReduce_52 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_52 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_52 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
16# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_52
happyReduction_52 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_52 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_2)) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (do BlockId
l <- FastString -> CmmParse BlockId
lookupLabel FastString
happy_var_2; CmmAGraph -> CmmParse ()
emit (BlockId -> CmmAGraph
mkBranch BlockId
l)
	)}

happyReduce_53 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_53 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_53 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_53
happyReduction_53 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_53 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_3 of { (HappyWrap44 [CmmParse CmmExpr]
happy_var_3) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 ([CmmParse CmmExpr] -> CmmParse ()
doReturn [CmmParse CmmExpr]
happy_var_3
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}

happyReduce_54 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_54 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_54 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_54
happyReduction_54 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_54 (HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap28
happyOut28 HappyAbsSyn
happy_x_3 of { (HappyWrap28 [GlobalReg]
happy_var_3) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse CmmExpr -> [GlobalReg] -> CmmParse ()
doRawJump CmmParse CmmExpr
happy_var_2 [GlobalReg]
happy_var_3
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_55 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_55 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_55 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
6# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_55
happyReduction_55 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_55 (HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_4 of { (HappyWrap44 [CmmParse CmmExpr]
happy_var_4) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse CmmExpr
-> [CmmParse CmmExpr] -> [CmmParse CmmExpr] -> CmmParse ()
doJumpWithStack CmmParse CmmExpr
happy_var_2 [] [CmmParse CmmExpr]
happy_var_4
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_56 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_56 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_56 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
9# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_56
happyReduction_56 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_56 (HappyAbsSyn
happy_x_9 `HappyStk`
	HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_4 of { (HappyWrap44 [CmmParse CmmExpr]
happy_var_4) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_7 of { (HappyWrap44 [CmmParse CmmExpr]
happy_var_7) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse CmmExpr
-> [CmmParse CmmExpr] -> [CmmParse CmmExpr] -> CmmParse ()
doJumpWithStack CmmParse CmmExpr
happy_var_2 [CmmParse CmmExpr]
happy_var_4 [CmmParse CmmExpr]
happy_var_7
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_57 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_57 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_57 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
6# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_57
happyReduction_57 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_57 (HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_4 of { (HappyWrap44 [CmmParse CmmExpr]
happy_var_4) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse CmmExpr
-> [CmmParse LocalReg] -> [CmmParse CmmExpr] -> CmmParse ()
doCall CmmParse CmmExpr
happy_var_2 [] [CmmParse CmmExpr]
happy_var_4
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_58 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_58 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_58 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
10# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_58
happyReduction_58 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_58 (HappyAbsSyn
happy_x_10 `HappyStk`
	HappyAbsSyn
happy_x_9 `HappyStk`
	HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap54
happyOut54 HappyAbsSyn
happy_x_2 of { (HappyWrap54 [CmmParse LocalReg]
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_6 of { (HappyWrap38 CmmParse CmmExpr
happy_var_6) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_8 of { (HappyWrap44 [CmmParse CmmExpr]
happy_var_8) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse CmmExpr
-> [CmmParse LocalReg] -> [CmmParse CmmExpr] -> CmmParse ()
doCall CmmParse CmmExpr
happy_var_6 [CmmParse LocalReg]
happy_var_2 [CmmParse CmmExpr]
happy_var_8
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_59 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_59 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_59 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_59
happyReduction_59 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_59 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_2 of { (HappyWrap25 CmmParse BoolExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap37
happyOut37 HappyAbsSyn
happy_x_3 of { (HappyWrap37 Maybe Bool
happy_var_3) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_5)) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (do BlockId
l <- FastString -> CmmParse BlockId
lookupLabel FastString
happy_var_5; CmmParse BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
cmmRawIf CmmParse BoolExpr
happy_var_2 BlockId
l Maybe Bool
happy_var_3
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_60 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_60 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_60 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
7# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_60
happyReduction_60 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_60 (HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_2 of { (HappyWrap25 CmmParse BoolExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap37
happyOut37 HappyAbsSyn
happy_x_3 of { (HappyWrap37 Maybe Bool
happy_var_3) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { Located CmmToken
happy_var_4 -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_5 of { (HappyWrap15 CmmParse ()
happy_var_5) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_6 of { Located CmmToken
happy_var_6 -> 
	case HappyAbsSyn -> HappyWrap36
happyOut36 HappyAbsSyn
happy_x_7 of { (HappyWrap36 CmmParse ()
happy_var_7) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse BoolExpr
-> CmmParse () -> CmmParse () -> Maybe Bool -> CmmParse ()
forall {a} {a}.
CmmParse BoolExpr
-> CmmParse a -> CmmParse a -> Maybe Bool -> CmmParse ()
cmmIfThenElse CmmParse BoolExpr
happy_var_2 (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_4 Located CmmToken
happy_var_6 CmmParse ()
happy_var_5) CmmParse ()
happy_var_7 Maybe Bool
happy_var_3
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}}}}

happyReduce_61 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_61 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_61 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_61
happyReduction_61 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_61 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_3 of { (HappyWrap44 [CmmParse CmmExpr]
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
happy_x_5 of { (HappyWrap13 CmmParse ()
happy_var_5) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 ([CmmParse CmmExpr] -> CmmParse () -> CmmParse ()
pushStackFrame [CmmParse CmmExpr]
happy_var_3 CmmParse ()
happy_var_5
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_62 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_62 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_62 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_62
happyReduction_62 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_62 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap51
happyOut51 HappyAbsSyn
happy_x_4 of { (HappyWrap51 CmmParse CmmReg
happy_var_4) -> 
	case HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
happy_x_5 of { (HappyWrap13 CmmParse ()
happy_var_5) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse CmmExpr -> CmmParse CmmReg -> CmmParse () -> CmmParse ()
reserveStackFrame CmmParse CmmExpr
happy_var_2 CmmParse CmmReg
happy_var_4 CmmParse ()
happy_var_5
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_63 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_63 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_63 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
16# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_63
happyReduction_63 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_63 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap21
happyOut21 HappyAbsSyn
happy_x_2 of { (HappyWrap21 CmmParse [(GlobalReg, Maybe CmmExpr)]
happy_var_2) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse [(GlobalReg, Maybe CmmExpr)]
happy_var_2 CmmParse [(GlobalReg, Maybe CmmExpr)]
-> ([(GlobalReg, Maybe CmmExpr)] -> CmmParse ()) -> CmmParse ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code (FCode () -> CmmParse ())
-> ([(GlobalReg, Maybe CmmExpr)] -> FCode ())
-> [(GlobalReg, Maybe CmmExpr)]
-> CmmParse ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [(GlobalReg, Maybe CmmExpr)] -> FCode ()
emitUnwind
	)}

happyReduce_64 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_64 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_64 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
17# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_64
happyReduction_64 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_64 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_GlobalReg   GlobalReg
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap22
happyOut22 HappyAbsSyn
happy_x_3 of { (HappyWrap22 CmmParse (Maybe CmmExpr)
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap21
happyOut21 HappyAbsSyn
happy_x_5 of { (HappyWrap21 CmmParse [(GlobalReg, Maybe CmmExpr)]
happy_var_5) -> 
	CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyAbsSyn
happyIn21
		 (do Maybe CmmExpr
e <- CmmParse (Maybe CmmExpr)
happy_var_3; [(GlobalReg, Maybe CmmExpr)]
rest <- CmmParse [(GlobalReg, Maybe CmmExpr)]
happy_var_5; [(GlobalReg, Maybe CmmExpr)]
-> CmmParse [(GlobalReg, Maybe CmmExpr)]
forall (m :: * -> *) a. Monad m => a -> m a
return ((GlobalReg
happy_var_1, Maybe CmmExpr
e) (GlobalReg, Maybe CmmExpr)
-> [(GlobalReg, Maybe CmmExpr)] -> [(GlobalReg, Maybe CmmExpr)]
forall a. a -> [a] -> [a]
: [(GlobalReg, Maybe CmmExpr)]
rest)
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_65 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_65 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_65 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
17# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_65
happyReduction_65 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_65 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_GlobalReg   GlobalReg
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap22
happyOut22 HappyAbsSyn
happy_x_3 of { (HappyWrap22 CmmParse (Maybe CmmExpr)
happy_var_3) -> 
	CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyAbsSyn
happyIn21
		 (do Maybe CmmExpr
e <- CmmParse (Maybe CmmExpr)
happy_var_3; [(GlobalReg, Maybe CmmExpr)]
-> CmmParse [(GlobalReg, Maybe CmmExpr)]
forall (m :: * -> *) a. Monad m => a -> m a
return [(GlobalReg
happy_var_1, Maybe CmmExpr
e)]
	)}}

happyReduce_66 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_66 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_66 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
18# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_66
happyReduction_66 :: p -> HappyAbsSyn
happyReduction_66 p
happy_x_1
	 =  CmmParse (Maybe CmmExpr) -> HappyAbsSyn
happyIn22
		 (do Maybe CmmExpr -> CmmParse (Maybe CmmExpr)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe CmmExpr
forall a. Maybe a
Nothing
	)

happyReduce_67 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_67 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_67 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
18# HappyAbsSyn -> HappyAbsSyn
happyReduction_67
happyReduction_67 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_67 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	CmmParse (Maybe CmmExpr) -> HappyAbsSyn
happyIn22
		 (do CmmExpr
e <- CmmParse CmmExpr
happy_var_1; Maybe CmmExpr -> CmmParse (Maybe CmmExpr)
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmExpr -> Maybe CmmExpr
forall a. a -> Maybe a
Just CmmExpr
e)
	)}

happyReduce_68 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_68 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_68 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
19# HappyAbsSyn -> HappyAbsSyn
happyReduction_68
happyReduction_68 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_68 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn23
		 (CmmExpr -> CmmParse CmmExpr
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmLit -> CmmExpr
CmmLit (CLabel -> CmmLit
CmmLabel (FastString
-> Maybe ByteOff -> ForeignLabelSource -> FunctionOrData -> CLabel
mkForeignLabel FastString
happy_var_1 Maybe ByteOff
forall a. Maybe a
Nothing ForeignLabelSource
ForeignLabelInThisPackage FunctionOrData
IsFunction)))
	)}

happyReduce_69 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_69 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_69 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
20# HappyAbsSyn
happyReduction_69
happyReduction_69 :: HappyAbsSyn
happyReduction_69  =  CmmReturnInfo -> HappyAbsSyn
happyIn24
		 (CmmReturnInfo
CmmMayReturn
	)

happyReduce_70 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_70 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_70 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
20# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> p -> HappyAbsSyn
happyReduction_70
happyReduction_70 :: p -> p -> HappyAbsSyn
happyReduction_70 p
happy_x_2
	p
happy_x_1
	 =  CmmReturnInfo -> HappyAbsSyn
happyIn24
		 (CmmReturnInfo
CmmNeverReturns
	)

happyReduce_71 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_71 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_71 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
21# HappyAbsSyn -> HappyAbsSyn
happyReduction_71
happyReduction_71 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_71 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap26
happyOut26 HappyAbsSyn
happy_x_1 of { (HappyWrap26 CmmParse BoolExpr
happy_var_1) -> 
	CmmParse BoolExpr -> HappyAbsSyn
happyIn25
		 (CmmParse BoolExpr
happy_var_1
	)}

happyReduce_72 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_72 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_72 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
21# HappyAbsSyn -> HappyAbsSyn
happyReduction_72
happyReduction_72 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_72 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	CmmParse BoolExpr -> HappyAbsSyn
happyIn25
		 (do CmmExpr
e <- CmmParse CmmExpr
happy_var_1; BoolExpr -> CmmParse BoolExpr
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmExpr -> BoolExpr
BoolTest CmmExpr
e)
	)}

happyReduce_73 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_73 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_73 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
22# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_73
happyReduction_73 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_73 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_1 of { (HappyWrap25 CmmParse BoolExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_3 of { (HappyWrap25 CmmParse BoolExpr
happy_var_3) -> 
	CmmParse BoolExpr -> HappyAbsSyn
happyIn26
		 (do BoolExpr
e1 <- CmmParse BoolExpr
happy_var_1; BoolExpr
e2 <- CmmParse BoolExpr
happy_var_3;
                                          BoolExpr -> CmmParse BoolExpr
forall (m :: * -> *) a. Monad m => a -> m a
return (BoolExpr -> BoolExpr -> BoolExpr
BoolAnd BoolExpr
e1 BoolExpr
e2)
	)}}

happyReduce_74 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_74 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_74 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
22# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_74
happyReduction_74 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_74 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_1 of { (HappyWrap25 CmmParse BoolExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_3 of { (HappyWrap25 CmmParse BoolExpr
happy_var_3) -> 
	CmmParse BoolExpr -> HappyAbsSyn
happyIn26
		 (do BoolExpr
e1 <- CmmParse BoolExpr
happy_var_1; BoolExpr
e2 <- CmmParse BoolExpr
happy_var_3;
                                          BoolExpr -> CmmParse BoolExpr
forall (m :: * -> *) a. Monad m => a -> m a
return (BoolExpr -> BoolExpr -> BoolExpr
BoolOr BoolExpr
e1 BoolExpr
e2)
	)}}

happyReduce_75 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_75 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_75 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
22# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_75
happyReduction_75 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_75 HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_2 of { (HappyWrap25 CmmParse BoolExpr
happy_var_2) -> 
	CmmParse BoolExpr -> HappyAbsSyn
happyIn26
		 (do BoolExpr
e <- CmmParse BoolExpr
happy_var_2; BoolExpr -> CmmParse BoolExpr
forall (m :: * -> *) a. Monad m => a -> m a
return (BoolExpr -> BoolExpr
BoolNot BoolExpr
e)
	)}

happyReduce_76 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_76 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_76 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
22# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_76
happyReduction_76 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_76 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap26
happyOut26 HappyAbsSyn
happy_x_2 of { (HappyWrap26 CmmParse BoolExpr
happy_var_2) -> 
	CmmParse BoolExpr -> HappyAbsSyn
happyIn26
		 (CmmParse BoolExpr
happy_var_2
	)}

happyReduce_77 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_77 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_77 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
23# HappyAbsSyn
happyReduction_77
happyReduction_77 :: HappyAbsSyn
happyReduction_77  =  Safety -> HappyAbsSyn
happyIn27
		 (Safety
PlayRisky
	)

happyReduce_78 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_78 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_78 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
1# Int#
23# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_78
happyReduction_78 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_78 (HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD Safety -> (Safety -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_String      String
happy_var_1)) -> 
	( String -> PD Safety
parseSafety String
happy_var_1)})
	) (\Safety
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (Safety -> HappyAbsSyn
happyIn27 Safety
r))

happyReduce_79 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_79 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_79 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
24# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> p -> HappyAbsSyn
happyReduction_79
happyReduction_79 :: p -> p -> HappyAbsSyn
happyReduction_79 p
happy_x_2
	p
happy_x_1
	 =  [GlobalReg] -> HappyAbsSyn
happyIn28
		 ([]
	)

happyReduce_80 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_80 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_80 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
3# Int#
24# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {a} {p}. HappyStk a -> p -> PD HappyAbsSyn
happyReduction_80
happyReduction_80 :: HappyStk a -> p -> PD HappyAbsSyn
happyReduction_80 (a
happy_x_3 `HappyStk`
	a
happy_x_2 `HappyStk`
	a
happy_x_1 `HappyStk`
	HappyStk a
happyRest) p
tk
	 = PD [GlobalReg] -> ([GlobalReg] -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((( do DynFlags
df <- PD DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
                                         ; [GlobalReg] -> PD [GlobalReg]
forall (m :: * -> *) a. Monad m => a -> m a
return (DynFlags -> [GlobalReg]
realArgRegsCover DynFlags
df)))
	) (\[GlobalReg]
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn ([GlobalReg] -> HappyAbsSyn
happyIn28 [GlobalReg]
r))

happyReduce_81 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_81 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_81 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
24# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_81
happyReduction_81 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_81 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap29
happyOut29 HappyAbsSyn
happy_x_2 of { (HappyWrap29 [GlobalReg]
happy_var_2) -> 
	[GlobalReg] -> HappyAbsSyn
happyIn28
		 ([GlobalReg]
happy_var_2
	)}

happyReduce_82 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_82 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_82 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
25# HappyAbsSyn -> HappyAbsSyn
happyReduction_82
happyReduction_82 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_82 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_GlobalReg   GlobalReg
happy_var_1)) -> 
	[GlobalReg] -> HappyAbsSyn
happyIn29
		 ([GlobalReg
happy_var_1]
	)}

happyReduce_83 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_83 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_83 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
25# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_83
happyReduction_83 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_83 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_GlobalReg   GlobalReg
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap29
happyOut29 HappyAbsSyn
happy_x_3 of { (HappyWrap29 [GlobalReg]
happy_var_3) -> 
	[GlobalReg] -> HappyAbsSyn
happyIn29
		 (GlobalReg
happy_var_1 GlobalReg -> [GlobalReg] -> [GlobalReg]
forall a. a -> [a] -> [a]
: [GlobalReg]
happy_var_3
	)}}

happyReduce_84 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_84 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_84 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
26# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_84
happyReduction_84 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_84 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_2)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_4)) -> 
	Maybe (Integer, Integer) -> HappyAbsSyn
happyIn30
		 ((Integer, Integer) -> Maybe (Integer, Integer)
forall a. a -> Maybe a
Just (Integer
happy_var_2, Integer
happy_var_4)
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_85 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_85 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_85 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
26# HappyAbsSyn
happyReduction_85
happyReduction_85 :: HappyAbsSyn
happyReduction_85  =  Maybe (Integer, Integer) -> HappyAbsSyn
happyIn30
		 (Maybe (Integer, Integer)
forall a. Maybe a
Nothing
	)

happyReduce_86 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_86 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_86 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
27# HappyAbsSyn
happyReduction_86
happyReduction_86 :: HappyAbsSyn
happyReduction_86  =  [CmmParse ([Integer], Either BlockId (CmmParse ()))] -> HappyAbsSyn
happyIn31
		 ([]
	)

happyReduce_87 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_87 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_87 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
27# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_87
happyReduction_87 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_87 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap32
happyOut32 HappyAbsSyn
happy_x_1 of { (HappyWrap32 CmmParse ([Integer], Either BlockId (CmmParse ()))
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap31
happyOut31 HappyAbsSyn
happy_x_2 of { (HappyWrap31 [CmmParse ([Integer], Either BlockId (CmmParse ()))]
happy_var_2) -> 
	[CmmParse ([Integer], Either BlockId (CmmParse ()))] -> HappyAbsSyn
happyIn31
		 (CmmParse ([Integer], Either BlockId (CmmParse ()))
happy_var_1 CmmParse ([Integer], Either BlockId (CmmParse ()))
-> [CmmParse ([Integer], Either BlockId (CmmParse ()))]
-> [CmmParse ([Integer], Either BlockId (CmmParse ()))]
forall a. a -> [a] -> [a]
: [CmmParse ([Integer], Either BlockId (CmmParse ()))]
happy_var_2
	)}}

happyReduce_88 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_88 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_88 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
28# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_88
happyReduction_88 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_88 (HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap34
happyOut34 HappyAbsSyn
happy_x_2 of { (HappyWrap34 [Integer]
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap33
happyOut33 HappyAbsSyn
happy_x_4 of { (HappyWrap33 CmmParse (Either BlockId (CmmParse ()))
happy_var_4) -> 
	CmmParse ([Integer], Either BlockId (CmmParse ())) -> HappyAbsSyn
happyIn32
		 (do Either BlockId (CmmParse ())
b <- CmmParse (Either BlockId (CmmParse ()))
happy_var_4; ([Integer], Either BlockId (CmmParse ()))
-> CmmParse ([Integer], Either BlockId (CmmParse ()))
forall (m :: * -> *) a. Monad m => a -> m a
return ([Integer]
happy_var_2, Either BlockId (CmmParse ())
b)
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_89 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_89 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_89 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
29# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_89
happyReduction_89 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_89 HappyAbsSyn
happy_x_3
	HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { Located CmmToken
happy_var_1 -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_2 of { (HappyWrap15 CmmParse ()
happy_var_2) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { Located CmmToken
happy_var_3 -> 
	CmmParse (Either BlockId (CmmParse ())) -> HappyAbsSyn
happyIn33
		 (Either BlockId (CmmParse ())
-> CmmParse (Either BlockId (CmmParse ()))
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse () -> Either BlockId (CmmParse ())
forall a b. b -> Either a b
Right (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_1 Located CmmToken
happy_var_3 CmmParse ()
happy_var_2))
	)}}}

happyReduce_90 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_90 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_90 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
29# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_90
happyReduction_90 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_90 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_2)) -> 
	CmmParse (Either BlockId (CmmParse ())) -> HappyAbsSyn
happyIn33
		 (do BlockId
l <- FastString -> CmmParse BlockId
lookupLabel FastString
happy_var_2; Either BlockId (CmmParse ())
-> CmmParse (Either BlockId (CmmParse ()))
forall (m :: * -> *) a. Monad m => a -> m a
return (BlockId -> Either BlockId (CmmParse ())
forall a b. a -> Either a b
Left BlockId
l)
	)}

happyReduce_91 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_91 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_91 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
30# HappyAbsSyn -> HappyAbsSyn
happyReduction_91
happyReduction_91 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_91 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_1)) -> 
	[Integer] -> HappyAbsSyn
happyIn34
		 ([ Integer
happy_var_1 ]
	)}

happyReduce_92 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_92 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_92 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
30# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_92
happyReduction_92 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_92 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap34
happyOut34 HappyAbsSyn
happy_x_3 of { (HappyWrap34 [Integer]
happy_var_3) -> 
	[Integer] -> HappyAbsSyn
happyIn34
		 (Integer
happy_var_1 Integer -> [Integer] -> [Integer]
forall a. a -> [a] -> [a]
: [Integer]
happy_var_3
	)}}

happyReduce_93 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_93 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_93 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
31# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_93
happyReduction_93 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_93 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { Located CmmToken
happy_var_3 -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_4 of { (HappyWrap15 CmmParse ()
happy_var_4) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { Located CmmToken
happy_var_5 -> 
	Maybe (CmmParse ()) -> HappyAbsSyn
happyIn35
		 (CmmParse () -> Maybe (CmmParse ())
forall a. a -> Maybe a
Just (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_3 Located CmmToken
happy_var_5 CmmParse ()
happy_var_4)
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_94 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_94 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_94 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
31# HappyAbsSyn
happyReduction_94
happyReduction_94 :: HappyAbsSyn
happyReduction_94  =  Maybe (CmmParse ()) -> HappyAbsSyn
happyIn35
		 (Maybe (CmmParse ())
forall a. Maybe a
Nothing
	)

happyReduce_95 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_95 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_95 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
32# HappyAbsSyn
happyReduction_95
happyReduction_95 :: HappyAbsSyn
happyReduction_95  =  CmmParse () -> HappyAbsSyn
happyIn36
		 (() -> CmmParse ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
	)

happyReduce_96 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_96 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_96 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
32# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_96
happyReduction_96 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_96 (HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { Located CmmToken
happy_var_2 -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_3 of { (HappyWrap15 CmmParse ()
happy_var_3) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { Located CmmToken
happy_var_4 -> 
	CmmParse () -> HappyAbsSyn
happyIn36
		 (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_2 Located CmmToken
happy_var_4 CmmParse ()
happy_var_3
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_97 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_97 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_97 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
33# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_97
happyReduction_97 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_97 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = Maybe Bool -> HappyAbsSyn
happyIn37
		 (Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest

happyReduce_98 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_98 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_98 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
33# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_98
happyReduction_98 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_98 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = Maybe Bool -> HappyAbsSyn
happyIn37
		 (Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest

happyReduce_99 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_99 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_99 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
33# HappyAbsSyn
happyReduction_99
happyReduction_99 :: HappyAbsSyn
happyReduction_99  =  Maybe Bool -> HappyAbsSyn
happyIn37
		 (Maybe Bool
forall a. Maybe a
Nothing
	)

happyReduce_100 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_100 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_100 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_100
happyReduction_100 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_100 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Quot [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_101 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_101 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_101 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_101
happyReduction_101 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_101 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Mul [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_102 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_102 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_102 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_102
happyReduction_102 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_102 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Rem [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_103 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_103 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_103 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_103
happyReduction_103 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_103 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Sub [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_104 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_104 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_104 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_104
happyReduction_104 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_104 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Add [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_105 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_105 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_105 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_105
happyReduction_105 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_105 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Shr [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_106 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_106 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_106 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_106
happyReduction_106 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_106 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Shl [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_107 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_107 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_107 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_107
happyReduction_107 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_107 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_And [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_108 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_108 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_108 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_108
happyReduction_108 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_108 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Xor [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_109 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_109 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_109 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_109
happyReduction_109 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_109 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Or [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_110 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_110 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_110 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_110
happyReduction_110 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_110 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Ge [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_111 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_111 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_111 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_111
happyReduction_111 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_111 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Gt [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_112 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_112 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_112 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_112
happyReduction_112 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_112 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Le [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_113 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_113 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_113 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_113
happyReduction_113 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_113 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Lt [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_114 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_114 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_114 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_114
happyReduction_114 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_114 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Ne [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_115 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_115 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_115 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_115
happyReduction_115 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_115 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Eq [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_116 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_116 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_116 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_116
happyReduction_116 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_116 HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 CmmParse CmmExpr
happy_var_2) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Not [CmmParse CmmExpr
happy_var_2]
	)}

happyReduce_117 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_117 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_117 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_117
happyReduction_117 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_117 HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 CmmParse CmmExpr
happy_var_2) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_S_Neg [CmmParse CmmExpr
happy_var_2]
	)}

happyReduce_118 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_118 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_118 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
5# Int#
34# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_118
happyReduction_118 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_118 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse CmmExpr)
-> (CmmParse CmmExpr -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_5 of { (HappyWrap39 CmmParse CmmExpr
happy_var_5) -> 
	( do { Width -> MachOp
mo <- FastString -> PD (Width -> MachOp)
nameToMachOp FastString
happy_var_3 ;
                                                CmmParse CmmExpr -> PD (CmmParse CmmExpr)
forall (m :: * -> *) a. Monad m => a -> m a
return ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
mo [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_5]) })}}})
	) (\CmmParse CmmExpr
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse CmmExpr -> HappyAbsSyn
happyIn38 CmmParse CmmExpr
r))

happyReduce_119 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_119 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_119 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
34# HappyAbsSyn -> HappyAbsSyn
happyReduction_119
happyReduction_119 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_119 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn38
		 (CmmParse CmmExpr
happy_var_1
	)}

happyReduce_120 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_120 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_120 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_120
happyReduction_120 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_120 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_2 of { (HappyWrap40 CmmType
happy_var_2) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 (CmmExpr -> CmmParse CmmExpr
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmLit -> CmmExpr
CmmLit (Integer -> Width -> CmmLit
CmmInt Integer
happy_var_1 (CmmType -> Width
typeWidth CmmType
happy_var_2)))
	)}}

happyReduce_121 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_121 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_121 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_121
happyReduction_121 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_121 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Float       Rational
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_2 of { (HappyWrap40 CmmType
happy_var_2) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 (CmmExpr -> CmmParse CmmExpr
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmLit -> CmmExpr
CmmLit (Rational -> Width -> CmmLit
CmmFloat Rational
happy_var_1 (CmmType -> Width
typeWidth CmmType
happy_var_2)))
	)}}

happyReduce_122 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_122 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_122 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
35# HappyAbsSyn -> HappyAbsSyn
happyReduction_122
happyReduction_122 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_122 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_String      String
happy_var_1)) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 (do CmmLit
s <- FCode CmmLit -> CmmParse CmmLit
forall a. FCode a -> CmmParse a
code (String -> FCode CmmLit
newStringCLit String
happy_var_1);
                                      CmmExpr -> CmmParse CmmExpr
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmLit -> CmmExpr
CmmLit CmmLit
s)
	)}

happyReduce_123 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_123 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_123 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
35# HappyAbsSyn -> HappyAbsSyn
happyReduction_123
happyReduction_123 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_123 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
happy_x_1 of { (HappyWrap46 CmmParse CmmExpr
happy_var_1) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 (CmmParse CmmExpr
happy_var_1
	)}

happyReduce_124 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_124 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_124 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
35# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_124
happyReduction_124 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_124 (HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
happy_x_1 of { (HappyWrap56 CmmType
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 (do CmmExpr
e <- CmmParse CmmExpr
happy_var_3; CmmExpr -> CmmParse CmmExpr
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmExpr -> CmmType -> CmmExpr
CmmLoad CmmExpr
e CmmType
happy_var_1)
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_125 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_125 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_125 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
5# Int#
35# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_125
happyReduction_125 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_125 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse CmmExpr)
-> (CmmParse CmmExpr -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_2)) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_4 of { (HappyWrap44 [CmmParse CmmExpr]
happy_var_4) -> 
	( FastString -> [CmmParse CmmExpr] -> PD (CmmParse CmmExpr)
exprOp FastString
happy_var_2 [CmmParse CmmExpr]
happy_var_4)}})
	) (\CmmParse CmmExpr
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse CmmExpr -> HappyAbsSyn
happyIn39 CmmParse CmmExpr
r))

happyReduce_126 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_126 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_126 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_126
happyReduction_126 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_126 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 CmmParse CmmExpr
happy_var_2) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 (CmmParse CmmExpr
happy_var_2
	)}

happyReduce_127 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_127 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_127 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
0# Int#
36# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p} {p}. p -> p -> PD HappyAbsSyn
happyReduction_127
happyReduction_127 :: p -> p -> PD HappyAbsSyn
happyReduction_127 (p
happyRest) p
tk
	 = PD CmmType -> (CmmType -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((( do DynFlags
dflags <- PD DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags; CmmType -> PD CmmType
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmType -> PD CmmType) -> CmmType -> PD CmmType
forall a b. (a -> b) -> a -> b
$ Platform -> CmmType
bWord (DynFlags -> Platform
targetPlatform DynFlags
dflags)))
	) (\CmmType
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmType -> HappyAbsSyn
happyIn40 CmmType
r))

happyReduce_128 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_128 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_128 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
36# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_128
happyReduction_128 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_128 HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
happy_x_2 of { (HappyWrap56 CmmType
happy_var_2) -> 
	CmmType -> HappyAbsSyn
happyIn40
		 (CmmType
happy_var_2
	)}

happyReduce_129 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_129 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_129 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
37# HappyAbsSyn
happyReduction_129
happyReduction_129 :: HappyAbsSyn
happyReduction_129  =  [CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
happyIn41
		 ([]
	)

happyReduce_130 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_130 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_130 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
37# HappyAbsSyn -> HappyAbsSyn
happyReduction_130
happyReduction_130 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_130 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap42
happyOut42 HappyAbsSyn
happy_x_1 of { (HappyWrap42 [CmmParse (CmmExpr, ForeignHint)]
happy_var_1) -> 
	[CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
happyIn41
		 ([CmmParse (CmmExpr, ForeignHint)]
happy_var_1
	)}

happyReduce_131 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_131 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_131 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
38# HappyAbsSyn -> HappyAbsSyn
happyReduction_131
happyReduction_131 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_131 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap43
happyOut43 HappyAbsSyn
happy_x_1 of { (HappyWrap43 CmmParse (CmmExpr, ForeignHint)
happy_var_1) -> 
	[CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
happyIn42
		 ([CmmParse (CmmExpr, ForeignHint)
happy_var_1]
	)}

happyReduce_132 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_132 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_132 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
38# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_132
happyReduction_132 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_132 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap43
happyOut43 HappyAbsSyn
happy_x_1 of { (HappyWrap43 CmmParse (CmmExpr, ForeignHint)
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap42
happyOut42 HappyAbsSyn
happy_x_3 of { (HappyWrap42 [CmmParse (CmmExpr, ForeignHint)]
happy_var_3) -> 
	[CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
happyIn42
		 (CmmParse (CmmExpr, ForeignHint)
happy_var_1 CmmParse (CmmExpr, ForeignHint)
-> [CmmParse (CmmExpr, ForeignHint)]
-> [CmmParse (CmmExpr, ForeignHint)]
forall a. a -> [a] -> [a]
: [CmmParse (CmmExpr, ForeignHint)]
happy_var_3
	)}}

happyReduce_133 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_133 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_133 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
39# HappyAbsSyn -> HappyAbsSyn
happyReduction_133
happyReduction_133 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_133 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	CmmParse (CmmExpr, ForeignHint) -> HappyAbsSyn
happyIn43
		 (do CmmExpr
e <- CmmParse CmmExpr
happy_var_1;
                                             (CmmExpr, ForeignHint) -> CmmParse (CmmExpr, ForeignHint)
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmExpr
e, CmmExpr -> ForeignHint
inferCmmHint CmmExpr
e)
	)}

happyReduce_134 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_134 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_134 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
2# Int#
39# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_134
happyReduction_134 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_134 (HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CmmExpr, ForeignHint))
-> (CmmParse (CmmExpr, ForeignHint) -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_String      String
happy_var_2)) -> 
	( do ForeignHint
h <- String -> PD ForeignHint
parseCmmHint String
happy_var_2;
                                              CmmParse (CmmExpr, ForeignHint)
-> PD (CmmParse (CmmExpr, ForeignHint))
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse (CmmExpr, ForeignHint)
 -> PD (CmmParse (CmmExpr, ForeignHint)))
-> CmmParse (CmmExpr, ForeignHint)
-> PD (CmmParse (CmmExpr, ForeignHint))
forall a b. (a -> b) -> a -> b
$ do
                                                CmmExpr
e <- CmmParse CmmExpr
happy_var_1; (CmmExpr, ForeignHint) -> CmmParse (CmmExpr, ForeignHint)
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmExpr
e, ForeignHint
h))}})
	) (\CmmParse (CmmExpr, ForeignHint)
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CmmExpr, ForeignHint) -> HappyAbsSyn
happyIn43 CmmParse (CmmExpr, ForeignHint)
r))

happyReduce_135 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_135 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_135 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
40# HappyAbsSyn
happyReduction_135
happyReduction_135 :: HappyAbsSyn
happyReduction_135  =  [CmmParse CmmExpr] -> HappyAbsSyn
happyIn44
		 ([]
	)

happyReduce_136 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_136 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_136 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
40# HappyAbsSyn -> HappyAbsSyn
happyReduction_136
happyReduction_136 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_136 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap45
happyOut45 HappyAbsSyn
happy_x_1 of { (HappyWrap45 [CmmParse CmmExpr]
happy_var_1) -> 
	[CmmParse CmmExpr] -> HappyAbsSyn
happyIn44
		 ([CmmParse CmmExpr]
happy_var_1
	)}

happyReduce_137 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_137 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_137 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
41# HappyAbsSyn -> HappyAbsSyn
happyReduction_137
happyReduction_137 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_137 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	[CmmParse CmmExpr] -> HappyAbsSyn
happyIn45
		 ([ CmmParse CmmExpr
happy_var_1 ]
	)}

happyReduce_138 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_138 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_138 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
41# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_138
happyReduction_138 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_138 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap45
happyOut45 HappyAbsSyn
happy_x_3 of { (HappyWrap45 [CmmParse CmmExpr]
happy_var_3) -> 
	[CmmParse CmmExpr] -> HappyAbsSyn
happyIn45
		 (CmmParse CmmExpr
happy_var_1 CmmParse CmmExpr -> [CmmParse CmmExpr] -> [CmmParse CmmExpr]
forall a. a -> [a] -> [a]
: [CmmParse CmmExpr]
happy_var_3
	)}}

happyReduce_139 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_139 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_139 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
42# HappyAbsSyn -> HappyAbsSyn
happyReduction_139
happyReduction_139 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_139 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn46
		 (FastString -> CmmParse CmmExpr
lookupName FastString
happy_var_1
	)}

happyReduce_140 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_140 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_140 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
42# HappyAbsSyn -> HappyAbsSyn
happyReduction_140
happyReduction_140 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_140 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_GlobalReg   GlobalReg
happy_var_1)) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn46
		 (CmmExpr -> CmmParse CmmExpr
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmReg -> CmmExpr
CmmReg (GlobalReg -> CmmReg
CmmGlobal GlobalReg
happy_var_1))
	)}

happyReduce_141 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_141 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_141 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
43# HappyAbsSyn
happyReduction_141
happyReduction_141 :: HappyAbsSyn
happyReduction_141  =  [CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
happyIn47
		 ([]
	)

happyReduce_142 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_142 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_142 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
43# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_142
happyReduction_142 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_142 (HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap48
happyOut48 HappyAbsSyn
happy_x_2 of { (HappyWrap48 [CmmParse (LocalReg, ForeignHint)]
happy_var_2) -> 
	[CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
happyIn47
		 ([CmmParse (LocalReg, ForeignHint)]
happy_var_2
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}

happyReduce_143 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_143 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_143 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
44# HappyAbsSyn -> HappyAbsSyn
happyReduction_143
happyReduction_143 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_143 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap49
happyOut49 HappyAbsSyn
happy_x_1 of { (HappyWrap49 CmmParse (LocalReg, ForeignHint)
happy_var_1) -> 
	[CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
happyIn48
		 ([CmmParse (LocalReg, ForeignHint)
happy_var_1]
	)}

happyReduce_144 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_144 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_144 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
44# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_144
happyReduction_144 :: p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_144 p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap49
happyOut49 HappyAbsSyn
happy_x_1 of { (HappyWrap49 CmmParse (LocalReg, ForeignHint)
happy_var_1) -> 
	[CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
happyIn48
		 ([CmmParse (LocalReg, ForeignHint)
happy_var_1]
	)}

happyReduce_145 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_145 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_145 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
44# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_145
happyReduction_145 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_145 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap49
happyOut49 HappyAbsSyn
happy_x_1 of { (HappyWrap49 CmmParse (LocalReg, ForeignHint)
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap48
happyOut48 HappyAbsSyn
happy_x_3 of { (HappyWrap48 [CmmParse (LocalReg, ForeignHint)]
happy_var_3) -> 
	[CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
happyIn48
		 (CmmParse (LocalReg, ForeignHint)
happy_var_1 CmmParse (LocalReg, ForeignHint)
-> [CmmParse (LocalReg, ForeignHint)]
-> [CmmParse (LocalReg, ForeignHint)]
forall a. a -> [a] -> [a]
: [CmmParse (LocalReg, ForeignHint)]
happy_var_3
	)}}

happyReduce_146 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_146 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_146 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
45# HappyAbsSyn -> HappyAbsSyn
happyReduction_146
happyReduction_146 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_146 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap50
happyOut50 HappyAbsSyn
happy_x_1 of { (HappyWrap50 CmmParse LocalReg
happy_var_1) -> 
	CmmParse (LocalReg, ForeignHint) -> HappyAbsSyn
happyIn49
		 (do LocalReg
e <- CmmParse LocalReg
happy_var_1; (LocalReg, ForeignHint) -> CmmParse (LocalReg, ForeignHint)
forall (m :: * -> *) a. Monad m => a -> m a
return (LocalReg
e, CmmExpr -> ForeignHint
inferCmmHint (CmmReg -> CmmExpr
CmmReg (LocalReg -> CmmReg
CmmLocal LocalReg
e)))
	)}

happyReduce_147 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_147 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_147 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
2# Int#
45# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_147
happyReduction_147 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_147 (HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (LocalReg, ForeignHint))
-> (CmmParse (LocalReg, ForeignHint) -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_String      String
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap50
happyOut50 HappyAbsSyn
happy_x_2 of { (HappyWrap50 CmmParse LocalReg
happy_var_2) -> 
	( do ForeignHint
h <- String -> PD ForeignHint
parseCmmHint String
happy_var_1;
                                      CmmParse (LocalReg, ForeignHint)
-> PD (CmmParse (LocalReg, ForeignHint))
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse (LocalReg, ForeignHint)
 -> PD (CmmParse (LocalReg, ForeignHint)))
-> CmmParse (LocalReg, ForeignHint)
-> PD (CmmParse (LocalReg, ForeignHint))
forall a b. (a -> b) -> a -> b
$ do
                                         LocalReg
e <- CmmParse LocalReg
happy_var_2; (LocalReg, ForeignHint) -> CmmParse (LocalReg, ForeignHint)
forall (m :: * -> *) a. Monad m => a -> m a
return (LocalReg
e,ForeignHint
h))}})
	) (\CmmParse (LocalReg, ForeignHint)
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (LocalReg, ForeignHint) -> HappyAbsSyn
happyIn49 CmmParse (LocalReg, ForeignHint)
r))

happyReduce_148 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_148 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_148 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
46# HappyAbsSyn -> HappyAbsSyn
happyReduction_148
happyReduction_148 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_148 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	CmmParse LocalReg -> HappyAbsSyn
happyIn50
		 (do CmmExpr
e <- FastString -> CmmParse CmmExpr
lookupName FastString
happy_var_1;
                                     LocalReg -> CmmParse LocalReg
forall (m :: * -> *) a. Monad m => a -> m a
return (LocalReg -> CmmParse LocalReg) -> LocalReg -> CmmParse LocalReg
forall a b. (a -> b) -> a -> b
$
                                       case CmmExpr
e of
                                        CmmReg (CmmLocal LocalReg
r) -> LocalReg
r
                                        CmmExpr
other -> String -> SDoc -> LocalReg
forall a. HasCallStack => String -> SDoc -> a
pprPanic String
"CmmParse:" (FastString -> SDoc
ftext FastString
happy_var_1 SDoc -> SDoc -> SDoc
<> String -> SDoc
text String
" not a local register")
	)}

happyReduce_149 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_149 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_149 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
47# HappyAbsSyn -> HappyAbsSyn
happyReduction_149
happyReduction_149 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_149 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	CmmParse CmmReg -> HappyAbsSyn
happyIn51
		 (do CmmExpr
e <- FastString -> CmmParse CmmExpr
lookupName FastString
happy_var_1;
                                     CmmReg -> CmmParse CmmReg
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmReg -> CmmParse CmmReg) -> CmmReg -> CmmParse CmmReg
forall a b. (a -> b) -> a -> b
$
                                       case CmmExpr
e of
                                        CmmReg CmmReg
r -> CmmReg
r
                                        CmmExpr
other -> String -> SDoc -> CmmReg
forall a. HasCallStack => String -> SDoc -> a
pprPanic String
"CmmParse:" (FastString -> SDoc
ftext FastString
happy_var_1 SDoc -> SDoc -> SDoc
<> String -> SDoc
text String
" not a register")
	)}

happyReduce_150 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_150 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_150 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
47# HappyAbsSyn -> HappyAbsSyn
happyReduction_150
happyReduction_150 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_150 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_GlobalReg   GlobalReg
happy_var_1)) -> 
	CmmParse CmmReg -> HappyAbsSyn
happyIn51
		 (CmmReg -> CmmParse CmmReg
forall (m :: * -> *) a. Monad m => a -> m a
return (GlobalReg -> CmmReg
CmmGlobal GlobalReg
happy_var_1)
	)}

happyReduce_151 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_151 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_151 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
48# HappyAbsSyn
happyReduction_151
happyReduction_151 :: HappyAbsSyn
happyReduction_151  =  Maybe [CmmParse LocalReg] -> HappyAbsSyn
happyIn52
		 (Maybe [CmmParse LocalReg]
forall a. Maybe a
Nothing
	)

happyReduce_152 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_152 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_152 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
48# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_152
happyReduction_152 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_152 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap53
happyOut53 HappyAbsSyn
happy_x_2 of { (HappyWrap53 [CmmParse LocalReg]
happy_var_2) -> 
	Maybe [CmmParse LocalReg] -> HappyAbsSyn
happyIn52
		 ([CmmParse LocalReg] -> Maybe [CmmParse LocalReg]
forall a. a -> Maybe a
Just [CmmParse LocalReg]
happy_var_2
	)}

happyReduce_153 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_153 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_153 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
49# HappyAbsSyn
happyReduction_153
happyReduction_153 :: HappyAbsSyn
happyReduction_153  =  [CmmParse LocalReg] -> HappyAbsSyn
happyIn53
		 ([]
	)

happyReduce_154 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_154 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_154 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
49# HappyAbsSyn -> HappyAbsSyn
happyReduction_154
happyReduction_154 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_154 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap54
happyOut54 HappyAbsSyn
happy_x_1 of { (HappyWrap54 [CmmParse LocalReg]
happy_var_1) -> 
	[CmmParse LocalReg] -> HappyAbsSyn
happyIn53
		 ([CmmParse LocalReg]
happy_var_1
	)}

happyReduce_155 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_155 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_155 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
50# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_155
happyReduction_155 :: p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_155 p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap55
happyOut55 HappyAbsSyn
happy_x_1 of { (HappyWrap55 CmmParse LocalReg
happy_var_1) -> 
	[CmmParse LocalReg] -> HappyAbsSyn
happyIn54
		 ([CmmParse LocalReg
happy_var_1]
	)}

happyReduce_156 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_156 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_156 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
50# HappyAbsSyn -> HappyAbsSyn
happyReduction_156
happyReduction_156 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_156 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap55
happyOut55 HappyAbsSyn
happy_x_1 of { (HappyWrap55 CmmParse LocalReg
happy_var_1) -> 
	[CmmParse LocalReg] -> HappyAbsSyn
happyIn54
		 ([CmmParse LocalReg
happy_var_1]
	)}

happyReduce_157 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_157 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_157 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
50# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_157
happyReduction_157 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_157 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap55
happyOut55 HappyAbsSyn
happy_x_1 of { (HappyWrap55 CmmParse LocalReg
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap54
happyOut54 HappyAbsSyn
happy_x_3 of { (HappyWrap54 [CmmParse LocalReg]
happy_var_3) -> 
	[CmmParse LocalReg] -> HappyAbsSyn
happyIn54
		 (CmmParse LocalReg
happy_var_1 CmmParse LocalReg -> [CmmParse LocalReg] -> [CmmParse LocalReg]
forall a. a -> [a] -> [a]
: [CmmParse LocalReg]
happy_var_3
	)}}

happyReduce_158 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_158 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_158 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
51# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_158
happyReduction_158 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_158 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
happy_x_1 of { (HappyWrap56 CmmType
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_2)) -> 
	CmmParse LocalReg -> HappyAbsSyn
happyIn55
		 (CmmType -> FastString -> CmmParse LocalReg
newLocal CmmType
happy_var_1 FastString
happy_var_2
	)}}

happyReduce_159 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_159 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_159 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
52# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_159
happyReduction_159 :: p -> HappyAbsSyn
happyReduction_159 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn56
		 (CmmType
b8
	)

happyReduce_160 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_160 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_160 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
52# HappyAbsSyn -> HappyAbsSyn
happyReduction_160
happyReduction_160 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_160 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap57
happyOut57 HappyAbsSyn
happy_x_1 of { (HappyWrap57 CmmType
happy_var_1) -> 
	CmmType -> HappyAbsSyn
happyIn56
		 (CmmType
happy_var_1
	)}

happyReduce_161 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_161 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_161 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
53# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_161
happyReduction_161 :: p -> HappyAbsSyn
happyReduction_161 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn57
		 (CmmType
b16
	)

happyReduce_162 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_162 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_162 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
53# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_162
happyReduction_162 :: p -> HappyAbsSyn
happyReduction_162 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn57
		 (CmmType
b32
	)

happyReduce_163 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_163 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_163 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
53# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_163
happyReduction_163 :: p -> HappyAbsSyn
happyReduction_163 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn57
		 (CmmType
b64
	)

happyReduce_164 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_164 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_164 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
53# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_164
happyReduction_164 :: p -> HappyAbsSyn
happyReduction_164 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn57
		 (CmmType
b128
	)

happyReduce_165 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_165 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_165 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
53# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_165
happyReduction_165 :: p -> HappyAbsSyn
happyReduction_165 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn57
		 (CmmType
b256
	)

happyReduce_166 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_166 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_166 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
53# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_166
happyReduction_166 :: p -> HappyAbsSyn
happyReduction_166 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn57
		 (CmmType
b512
	)

happyReduce_167 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_167 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_167 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
53# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_167
happyReduction_167 :: p -> HappyAbsSyn
happyReduction_167 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn57
		 (CmmType
f32
	)

happyReduce_168 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_168 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_168 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
53# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_168
happyReduction_168 :: p -> HappyAbsSyn
happyReduction_168 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn57
		 (CmmType
f64
	)

happyReduce_169 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_169 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_169 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
1# Int#
53# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {a} {p}. HappyStk a -> p -> PD HappyAbsSyn
happyReduction_169
happyReduction_169 :: HappyStk a -> p -> PD HappyAbsSyn
happyReduction_169 (a
happy_x_1 `HappyStk`
	HappyStk a
happyRest) p
tk
	 = PD CmmType -> (CmmType -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((( do DynFlags
dflags <- PD DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags; CmmType -> PD CmmType
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmType -> PD CmmType) -> CmmType -> PD CmmType
forall a b. (a -> b) -> a -> b
$ Platform -> CmmType
gcWord (DynFlags -> Platform
targetPlatform DynFlags
dflags)))
	) (\CmmType
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmType -> HappyAbsSyn
happyIn57 CmmType
r))

happyNewToken :: Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> PD HappyAbsSyn
happyNewToken Int#
action Happy_IntList
sts HappyStk HappyAbsSyn
stk
	= (Located CmmToken -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a. (Located CmmToken -> PD a) -> PD a
cmmlex(\Located CmmToken
tk -> 
	let cont :: Int# -> PD HappyAbsSyn
cont Int#
i = Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyDoAction Int#
i Located CmmToken
tk Int#
action Happy_IntList
sts HappyStk HappyAbsSyn
stk in
	case Located CmmToken
tk of {
	L SrcSpan
_ CmmToken
CmmT_EOF -> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyDoAction Int#
77# Located CmmToken
tk Int#
action Happy_IntList
sts HappyStk HappyAbsSyn
stk;
	L SrcSpan
_ (CmmT_SpecChar Char
':') -> Int# -> PD HappyAbsSyn
cont Int#
1#;
	L SrcSpan
_ (CmmT_SpecChar Char
';') -> Int# -> PD HappyAbsSyn
cont Int#
2#;
	L SrcSpan
_ (CmmT_SpecChar Char
'{') -> Int# -> PD HappyAbsSyn
cont Int#
3#;
	L SrcSpan
_ (CmmT_SpecChar Char
'}') -> Int# -> PD HappyAbsSyn
cont Int#
4#;
	L SrcSpan
_ (CmmT_SpecChar Char
'[') -> Int# -> PD HappyAbsSyn
cont Int#
5#;
	L SrcSpan
_ (CmmT_SpecChar Char
']') -> Int# -> PD HappyAbsSyn
cont Int#
6#;
	L SrcSpan
_ (CmmT_SpecChar Char
'(') -> Int# -> PD HappyAbsSyn
cont Int#
7#;
	L SrcSpan
_ (CmmT_SpecChar Char
')') -> Int# -> PD HappyAbsSyn
cont Int#
8#;
	L SrcSpan
_ (CmmT_SpecChar Char
'=') -> Int# -> PD HappyAbsSyn
cont Int#
9#;
	L SrcSpan
_ (CmmT_SpecChar Char
'`') -> Int# -> PD HappyAbsSyn
cont Int#
10#;
	L SrcSpan
_ (CmmT_SpecChar Char
'~') -> Int# -> PD HappyAbsSyn
cont Int#
11#;
	L SrcSpan
_ (CmmT_SpecChar Char
'/') -> Int# -> PD HappyAbsSyn
cont Int#
12#;
	L SrcSpan
_ (CmmT_SpecChar Char
'*') -> Int# -> PD HappyAbsSyn
cont Int#
13#;
	L SrcSpan
_ (CmmT_SpecChar Char
'%') -> Int# -> PD HappyAbsSyn
cont Int#
14#;
	L SrcSpan
_ (CmmT_SpecChar Char
'-') -> Int# -> PD HappyAbsSyn
cont Int#
15#;
	L SrcSpan
_ (CmmT_SpecChar Char
'+') -> Int# -> PD HappyAbsSyn
cont Int#
16#;
	L SrcSpan
_ (CmmT_SpecChar Char
'&') -> Int# -> PD HappyAbsSyn
cont Int#
17#;
	L SrcSpan
_ (CmmT_SpecChar Char
'^') -> Int# -> PD HappyAbsSyn
cont Int#
18#;
	L SrcSpan
_ (CmmT_SpecChar Char
'|') -> Int# -> PD HappyAbsSyn
cont Int#
19#;
	L SrcSpan
_ (CmmT_SpecChar Char
'>') -> Int# -> PD HappyAbsSyn
cont Int#
20#;
	L SrcSpan
_ (CmmT_SpecChar Char
'<') -> Int# -> PD HappyAbsSyn
cont Int#
21#;
	L SrcSpan
_ (CmmT_SpecChar Char
',') -> Int# -> PD HappyAbsSyn
cont Int#
22#;
	L SrcSpan
_ (CmmT_SpecChar Char
'!') -> Int# -> PD HappyAbsSyn
cont Int#
23#;
	L SrcSpan
_ (CmmToken
CmmT_DotDot) -> Int# -> PD HappyAbsSyn
cont Int#
24#;
	L SrcSpan
_ (CmmToken
CmmT_DoubleColon) -> Int# -> PD HappyAbsSyn
cont Int#
25#;
	L SrcSpan
_ (CmmToken
CmmT_Shr) -> Int# -> PD HappyAbsSyn
cont Int#
26#;
	L SrcSpan
_ (CmmToken
CmmT_Shl) -> Int# -> PD HappyAbsSyn
cont Int#
27#;
	L SrcSpan
_ (CmmToken
CmmT_Ge) -> Int# -> PD HappyAbsSyn
cont Int#
28#;
	L SrcSpan
_ (CmmToken
CmmT_Le) -> Int# -> PD HappyAbsSyn
cont Int#
29#;
	L SrcSpan
_ (CmmToken
CmmT_Eq) -> Int# -> PD HappyAbsSyn
cont Int#
30#;
	L SrcSpan
_ (CmmToken
CmmT_Ne) -> Int# -> PD HappyAbsSyn
cont Int#
31#;
	L SrcSpan
_ (CmmToken
CmmT_BoolAnd) -> Int# -> PD HappyAbsSyn
cont Int#
32#;
	L SrcSpan
_ (CmmToken
CmmT_BoolOr) -> Int# -> PD HappyAbsSyn
cont Int#
33#;
	L SrcSpan
_ (CmmToken
CmmT_True ) -> Int# -> PD HappyAbsSyn
cont Int#
34#;
	L SrcSpan
_ (CmmToken
CmmT_False) -> Int# -> PD HappyAbsSyn
cont Int#
35#;
	L SrcSpan
_ (CmmToken
CmmT_likely) -> Int# -> PD HappyAbsSyn
cont Int#
36#;
	L SrcSpan
_ (CmmToken
CmmT_CLOSURE) -> Int# -> PD HappyAbsSyn
cont Int#
37#;
	L SrcSpan
_ (CmmToken
CmmT_INFO_TABLE) -> Int# -> PD HappyAbsSyn
cont Int#
38#;
	L SrcSpan
_ (CmmToken
CmmT_INFO_TABLE_RET) -> Int# -> PD HappyAbsSyn
cont Int#
39#;
	L SrcSpan
_ (CmmToken
CmmT_INFO_TABLE_FUN) -> Int# -> PD HappyAbsSyn
cont Int#
40#;
	L SrcSpan
_ (CmmToken
CmmT_INFO_TABLE_CONSTR) -> Int# -> PD HappyAbsSyn
cont Int#
41#;
	L SrcSpan
_ (CmmToken
CmmT_INFO_TABLE_SELECTOR) -> Int# -> PD HappyAbsSyn
cont Int#
42#;
	L SrcSpan
_ (CmmToken
CmmT_else) -> Int# -> PD HappyAbsSyn
cont Int#
43#;
	L SrcSpan
_ (CmmToken
CmmT_export) -> Int# -> PD HappyAbsSyn
cont Int#
44#;
	L SrcSpan
_ (CmmToken
CmmT_section) -> Int# -> PD HappyAbsSyn
cont Int#
45#;
	L SrcSpan
_ (CmmToken
CmmT_goto) -> Int# -> PD HappyAbsSyn
cont Int#
46#;
	L SrcSpan
_ (CmmToken
CmmT_if) -> Int# -> PD HappyAbsSyn
cont Int#
47#;
	L SrcSpan
_ (CmmToken
CmmT_call) -> Int# -> PD HappyAbsSyn
cont Int#
48#;
	L SrcSpan
_ (CmmToken
CmmT_jump) -> Int# -> PD HappyAbsSyn
cont Int#
49#;
	L SrcSpan
_ (CmmToken
CmmT_foreign) -> Int# -> PD HappyAbsSyn
cont Int#
50#;
	L SrcSpan
_ (CmmToken
CmmT_never) -> Int# -> PD HappyAbsSyn
cont Int#
51#;
	L SrcSpan
_ (CmmToken
CmmT_prim) -> Int# -> PD HappyAbsSyn
cont Int#
52#;
	L SrcSpan
_ (CmmToken
CmmT_reserve) -> Int# -> PD HappyAbsSyn
cont Int#
53#;
	L SrcSpan
_ (CmmToken
CmmT_return) -> Int# -> PD HappyAbsSyn
cont Int#
54#;
	L SrcSpan
_ (CmmToken
CmmT_returns) -> Int# -> PD HappyAbsSyn
cont Int#
55#;
	L SrcSpan
_ (CmmToken
CmmT_import) -> Int# -> PD HappyAbsSyn
cont Int#
56#;
	L SrcSpan
_ (CmmToken
CmmT_switch) -> Int# -> PD HappyAbsSyn
cont Int#
57#;
	L SrcSpan
_ (CmmToken
CmmT_case) -> Int# -> PD HappyAbsSyn
cont Int#
58#;
	L SrcSpan
_ (CmmToken
CmmT_default) -> Int# -> PD HappyAbsSyn
cont Int#
59#;
	L SrcSpan
_ (CmmToken
CmmT_push) -> Int# -> PD HappyAbsSyn
cont Int#
60#;
	L SrcSpan
_ (CmmToken
CmmT_unwind) -> Int# -> PD HappyAbsSyn
cont Int#
61#;
	L SrcSpan
_ (CmmToken
CmmT_bits8) -> Int# -> PD HappyAbsSyn
cont Int#
62#;
	L SrcSpan
_ (CmmToken
CmmT_bits16) -> Int# -> PD HappyAbsSyn
cont Int#
63#;
	L SrcSpan
_ (CmmToken
CmmT_bits32) -> Int# -> PD HappyAbsSyn
cont Int#
64#;
	L SrcSpan
_ (CmmToken
CmmT_bits64) -> Int# -> PD HappyAbsSyn
cont Int#
65#;
	L SrcSpan
_ (CmmToken
CmmT_bits128) -> Int# -> PD HappyAbsSyn
cont Int#
66#;
	L SrcSpan
_ (CmmToken
CmmT_bits256) -> Int# -> PD HappyAbsSyn
cont Int#
67#;
	L SrcSpan
_ (CmmToken
CmmT_bits512) -> Int# -> PD HappyAbsSyn
cont Int#
68#;
	L SrcSpan
_ (CmmToken
CmmT_float32) -> Int# -> PD HappyAbsSyn
cont Int#
69#;
	L SrcSpan
_ (CmmToken
CmmT_float64) -> Int# -> PD HappyAbsSyn
cont Int#
70#;
	L SrcSpan
_ (CmmToken
CmmT_gcptr) -> Int# -> PD HappyAbsSyn
cont Int#
71#;
	L SrcSpan
_ (CmmT_GlobalReg   GlobalReg
happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
cont Int#
72#;
	L SrcSpan
_ (CmmT_Name        FastString
happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
cont Int#
73#;
	L SrcSpan
_ (CmmT_String      String
happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
cont Int#
74#;
	L SrcSpan
_ (CmmT_Int         Integer
happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
cont Int#
75#;
	L SrcSpan
_ (CmmT_Float       Rational
happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
cont Int#
76#;
	Located CmmToken
_ -> (Located CmmToken, [String]) -> PD HappyAbsSyn
forall a. (Located CmmToken, [String]) -> PD a
happyError' (Located CmmToken
tk, [])
	})

happyError_ :: [String] -> Int# -> Located CmmToken -> PD a
happyError_ [String]
explist Int#
77# Located CmmToken
tk = (Located CmmToken, [String]) -> PD a
forall a. (Located CmmToken, [String]) -> PD a
happyError' (Located CmmToken
tk, [String]
explist)
happyError_ [String]
explist Int#
_ Located CmmToken
tk = (Located CmmToken, [String]) -> PD a
forall a. (Located CmmToken, [String]) -> PD a
happyError' (Located CmmToken
tk, [String]
explist)

happyThen :: () => PD a -> (a -> PD b) -> PD b
happyThen :: forall a b. PD a -> (a -> PD b) -> PD b
happyThen = PD a -> (a -> PD b) -> PD b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
(>>=)
happyReturn :: () => a -> PD a
happyReturn :: forall a. a -> PD a
happyReturn = (a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return)
happyParse :: () => Happy_GHC_Exts.Int# -> PD (HappyAbsSyn )

happyNewToken :: () => Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )

happyDoAction :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )

happyReduceArr :: () => Happy_Data_Array.Array Int (Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn ))

happyThen1 :: () => PD a -> (a -> PD b) -> PD b
happyThen1 :: forall a b. PD a -> (a -> PD b) -> PD b
happyThen1 = PD a -> (a -> PD b) -> PD b
forall a b. PD a -> (a -> PD b) -> PD b
happyThen
happyReturn1 :: () => a -> PD a
happyReturn1 :: forall a. a -> PD a
happyReturn1 = a -> PD a
forall a. a -> PD a
happyReturn
happyError' :: () => ((Located CmmToken), [String]) -> PD a
happyError' :: forall a. (Located CmmToken, [String]) -> PD a
happyError' (Located CmmToken, [String])
tk = (\(Located CmmToken
tokens, [String]
explist) -> PD a
forall a. PD a
happyError) (Located CmmToken, [String])
tk
cmmParse :: PD (CmmParse ())
cmmParse = PD (CmmParse ())
happySomeParser where
 happySomeParser :: PD (CmmParse ())
happySomeParser = PD HappyAbsSyn
-> (HappyAbsSyn -> PD (CmmParse ())) -> PD (CmmParse ())
forall a b. PD a -> (a -> PD b) -> PD b
happyThen (Int# -> PD HappyAbsSyn
happyParse Int#
0#) (\HappyAbsSyn
x -> CmmParse () -> PD (CmmParse ())
forall a. a -> PD a
happyReturn (let {(HappyWrap4 CmmParse ()
x') = HappyAbsSyn -> HappyWrap4
happyOut4 HappyAbsSyn
x} in CmmParse ()
x'))

happySeq :: a -> b -> b
happySeq = a -> b -> b
forall a b. a -> b -> b
happyDoSeq


section :: String -> SectionType
section :: String -> SectionType
section String
"text"      = SectionType
Text
section String
"data"      = SectionType
Data
section String
"rodata"    = SectionType
ReadOnlyData
section String
"relrodata" = SectionType
RelocatableReadOnlyData
section String
"bss"       = SectionType
UninitialisedData
section String
s           = String -> SectionType
OtherSection String
s

mkString :: String -> CmmStatic
mkString :: String -> CmmStatic
mkString String
s = ConstrDescription -> CmmStatic
CmmString (String -> ConstrDescription
BS8.pack String
s)

-- mkMachOp infers the type of the MachOp from the type of its first
-- argument.  We assume that this is correct: for MachOps that don't have
-- symmetrical args (e.g. shift ops), the first arg determines the type of
-- the op.
mkMachOp :: (Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp :: (Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
fn [CmmParse CmmExpr]
args = do
  DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
  let platform :: Platform
platform = DynFlags -> Platform
targetPlatform DynFlags
dflags
  [CmmExpr]
arg_exprs <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse CmmExpr]
args
  CmmExpr -> CmmParse CmmExpr
forall (m :: * -> *) a. Monad m => a -> m a
return (MachOp -> [CmmExpr] -> CmmExpr
CmmMachOp (Width -> MachOp
fn (CmmType -> Width
typeWidth (Platform -> CmmExpr -> CmmType
cmmExprType Platform
platform ([CmmExpr] -> CmmExpr
forall a. [a] -> a
head [CmmExpr]
arg_exprs)))) [CmmExpr]
arg_exprs)

getLit :: CmmExpr -> CmmLit
getLit :: CmmExpr -> CmmLit
getLit (CmmLit CmmLit
l) = CmmLit
l
getLit (CmmMachOp (MO_S_Neg Width
_) [CmmLit (CmmInt Integer
i Width
r)])  = Integer -> Width -> CmmLit
CmmInt (Integer -> Integer
forall a. Num a => a -> a
negate Integer
i) Width
r
getLit CmmExpr
_ = String -> CmmLit
forall a. String -> a
panic String
"invalid literal" -- TODO messy failure

nameToMachOp :: FastString -> PD (Width -> MachOp)
nameToMachOp :: FastString -> PD (Width -> MachOp)
nameToMachOp FastString
name =
  case UniqFM FastString (Width -> MachOp)
-> FastString -> Maybe (Width -> MachOp)
forall key elt. Uniquable key => UniqFM key elt -> key -> Maybe elt
lookupUFM UniqFM FastString (Width -> MachOp)
machOps FastString
name of
        Maybe (Width -> MachOp)
Nothing -> String -> PD (Width -> MachOp)
forall a. String -> PD a
failMsgPD (String
"unknown primitive " String -> String -> String
forall a. [a] -> [a] -> [a]
++ FastString -> String
unpackFS FastString
name)
        Just Width -> MachOp
m  -> (Width -> MachOp) -> PD (Width -> MachOp)
forall (m :: * -> *) a. Monad m => a -> m a
return Width -> MachOp
m

exprOp :: FastString -> [CmmParse CmmExpr] -> PD (CmmParse CmmExpr)
exprOp :: FastString -> [CmmParse CmmExpr] -> PD (CmmParse CmmExpr)
exprOp FastString
name [CmmParse CmmExpr]
args_code = do
  DynFlags
dflags <- PD DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
  case UniqFM FastString ([CmmExpr] -> CmmExpr)
-> FastString -> Maybe ([CmmExpr] -> CmmExpr)
forall key elt. Uniquable key => UniqFM key elt -> key -> Maybe elt
lookupUFM (DynFlags -> UniqFM FastString ([CmmExpr] -> CmmExpr)
exprMacros DynFlags
dflags) FastString
name of
     Just [CmmExpr] -> CmmExpr
f  -> CmmParse CmmExpr -> PD (CmmParse CmmExpr)
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse CmmExpr -> PD (CmmParse CmmExpr))
-> CmmParse CmmExpr -> PD (CmmParse CmmExpr)
forall a b. (a -> b) -> a -> b
$ do
        [CmmExpr]
args <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse CmmExpr]
args_code
        CmmExpr -> CmmParse CmmExpr
forall (m :: * -> *) a. Monad m => a -> m a
return ([CmmExpr] -> CmmExpr
f [CmmExpr]
args)
     Maybe ([CmmExpr] -> CmmExpr)
Nothing -> do
        Width -> MachOp
mo <- FastString -> PD (Width -> MachOp)
nameToMachOp FastString
name
        CmmParse CmmExpr -> PD (CmmParse CmmExpr)
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse CmmExpr -> PD (CmmParse CmmExpr))
-> CmmParse CmmExpr -> PD (CmmParse CmmExpr)
forall a b. (a -> b) -> a -> b
$ (Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
mo [CmmParse CmmExpr]
args_code

exprMacros :: DynFlags -> UniqFM FastString ([CmmExpr] -> CmmExpr)
exprMacros :: DynFlags -> UniqFM FastString ([CmmExpr] -> CmmExpr)
exprMacros DynFlags
dflags = [(FastString, [CmmExpr] -> CmmExpr)]
-> UniqFM FastString ([CmmExpr] -> CmmExpr)
forall key elt. Uniquable key => [(key, elt)] -> UniqFM key elt
listToUFM [
  ( String -> FastString
fsLit String
"ENTRY_CODE",   \ [CmmExpr
x] -> Platform -> CmmExpr -> CmmExpr
entryCode Platform
platform CmmExpr
x ),
  ( String -> FastString
fsLit String
"INFO_PTR",     \ [CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
closureInfoPtr DynFlags
dflags CmmExpr
x ),
  ( String -> FastString
fsLit String
"STD_INFO",     \ [CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
infoTable DynFlags
dflags CmmExpr
x ),
  ( String -> FastString
fsLit String
"FUN_INFO",     \ [CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
funInfoTable DynFlags
dflags CmmExpr
x ),
  ( String -> FastString
fsLit String
"GET_ENTRY",    \ [CmmExpr
x] -> Platform -> CmmExpr -> CmmExpr
entryCode Platform
platform (DynFlags -> CmmExpr -> CmmExpr
closureInfoPtr DynFlags
dflags CmmExpr
x) ),
  ( String -> FastString
fsLit String
"GET_STD_INFO", \ [CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
infoTable DynFlags
dflags (DynFlags -> CmmExpr -> CmmExpr
closureInfoPtr DynFlags
dflags CmmExpr
x) ),
  ( String -> FastString
fsLit String
"GET_FUN_INFO", \ [CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
funInfoTable DynFlags
dflags (DynFlags -> CmmExpr -> CmmExpr
closureInfoPtr DynFlags
dflags CmmExpr
x) ),
  ( String -> FastString
fsLit String
"INFO_TYPE",    \ [CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
infoTableClosureType DynFlags
dflags CmmExpr
x ),
  ( String -> FastString
fsLit String
"INFO_PTRS",    \ [CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
infoTablePtrs DynFlags
dflags CmmExpr
x ),
  ( String -> FastString
fsLit String
"INFO_NPTRS",   \ [CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
infoTableNonPtrs DynFlags
dflags CmmExpr
x )
  ]
  where platform :: Platform
platform = DynFlags -> Platform
targetPlatform DynFlags
dflags

-- we understand a subset of C-- primitives:
machOps :: UniqFM FastString (Width -> MachOp)
machOps = [(FastString, Width -> MachOp)]
-> UniqFM FastString (Width -> MachOp)
forall key elt. Uniquable key => [(key, elt)] -> UniqFM key elt
listToUFM ([(FastString, Width -> MachOp)]
 -> UniqFM FastString (Width -> MachOp))
-> [(FastString, Width -> MachOp)]
-> UniqFM FastString (Width -> MachOp)
forall a b. (a -> b) -> a -> b
$
        ((String, Width -> MachOp) -> (FastString, Width -> MachOp))
-> [(String, Width -> MachOp)] -> [(FastString, Width -> MachOp)]
forall a b. (a -> b) -> [a] -> [b]
map (\(String
x, Width -> MachOp
y) -> (String -> FastString
mkFastString String
x, Width -> MachOp
y)) [
        ( String
"add",        Width -> MachOp
MO_Add ),
        ( String
"sub",        Width -> MachOp
MO_Sub ),
        ( String
"eq",         Width -> MachOp
MO_Eq ),
        ( String
"ne",         Width -> MachOp
MO_Ne ),
        ( String
"mul",        Width -> MachOp
MO_Mul ),
        ( String
"neg",        Width -> MachOp
MO_S_Neg ),
        ( String
"quot",       Width -> MachOp
MO_S_Quot ),
        ( String
"rem",        Width -> MachOp
MO_S_Rem ),
        ( String
"divu",       Width -> MachOp
MO_U_Quot ),
        ( String
"modu",       Width -> MachOp
MO_U_Rem ),

        ( String
"ge",         Width -> MachOp
MO_S_Ge ),
        ( String
"le",         Width -> MachOp
MO_S_Le ),
        ( String
"gt",         Width -> MachOp
MO_S_Gt ),
        ( String
"lt",         Width -> MachOp
MO_S_Lt ),

        ( String
"geu",        Width -> MachOp
MO_U_Ge ),
        ( String
"leu",        Width -> MachOp
MO_U_Le ),
        ( String
"gtu",        Width -> MachOp
MO_U_Gt ),
        ( String
"ltu",        Width -> MachOp
MO_U_Lt ),

        ( String
"and",        Width -> MachOp
MO_And ),
        ( String
"or",         Width -> MachOp
MO_Or ),
        ( String
"xor",        Width -> MachOp
MO_Xor ),
        ( String
"com",        Width -> MachOp
MO_Not ),
        ( String
"shl",        Width -> MachOp
MO_Shl ),
        ( String
"shrl",       Width -> MachOp
MO_U_Shr ),
        ( String
"shra",       Width -> MachOp
MO_S_Shr ),

        ( String
"fadd",       Width -> MachOp
MO_F_Add ),
        ( String
"fsub",       Width -> MachOp
MO_F_Sub ),
        ( String
"fneg",       Width -> MachOp
MO_F_Neg ),
        ( String
"fmul",       Width -> MachOp
MO_F_Mul ),
        ( String
"fquot",      Width -> MachOp
MO_F_Quot ),

        ( String
"feq",        Width -> MachOp
MO_F_Eq ),
        ( String
"fne",        Width -> MachOp
MO_F_Ne ),
        ( String
"fge",        Width -> MachOp
MO_F_Ge ),
        ( String
"fle",        Width -> MachOp
MO_F_Le ),
        ( String
"fgt",        Width -> MachOp
MO_F_Gt ),
        ( String
"flt",        Width -> MachOp
MO_F_Lt ),

        ( String
"lobits8",  (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_UU_Conv Width
W8  ),
        ( String
"lobits16", (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_UU_Conv Width
W16 ),
        ( String
"lobits32", (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_UU_Conv Width
W32 ),
        ( String
"lobits64", (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_UU_Conv Width
W64 ),

        ( String
"zx16",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_UU_Conv Width
W16 ),
        ( String
"zx32",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_UU_Conv Width
W32 ),
        ( String
"zx64",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_UU_Conv Width
W64 ),

        ( String
"sx16",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_SS_Conv Width
W16 ),
        ( String
"sx32",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_SS_Conv Width
W32 ),
        ( String
"sx64",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_SS_Conv Width
W64 ),

        ( String
"f2f32",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_FF_Conv Width
W32 ),  -- TODO; rounding mode
        ( String
"f2f64",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_FF_Conv Width
W64 ),  -- TODO; rounding mode
        ( String
"f2i8",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_FS_Conv Width
W8 ),
        ( String
"f2i16",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_FS_Conv Width
W16 ),
        ( String
"f2i32",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_FS_Conv Width
W32 ),
        ( String
"f2i64",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_FS_Conv Width
W64 ),
        ( String
"i2f32",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_SF_Conv Width
W32 ),
        ( String
"i2f64",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_SF_Conv Width
W64 )
        ]

callishMachOps :: UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
callishMachOps :: UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
callishMachOps = [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
-> UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
forall key elt. Uniquable key => [(key, elt)] -> UniqFM key elt
listToUFM ([(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
 -> UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr])))
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
-> UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
forall a b. (a -> b) -> a -> b
$
        ((String, [CmmExpr] -> (CallishMachOp, [CmmExpr]))
 -> (FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr])))
-> [(String, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a b. (a -> b) -> [a] -> [b]
map (\(String
x, [CmmExpr] -> (CallishMachOp, [CmmExpr])
y) -> (String -> FastString
mkFastString String
x, [CmmExpr] -> (CallishMachOp, [CmmExpr])
y)) [
        ( String
"read_barrier", (CallishMachOp
MO_ReadBarrier,)),
        ( String
"write_barrier", (CallishMachOp
MO_WriteBarrier,)),
        ( String
"memcpy", (ByteOff -> CallishMachOp)
-> [CmmExpr] -> (CallishMachOp, [CmmExpr])
memcpyLikeTweakArgs ByteOff -> CallishMachOp
MO_Memcpy ),
        ( String
"memset", (ByteOff -> CallishMachOp)
-> [CmmExpr] -> (CallishMachOp, [CmmExpr])
memcpyLikeTweakArgs ByteOff -> CallishMachOp
MO_Memset ),
        ( String
"memmove", (ByteOff -> CallishMachOp)
-> [CmmExpr] -> (CallishMachOp, [CmmExpr])
memcpyLikeTweakArgs ByteOff -> CallishMachOp
MO_Memmove ),
        ( String
"memcmp", (ByteOff -> CallishMachOp)
-> [CmmExpr] -> (CallishMachOp, [CmmExpr])
memcpyLikeTweakArgs ByteOff -> CallishMachOp
MO_Memcmp ),

        (String
"prefetch0", (ByteOff -> CallishMachOp
MO_Prefetch_Data ByteOff
0,)),
        (String
"prefetch1", (ByteOff -> CallishMachOp
MO_Prefetch_Data ByteOff
1,)),
        (String
"prefetch2", (ByteOff -> CallishMachOp
MO_Prefetch_Data ByteOff
2,)),
        (String
"prefetch3", (ByteOff -> CallishMachOp
MO_Prefetch_Data ByteOff
3,)),

        ( String
"popcnt8",  (Width -> CallishMachOp
MO_PopCnt Width
W8,)),
        ( String
"popcnt16", (Width -> CallishMachOp
MO_PopCnt Width
W16,)),
        ( String
"popcnt32", (Width -> CallishMachOp
MO_PopCnt Width
W32,)),
        ( String
"popcnt64", (Width -> CallishMachOp
MO_PopCnt Width
W64,)),

        ( String
"pdep8",  (Width -> CallishMachOp
MO_Pdep Width
W8,)),
        ( String
"pdep16", (Width -> CallishMachOp
MO_Pdep Width
W16,)),
        ( String
"pdep32", (Width -> CallishMachOp
MO_Pdep Width
W32,)),
        ( String
"pdep64", (Width -> CallishMachOp
MO_Pdep Width
W64,)),

        ( String
"pext8",  (Width -> CallishMachOp
MO_Pext Width
W8,)),
        ( String
"pext16", (Width -> CallishMachOp
MO_Pext Width
W16,)),
        ( String
"pext32", (Width -> CallishMachOp
MO_Pext Width
W32,)),
        ( String
"pext64", (Width -> CallishMachOp
MO_Pext Width
W64,)),

        ( String
"cmpxchg8",  (Width -> CallishMachOp
MO_Cmpxchg Width
W8,)),
        ( String
"cmpxchg16", (Width -> CallishMachOp
MO_Cmpxchg Width
W16,)),
        ( String
"cmpxchg32", (Width -> CallishMachOp
MO_Cmpxchg Width
W32,)),
        ( String
"cmpxchg64", (Width -> CallishMachOp
MO_Cmpxchg Width
W64,)),

        ( String
"xchg8",  (Width -> CallishMachOp
MO_Xchg Width
W8,)),
        ( String
"xchg16", (Width -> CallishMachOp
MO_Xchg Width
W16,)),
        ( String
"xchg32", (Width -> CallishMachOp
MO_Xchg Width
W32,)),
        ( String
"xchg64", (Width -> CallishMachOp
MO_Xchg Width
W64,))

        -- ToDo: the rest, maybe
        -- edit: which rest?
        -- also: how do we tell CMM Lint how to type check callish macops?
    ]
  where
    memcpyLikeTweakArgs :: (Int -> CallishMachOp) -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
    memcpyLikeTweakArgs :: (ByteOff -> CallishMachOp)
-> [CmmExpr] -> (CallishMachOp, [CmmExpr])
memcpyLikeTweakArgs ByteOff -> CallishMachOp
op [] = String -> (CallishMachOp, [CmmExpr])
forall a. String -> a
pgmError String
"memcpy-like function requires at least one argument"
    memcpyLikeTweakArgs ByteOff -> CallishMachOp
op args :: [CmmExpr]
args@(CmmExpr
_:[CmmExpr]
_) =
        (ByteOff -> CallishMachOp
op ByteOff
align, [CmmExpr]
args')
      where
        args' :: [CmmExpr]
args' = [CmmExpr] -> [CmmExpr]
forall a. [a] -> [a]
init [CmmExpr]
args
        align :: ByteOff
align = case [CmmExpr] -> CmmExpr
forall a. [a] -> a
last [CmmExpr]
args of
          CmmLit (CmmInt Integer
alignInteger Width
_) -> Integer -> ByteOff
forall a. Num a => Integer -> a
fromInteger Integer
alignInteger
          CmmExpr
e -> String -> SDoc -> ByteOff
forall a. String -> SDoc -> a
pprPgmError String
"Non-constant alignment in memcpy-like function:" (CmmExpr -> SDoc
forall a. Outputable a => a -> SDoc
ppr CmmExpr
e)
        -- The alignment of memcpy-ish operations must be a
        -- compile-time constant. We verify this here, passing it around
        -- in the MO_* constructor. In order to do this, however, we
        -- must intercept the arguments in primCall.

parseSafety :: String -> PD Safety
parseSafety :: String -> PD Safety
parseSafety String
"safe"   = Safety -> PD Safety
forall (m :: * -> *) a. Monad m => a -> m a
return Safety
PlaySafe
parseSafety String
"unsafe" = Safety -> PD Safety
forall (m :: * -> *) a. Monad m => a -> m a
return Safety
PlayRisky
parseSafety String
"interruptible" = Safety -> PD Safety
forall (m :: * -> *) a. Monad m => a -> m a
return Safety
PlayInterruptible
parseSafety String
str      = String -> PD Safety
forall a. String -> PD a
failMsgPD (String
"unrecognised safety: " String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
str)

parseCmmHint :: String -> PD ForeignHint
parseCmmHint :: String -> PD ForeignHint
parseCmmHint String
"ptr"    = ForeignHint -> PD ForeignHint
forall (m :: * -> *) a. Monad m => a -> m a
return ForeignHint
AddrHint
parseCmmHint String
"signed" = ForeignHint -> PD ForeignHint
forall (m :: * -> *) a. Monad m => a -> m a
return ForeignHint
SignedHint
parseCmmHint String
str      = String -> PD ForeignHint
forall a. String -> PD a
failMsgPD (String
"unrecognised hint: " String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
str)

-- labels are always pointers, so we might as well infer the hint
inferCmmHint :: CmmExpr -> ForeignHint
inferCmmHint :: CmmExpr -> ForeignHint
inferCmmHint (CmmLit (CmmLabel CLabel
_)) = ForeignHint
AddrHint
inferCmmHint (CmmReg (CmmGlobal GlobalReg
g)) | GlobalReg -> Bool
isPtrGlobalReg GlobalReg
g = ForeignHint
AddrHint
inferCmmHint CmmExpr
_ = ForeignHint
NoHint

isPtrGlobalReg :: GlobalReg -> Bool
isPtrGlobalReg GlobalReg
Sp                    = Bool
True
isPtrGlobalReg GlobalReg
SpLim                 = Bool
True
isPtrGlobalReg GlobalReg
Hp                    = Bool
True
isPtrGlobalReg GlobalReg
HpLim                 = Bool
True
isPtrGlobalReg GlobalReg
CCCS                  = Bool
True
isPtrGlobalReg GlobalReg
CurrentTSO            = Bool
True
isPtrGlobalReg GlobalReg
CurrentNursery        = Bool
True
isPtrGlobalReg (VanillaReg ByteOff
_ VGcPtr
VGcPtr) = Bool
True
isPtrGlobalReg GlobalReg
_                     = Bool
False

happyError :: PD a
happyError :: forall a. PD a
happyError = (DynFlags -> PState -> ParseResult a) -> PD a
forall a. (DynFlags -> PState -> ParseResult a) -> PD a
PD ((DynFlags -> PState -> ParseResult a) -> PD a)
-> (DynFlags -> PState -> ParseResult a) -> PD a
forall a b. (a -> b) -> a -> b
$ \DynFlags
_ PState
s -> P a -> PState -> ParseResult a
forall a. P a -> PState -> ParseResult a
unP P a
forall a. P a
srcParseFail PState
s

-- -----------------------------------------------------------------------------
-- Statement-level macros

stmtMacro :: FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
stmtMacro :: FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
stmtMacro FastString
fun [CmmParse CmmExpr]
args_code = do
  case UniqFM FastString ([CmmExpr] -> FCode ())
-> FastString -> Maybe ([CmmExpr] -> FCode ())
forall key elt. Uniquable key => UniqFM key elt -> key -> Maybe elt
lookupUFM UniqFM FastString ([CmmExpr] -> FCode ())
stmtMacros FastString
fun of
    Maybe ([CmmExpr] -> FCode ())
Nothing -> String -> PD (CmmParse ())
forall a. String -> PD a
failMsgPD (String
"unknown macro: " String -> String -> String
forall a. [a] -> [a] -> [a]
++ FastString -> String
unpackFS FastString
fun)
    Just [CmmExpr] -> FCode ()
fcode -> CmmParse () -> PD (CmmParse ())
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse () -> PD (CmmParse ()))
-> CmmParse () -> PD (CmmParse ())
forall a b. (a -> b) -> a -> b
$ do
        [CmmExpr]
args <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse CmmExpr]
args_code
        FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code ([CmmExpr] -> FCode ()
fcode [CmmExpr]
args)

stmtMacros :: UniqFM FastString ([CmmExpr] -> FCode ())
stmtMacros :: UniqFM FastString ([CmmExpr] -> FCode ())
stmtMacros = [(FastString, [CmmExpr] -> FCode ())]
-> UniqFM FastString ([CmmExpr] -> FCode ())
forall key elt. Uniquable key => [(key, elt)] -> UniqFM key elt
listToUFM [
  ( String -> FastString
fsLit String
"CCS_ALLOC",             \[CmmExpr
words,CmmExpr
ccs]  -> CmmExpr -> CmmExpr -> FCode ()
profAlloc CmmExpr
words CmmExpr
ccs ),
  ( String -> FastString
fsLit String
"ENTER_CCS_THUNK",       \[CmmExpr
e] -> CmmExpr -> FCode ()
enterCostCentreThunk CmmExpr
e ),

  ( String -> FastString
fsLit String
"CLOSE_NURSERY",         \[]  -> FCode ()
emitCloseNursery ),
  ( String -> FastString
fsLit String
"OPEN_NURSERY",          \[]  -> FCode ()
emitOpenNursery ),

  -- completely generic heap and stack checks, for use in high-level cmm.
  ( String -> FastString
fsLit String
"HP_CHK_GEN",            \[CmmExpr
bytes] ->
                                      Maybe CmmExpr -> Maybe CmmExpr -> FCode ()
heapStackCheckGen Maybe CmmExpr
forall a. Maybe a
Nothing (CmmExpr -> Maybe CmmExpr
forall a. a -> Maybe a
Just CmmExpr
bytes) ),
  ( String -> FastString
fsLit String
"STK_CHK_GEN",           \[] ->
                                      Maybe CmmExpr -> Maybe CmmExpr -> FCode ()
heapStackCheckGen (CmmExpr -> Maybe CmmExpr
forall a. a -> Maybe a
Just (CmmLit -> CmmExpr
CmmLit CmmLit
CmmHighStackMark)) Maybe CmmExpr
forall a. Maybe a
Nothing ),

  -- A stack check for a fixed amount of stack.  Sounds a bit strange, but
  -- we use the stack for a bit of temporary storage in a couple of primops
  ( String -> FastString
fsLit String
"STK_CHK_GEN_N",         \[CmmExpr
bytes] ->
                                      Maybe CmmExpr -> Maybe CmmExpr -> FCode ()
heapStackCheckGen (CmmExpr -> Maybe CmmExpr
forall a. a -> Maybe a
Just CmmExpr
bytes) Maybe CmmExpr
forall a. Maybe a
Nothing ),

  -- A stack check on entry to a thunk, where the argument is the thunk pointer.
  ( String -> FastString
fsLit String
"STK_CHK_NP"   ,         \[CmmExpr
node] -> Bool -> CmmExpr -> ByteOff -> [LocalReg] -> FCode () -> FCode ()
entryHeapCheck' Bool
False CmmExpr
node ByteOff
0 [] (() -> FCode ()
forall (m :: * -> *) a. Monad m => a -> m a
return ())),

  ( String -> FastString
fsLit String
"LOAD_THREAD_STATE",     \[] -> FCode ()
emitLoadThreadState ),
  ( String -> FastString
fsLit String
"SAVE_THREAD_STATE",     \[] -> FCode ()
emitSaveThreadState ),

  ( String -> FastString
fsLit String
"SAVE_REGS",             \[] -> FCode ()
emitSaveRegs ),
  ( String -> FastString
fsLit String
"RESTORE_REGS",          \[] -> FCode ()
emitRestoreRegs ),

  ( String -> FastString
fsLit String
"LDV_ENTER",             \[CmmExpr
e] -> CmmExpr -> FCode ()
ldvEnter CmmExpr
e ),
  ( String -> FastString
fsLit String
"LDV_RECORD_CREATE",     \[CmmExpr
e] -> CmmExpr -> FCode ()
ldvRecordCreate CmmExpr
e ),

  ( String -> FastString
fsLit String
"PUSH_UPD_FRAME",        \[CmmExpr
sp,CmmExpr
e] -> CmmExpr -> CmmExpr -> FCode ()
emitPushUpdateFrame CmmExpr
sp CmmExpr
e ),
  ( String -> FastString
fsLit String
"SET_HDR",               \[CmmExpr
ptr,CmmExpr
info,CmmExpr
ccs] ->
                                        CmmExpr -> CmmExpr -> CmmExpr -> FCode ()
emitSetDynHdr CmmExpr
ptr CmmExpr
info CmmExpr
ccs ),
  ( String -> FastString
fsLit String
"TICK_ALLOC_PRIM",       \[CmmExpr
hdr,CmmExpr
goods,CmmExpr
slop] ->
                                        CmmExpr -> CmmExpr -> CmmExpr -> FCode ()
tickyAllocPrim CmmExpr
hdr CmmExpr
goods CmmExpr
slop ),
  ( String -> FastString
fsLit String
"TICK_ALLOC_PAP",        \[CmmExpr
goods,CmmExpr
slop] ->
                                        CmmExpr -> CmmExpr -> FCode ()
tickyAllocPAP CmmExpr
goods CmmExpr
slop ),
  ( String -> FastString
fsLit String
"TICK_ALLOC_UP_THK",     \[CmmExpr
goods,CmmExpr
slop] ->
                                        CmmExpr -> CmmExpr -> FCode ()
tickyAllocThunk CmmExpr
goods CmmExpr
slop ),
  ( String -> FastString
fsLit String
"UPD_BH_UPDATABLE",      \[CmmExpr
reg] -> CmmExpr -> FCode ()
emitBlackHoleCode CmmExpr
reg )
 ]

emitPushUpdateFrame :: CmmExpr -> CmmExpr -> FCode ()
emitPushUpdateFrame :: CmmExpr -> CmmExpr -> FCode ()
emitPushUpdateFrame CmmExpr
sp CmmExpr
e = do
  DynFlags
dflags <- FCode DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
  DynFlags -> CmmExpr -> CLabel -> CmmExpr -> FCode ()
emitUpdateFrame DynFlags
dflags CmmExpr
sp CLabel
mkUpdInfoLabel CmmExpr
e

pushStackFrame :: [CmmParse CmmExpr] -> CmmParse () -> CmmParse ()
pushStackFrame :: [CmmParse CmmExpr] -> CmmParse () -> CmmParse ()
pushStackFrame [CmmParse CmmExpr]
fields CmmParse ()
body = do
  DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
  [CmmExpr]
exprs <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse CmmExpr]
fields
  ByteOff
updfr_off <- CmmParse ByteOff
getUpdFrameOff
  let (ByteOff
new_updfr_off, [GlobalReg]
_, CmmAGraph
g) = DynFlags
-> Convention
-> Transfer
-> Area
-> [CmmExpr]
-> ByteOff
-> [CmmExpr]
-> (ByteOff, [GlobalReg], CmmAGraph)
copyOutOflow DynFlags
dflags Convention
NativeReturn Transfer
Ret Area
Old
                                           [] ByteOff
updfr_off [CmmExpr]
exprs
  CmmAGraph -> CmmParse ()
emit CmmAGraph
g
  ByteOff -> CmmParse () -> CmmParse ()
withUpdFrameOff ByteOff
new_updfr_off CmmParse ()
body

reserveStackFrame
  :: CmmParse CmmExpr
  -> CmmParse CmmReg
  -> CmmParse ()
  -> CmmParse ()
reserveStackFrame :: CmmParse CmmExpr -> CmmParse CmmReg -> CmmParse () -> CmmParse ()
reserveStackFrame CmmParse CmmExpr
psize CmmParse CmmReg
preg CmmParse ()
body = do
  DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
  let platform :: Platform
platform = DynFlags -> Platform
targetPlatform DynFlags
dflags
  ByteOff
old_updfr_off <- CmmParse ByteOff
getUpdFrameOff
  CmmReg
reg <- CmmParse CmmReg
preg
  CmmExpr
esize <- CmmParse CmmExpr
psize
  let size :: Integer
size = case Platform -> CmmExpr -> CmmExpr
constantFoldExpr Platform
platform CmmExpr
esize of
               CmmLit (CmmInt Integer
n Width
_) -> Integer
n
               CmmExpr
_other -> String -> SDoc -> Integer
forall a. HasCallStack => String -> SDoc -> a
pprPanic String
"CmmParse: not a compile-time integer: "
                            (CmmExpr -> SDoc
forall a. Outputable a => a -> SDoc
ppr CmmExpr
esize)
  let frame :: ByteOff
frame = ByteOff
old_updfr_off ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
+ Platform -> ByteOff
platformWordSizeInBytes Platform
platform ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
* Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
size
  CmmReg -> CmmExpr -> CmmParse ()
emitAssign CmmReg
reg (Area -> ByteOff -> CmmExpr
CmmStackSlot Area
Old ByteOff
frame)
  ByteOff -> CmmParse () -> CmmParse ()
withUpdFrameOff ByteOff
frame CmmParse ()
body

profilingInfo :: DynFlags -> String -> String -> ProfilingInfo
profilingInfo DynFlags
dflags String
desc_str String
ty_str
  = if Bool -> Bool
not (DynFlags -> Bool
sccProfilingEnabled DynFlags
dflags)
    then ProfilingInfo
NoProfilingInfo
    else ConstrDescription -> ConstrDescription -> ProfilingInfo
ProfilingInfo (String -> ConstrDescription
BS8.pack String
desc_str) (String -> ConstrDescription
BS8.pack String
ty_str)

staticClosure :: UnitId -> FastString -> FastString -> [CmmLit] -> CmmParse ()
staticClosure :: UnitId -> FastString -> FastString -> [CmmLit] -> CmmParse ()
staticClosure UnitId
pkg FastString
cl_label FastString
info [CmmLit]
payload
  = do DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
       let lits :: [CmmLit]
lits = DynFlags
-> CLabel
-> CostCentreStack
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
mkStaticClosure DynFlags
dflags (UnitId -> FastString -> CLabel
mkCmmInfoLabel UnitId
pkg FastString
info) CostCentreStack
dontCareCCS [CmmLit]
payload [] [] []
       FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code (FCode () -> CmmParse ()) -> FCode () -> CmmParse ()
forall a b. (a -> b) -> a -> b
$ CLabel -> [CmmLit] -> FCode ()
emitDataLits (UnitId -> NeedExternDecl -> FastString -> CLabel
mkCmmDataLabel UnitId
pkg (Bool -> NeedExternDecl
NeedExternDecl Bool
True) FastString
cl_label) [CmmLit]
lits

foreignCall
        :: String
        -> [CmmParse (LocalReg, ForeignHint)]
        -> CmmParse CmmExpr
        -> [CmmParse (CmmExpr, ForeignHint)]
        -> Safety
        -> CmmReturnInfo
        -> PD (CmmParse ())
foreignCall :: String
-> [CmmParse (LocalReg, ForeignHint)]
-> CmmParse CmmExpr
-> [CmmParse (CmmExpr, ForeignHint)]
-> Safety
-> CmmReturnInfo
-> PD (CmmParse ())
foreignCall String
conv_string [CmmParse (LocalReg, ForeignHint)]
results_code CmmParse CmmExpr
expr_code [CmmParse (CmmExpr, ForeignHint)]
args_code Safety
safety CmmReturnInfo
ret
  = do  CCallConv
conv <- case String
conv_string of
          String
"C" -> CCallConv -> PD CCallConv
forall (m :: * -> *) a. Monad m => a -> m a
return CCallConv
CCallConv
          String
"stdcall" -> CCallConv -> PD CCallConv
forall (m :: * -> *) a. Monad m => a -> m a
return CCallConv
StdCallConv
          String
_ -> String -> PD CCallConv
forall a. String -> PD a
failMsgPD (String
"unknown calling convention: " String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
conv_string)
        CmmParse () -> PD (CmmParse ())
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse () -> PD (CmmParse ()))
-> CmmParse () -> PD (CmmParse ())
forall a b. (a -> b) -> a -> b
$ do
          DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
          [(LocalReg, ForeignHint)]
results <- [CmmParse (LocalReg, ForeignHint)]
-> CmmParse [(LocalReg, ForeignHint)]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse (LocalReg, ForeignHint)]
results_code
          CmmExpr
expr <- CmmParse CmmExpr
expr_code
          [(CmmExpr, ForeignHint)]
args <- [CmmParse (CmmExpr, ForeignHint)]
-> CmmParse [(CmmExpr, ForeignHint)]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse (CmmExpr, ForeignHint)]
args_code
          let
                  platform :: Platform
platform = DynFlags -> Platform
targetPlatform DynFlags
dflags
                  expr' :: CmmExpr
expr' = Platform
-> CCallConv -> CmmExpr -> [(CmmExpr, ForeignHint)] -> CmmExpr
adjCallTarget Platform
platform CCallConv
conv CmmExpr
expr [(CmmExpr, ForeignHint)]
args
                  ([CmmExpr]
arg_exprs, [ForeignHint]
arg_hints) = [(CmmExpr, ForeignHint)] -> ([CmmExpr], [ForeignHint])
forall a b. [(a, b)] -> ([a], [b])
unzip [(CmmExpr, ForeignHint)]
args
                  ([LocalReg]
res_regs,  [ForeignHint]
res_hints) = [(LocalReg, ForeignHint)] -> ([LocalReg], [ForeignHint])
forall a b. [(a, b)] -> ([a], [b])
unzip [(LocalReg, ForeignHint)]
results
                  fc :: ForeignConvention
fc = CCallConv
-> [ForeignHint]
-> [ForeignHint]
-> CmmReturnInfo
-> ForeignConvention
ForeignConvention CCallConv
conv [ForeignHint]
arg_hints [ForeignHint]
res_hints CmmReturnInfo
ret
                  target :: ForeignTarget
target = CmmExpr -> ForeignConvention -> ForeignTarget
ForeignTarget CmmExpr
expr' ForeignConvention
fc
          ReturnKind
_ <- FCode ReturnKind -> CmmParse ReturnKind
forall a. FCode a -> CmmParse a
code (FCode ReturnKind -> CmmParse ReturnKind)
-> FCode ReturnKind -> CmmParse ReturnKind
forall a b. (a -> b) -> a -> b
$ Safety
-> [LocalReg] -> ForeignTarget -> [CmmExpr] -> FCode ReturnKind
emitForeignCall Safety
safety [LocalReg]
res_regs ForeignTarget
target [CmmExpr]
arg_exprs
          () -> CmmParse ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()


doReturn :: [CmmParse CmmExpr] -> CmmParse ()
doReturn :: [CmmParse CmmExpr] -> CmmParse ()
doReturn [CmmParse CmmExpr]
exprs_code = do
  DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
  [CmmExpr]
exprs <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse CmmExpr]
exprs_code
  ByteOff
updfr_off <- CmmParse ByteOff
getUpdFrameOff
  CmmAGraph -> CmmParse ()
emit (DynFlags -> [CmmExpr] -> ByteOff -> CmmAGraph
mkReturnSimple DynFlags
dflags [CmmExpr]
exprs ByteOff
updfr_off)

mkReturnSimple  :: DynFlags -> [CmmActual] -> UpdFrameOffset -> CmmAGraph
mkReturnSimple :: DynFlags -> [CmmExpr] -> ByteOff -> CmmAGraph
mkReturnSimple DynFlags
dflags [CmmExpr]
actuals ByteOff
updfr_off =
  DynFlags -> CmmExpr -> [CmmExpr] -> ByteOff -> CmmAGraph
mkReturn DynFlags
dflags CmmExpr
e [CmmExpr]
actuals ByteOff
updfr_off
  where e :: CmmExpr
e = Platform -> CmmExpr -> CmmExpr
entryCode Platform
platform (CmmExpr -> CmmType -> CmmExpr
CmmLoad (Area -> ByteOff -> CmmExpr
CmmStackSlot Area
Old ByteOff
updfr_off)
                             (Platform -> CmmType
gcWord Platform
platform))
        platform :: Platform
platform = DynFlags -> Platform
targetPlatform DynFlags
dflags

doRawJump :: CmmParse CmmExpr -> [GlobalReg] -> CmmParse ()
doRawJump :: CmmParse CmmExpr -> [GlobalReg] -> CmmParse ()
doRawJump CmmParse CmmExpr
expr_code [GlobalReg]
vols = do
  DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
  CmmExpr
expr <- CmmParse CmmExpr
expr_code
  ByteOff
updfr_off <- CmmParse ByteOff
getUpdFrameOff
  CmmAGraph -> CmmParse ()
emit (DynFlags -> CmmExpr -> ByteOff -> [GlobalReg] -> CmmAGraph
mkRawJump DynFlags
dflags CmmExpr
expr ByteOff
updfr_off [GlobalReg]
vols)

doJumpWithStack :: CmmParse CmmExpr -> [CmmParse CmmExpr]
                -> [CmmParse CmmExpr] -> CmmParse ()
doJumpWithStack :: CmmParse CmmExpr
-> [CmmParse CmmExpr] -> [CmmParse CmmExpr] -> CmmParse ()
doJumpWithStack CmmParse CmmExpr
expr_code [CmmParse CmmExpr]
stk_code [CmmParse CmmExpr]
args_code = do
  DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
  CmmExpr
expr <- CmmParse CmmExpr
expr_code
  [CmmExpr]
stk_args <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse CmmExpr]
stk_code
  [CmmExpr]
args <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse CmmExpr]
args_code
  ByteOff
updfr_off <- CmmParse ByteOff
getUpdFrameOff
  CmmAGraph -> CmmParse ()
emit (DynFlags
-> Convention
-> CmmExpr
-> [CmmExpr]
-> ByteOff
-> [CmmExpr]
-> CmmAGraph
mkJumpExtra DynFlags
dflags Convention
NativeNodeCall CmmExpr
expr [CmmExpr]
args ByteOff
updfr_off [CmmExpr]
stk_args)

doCall :: CmmParse CmmExpr -> [CmmParse LocalReg] -> [CmmParse CmmExpr]
       -> CmmParse ()
doCall :: CmmParse CmmExpr
-> [CmmParse LocalReg] -> [CmmParse CmmExpr] -> CmmParse ()
doCall CmmParse CmmExpr
expr_code [CmmParse LocalReg]
res_code [CmmParse CmmExpr]
args_code = do
  CmmExpr
expr <- CmmParse CmmExpr
expr_code
  [CmmExpr]
args <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse CmmExpr]
args_code
  [LocalReg]
ress <- [CmmParse LocalReg] -> CmmParse [LocalReg]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse LocalReg]
res_code
  ByteOff
updfr_off <- CmmParse ByteOff
getUpdFrameOff
  CmmAGraph
c <- FCode CmmAGraph -> CmmParse CmmAGraph
forall a. FCode a -> CmmParse a
code (FCode CmmAGraph -> CmmParse CmmAGraph)
-> FCode CmmAGraph -> CmmParse CmmAGraph
forall a b. (a -> b) -> a -> b
$ CmmExpr
-> (Convention, Convention)
-> [LocalReg]
-> [CmmExpr]
-> ByteOff
-> [CmmExpr]
-> FCode CmmAGraph
mkCall CmmExpr
expr (Convention
NativeNodeCall,Convention
NativeReturn) [LocalReg]
ress [CmmExpr]
args ByteOff
updfr_off []
  CmmAGraph -> CmmParse ()
emit CmmAGraph
c

adjCallTarget :: Platform -> CCallConv -> CmmExpr -> [(CmmExpr, ForeignHint) ]
              -> CmmExpr
-- On Windows, we have to add the '@N' suffix to the label when making
-- a call with the stdcall calling convention.
adjCallTarget :: Platform
-> CCallConv -> CmmExpr -> [(CmmExpr, ForeignHint)] -> CmmExpr
adjCallTarget Platform
platform CCallConv
StdCallConv (CmmLit (CmmLabel CLabel
lbl)) [(CmmExpr, ForeignHint)]
args
 | Platform -> OS
platformOS Platform
platform OS -> OS -> Bool
forall a. Eq a => a -> a -> Bool
== OS
OSMinGW32
  = CmmLit -> CmmExpr
CmmLit (CLabel -> CmmLit
CmmLabel (CLabel -> ByteOff -> CLabel
addLabelSize CLabel
lbl ([ByteOff] -> ByteOff
forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
sum (((CmmExpr, ForeignHint) -> ByteOff)
-> [(CmmExpr, ForeignHint)] -> [ByteOff]
forall a b. (a -> b) -> [a] -> [b]
map (CmmExpr, ForeignHint) -> ByteOff
forall {b}. (CmmExpr, b) -> ByteOff
size [(CmmExpr, ForeignHint)]
args))))
  where size :: (CmmExpr, b) -> ByteOff
size (CmmExpr
e, b
_) = ByteOff -> ByteOff -> ByteOff
forall a. Ord a => a -> a -> a
max (Platform -> ByteOff
platformWordSizeInBytes Platform
platform) (Width -> ByteOff
widthInBytes (CmmType -> Width
typeWidth (Platform -> CmmExpr -> CmmType
cmmExprType Platform
platform CmmExpr
e)))
                 -- c.f. CgForeignCall.emitForeignCall
adjCallTarget Platform
_ CCallConv
_ CmmExpr
expr [(CmmExpr, ForeignHint)]
_
  = CmmExpr
expr

primCall
        :: [CmmParse (CmmFormal, ForeignHint)]
        -> FastString
        -> [CmmParse CmmExpr]
        -> PD (CmmParse ())
primCall :: [CmmParse (LocalReg, ForeignHint)]
-> FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
primCall [CmmParse (LocalReg, ForeignHint)]
results_code FastString
name [CmmParse CmmExpr]
args_code
  = case UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> FastString -> Maybe ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
forall key elt. Uniquable key => UniqFM key elt -> key -> Maybe elt
lookupUFM UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
callishMachOps FastString
name of
        Maybe ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
Nothing -> String -> PD (CmmParse ())
forall a. String -> PD a
failMsgPD (String
"unknown primitive " String -> String -> String
forall a. [a] -> [a] -> [a]
++ FastString -> String
unpackFS FastString
name)
        Just [CmmExpr] -> (CallishMachOp, [CmmExpr])
f  -> CmmParse () -> PD (CmmParse ())
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse () -> PD (CmmParse ()))
-> CmmParse () -> PD (CmmParse ())
forall a b. (a -> b) -> a -> b
$ do
                [(LocalReg, ForeignHint)]
results <- [CmmParse (LocalReg, ForeignHint)]
-> CmmParse [(LocalReg, ForeignHint)]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse (LocalReg, ForeignHint)]
results_code
                [CmmExpr]
args <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence [CmmParse CmmExpr]
args_code
                let (CallishMachOp
p, [CmmExpr]
args') = [CmmExpr] -> (CallishMachOp, [CmmExpr])
f [CmmExpr]
args
                FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code ([LocalReg] -> CallishMachOp -> [CmmExpr] -> FCode ()
emitPrimCall (((LocalReg, ForeignHint) -> LocalReg)
-> [(LocalReg, ForeignHint)] -> [LocalReg]
forall a b. (a -> b) -> [a] -> [b]
map (LocalReg, ForeignHint) -> LocalReg
forall a b. (a, b) -> a
fst [(LocalReg, ForeignHint)]
results) CallishMachOp
p [CmmExpr]
args')

doStore :: CmmType -> CmmParse CmmExpr  -> CmmParse CmmExpr -> CmmParse ()
doStore :: CmmType -> CmmParse CmmExpr -> CmmParse CmmExpr -> CmmParse ()
doStore CmmType
rep CmmParse CmmExpr
addr_code CmmParse CmmExpr
val_code
  = do DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
       CmmExpr
addr <- CmmParse CmmExpr
addr_code
       CmmExpr
val <- CmmParse CmmExpr
val_code
        -- if the specified store type does not match the type of the expr
        -- on the rhs, then we insert a coercion that will cause the type
        -- mismatch to be flagged by cmm-lint.  If we don't do this, then
        -- the store will happen at the wrong type, and the error will not
        -- be noticed.
       let val_width :: Width
val_width = CmmType -> Width
typeWidth (Platform -> CmmExpr -> CmmType
cmmExprType Platform
platform CmmExpr
val)
           rep_width :: Width
rep_width = CmmType -> Width
typeWidth CmmType
rep
           platform :: Platform
platform  = DynFlags -> Platform
targetPlatform DynFlags
dflags
       let coerce_val :: CmmExpr
coerce_val
                | Width
val_width Width -> Width -> Bool
forall a. Eq a => a -> a -> Bool
/= Width
rep_width = MachOp -> [CmmExpr] -> CmmExpr
CmmMachOp (Width -> Width -> MachOp
MO_UU_Conv Width
val_width Width
rep_width) [CmmExpr
val]
                | Bool
otherwise              = CmmExpr
val
       CmmExpr -> CmmExpr -> CmmParse ()
emitStore CmmExpr
addr CmmExpr
coerce_val

-- -----------------------------------------------------------------------------
-- If-then-else and boolean expressions

data BoolExpr
  = BoolExpr `BoolAnd` BoolExpr
  | BoolExpr `BoolOr`  BoolExpr
  | BoolNot BoolExpr
  | BoolTest CmmExpr

-- ToDo: smart constructors which simplify the boolean expression.

cmmIfThenElse :: CmmParse BoolExpr
-> CmmParse a -> CmmParse a -> Maybe Bool -> CmmParse ()
cmmIfThenElse CmmParse BoolExpr
cond CmmParse a
then_part CmmParse a
else_part Maybe Bool
likely = do
     BlockId
then_id <- CmmParse BlockId
forall (m :: * -> *). MonadUnique m => m BlockId
newBlockId
     BlockId
join_id <- CmmParse BlockId
forall (m :: * -> *). MonadUnique m => m BlockId
newBlockId
     BoolExpr
c <- CmmParse BoolExpr
cond
     BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond BoolExpr
c BlockId
then_id Maybe Bool
likely
     CmmParse a
else_part
     CmmAGraph -> CmmParse ()
emit (BlockId -> CmmAGraph
mkBranch BlockId
join_id)
     BlockId -> CmmParse ()
emitLabel BlockId
then_id
     CmmParse a
then_part
     -- fall through to join
     BlockId -> CmmParse ()
emitLabel BlockId
join_id

cmmRawIf :: CmmParse BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
cmmRawIf CmmParse BoolExpr
cond BlockId
then_id Maybe Bool
likely = do
    BoolExpr
c <- CmmParse BoolExpr
cond
    BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond BoolExpr
c BlockId
then_id Maybe Bool
likely

-- 'emitCond cond true_id'  emits code to test whether the cond is true,
-- branching to true_id if so, and falling through otherwise.
emitCond :: BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond (BoolTest CmmExpr
e) BlockId
then_id Maybe Bool
likely = do
  BlockId
else_id <- CmmParse BlockId
forall (m :: * -> *). MonadUnique m => m BlockId
newBlockId
  CmmAGraph -> CmmParse ()
emit (CmmExpr -> BlockId -> BlockId -> Maybe Bool -> CmmAGraph
mkCbranch CmmExpr
e BlockId
then_id BlockId
else_id Maybe Bool
likely)
  BlockId -> CmmParse ()
emitLabel BlockId
else_id
emitCond (BoolNot (BoolTest (CmmMachOp MachOp
op [CmmExpr]
args))) BlockId
then_id Maybe Bool
likely
  | Just MachOp
op' <- MachOp -> Maybe MachOp
maybeInvertComparison MachOp
op
  = BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond (CmmExpr -> BoolExpr
BoolTest (MachOp -> [CmmExpr] -> CmmExpr
CmmMachOp MachOp
op' [CmmExpr]
args)) BlockId
then_id (Bool -> Bool
not (Bool -> Bool) -> Maybe Bool -> Maybe Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Bool
likely)
emitCond (BoolNot BoolExpr
e) BlockId
then_id Maybe Bool
likely = do
  BlockId
else_id <- CmmParse BlockId
forall (m :: * -> *). MonadUnique m => m BlockId
newBlockId
  BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond BoolExpr
e BlockId
else_id Maybe Bool
likely
  CmmAGraph -> CmmParse ()
emit (BlockId -> CmmAGraph
mkBranch BlockId
then_id)
  BlockId -> CmmParse ()
emitLabel BlockId
else_id
emitCond (BoolExpr
e1 `BoolOr` BoolExpr
e2) BlockId
then_id Maybe Bool
likely = do
  BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond BoolExpr
e1 BlockId
then_id Maybe Bool
likely
  BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond BoolExpr
e2 BlockId
then_id Maybe Bool
likely
emitCond (BoolExpr
e1 `BoolAnd` BoolExpr
e2) BlockId
then_id Maybe Bool
likely = do
        -- we'd like to invert one of the conditionals here to avoid an
        -- extra branch instruction, but we can't use maybeInvertComparison
        -- here because we can't look too closely at the expression since
        -- we're in a loop.
  BlockId
and_id <- CmmParse BlockId
forall (m :: * -> *). MonadUnique m => m BlockId
newBlockId
  BlockId
else_id <- CmmParse BlockId
forall (m :: * -> *). MonadUnique m => m BlockId
newBlockId
  BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond BoolExpr
e1 BlockId
and_id Maybe Bool
likely
  CmmAGraph -> CmmParse ()
emit (BlockId -> CmmAGraph
mkBranch BlockId
else_id)
  BlockId -> CmmParse ()
emitLabel BlockId
and_id
  BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond BoolExpr
e2 BlockId
then_id Maybe Bool
likely
  BlockId -> CmmParse ()
emitLabel BlockId
else_id

-- -----------------------------------------------------------------------------
-- Source code notes

-- | Generate a source note spanning from "a" to "b" (inclusive), then
-- proceed with parsing. This allows debugging tools to reason about
-- locations in Cmm code.
withSourceNote :: Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote :: forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located a
a Located b
b CmmParse c
parse = do
  String
name <- CmmParse String
getName
  case SrcSpan -> SrcSpan -> SrcSpan
combineSrcSpans (Located a -> SrcSpan
forall l e. GenLocated l e -> l
getLoc Located a
a) (Located b -> SrcSpan
forall l e. GenLocated l e -> l
getLoc Located b
b) of
    RealSrcSpan RealSrcSpan
span Maybe BufSpan
_ -> FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code (CmmTickish -> FCode ()
emitTick (RealSrcSpan -> String -> CmmTickish
forall id. RealSrcSpan -> String -> Tickish id
SourceNote RealSrcSpan
span String
name)) CmmParse () -> CmmParse c -> CmmParse c
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> CmmParse c
parse
    SrcSpan
_other           -> CmmParse c
parse

-- -----------------------------------------------------------------------------
-- Table jumps

-- We use a simplified form of C-- switch statements for now.  A
-- switch statement always compiles to a table jump.  Each arm can
-- specify a list of values (not ranges), and there can be a single
-- default branch.  The range of the table is given either by the
-- optional range on the switch (eg. switch [0..7] {...}), or by
-- the minimum/maximum values from the branches.

doSwitch :: Maybe (Integer,Integer)
         -> CmmParse CmmExpr
         -> [([Integer],Either BlockId (CmmParse ()))]
         -> Maybe (CmmParse ()) -> CmmParse ()
doSwitch :: Maybe (Integer, Integer)
-> CmmParse CmmExpr
-> [([Integer], Either BlockId (CmmParse ()))]
-> Maybe (CmmParse ())
-> CmmParse ()
doSwitch Maybe (Integer, Integer)
mb_range CmmParse CmmExpr
scrut [([Integer], Either BlockId (CmmParse ()))]
arms Maybe (CmmParse ())
deflt
   = do
        -- Compile code for the default branch
        Maybe BlockId
dflt_entry <-
                case Maybe (CmmParse ())
deflt of
                  Maybe (CmmParse ())
Nothing -> Maybe BlockId -> CmmParse (Maybe BlockId)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe BlockId
forall a. Maybe a
Nothing
                  Just CmmParse ()
e  -> do BlockId
b <- CmmParse () -> CmmParse BlockId
forkLabelledCode CmmParse ()
e; Maybe BlockId -> CmmParse (Maybe BlockId)
forall (m :: * -> *) a. Monad m => a -> m a
return (BlockId -> Maybe BlockId
forall a. a -> Maybe a
Just BlockId
b)

        -- Compile each case branch
        [[(Integer, BlockId)]]
table_entries <- (([Integer], Either BlockId (CmmParse ()))
 -> CmmParse [(Integer, BlockId)])
-> [([Integer], Either BlockId (CmmParse ()))]
-> CmmParse [[(Integer, BlockId)]]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM ([Integer], Either BlockId (CmmParse ()))
-> CmmParse [(Integer, BlockId)]
emitArm [([Integer], Either BlockId (CmmParse ()))]
arms
        let table :: Map Integer BlockId
table = [(Integer, BlockId)] -> Map Integer BlockId
forall k a. Ord k => [(k, a)] -> Map k a
M.fromList ([[(Integer, BlockId)]] -> [(Integer, BlockId)]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [[(Integer, BlockId)]]
table_entries)

        DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
        let platform :: Platform
platform = DynFlags -> Platform
targetPlatform DynFlags
dflags
        let range :: (Integer, Integer)
range = (Integer, Integer)
-> Maybe (Integer, Integer) -> (Integer, Integer)
forall a. a -> Maybe a -> a
fromMaybe (Integer
0, Platform -> Integer
platformMaxWord Platform
platform) Maybe (Integer, Integer)
mb_range

        CmmExpr
expr <- CmmParse CmmExpr
scrut
        -- ToDo: check for out of range and jump to default if necessary
        CmmAGraph -> CmmParse ()
emit (CmmAGraph -> CmmParse ()) -> CmmAGraph -> CmmParse ()
forall a b. (a -> b) -> a -> b
$ CmmExpr -> SwitchTargets -> CmmAGraph
mkSwitch CmmExpr
expr (Bool
-> (Integer, Integer)
-> Maybe BlockId
-> Map Integer BlockId
-> SwitchTargets
mkSwitchTargets Bool
False (Integer, Integer)
range Maybe BlockId
dflt_entry Map Integer BlockId
table)
   where
        emitArm :: ([Integer],Either BlockId (CmmParse ())) -> CmmParse [(Integer,BlockId)]
        emitArm :: ([Integer], Either BlockId (CmmParse ()))
-> CmmParse [(Integer, BlockId)]
emitArm ([Integer]
ints,Left BlockId
blockid) = [(Integer, BlockId)] -> CmmParse [(Integer, BlockId)]
forall (m :: * -> *) a. Monad m => a -> m a
return [ (Integer
i,BlockId
blockid) | Integer
i <- [Integer]
ints ]
        emitArm ([Integer]
ints,Right CmmParse ()
code) = do
           BlockId
blockid <- CmmParse () -> CmmParse BlockId
forkLabelledCode CmmParse ()
code
           [(Integer, BlockId)] -> CmmParse [(Integer, BlockId)]
forall (m :: * -> *) a. Monad m => a -> m a
return [ (Integer
i,BlockId
blockid) | Integer
i <- [Integer]
ints ]

forkLabelledCode :: CmmParse () -> CmmParse BlockId
forkLabelledCode :: CmmParse () -> CmmParse BlockId
forkLabelledCode CmmParse ()
p = do
  (()
_,CmmAGraphScoped
ag) <- CmmParse () -> CmmParse ((), CmmAGraphScoped)
forall a. CmmParse a -> CmmParse (a, CmmAGraphScoped)
getCodeScoped CmmParse ()
p
  BlockId
l <- CmmParse BlockId
forall (m :: * -> *). MonadUnique m => m BlockId
newBlockId
  BlockId -> CmmAGraphScoped -> CmmParse ()
emitOutOfLine BlockId
l CmmAGraphScoped
ag
  BlockId -> CmmParse BlockId
forall (m :: * -> *) a. Monad m => a -> m a
return BlockId
l

-- -----------------------------------------------------------------------------
-- Putting it all together

-- The initial environment: we define some constants that the compiler
-- knows about here.
initEnv :: DynFlags -> Env
initEnv :: DynFlags -> Env
initEnv DynFlags
dflags = [(FastString, Named)] -> Env
forall key elt. Uniquable key => [(key, elt)] -> UniqFM key elt
listToUFM [
  ( String -> FastString
fsLit String
"SIZEOF_StgHeader",
    CmmExpr -> Named
VarN (CmmLit -> CmmExpr
CmmLit (Integer -> Width -> CmmLit
CmmInt (ByteOff -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (DynFlags -> ByteOff
fixedHdrSize DynFlags
dflags)) (Platform -> Width
wordWidth Platform
platform)) )),
  ( String -> FastString
fsLit String
"SIZEOF_StgInfoTable",
    CmmExpr -> Named
VarN (CmmLit -> CmmExpr
CmmLit (Integer -> Width -> CmmLit
CmmInt (ByteOff -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (DynFlags -> ByteOff
stdInfoTableSizeB DynFlags
dflags)) (Platform -> Width
wordWidth Platform
platform)) ))
  ]
  where platform :: Platform
platform = DynFlags -> Platform
targetPlatform DynFlags
dflags

parseCmmFile :: DynFlags -> FilePath -> IO (Messages, Maybe CmmGroup)
parseCmmFile :: DynFlags -> String -> IO (Messages, Maybe CmmGroup)
parseCmmFile DynFlags
dflags String
filename = DynFlags
-> SDoc
-> ((Messages, Maybe CmmGroup) -> ())
-> IO (Messages, Maybe CmmGroup)
-> IO (Messages, Maybe CmmGroup)
forall (m :: * -> *) a.
MonadIO m =>
DynFlags -> SDoc -> (a -> ()) -> m a -> m a
withTiming DynFlags
dflags (String -> SDoc
text String
"ParseCmm"SDoc -> SDoc -> SDoc
<+>SDoc -> SDoc
brackets (String -> SDoc
text String
filename)) (\(Messages, Maybe CmmGroup)
_ -> ()) (IO (Messages, Maybe CmmGroup) -> IO (Messages, Maybe CmmGroup))
-> IO (Messages, Maybe CmmGroup) -> IO (Messages, Maybe CmmGroup)
forall a b. (a -> b) -> a -> b
$ do
  StringBuffer
buf <- String -> IO StringBuffer
hGetStringBuffer String
filename
  let
        init_loc :: RealSrcLoc
init_loc = FastString -> ByteOff -> ByteOff -> RealSrcLoc
mkRealSrcLoc (String -> FastString
mkFastString String
filename) ByteOff
1 ByteOff
1
        init_state :: PState
init_state = (DynFlags -> StringBuffer -> RealSrcLoc -> PState
mkPState DynFlags
dflags StringBuffer
buf RealSrcLoc
init_loc) { lex_state :: [ByteOff]
lex_state = [ByteOff
0] }
                -- reset the lex_state: the Lexer monad leaves some stuff
                -- in there we don't want.
  case PD (CmmParse ()) -> DynFlags -> PState -> ParseResult (CmmParse ())
forall a. PD a -> DynFlags -> PState -> ParseResult a
unPD PD (CmmParse ())
cmmParse DynFlags
dflags PState
init_state of
    PFailed PState
pst ->
        (Messages, Maybe CmmGroup) -> IO (Messages, Maybe CmmGroup)
forall (m :: * -> *) a. Monad m => a -> m a
return (PState -> DynFlags -> Messages
getMessages PState
pst DynFlags
dflags, Maybe CmmGroup
forall a. Maybe a
Nothing)
    POk PState
pst CmmParse ()
code -> do
        CgState
st <- IO CgState
initC
        let fcode :: FCode CmmGroup
fcode = FCode () -> FCode CmmGroup
getCmm (FCode () -> FCode CmmGroup) -> FCode () -> FCode CmmGroup
forall a b. (a -> b) -> a -> b
$ CmmParse ()
-> String
-> Env
-> [(FastString, Named)]
-> FCode ([(FastString, Named)], ())
forall a.
CmmParse a
-> String
-> Env
-> [(FastString, Named)]
-> FCode ([(FastString, Named)], a)
unEC CmmParse ()
code String
"global" (DynFlags -> Env
initEnv DynFlags
dflags) [] FCode ([(FastString, Named)], ()) -> FCode () -> FCode ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> () -> FCode ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
            (CmmGroup
cmm,CgState
_) = DynFlags
-> Module -> CgState -> FCode CmmGroup -> (CmmGroup, CgState)
forall a. DynFlags -> Module -> CgState -> FCode a -> (a, CgState)
runC DynFlags
dflags Module
forall {a}. a
no_module CgState
st FCode CmmGroup
fcode
        let ms :: Messages
ms = PState -> DynFlags -> Messages
getMessages PState
pst DynFlags
dflags
        if (DynFlags -> Messages -> Bool
errorsFound DynFlags
dflags Messages
ms)
         then (Messages, Maybe CmmGroup) -> IO (Messages, Maybe CmmGroup)
forall (m :: * -> *) a. Monad m => a -> m a
return (Messages
ms, Maybe CmmGroup
forall a. Maybe a
Nothing)
         else (Messages, Maybe CmmGroup) -> IO (Messages, Maybe CmmGroup)
forall (m :: * -> *) a. Monad m => a -> m a
return (Messages
ms, CmmGroup -> Maybe CmmGroup
forall a. a -> Maybe a
Just CmmGroup
cmm)
  where
        no_module :: a
no_module = String -> a
forall a. String -> a
panic String
"parseCmmFile: no module"
{-# LINE 1 "templates/GenericTemplate.hs" #-}
-- $Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp $













-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.
#if __GLASGOW_HASKELL__ > 706
#define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Bool)
#define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Bool)
#define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Bool)
#else
#define LT(n,m) (n Happy_GHC_Exts.<# m)
#define GTE(n,m) (n Happy_GHC_Exts.>=# m)
#define EQ(n,m) (n Happy_GHC_Exts.==# m)
#endif



















data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList








































infixr 9 `HappyStk`
data HappyStk a = HappyStk a (HappyStk a)

-----------------------------------------------------------------------------
-- starting the parse

happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll

-----------------------------------------------------------------------------
-- Accepting the parse

-- If the current token is ERROR_TOK, it means we've just accepted a partial
-- parse (a %partial parser).  We must ignore the saved token on the top of
-- the stack in this case.
happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =
        happyReturn1 ans
happyAccept j tk st sts (HappyStk ans _) = 
        (happyTcHack j (happyTcHack st)) (happyReturn1 ans)

-----------------------------------------------------------------------------
-- Arrays only: do the next action



happyDoAction i tk st
        = {- nothing -}
          case action of
                0#           -> {- nothing -}
                                     happyFail (happyExpListPerState ((Happy_GHC_Exts.I# (st)) :: Int)) i tk st
                -1#          -> {- nothing -}
                                     happyAccept i tk st
                n | LT(n,(0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
                                                   (happyReduceArr Happy_Data_Array.! rule) i tk st
                                                   where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
                n                 -> {- nothing -}
                                     happyShift new_state i tk st
                                     where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
   where off    = happyAdjustOffset (indexShortOffAddr happyActOffsets st)
         off_i  = (off Happy_GHC_Exts.+# i)
         check  = if GTE(off_i,(0# :: Happy_GHC_Exts.Int#))
                  then EQ(indexShortOffAddr happyCheck off_i, i)
                  else False
         action
          | check     = indexShortOffAddr happyTable off_i
          | otherwise = indexShortOffAddr happyDefActions st




indexShortOffAddr (HappyA# arr) off =
        Happy_GHC_Exts.narrow16Int# i
  where
        i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)
        high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))
        low  = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))
        off' = off Happy_GHC_Exts.*# 2#




{-# INLINE happyLt #-}
happyLt x y = LT(x,y)


readArrayBit arr bit =
    Bits.testBit (Happy_GHC_Exts.I# (indexShortOffAddr arr ((unbox_int bit) `Happy_GHC_Exts.iShiftRA#` 4#))) (bit `mod` 16)
  where unbox_int (Happy_GHC_Exts.I# x) = x






data HappyAddr = HappyA# Happy_GHC_Exts.Addr#


-----------------------------------------------------------------------------
-- HappyState data type (not arrays)













-----------------------------------------------------------------------------
-- Shifting a token

happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =
     let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
--     trace "shifting the error token" $
     happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)

happyShift new_state i tk st sts stk =
     happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)

-- happyReduce is specialised for the common cases.

happySpecReduce_0 i fn 0# tk st sts stk
     = happyFail [] 0# tk st sts stk
happySpecReduce_0 nt fn j tk st@((action)) sts stk
     = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)

happySpecReduce_1 i fn 0# tk st sts stk
     = happyFail [] 0# tk st sts stk
happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')
     = let r = fn v1 in
       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))

happySpecReduce_2 i fn 0# tk st sts stk
     = happyFail [] 0# tk st sts stk
happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')
     = let r = fn v1 v2 in
       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))

happySpecReduce_3 i fn 0# tk st sts stk
     = happyFail [] 0# tk st sts stk
happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')
     = let r = fn v1 v2 v3 in
       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))

happyReduce k i fn 0# tk st sts stk
     = happyFail [] 0# tk st sts stk
happyReduce k nt fn j tk st sts stk
     = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of
         sts1@((HappyCons (st1@(action)) (_))) ->
                let r = fn stk in  -- it doesn't hurt to always seq here...
                happyDoSeq r (happyGoto nt j tk st1 sts1 r)

happyMonadReduce k nt fn 0# tk st sts stk
     = happyFail [] 0# tk st sts stk
happyMonadReduce k nt fn j tk st sts stk =
      case happyDrop k (HappyCons (st) (sts)) of
        sts1@((HappyCons (st1@(action)) (_))) ->
          let drop_stk = happyDropStk k stk in
          happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))

happyMonad2Reduce k nt fn 0# tk st sts stk
     = happyFail [] 0# tk st sts stk
happyMonad2Reduce k nt fn j tk st sts stk =
      case happyDrop k (HappyCons (st) (sts)) of
        sts1@((HappyCons (st1@(action)) (_))) ->
         let drop_stk = happyDropStk k stk

             off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st1)
             off_i = (off Happy_GHC_Exts.+# nt)
             new_state = indexShortOffAddr happyTable off_i




          in
          happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))

happyDrop 0# l = l
happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t

happyDropStk 0# l = l
happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs

-----------------------------------------------------------------------------
-- Moving to a new state after a reduction


happyGoto nt j tk st = 
   {- nothing -}
   happyDoAction j tk new_state
   where off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st)
         off_i = (off Happy_GHC_Exts.+# nt)
         new_state = indexShortOffAddr happyTable off_i




-----------------------------------------------------------------------------
-- Error recovery (ERROR_TOK is the error token)

-- parse error if we are in recovery and we fail again
happyFail explist 0# tk old_st _ stk@(x `HappyStk` _) =
     let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
--      trace "failing" $ 
        happyError_ explist i tk

{-  We don't need state discarding for our restricted implementation of
    "error".  In fact, it can cause some bogus parses, so I've disabled it
    for now --SDM

-- discard a state
happyFail  ERROR_TOK tk old_st CONS(HAPPYSTATE(action),sts) 
                                                (saved_tok `HappyStk` _ `HappyStk` stk) =
--      trace ("discarding state, depth " ++ show (length stk))  $
        DO_ACTION(action,ERROR_TOK,tk,sts,(saved_tok`HappyStk`stk))
-}

-- Enter error recovery: generate an error token,
--                       save the old token and carry on.
happyFail explist i tk (action) sts stk =
--      trace "entering error recovery" $
        happyDoAction 0# tk action sts ((Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)

-- Internal happy errors:

notHappyAtAll :: a
notHappyAtAll = error "Internal Happy error\n"

-----------------------------------------------------------------------------
-- Hack to get the typechecker to accept our action functions


happyTcHack :: Happy_GHC_Exts.Int# -> a -> a
happyTcHack x y = y
{-# INLINE happyTcHack #-}


-----------------------------------------------------------------------------
-- Seq-ing.  If the --strict flag is given, then Happy emits 
--      happySeq = happyDoSeq
-- otherwise it emits
--      happySeq = happyDontSeq

happyDoSeq, happyDontSeq :: a -> b -> b
happyDoSeq   a b = a `seq` b
happyDontSeq a b = b

-----------------------------------------------------------------------------
-- Don't inline any functions from the template.  GHC has a nasty habit
-- of deciding to inline happyGoto everywhere, which increases the size of
-- the generated parser quite a bit.


{-# NOINLINE happyDoAction #-}
{-# NOINLINE happyTable #-}
{-# NOINLINE happyCheck #-}
{-# NOINLINE happyActOffsets #-}
{-# NOINLINE happyGotoOffsets #-}
{-# NOINLINE happyDefActions #-}

{-# NOINLINE happyShift #-}
{-# NOINLINE happySpecReduce_0 #-}
{-# NOINLINE happySpecReduce_1 #-}
{-# NOINLINE happySpecReduce_2 #-}
{-# NOINLINE happySpecReduce_3 #-}
{-# NOINLINE happyReduce #-}
{-# NOINLINE happyMonadReduce #-}
{-# NOINLINE happyGoto #-}
{-# NOINLINE happyFail #-}

-- end of Happy Template.