{-# OPTIONS_GHC -w #-}
{-# OPTIONS -XMagicHash -XBangPatterns -XTypeSynonymInstances -XFlexibleInstances -cpp #-}
#if __GLASGOW_HASKELL__ >= 710
{-# OPTIONS_GHC -XPartialTypeSignatures #-}
#endif
module CmmParse ( parseCmmFile ) where

import GhcPrelude

import StgCmmExtCode
import CmmCallConv
import StgCmmProf
import StgCmmHeap
import StgCmmMonad hiding ( getCode, getCodeR, getCodeScoped, emitLabel, emit, emitStore
                          , emitAssign, emitOutOfLine, withUpdFrameOff
                          , getUpdFrameOff )
import qualified StgCmmMonad as F
import StgCmmUtils
import StgCmmForeign
import StgCmmExpr
import StgCmmClosure
import StgCmmLayout     hiding (ArgRep(..))
import StgCmmTicky
import StgCmmBind       ( emitBlackHoleCode, emitUpdateFrame )
import CoreSyn          ( Tickish(SourceNote) )

import CmmOpt
import MkGraph
import Cmm
import CmmUtils
import CmmSwitch        ( mkSwitchTargets )
import CmmInfo
import BlockId
import CmmLex
import CLabel
import SMRep
import Lexer
import CmmMonad

import CostCentre
import ForeignCall
import Module
import Platform
import Literal
import Unique
import UniqFM
import SrcLoc
import DynFlags
import ErrUtils
import StringBuffer
import FastString
import Panic
import Constants
import Outputable
import BasicTypes
import Bag              ( emptyBag, unitBag )
import Var

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

#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.11

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 x :: CmmParse ()
x = HappyWrap4 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap4
HappyWrap4 CmmParse ()
x)
{-# INLINE happyIn4 #-}
happyOut4 :: (HappyAbsSyn ) -> HappyWrap4
happyOut4 :: HappyAbsSyn -> HappyWrap4
happyOut4 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap4
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut4 #-}
newtype HappyWrap5 = HappyWrap5 (CmmParse ())
happyIn5 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn5 :: CmmParse () -> HappyAbsSyn
happyIn5 x :: CmmParse ()
x = HappyWrap5 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap5
HappyWrap5 CmmParse ()
x)
{-# INLINE happyIn5 #-}
happyOut5 :: (HappyAbsSyn ) -> HappyWrap5
happyOut5 :: HappyAbsSyn -> HappyWrap5
happyOut5 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap5
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut5 #-}
newtype HappyWrap6 = HappyWrap6 (CmmParse ())
happyIn6 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn6 :: CmmParse () -> HappyAbsSyn
happyIn6 x :: CmmParse ()
x = HappyWrap6 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap6
HappyWrap6 CmmParse ()
x)
{-# INLINE happyIn6 #-}
happyOut6 :: (HappyAbsSyn ) -> HappyWrap6
happyOut6 :: HappyAbsSyn -> HappyWrap6
happyOut6 x :: 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 x :: 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 x :: 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 x :: [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 x :: 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 x :: 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 x :: 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 x :: [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 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap10
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut10 #-}
newtype HappyWrap11 = HappyWrap11 (CmmParse ())
happyIn11 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn11 :: CmmParse () -> HappyAbsSyn
happyIn11 x :: CmmParse ()
x = HappyWrap11 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap11
HappyWrap11 CmmParse ()
x)
{-# INLINE happyIn11 #-}
happyOut11 :: (HappyAbsSyn ) -> HappyWrap11
happyOut11 :: HappyAbsSyn -> HappyWrap11
happyOut11 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap11
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut11 #-}
newtype HappyWrap12 = HappyWrap12 (Convention)
happyIn12 :: (Convention) -> (HappyAbsSyn )
happyIn12 :: Convention -> HappyAbsSyn
happyIn12 x :: Convention
x = HappyWrap12 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (Convention -> HappyWrap12
HappyWrap12 Convention
x)
{-# INLINE happyIn12 #-}
happyOut12 :: (HappyAbsSyn ) -> HappyWrap12
happyOut12 :: HappyAbsSyn -> HappyWrap12
happyOut12 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap12
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut12 #-}
newtype HappyWrap13 = HappyWrap13 (CmmParse ())
happyIn13 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn13 :: CmmParse () -> HappyAbsSyn
happyIn13 x :: CmmParse ()
x = HappyWrap13 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap13
HappyWrap13 CmmParse ()
x)
{-# INLINE happyIn13 #-}
happyOut13 :: (HappyAbsSyn ) -> HappyWrap13
happyOut13 :: HappyAbsSyn -> HappyWrap13
happyOut13 x :: 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 x :: 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 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap14
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut14 #-}
newtype HappyWrap15 = HappyWrap15 (CmmParse ())
happyIn15 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn15 :: CmmParse () -> HappyAbsSyn
happyIn15 x :: CmmParse ()
x = HappyWrap15 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap15
HappyWrap15 CmmParse ()
x)
{-# INLINE happyIn15 #-}
happyOut15 :: (HappyAbsSyn ) -> HappyWrap15
happyOut15 :: HappyAbsSyn -> HappyWrap15
happyOut15 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap15
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut15 #-}
newtype HappyWrap16 = HappyWrap16 (CmmParse ())
happyIn16 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn16 :: CmmParse () -> HappyAbsSyn
happyIn16 x :: CmmParse ()
x = HappyWrap16 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap16
HappyWrap16 CmmParse ()
x)
{-# INLINE happyIn16 #-}
happyOut16 :: (HappyAbsSyn ) -> HappyWrap16
happyOut16 :: HappyAbsSyn -> HappyWrap16
happyOut16 x :: 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 x :: [(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 x :: 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 x :: (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 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap18
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut18 #-}
newtype HappyWrap19 = HappyWrap19 ([FastString])
happyIn19 :: ([FastString]) -> (HappyAbsSyn )
happyIn19 :: [FastString] -> HappyAbsSyn
happyIn19 x :: [FastString]
x = HappyWrap19 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([FastString] -> HappyWrap19
HappyWrap19 [FastString]
x)
{-# INLINE happyIn19 #-}
happyOut19 :: (HappyAbsSyn ) -> HappyWrap19
happyOut19 :: HappyAbsSyn -> HappyWrap19
happyOut19 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap19
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut19 #-}
newtype HappyWrap20 = HappyWrap20 (CmmParse ())
happyIn20 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn20 :: CmmParse () -> HappyAbsSyn
happyIn20 x :: CmmParse ()
x = HappyWrap20 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap20
HappyWrap20 CmmParse ()
x)
{-# INLINE happyIn20 #-}
happyOut20 :: (HappyAbsSyn ) -> HappyWrap20
happyOut20 :: HappyAbsSyn -> HappyWrap20
happyOut20 x :: 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 x :: 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 x :: 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 x :: 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 x :: 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 x :: 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 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap23
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut23 #-}
newtype HappyWrap24 = HappyWrap24 (CmmReturnInfo)
happyIn24 :: (CmmReturnInfo) -> (HappyAbsSyn )
happyIn24 :: CmmReturnInfo -> HappyAbsSyn
happyIn24 x :: CmmReturnInfo
x = HappyWrap24 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmReturnInfo -> HappyWrap24
HappyWrap24 CmmReturnInfo
x)
{-# INLINE happyIn24 #-}
happyOut24 :: (HappyAbsSyn ) -> HappyWrap24
happyOut24 :: HappyAbsSyn -> HappyWrap24
happyOut24 x :: 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 x :: 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 x :: 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 x :: 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 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap26
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut26 #-}
newtype HappyWrap27 = HappyWrap27 (Safety)
happyIn27 :: (Safety) -> (HappyAbsSyn )
happyIn27 :: Safety -> HappyAbsSyn
happyIn27 x :: Safety
x = HappyWrap27 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (Safety -> HappyWrap27
HappyWrap27 Safety
x)
{-# INLINE happyIn27 #-}
happyOut27 :: (HappyAbsSyn ) -> HappyWrap27
happyOut27 :: HappyAbsSyn -> HappyWrap27
happyOut27 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap27
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut27 #-}
newtype HappyWrap28 = HappyWrap28 ([GlobalReg])
happyIn28 :: ([GlobalReg]) -> (HappyAbsSyn )
happyIn28 :: [GlobalReg] -> HappyAbsSyn
happyIn28 x :: [GlobalReg]
x = HappyWrap28 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([GlobalReg] -> HappyWrap28
HappyWrap28 [GlobalReg]
x)
{-# INLINE happyIn28 #-}
happyOut28 :: (HappyAbsSyn ) -> HappyWrap28
happyOut28 :: HappyAbsSyn -> HappyWrap28
happyOut28 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap28
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut28 #-}
newtype HappyWrap29 = HappyWrap29 ([GlobalReg])
happyIn29 :: ([GlobalReg]) -> (HappyAbsSyn )
happyIn29 :: [GlobalReg] -> HappyAbsSyn
happyIn29 x :: [GlobalReg]
x = HappyWrap29 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([GlobalReg] -> HappyWrap29
HappyWrap29 [GlobalReg]
x)
{-# INLINE happyIn29 #-}
happyOut29 :: (HappyAbsSyn ) -> HappyWrap29
happyOut29 :: HappyAbsSyn -> HappyWrap29
happyOut29 x :: 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 x :: 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 x :: 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 x :: [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 x :: 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 x :: 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 x :: 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 x :: 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 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap33
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut33 #-}
newtype HappyWrap34 = HappyWrap34 ([Integer])
happyIn34 :: ([Integer]) -> (HappyAbsSyn )
happyIn34 :: [Integer] -> HappyAbsSyn
happyIn34 x :: [Integer]
x = HappyWrap34 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([Integer] -> HappyWrap34
HappyWrap34 [Integer]
x)
{-# INLINE happyIn34 #-}
happyOut34 :: (HappyAbsSyn ) -> HappyWrap34
happyOut34 :: HappyAbsSyn -> HappyWrap34
happyOut34 x :: 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 x :: 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 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap35
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut35 #-}
newtype HappyWrap36 = HappyWrap36 (CmmParse ())
happyIn36 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn36 :: CmmParse () -> HappyAbsSyn
happyIn36 x :: CmmParse ()
x = HappyWrap36 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap36
HappyWrap36 CmmParse ()
x)
{-# INLINE happyIn36 #-}
happyOut36 :: (HappyAbsSyn ) -> HappyWrap36
happyOut36 :: HappyAbsSyn -> HappyWrap36
happyOut36 x :: 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 x :: 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 x :: 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 x :: 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 x :: 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 x :: 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 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap39
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut39 #-}
newtype HappyWrap40 = HappyWrap40 (CmmType)
happyIn40 :: (CmmType) -> (HappyAbsSyn )
happyIn40 :: CmmType -> HappyAbsSyn
happyIn40 x :: CmmType
x = HappyWrap40 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmType -> HappyWrap40
HappyWrap40 CmmType
x)
{-# INLINE happyIn40 #-}
happyOut40 :: (HappyAbsSyn ) -> HappyWrap40
happyOut40 :: HappyAbsSyn -> HappyWrap40
happyOut40 x :: 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 x :: [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 x :: 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 x :: [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 x :: 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 x :: 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 x :: 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 x :: [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 x :: 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 x :: [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 x :: 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 x :: 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 x :: 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 x :: [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 x :: 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 x :: [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 x :: 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 x :: 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 x :: 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 x :: 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 x :: 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 x :: 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 x :: 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 x :: 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 x :: 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 x :: [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 x :: 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 x :: [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 x :: 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 x :: 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 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap55
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut55 #-}
newtype HappyWrap56 = HappyWrap56 (CmmType)
happyIn56 :: (CmmType) -> (HappyAbsSyn )
happyIn56 :: CmmType -> HappyAbsSyn
happyIn56 x :: CmmType
x = HappyWrap56 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmType -> HappyWrap56
HappyWrap56 CmmType
x)
{-# INLINE happyIn56 #-}
happyOut56 :: (HappyAbsSyn ) -> HappyWrap56
happyOut56 :: HappyAbsSyn -> HappyWrap56
happyOut56 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap56
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut56 #-}
newtype HappyWrap57 = HappyWrap57 (CmmType)
happyIn57 :: (CmmType) -> (HappyAbsSyn )
happyIn57 :: CmmType -> HappyAbsSyn
happyIn57 x :: CmmType
x = HappyWrap57 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (CmmType -> HappyWrap57
HappyWrap57 CmmType
x)
{-# INLINE happyIn57 #-}
happyOut57 :: (HappyAbsSyn ) -> HappyWrap57
happyOut57 :: HappyAbsSyn -> HappyWrap57
happyOut57 x :: HappyAbsSyn
x = HappyAbsSyn -> HappyWrap57
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut57 #-}
happyInTok :: (Located CmmToken) -> (HappyAbsSyn )
happyInTok :: Located CmmToken -> HappyAbsSyn
happyInTok x :: Located CmmToken
x = Located CmmToken -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# Located CmmToken
x
{-# INLINE happyInTok #-}
happyOutTok :: (HappyAbsSyn ) -> (Located CmmToken)
happyOutTok :: HappyAbsSyn -> Located CmmToken
happyOutTok x :: HappyAbsSyn
x = HappyAbsSyn -> Located CmmToken
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOutTok #-}


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

happyActOffsets :: HappyAddr
happyActOffsets :: HappyAddr
happyActOffsets = Addr# -> HappyAddr
HappyA# "\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# "\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 off :: Int#
off = Int#
off

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

happy_n_terms :: Int
happy_n_terms = 78 :: Int
happy_n_nonterms :: Int
happy_n_nonterms = 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  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  0# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_2
happyReduction_2 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_2 happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap5
happyOut5 HappyAbsSyn
happy_x_1 of { (HappyWrap5 happy_var_1 :: CmmParse ()
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap4
happyOut4 HappyAbsSyn
happy_x_2 of { (HappyWrap4 happy_var_2 :: 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  1# HappyAbsSyn -> HappyAbsSyn
happyReduction_3
happyReduction_3 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_3 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap11
happyOut11 HappyAbsSyn
happy_x_1 of { (HappyWrap11 happy_var_1 :: 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  1# HappyAbsSyn -> HappyAbsSyn
happyReduction_4
happyReduction_4 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_4 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap6
happyOut6 HappyAbsSyn
happy_x_1 of { (HappyWrap6 happy_var_1 :: 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  1# HappyAbsSyn -> HappyAbsSyn
happyReduction_5
happyReduction_5 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_5 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap16
happyOut16 HappyAbsSyn
happy_x_1 of { (HappyWrap16 happy_var_1 :: 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 8# 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 (happy_x_8 :: HappyAbsSyn
happy_x_8 `HappyStk`
	happy_x_7 :: HappyAbsSyn
happy_x_7 `HappyStk`
	happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 _ (CmmT_Name        happy_var_3 :: FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L _ (CmmT_Name        happy_var_5 :: FastString
happy_var_5)) -> 
	case HappyAbsSyn -> HappyWrap10
happyOut10 HappyAbsSyn
happy_x_6 of { (HappyWrap10 happy_var_6 :: [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
withThisPackage ((UnitId -> CmmParse ()) -> PD (CmmParse ()))
-> (UnitId -> CmmParse ()) -> PD (CmmParse ())
forall a b. (a -> b) -> a -> b
$ \pkg :: 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))}}})
	) (\r :: 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 6# 2# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_7
happyReduction_7 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_7 (happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L _ (CmmT_String      happy_var_2 :: [Char]
happy_var_2)) -> 
	case HappyAbsSyn -> HappyWrap7
happyOut7 HappyAbsSyn
happy_x_4 of { (HappyWrap7 happy_var_4 :: CmmParse CLabel
happy_var_4) -> 
	case HappyAbsSyn -> HappyWrap8
happyOut8 HappyAbsSyn
happy_x_5 of { (HappyWrap8 happy_var_5 :: [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 -> CmmStatics -> CmmDecl
forall d h g. Section -> d -> GenCmmDecl d h g
CmmData (SectionType -> CLabel -> Section
Section ([Char] -> SectionType
section [Char]
happy_var_2) CLabel
lbl) (CLabel -> [CmmStatic] -> CmmStatics
Statics CLabel
lbl ([CmmStatic] -> CmmStatics) -> [CmmStatic] -> CmmStatics
forall a b. (a -> b) -> a -> b
$ [[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 2# 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 (happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 _ (CmmT_Name        happy_var_1 :: 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
withThisPackage ((UnitId -> CmmParse CLabel) -> PD (CmmParse CLabel))
-> (UnitId -> CmmParse CLabel) -> PD (CmmParse CLabel)
forall a b. (a -> b) -> a -> b
$ \pkg :: UnitId
pkg ->
                   CLabel -> CmmParse CLabel
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> FastString -> CLabel
mkCmmDataLabel UnitId
pkg FastString
happy_var_1))})
	) (\r :: 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  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  4# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_10
happyReduction_10 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_10 happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap9
happyOut9 HappyAbsSyn
happy_x_1 of { (HappyWrap9 happy_var_1 :: CmmParse [CmmStatic]
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap8
happyOut8 HappyAbsSyn
happy_x_2 of { (HappyWrap8 happy_var_2 :: [CmmParse [CmmStatic]]
happy_var_2) -> 
	[CmmParse [CmmStatic]] -> HappyAbsSyn
happyIn8
		 (CmmParse [CmmStatic]
happy_var_1 CmmParse [CmmStatic]
-> [CmmParse [CmmStatic]] -> [CmmParse [CmmStatic]]
forall k1. k1 -> [k1] -> [k1]
: [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  5# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p p. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_11
happyReduction_11 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_11 happy_x_3 :: p
happy_x_3
	happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 happy_var_2 :: 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  5# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_12
happyReduction_12 :: p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_12 happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
happy_x_1 of { (HappyWrap56 happy_var_1 :: CmmType
happy_var_1) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 ([CmmStatic] -> CmmParse [CmmStatic]
forall (m :: * -> *) a. Monad m => a -> m a
return [Int -> CmmStatic
CmmUninitialised
                                                        (Width -> Int
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 5# 5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_13
happyReduction_13 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_13 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { (L _ (CmmT_String      happy_var_4 :: [Char]
happy_var_4)) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 ([CmmStatic] -> CmmParse [CmmStatic]
forall (m :: * -> *) a. Monad m => a -> m a
return [[Char] -> CmmStatic
mkString [Char]
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 5# 5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_14
happyReduction_14 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_14 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L _ (CmmT_Int         happy_var_3 :: Integer
happy_var_3)) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 ([CmmStatic] -> CmmParse [CmmStatic]
forall (m :: * -> *) a. Monad m => a -> m a
return [Int -> CmmStatic
CmmUninitialised 
                                                        (Integer -> Int
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 5# 5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_15
happyReduction_15 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_15 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap57
happyOut57 HappyAbsSyn
happy_x_1 of { (HappyWrap57 happy_var_1 :: CmmType
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L _ (CmmT_Int         happy_var_3 :: Integer
happy_var_3)) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 ([CmmStatic] -> CmmParse [CmmStatic]
forall (m :: * -> *) a. Monad m => a -> m a
return [Int -> CmmStatic
CmmUninitialised 
                                                (Width -> Int
widthInBytes (CmmType -> Width
typeWidth CmmType
happy_var_1) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 
                                                        Integer -> Int
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 5# 5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_16
happyReduction_16 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_16 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L _ (CmmT_Name        happy_var_3 :: FastString
happy_var_3)) -> 
	case HappyAbsSyn -> HappyWrap10
happyOut10 HappyAbsSyn
happy_x_4 of { (HappyWrap10 happy_var_4 :: [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 Int -> ForeignLabelSource -> FunctionOrData -> CLabel
mkForeignLabel FastString
happy_var_3 Maybe Int
forall k1. Maybe k1
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  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  6# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_18
happyReduction_18 :: HappyAbsSyn -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_18 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 happy_var_2 :: CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap10
happyOut10 HappyAbsSyn
happy_x_3 of { (HappyWrap10 happy_var_3 :: [CmmParse CmmExpr]
happy_var_3) -> 
	[CmmParse CmmExpr] -> HappyAbsSyn
happyIn10
		 (CmmParse CmmExpr
happy_var_2 CmmParse CmmExpr -> [CmmParse CmmExpr] -> [CmmParse CmmExpr]
forall k1. k1 -> [k1] -> [k1]
: [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 4# 7# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_19
happyReduction_19 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_19 (happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap14
happyOut14 HappyAbsSyn
happy_x_1 of { (HappyWrap14 happy_var_1 :: CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap12
happyOut12 HappyAbsSyn
happy_x_2 of { (HappyWrap12 happy_var_2 :: Convention
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap52
happyOut52 HappyAbsSyn
happy_x_3 of { (HappyWrap52 happy_var_3 :: Maybe [CmmParse LocalReg]
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
happy_x_4 of { (HappyWrap13 happy_var_4 :: CmmParse ()
happy_var_4) -> 
	CmmParse () -> HappyAbsSyn
happyIn11
		 (do ((entry_ret_label :: CLabel
entry_ret_label, info :: Maybe CmmInfoTable
info, stk_formals :: [LocalReg]
stk_formals, formals :: [LocalReg]
formals), agraph :: 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 {
                         (entry_ret_label :: CLabel
entry_ret_label, info :: Maybe CmmInfoTable
info, stk_formals :: [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);
                         [Char] -> CmmParse () -> CmmParse ()
forall a. [Char] -> CmmParse a -> CmmParse a
withName (DynFlags -> SDoc -> [Char]
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  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  8# HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn
happyReduction_21
happyReduction_21 :: p -> HappyAbsSyn
happyReduction_21 happy_x_1 :: 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  9# HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn
happyReduction_22
happyReduction_22 :: p -> HappyAbsSyn
happyReduction_22 happy_x_1 :: 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  9# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_23
happyReduction_23 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_23 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { happy_var_1 :: Located CmmToken
happy_var_1 -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_2 of { (HappyWrap15 happy_var_2 :: CmmParse ()
happy_var_2) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { happy_var_3 :: 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 1# 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 (happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 _ (CmmT_Name        happy_var_1 :: 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
withThisPackage ((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
$ \pkg :: 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 k1. Maybe k1
Nothing, []))})
	) (\r :: 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 14# 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 (happy_x_14 :: HappyAbsSyn
happy_x_14 `HappyStk`
	happy_x_13 :: HappyAbsSyn
happy_x_13 `HappyStk`
	happy_x_12 :: HappyAbsSyn
happy_x_12 `HappyStk`
	happy_x_11 :: HappyAbsSyn
happy_x_11 `HappyStk`
	happy_x_10 :: HappyAbsSyn
happy_x_10 `HappyStk`
	happy_x_9 :: HappyAbsSyn
happy_x_9 `HappyStk`
	happy_x_8 :: HappyAbsSyn
happy_x_8 `HappyStk`
	happy_x_7 :: HappyAbsSyn
happy_x_7 `HappyStk`
	happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 _ (CmmT_Name        happy_var_3 :: FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L _ (CmmT_Int         happy_var_5 :: Integer
happy_var_5)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { (L _ (CmmT_Int         happy_var_7 :: Integer
happy_var_7)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_9 of { (L _ (CmmT_Int         happy_var_9 :: Integer
happy_var_9)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_11 of { (L _ (CmmT_String      happy_var_11 :: [Char]
happy_var_11)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_13 of { (L _ (CmmT_String      happy_var_13 :: [Char]
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
withThisPackage ((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
$ \pkg :: UnitId
pkg ->
                   do DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
                      let prof :: ProfilingInfo
prof = DynFlags -> [Char] -> [Char] -> ProfilingInfo
profilingInfo DynFlags
dflags [Char]
happy_var_11 [Char]
happy_var_13
                          rep :: SMRep
rep  = Int -> SMRep -> SMRep
mkRTSRep (Integer -> Int
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 -> Int -> Int -> ClosureTypeInfo -> SMRep
mkHeapRep DynFlags
dflags Bool
False (Integer -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5)
                                                   (Integer -> Int
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 k1. k1 -> Maybe k1
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 k1. Maybe k1
Nothing, cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall k1. Maybe k1
Nothing },
                              []))}}}}}})
	) (\r :: 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 16# 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 (happy_x_16 :: HappyAbsSyn
happy_x_16 `HappyStk`
	happy_x_15 :: HappyAbsSyn
happy_x_15 `HappyStk`
	happy_x_14 :: HappyAbsSyn
happy_x_14 `HappyStk`
	happy_x_13 :: HappyAbsSyn
happy_x_13 `HappyStk`
	happy_x_12 :: HappyAbsSyn
happy_x_12 `HappyStk`
	happy_x_11 :: HappyAbsSyn
happy_x_11 `HappyStk`
	happy_x_10 :: HappyAbsSyn
happy_x_10 `HappyStk`
	happy_x_9 :: HappyAbsSyn
happy_x_9 `HappyStk`
	happy_x_8 :: HappyAbsSyn
happy_x_8 `HappyStk`
	happy_x_7 :: HappyAbsSyn
happy_x_7 `HappyStk`
	happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 _ (CmmT_Name        happy_var_3 :: FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L _ (CmmT_Int         happy_var_5 :: Integer
happy_var_5)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { (L _ (CmmT_Int         happy_var_7 :: Integer
happy_var_7)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_9 of { (L _ (CmmT_Int         happy_var_9 :: Integer
happy_var_9)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_11 of { (L _ (CmmT_String      happy_var_11 :: [Char]
happy_var_11)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_13 of { (L _ (CmmT_String      happy_var_13 :: [Char]
happy_var_13)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_15 of { (L _ (CmmT_Int         happy_var_15 :: 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
withThisPackage ((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
$ \pkg :: UnitId
pkg ->
                   do DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
                      let prof :: ProfilingInfo
prof = DynFlags -> [Char] -> [Char] -> ProfilingInfo
profilingInfo DynFlags
dflags [Char]
happy_var_11 [Char]
happy_var_13
                          ty :: ClosureTypeInfo
ty   = Int -> ArgDescr -> ClosureTypeInfo
Fun 0 (Int -> ArgDescr
ArgSpec (Integer -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_15))
                                -- Arity zero, arg_type happy_var_15
                          rep :: SMRep
rep = Int -> SMRep -> SMRep
mkRTSRep (Integer -> Int
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 -> Int -> Int -> ClosureTypeInfo -> SMRep
mkHeapRep DynFlags
dflags Bool
False (Integer -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5)
                                                    (Integer -> Int
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 k1. k1 -> Maybe k1
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 k1. Maybe k1
Nothing, cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall k1. Maybe k1
Nothing },
                              []))}}}}}}})
	) (\r :: 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 16# 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 (happy_x_16 :: HappyAbsSyn
happy_x_16 `HappyStk`
	happy_x_15 :: HappyAbsSyn
happy_x_15 `HappyStk`
	happy_x_14 :: HappyAbsSyn
happy_x_14 `HappyStk`
	happy_x_13 :: HappyAbsSyn
happy_x_13 `HappyStk`
	happy_x_12 :: HappyAbsSyn
happy_x_12 `HappyStk`
	happy_x_11 :: HappyAbsSyn
happy_x_11 `HappyStk`
	happy_x_10 :: HappyAbsSyn
happy_x_10 `HappyStk`
	happy_x_9 :: HappyAbsSyn
happy_x_9 `HappyStk`
	happy_x_8 :: HappyAbsSyn
happy_x_8 `HappyStk`
	happy_x_7 :: HappyAbsSyn
happy_x_7 `HappyStk`
	happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 _ (CmmT_Name        happy_var_3 :: FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L _ (CmmT_Int         happy_var_5 :: Integer
happy_var_5)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { (L _ (CmmT_Int         happy_var_7 :: Integer
happy_var_7)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_9 of { (L _ (CmmT_Int         happy_var_9 :: Integer
happy_var_9)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_11 of { (L _ (CmmT_Int         happy_var_11 :: Integer
happy_var_11)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_13 of { (L _ (CmmT_String      happy_var_13 :: [Char]
happy_var_13)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_15 of { (L _ (CmmT_String      happy_var_15 :: [Char]
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
withThisPackage ((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
$ \pkg :: UnitId
pkg ->
                   do DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
                      let prof :: ProfilingInfo
prof = DynFlags -> [Char] -> [Char] -> ProfilingInfo
profilingInfo DynFlags
dflags [Char]
happy_var_13 [Char]
happy_var_15
                          ty :: ClosureTypeInfo
ty  = Int -> ConstrDescription -> ClosureTypeInfo
Constr (Integer -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_9)  -- Tag
                                       ([Char] -> ConstrDescription
stringToWord8s [Char]
happy_var_13)
                          rep :: SMRep
rep = Int -> SMRep -> SMRep
mkRTSRep (Integer -> Int
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 -> Int -> Int -> ClosureTypeInfo -> SMRep
mkHeapRep DynFlags
dflags Bool
False (Integer -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5)
                                                  (Integer -> Int
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 k1. k1 -> Maybe k1
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 k1. Maybe k1
Nothing,cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall k1. Maybe k1
Nothing },
                              []))}}}}}}})
	) (\r :: 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 12# 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 (happy_x_12 :: HappyAbsSyn
happy_x_12 `HappyStk`
	happy_x_11 :: HappyAbsSyn
happy_x_11 `HappyStk`
	happy_x_10 :: HappyAbsSyn
happy_x_10 `HappyStk`
	happy_x_9 :: HappyAbsSyn
happy_x_9 `HappyStk`
	happy_x_8 :: HappyAbsSyn
happy_x_8 `HappyStk`
	happy_x_7 :: HappyAbsSyn
happy_x_7 `HappyStk`
	happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 _ (CmmT_Name        happy_var_3 :: FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L _ (CmmT_Int         happy_var_5 :: Integer
happy_var_5)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { (L _ (CmmT_Int         happy_var_7 :: Integer
happy_var_7)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_9 of { (L _ (CmmT_String      happy_var_9 :: [Char]
happy_var_9)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_11 of { (L _ (CmmT_String      happy_var_11 :: [Char]
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
withThisPackage ((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
$ \pkg :: UnitId
pkg ->
                   do DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
                      let prof :: ProfilingInfo
prof = DynFlags -> [Char] -> [Char] -> ProfilingInfo
profilingInfo DynFlags
dflags [Char]
happy_var_9 [Char]
happy_var_11
                          ty :: ClosureTypeInfo
ty  = Int -> ClosureTypeInfo
ThunkSelector (Integer -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5)
                          rep :: SMRep
rep = Int -> SMRep -> SMRep
mkRTSRep (Integer -> Int
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 -> Int -> Int -> ClosureTypeInfo -> SMRep
mkHeapRep DynFlags
dflags Bool
False 0 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 k1. k1 -> Maybe k1
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 k1. Maybe k1
Nothing, cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall k1. Maybe k1
Nothing },
                              []))}}}}})
	) (\r :: 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 6# 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 (happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 _ (CmmT_Name        happy_var_3 :: FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L _ (CmmT_Int         happy_var_5 :: 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
withThisPackage ((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
$ \pkg :: UnitId
pkg ->
                   do let prof :: ProfilingInfo
prof = ProfilingInfo
NoProfilingInfo
                          rep :: SMRep
rep  = Int -> SMRep -> SMRep
mkRTSRep (Integer -> Int
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 k1. k1 -> Maybe k1
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 k1. Maybe k1
Nothing, cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall k1. Maybe k1
Nothing },
                              []))}})
	) (\r :: 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 8# 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 (happy_x_8 :: HappyAbsSyn
happy_x_8 `HappyStk`
	happy_x_7 :: HappyAbsSyn
happy_x_7 `HappyStk`
	happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 _ (CmmT_Name        happy_var_3 :: FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L _ (CmmT_Int         happy_var_5 :: Integer
happy_var_5)) -> 
	case HappyAbsSyn -> HappyWrap53
happyOut53 HappyAbsSyn
happy_x_7 of { (HappyWrap53 happy_var_7 :: [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
withThisPackage ((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
$ \pkg :: UnitId
pkg ->
                   do DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
                      [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 = DynFlags -> [LocalReg] -> [Bool]
mkLiveness DynFlags
dflags (Int -> [LocalReg] -> [LocalReg]
forall a. Int -> [a] -> [a]
drop 1 [LocalReg]
live)
                          rep :: SMRep
rep  = Int -> SMRep -> SMRep
mkRTSRep (Integer -> Int
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 k1. k1 -> Maybe k1
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 k1. Maybe k1
Nothing, cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall k1. Maybe k1
Nothing },
                              [LocalReg]
live))}}})
	) (\r :: 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  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  11# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_32
happyReduction_32 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_32 happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap16
happyOut16 HappyAbsSyn
happy_x_1 of { (HappyWrap16 happy_var_1 :: CmmParse ()
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_2 of { (HappyWrap15 happy_var_2 :: 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  11# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_33
happyReduction_33 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_33 happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap20
happyOut20 HappyAbsSyn
happy_x_1 of { (HappyWrap20 happy_var_1 :: CmmParse ()
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_2 of { (HappyWrap15 happy_var_2 :: 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  12# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_34
happyReduction_34 :: p -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_34 happy_x_3 :: p
happy_x_3
	happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
happy_x_1 of { (HappyWrap56 happy_var_1 :: CmmType
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap19
happyOut19 HappyAbsSyn
happy_x_2 of { (HappyWrap19 happy_var_2 :: [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  12# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p p. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_35
happyReduction_35 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_35 happy_x_3 :: p
happy_x_3
	happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap17
happyOut17 HappyAbsSyn
happy_x_2 of { (HappyWrap17 happy_var_2 :: [(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  12# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p p p. p -> p -> p -> HappyAbsSyn
happyReduction_36
happyReduction_36 :: p -> p -> p -> HappyAbsSyn
happyReduction_36 happy_x_3 :: p
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: 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  13# HappyAbsSyn -> HappyAbsSyn
happyReduction_37
happyReduction_37 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_37 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap18
happyOut18 HappyAbsSyn
happy_x_1 of { (HappyWrap18 happy_var_1 :: (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  13# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_38
happyReduction_38 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_38 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap18
happyOut18 HappyAbsSyn
happy_x_1 of { (HappyWrap18 happy_var_1 :: (FastString, CLabel)
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap17
happyOut17 HappyAbsSyn
happy_x_3 of { (HappyWrap17 happy_var_3 :: [(FastString, CLabel)]
happy_var_3) -> 
	[(FastString, CLabel)] -> HappyAbsSyn
happyIn17
		 ((FastString, CLabel)
happy_var_1 (FastString, CLabel)
-> [(FastString, CLabel)] -> [(FastString, CLabel)]
forall k1. k1 -> [k1] -> [k1]
: [(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  14# HappyAbsSyn -> HappyAbsSyn
happyReduction_39
happyReduction_39 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_39 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_Name        happy_var_1 :: FastString
happy_var_1)) -> 
	(FastString, CLabel) -> HappyAbsSyn
happyIn18
		 ((FastString
happy_var_1, FastString
-> Maybe Int -> ForeignLabelSource -> FunctionOrData -> CLabel
mkForeignLabel FastString
happy_var_1 Maybe Int
forall k1. Maybe k1
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  14# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_40
happyReduction_40 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_40 happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: p
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L _ (CmmT_Name        happy_var_2 :: FastString
happy_var_2)) -> 
	(FastString, CLabel) -> HappyAbsSyn
happyIn18
		 ((FastString
happy_var_2, FastString
-> Maybe Int -> ForeignLabelSource -> FunctionOrData -> CLabel
mkForeignLabel FastString
happy_var_2 Maybe Int
forall k1. Maybe k1
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  14# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_41
happyReduction_41 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_41 happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_String      happy_var_1 :: [Char]
happy_var_1)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L _ (CmmT_Name        happy_var_2 :: FastString
happy_var_2)) -> 
	(FastString, CLabel) -> HappyAbsSyn
happyIn18
		 ((FastString
happy_var_2, UnitId -> FastString -> CLabel
mkCmmCodeLabel (FastString -> UnitId
fsToUnitId ([Char] -> FastString
mkFastString [Char]
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  15# HappyAbsSyn -> HappyAbsSyn
happyReduction_42
happyReduction_42 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_42 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_Name        happy_var_1 :: 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  15# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_43
happyReduction_43 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_43 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_Name        happy_var_1 :: FastString
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap19
happyOut19 HappyAbsSyn
happy_x_3 of { (HappyWrap19 happy_var_3 :: [FastString]
happy_var_3) -> 
	[FastString] -> HappyAbsSyn
happyIn19
		 (FastString
happy_var_1 FastString -> [FastString] -> [FastString]
forall k1. k1 -> [k1] -> [k1]
: [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  16# HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn
happyReduction_44
happyReduction_44 :: p -> HappyAbsSyn
happyReduction_44 happy_x_1 :: 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  16# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_45
happyReduction_45 :: p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_45 happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_Name        happy_var_1 :: 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 4# 16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_46
happyReduction_46 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_46 (happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap51
happyOut51 HappyAbsSyn
happy_x_1 of { (HappyWrap51 happy_var_1 :: CmmParse CmmReg
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { happy_var_2 :: Located CmmToken
happy_var_2 -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: CmmParse CmmExpr
happy_var_3) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { happy_var_4 :: 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 7# 16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_47
happyReduction_47 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_47 (happy_x_7 :: HappyAbsSyn
happy_x_7 `HappyStk`
	happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
happy_x_1 of { (HappyWrap56 happy_var_1 :: CmmType
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { happy_var_2 :: Located CmmToken
happy_var_2 -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: CmmParse CmmExpr
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_6 of { (HappyWrap38 happy_var_6 :: CmmParse CmmExpr
happy_var_6) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { happy_var_7 :: 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 10# 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 (happy_x_10 :: HappyAbsSyn
happy_x_10 `HappyStk`
	happy_x_9 :: HappyAbsSyn
happy_x_9 `HappyStk`
	happy_x_8 :: HappyAbsSyn
happy_x_8 `HappyStk`
	happy_x_7 :: HappyAbsSyn
happy_x_7 `HappyStk`
	happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 happy_var_1 :: [CmmParse (LocalReg, ForeignHint)]
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L _ (CmmT_String      happy_var_3 :: [Char]
happy_var_3)) -> 
	case HappyAbsSyn -> HappyWrap23
happyOut23 HappyAbsSyn
happy_x_4 of { (HappyWrap23 happy_var_4 :: CmmParse CmmExpr
happy_var_4) -> 
	case HappyAbsSyn -> HappyWrap41
happyOut41 HappyAbsSyn
happy_x_6 of { (HappyWrap41 happy_var_6 :: [CmmParse (CmmExpr, ForeignHint)]
happy_var_6) -> 
	case HappyAbsSyn -> HappyWrap27
happyOut27 HappyAbsSyn
happy_x_8 of { (HappyWrap27 happy_var_8 :: Safety
happy_var_8) -> 
	case HappyAbsSyn -> HappyWrap24
happyOut24 HappyAbsSyn
happy_x_9 of { (HappyWrap24 happy_var_9 :: CmmReturnInfo
happy_var_9) -> 
	( [Char]
-> [CmmParse (LocalReg, ForeignHint)]
-> CmmParse CmmExpr
-> [CmmParse (CmmExpr, ForeignHint)]
-> Safety
-> CmmReturnInfo
-> PD (CmmParse ())
foreignCall [Char]
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)}}}}}})
	) (\r :: 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 8# 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 (happy_x_8 :: HappyAbsSyn
happy_x_8 `HappyStk`
	happy_x_7 :: HappyAbsSyn
happy_x_7 `HappyStk`
	happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 happy_var_1 :: [CmmParse (LocalReg, ForeignHint)]
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { (L _ (CmmT_Name        happy_var_4 :: FastString
happy_var_4)) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_6 of { (HappyWrap44 happy_var_6 :: [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)}}})
	) (\r :: 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 5# 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 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 _ (CmmT_Name        happy_var_1 :: FastString
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_3 of { (HappyWrap44 happy_var_3 :: [CmmParse CmmExpr]
happy_var_3) -> 
	( FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
stmtMacro FastString
happy_var_1 [CmmParse CmmExpr]
happy_var_3)}})
	) (\r :: 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 7# 16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_51
happyReduction_51 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_51 (happy_x_7 :: HappyAbsSyn
happy_x_7 `HappyStk`
	happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap30
happyOut30 HappyAbsSyn
happy_x_2 of { (HappyWrap30 happy_var_2 :: Maybe (Integer, Integer)
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: CmmParse CmmExpr
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap31
happyOut31 HappyAbsSyn
happy_x_5 of { (HappyWrap31 happy_var_5 :: [CmmParse ([Integer], Either BlockId (CmmParse ()))]
happy_var_5) -> 
	case HappyAbsSyn -> HappyWrap35
happyOut35 HappyAbsSyn
happy_x_6 of { (HappyWrap35 happy_var_6 :: 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  16# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p p. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_52
happyReduction_52 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_52 happy_x_3 :: p
happy_x_3
	happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: p
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L _ (CmmT_Name        happy_var_2 :: 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 5# 16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_53
happyReduction_53 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_53 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_3 of { (HappyWrap44 happy_var_3 :: [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 4# 16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_54
happyReduction_54 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_54 (happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 happy_var_2 :: CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap28
happyOut28 HappyAbsSyn
happy_x_3 of { (HappyWrap28 happy_var_3 :: [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 6# 16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_55
happyReduction_55 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_55 (happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 happy_var_2 :: CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_4 of { (HappyWrap44 happy_var_4 :: [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 9# 16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_56
happyReduction_56 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_56 (happy_x_9 :: HappyAbsSyn
happy_x_9 `HappyStk`
	happy_x_8 :: HappyAbsSyn
happy_x_8 `HappyStk`
	happy_x_7 :: HappyAbsSyn
happy_x_7 `HappyStk`
	happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 happy_var_2 :: CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_4 of { (HappyWrap44 happy_var_4 :: [CmmParse CmmExpr]
happy_var_4) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_7 of { (HappyWrap44 happy_var_7 :: [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 6# 16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_57
happyReduction_57 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_57 (happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 happy_var_2 :: CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_4 of { (HappyWrap44 happy_var_4 :: [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 10# 16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_58
happyReduction_58 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_58 (happy_x_10 :: HappyAbsSyn
happy_x_10 `HappyStk`
	happy_x_9 :: HappyAbsSyn
happy_x_9 `HappyStk`
	happy_x_8 :: HappyAbsSyn
happy_x_8 `HappyStk`
	happy_x_7 :: HappyAbsSyn
happy_x_7 `HappyStk`
	happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap54
happyOut54 HappyAbsSyn
happy_x_2 of { (HappyWrap54 happy_var_2 :: [CmmParse LocalReg]
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_6 of { (HappyWrap38 happy_var_6 :: CmmParse CmmExpr
happy_var_6) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_8 of { (HappyWrap44 happy_var_8 :: [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 5# 16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_59
happyReduction_59 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_59 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_2 of { (HappyWrap25 happy_var_2 :: CmmParse BoolExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap37
happyOut37 HappyAbsSyn
happy_x_3 of { (HappyWrap37 happy_var_3 :: Maybe Bool
happy_var_3) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L _ (CmmT_Name        happy_var_5 :: 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 7# 16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_60
happyReduction_60 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_60 (happy_x_7 :: HappyAbsSyn
happy_x_7 `HappyStk`
	happy_x_6 :: HappyAbsSyn
happy_x_6 `HappyStk`
	happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_2 of { (HappyWrap25 happy_var_2 :: CmmParse BoolExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap37
happyOut37 HappyAbsSyn
happy_x_3 of { (HappyWrap37 happy_var_3 :: Maybe Bool
happy_var_3) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { happy_var_4 :: Located CmmToken
happy_var_4 -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_5 of { (HappyWrap15 happy_var_5 :: CmmParse ()
happy_var_5) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_6 of { happy_var_6 :: Located CmmToken
happy_var_6 -> 
	case HappyAbsSyn -> HappyWrap36
happyOut36 HappyAbsSyn
happy_x_7 of { (HappyWrap36 happy_var_7 :: 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 5# 16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_61
happyReduction_61 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_61 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_3 of { (HappyWrap44 happy_var_3 :: [CmmParse CmmExpr]
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
happy_x_5 of { (HappyWrap13 happy_var_5 :: 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 5# 16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_62
happyReduction_62 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_62 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 happy_var_2 :: CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap51
happyOut51 HappyAbsSyn
happy_x_4 of { (HappyWrap51 happy_var_4 :: CmmParse CmmReg
happy_var_4) -> 
	case HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
happy_x_5 of { (HappyWrap13 happy_var_5 :: 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  16# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p p. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_63
happyReduction_63 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_63 happy_x_3 :: p
happy_x_3
	happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap21
happyOut21 HappyAbsSyn
happy_x_2 of { (HappyWrap21 happy_var_2 :: 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 5# 17# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_64
happyReduction_64 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_64 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_GlobalReg   happy_var_1 :: GlobalReg
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap22
happyOut22 HappyAbsSyn
happy_x_3 of { (HappyWrap22 happy_var_3 :: CmmParse (Maybe CmmExpr)
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap21
happyOut21 HappyAbsSyn
happy_x_5 of { (HappyWrap21 happy_var_5 :: 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 k1. k1 -> [k1] -> [k1]
: [(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  17# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_65
happyReduction_65 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_65 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_GlobalReg   happy_var_1 :: GlobalReg
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap22
happyOut22 HappyAbsSyn
happy_x_3 of { (HappyWrap22 happy_var_3 :: 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  18# HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn
happyReduction_66
happyReduction_66 :: p -> HappyAbsSyn
happyReduction_66 happy_x_1 :: 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 k1. Maybe k1
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  18# HappyAbsSyn -> HappyAbsSyn
happyReduction_67
happyReduction_67 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_67 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: 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 k1. k1 -> Maybe k1
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  19# HappyAbsSyn -> HappyAbsSyn
happyReduction_68
happyReduction_68 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_68 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_Name        happy_var_1 :: 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 Int -> ForeignLabelSource -> FunctionOrData -> CLabel
mkForeignLabel FastString
happy_var_1 Maybe Int
forall k1. Maybe k1
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  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  20# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p p. p -> p -> HappyAbsSyn
happyReduction_70
happyReduction_70 :: p -> p -> HappyAbsSyn
happyReduction_70 happy_x_2 :: p
happy_x_2
	happy_x_1 :: 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  21# HappyAbsSyn -> HappyAbsSyn
happyReduction_71
happyReduction_71 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_71 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap26
happyOut26 HappyAbsSyn
happy_x_1 of { (HappyWrap26 happy_var_1 :: 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  21# HappyAbsSyn -> HappyAbsSyn
happyReduction_72
happyReduction_72 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_72 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: 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  22# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_73
happyReduction_73 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_73 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_1 of { (HappyWrap25 happy_var_1 :: CmmParse BoolExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_3 of { (HappyWrap25 happy_var_3 :: 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  22# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_74
happyReduction_74 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_74 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_1 of { (HappyWrap25 happy_var_1 :: CmmParse BoolExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_3 of { (HappyWrap25 happy_var_3 :: 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  22# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_75
happyReduction_75 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_75 happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_2 of { (HappyWrap25 happy_var_2 :: 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  22# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p p. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_76
happyReduction_76 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_76 happy_x_3 :: p
happy_x_3
	happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap26
happyOut26 HappyAbsSyn
happy_x_2 of { (HappyWrap26 happy_var_2 :: 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  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 1# 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 (happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 _ (CmmT_String      happy_var_1 :: [Char]
happy_var_1)) -> 
	( [Char] -> PD Safety
parseSafety [Char]
happy_var_1)})
	) (\r :: 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  24# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p p. p -> p -> HappyAbsSyn
happyReduction_79
happyReduction_79 :: p -> p -> HappyAbsSyn
happyReduction_79 happy_x_2 :: p
happy_x_2
	happy_x_1 :: 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 3# 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 (happy_x_3 :: a
happy_x_3 `HappyStk`
	happy_x_2 :: a
happy_x_2 `HappyStk`
	happy_x_1 :: a
happy_x_1 `HappyStk`
	happyRest :: HappyStk a
happyRest) tk :: 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)))
	) (\r :: [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  24# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p p. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_81
happyReduction_81 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_81 happy_x_3 :: p
happy_x_3
	happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap29
happyOut29 HappyAbsSyn
happy_x_2 of { (HappyWrap29 happy_var_2 :: [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  25# HappyAbsSyn -> HappyAbsSyn
happyReduction_82
happyReduction_82 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_82 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_GlobalReg   happy_var_1 :: 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  25# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_83
happyReduction_83 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_83 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_GlobalReg   happy_var_1 :: GlobalReg
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap29
happyOut29 HappyAbsSyn
happy_x_3 of { (HappyWrap29 happy_var_3 :: [GlobalReg]
happy_var_3) -> 
	[GlobalReg] -> HappyAbsSyn
happyIn29
		 (GlobalReg
happy_var_1 GlobalReg -> [GlobalReg] -> [GlobalReg]
forall k1. k1 -> [k1] -> [k1]
: [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 5# 26# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_84
happyReduction_84 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_84 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L _ (CmmT_Int         happy_var_2 :: Integer
happy_var_2)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { (L _ (CmmT_Int         happy_var_4 :: Integer
happy_var_4)) -> 
	Maybe (Integer, Integer) -> HappyAbsSyn
happyIn30
		 ((Integer, Integer) -> Maybe (Integer, Integer)
forall k1. k1 -> Maybe k1
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  26# HappyAbsSyn
happyReduction_85
happyReduction_85 :: HappyAbsSyn
happyReduction_85  =  Maybe (Integer, Integer) -> HappyAbsSyn
happyIn30
		 (Maybe (Integer, Integer)
forall k1. Maybe k1
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  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  27# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_87
happyReduction_87 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_87 happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap32
happyOut32 HappyAbsSyn
happy_x_1 of { (HappyWrap32 happy_var_1 :: CmmParse ([Integer], Either BlockId (CmmParse ()))
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap31
happyOut31 HappyAbsSyn
happy_x_2 of { (HappyWrap31 happy_var_2 :: [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 k1. k1 -> [k1] -> [k1]
: [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 4# 28# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_88
happyReduction_88 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_88 (happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap34
happyOut34 HappyAbsSyn
happy_x_2 of { (HappyWrap34 happy_var_2 :: [Integer]
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap33
happyOut33 HappyAbsSyn
happy_x_4 of { (HappyWrap33 happy_var_4 :: 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  29# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_89
happyReduction_89 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_89 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { happy_var_1 :: Located CmmToken
happy_var_1 -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_2 of { (HappyWrap15 happy_var_2 :: CmmParse ()
happy_var_2) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { happy_var_3 :: 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  29# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p p. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_90
happyReduction_90 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_90 happy_x_3 :: p
happy_x_3
	happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: p
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L _ (CmmT_Name        happy_var_2 :: 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  30# HappyAbsSyn -> HappyAbsSyn
happyReduction_91
happyReduction_91 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_91 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_Int         happy_var_1 :: 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  30# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_92
happyReduction_92 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_92 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_Int         happy_var_1 :: Integer
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap34
happyOut34 HappyAbsSyn
happy_x_3 of { (HappyWrap34 happy_var_3 :: [Integer]
happy_var_3) -> 
	[Integer] -> HappyAbsSyn
happyIn34
		 (Integer
happy_var_1 Integer -> [Integer] -> [Integer]
forall k1. k1 -> [k1] -> [k1]
: [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 5# 31# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_93
happyReduction_93 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_93 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { happy_var_3 :: Located CmmToken
happy_var_3 -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_4 of { (HappyWrap15 happy_var_4 :: CmmParse ()
happy_var_4) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { happy_var_5 :: Located CmmToken
happy_var_5 -> 
	Maybe (CmmParse ()) -> HappyAbsSyn
happyIn35
		 (CmmParse () -> Maybe (CmmParse ())
forall k1. k1 -> Maybe k1
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  31# HappyAbsSyn
happyReduction_94
happyReduction_94 :: HappyAbsSyn
happyReduction_94  =  Maybe (CmmParse ()) -> HappyAbsSyn
happyIn35
		 (Maybe (CmmParse ())
forall k1. Maybe k1
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  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 4# 32# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_96
happyReduction_96 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_96 (happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { happy_var_2 :: Located CmmToken
happy_var_2 -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_3 of { (HappyWrap15 happy_var_3 :: CmmParse ()
happy_var_3) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { happy_var_4 :: 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 5# 33# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_97
happyReduction_97 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_97 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = Maybe Bool -> HappyAbsSyn
happyIn37
		 (Bool -> Maybe Bool
forall k1. k1 -> Maybe k1
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 5# 33# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_98
happyReduction_98 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_98 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = Maybe Bool -> HappyAbsSyn
happyIn37
		 (Bool -> Maybe Bool
forall k1. k1 -> Maybe k1
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  33# HappyAbsSyn
happyReduction_99
happyReduction_99 :: HappyAbsSyn
happyReduction_99  =  Maybe Bool -> HappyAbsSyn
happyIn37
		 (Maybe Bool
forall k1. Maybe k1
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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_100
happyReduction_100 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_100 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_101
happyReduction_101 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_101 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_102
happyReduction_102 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_102 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_103
happyReduction_103 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_103 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_104
happyReduction_104 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_104 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_105
happyReduction_105 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_105 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_106
happyReduction_106 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_106 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_107
happyReduction_107 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_107 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_108
happyReduction_108 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_108 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_109
happyReduction_109 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_109 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_110
happyReduction_110 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_110 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_111
happyReduction_111 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_111 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_112
happyReduction_112 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_112 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_113
happyReduction_113 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_113 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_114
happyReduction_114 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_114 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_115
happyReduction_115 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_115 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_116
happyReduction_116 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_116 happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 happy_var_2 :: 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  34# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_117
happyReduction_117 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_117 happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 happy_var_2 :: 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 5# 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 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L _ (CmmT_Name        happy_var_3 :: FastString
happy_var_3)) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_5 of { (HappyWrap39 happy_var_5 :: 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]) })}}})
	) (\r :: 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  34# HappyAbsSyn -> HappyAbsSyn
happyReduction_119
happyReduction_119 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_119 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 happy_var_1 :: 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  35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_120
happyReduction_120 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_120 happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_Int         happy_var_1 :: Integer
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_2 of { (HappyWrap40 happy_var_2 :: 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  35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_121
happyReduction_121 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_121 happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_Float       happy_var_1 :: Rational
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_2 of { (HappyWrap40 happy_var_2 :: 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  35# HappyAbsSyn -> HappyAbsSyn
happyReduction_122
happyReduction_122 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_122 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_String      happy_var_1 :: [Char]
happy_var_1)) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 (do CmmLit
s <- FCode CmmLit -> CmmParse CmmLit
forall a. FCode a -> CmmParse a
code ([Char] -> FCode CmmLit
newStringCLit [Char]
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  35# HappyAbsSyn -> HappyAbsSyn
happyReduction_123
happyReduction_123 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_123 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
happy_x_1 of { (HappyWrap46 happy_var_1 :: 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 4# 35# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_124
happyReduction_124 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_124 (happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
happy_x_1 of { (HappyWrap56 happy_var_1 :: CmmType
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 happy_var_3 :: 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 5# 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 (happy_x_5 :: HappyAbsSyn
happy_x_5 `HappyStk`
	happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 _ (CmmT_Name        happy_var_2 :: FastString
happy_var_2)) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_4 of { (HappyWrap44 happy_var_4 :: [CmmParse CmmExpr]
happy_var_4) -> 
	( FastString -> [CmmParse CmmExpr] -> PD (CmmParse CmmExpr)
exprOp FastString
happy_var_2 [CmmParse CmmExpr]
happy_var_4)}})
	) (\r :: 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  35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p p. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_126
happyReduction_126 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_126 happy_x_3 :: p
happy_x_3
	happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_2 of { (HappyWrap38 happy_var_2 :: 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 0# 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) tk :: 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
$ DynFlags -> CmmType
bWord DynFlags
dflags))
	) (\r :: 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  36# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_128
happyReduction_128 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_128 happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
happy_x_2 of { (HappyWrap56 happy_var_2 :: 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  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  37# HappyAbsSyn -> HappyAbsSyn
happyReduction_130
happyReduction_130 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_130 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap42
happyOut42 HappyAbsSyn
happy_x_1 of { (HappyWrap42 happy_var_1 :: [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  38# HappyAbsSyn -> HappyAbsSyn
happyReduction_131
happyReduction_131 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_131 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap43
happyOut43 HappyAbsSyn
happy_x_1 of { (HappyWrap43 happy_var_1 :: 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  38# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_132
happyReduction_132 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_132 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap43
happyOut43 HappyAbsSyn
happy_x_1 of { (HappyWrap43 happy_var_1 :: CmmParse (CmmExpr, ForeignHint)
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap42
happyOut42 HappyAbsSyn
happy_x_3 of { (HappyWrap42 happy_var_3 :: [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 k1. k1 -> [k1] -> [k1]
: [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  39# HappyAbsSyn -> HappyAbsSyn
happyReduction_133
happyReduction_133 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_133 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: 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 2# 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 (happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L _ (CmmT_String      happy_var_2 :: [Char]
happy_var_2)) -> 
	( do ForeignHint
h <- [Char] -> PD ForeignHint
parseCmmHint [Char]
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))}})
	) (\r :: 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  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  40# HappyAbsSyn -> HappyAbsSyn
happyReduction_136
happyReduction_136 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_136 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap45
happyOut45 HappyAbsSyn
happy_x_1 of { (HappyWrap45 happy_var_1 :: [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  41# HappyAbsSyn -> HappyAbsSyn
happyReduction_137
happyReduction_137 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_137 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: 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  41# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_138
happyReduction_138 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_138 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_1 of { (HappyWrap38 happy_var_1 :: CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap45
happyOut45 HappyAbsSyn
happy_x_3 of { (HappyWrap45 happy_var_3 :: [CmmParse CmmExpr]
happy_var_3) -> 
	[CmmParse CmmExpr] -> HappyAbsSyn
happyIn45
		 (CmmParse CmmExpr
happy_var_1 CmmParse CmmExpr -> [CmmParse CmmExpr] -> [CmmParse CmmExpr]
forall k1. k1 -> [k1] -> [k1]
: [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  42# HappyAbsSyn -> HappyAbsSyn
happyReduction_139
happyReduction_139 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_139 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_Name        happy_var_1 :: 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  42# HappyAbsSyn -> HappyAbsSyn
happyReduction_140
happyReduction_140 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_140 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_GlobalReg   happy_var_1 :: 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  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 4# 43# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_142
happyReduction_142 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_142 (happy_x_4 :: HappyAbsSyn
happy_x_4 `HappyStk`
	happy_x_3 :: HappyAbsSyn
happy_x_3 `HappyStk`
	happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap48
happyOut48 HappyAbsSyn
happy_x_2 of { (HappyWrap48 happy_var_2 :: [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  44# HappyAbsSyn -> HappyAbsSyn
happyReduction_143
happyReduction_143 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_143 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap49
happyOut49 HappyAbsSyn
happy_x_1 of { (HappyWrap49 happy_var_1 :: 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  44# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_144
happyReduction_144 :: p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_144 happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap49
happyOut49 HappyAbsSyn
happy_x_1 of { (HappyWrap49 happy_var_1 :: 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  44# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_145
happyReduction_145 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_145 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap49
happyOut49 HappyAbsSyn
happy_x_1 of { (HappyWrap49 happy_var_1 :: CmmParse (LocalReg, ForeignHint)
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap48
happyOut48 HappyAbsSyn
happy_x_3 of { (HappyWrap48 happy_var_3 :: [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 k1. k1 -> [k1] -> [k1]
: [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  45# HappyAbsSyn -> HappyAbsSyn
happyReduction_146
happyReduction_146 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_146 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap50
happyOut50 HappyAbsSyn
happy_x_1 of { (HappyWrap50 happy_var_1 :: 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 2# 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 (happy_x_2 :: HappyAbsSyn
happy_x_2 `HappyStk`
	happy_x_1 :: HappyAbsSyn
happy_x_1 `HappyStk`
	happyRest :: HappyStk HappyAbsSyn
happyRest) tk :: 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 _ (CmmT_String      happy_var_1 :: [Char]
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap50
happyOut50 HappyAbsSyn
happy_x_2 of { (HappyWrap50 happy_var_2 :: CmmParse LocalReg
happy_var_2) -> 
	( do ForeignHint
h <- [Char] -> PD ForeignHint
parseCmmHint [Char]
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))}})
	) (\r :: 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  46# HappyAbsSyn -> HappyAbsSyn
happyReduction_148
happyReduction_148 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_148 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_Name        happy_var_1 :: 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 r :: LocalReg
r) -> LocalReg
r
                                        other :: CmmExpr
other -> [Char] -> SDoc -> LocalReg
forall a. HasCallStack => [Char] -> SDoc -> a
pprPanic "CmmParse:" (FastString -> SDoc
ftext FastString
happy_var_1 SDoc -> SDoc -> SDoc
<> [Char] -> SDoc
text " 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  47# HappyAbsSyn -> HappyAbsSyn
happyReduction_149
happyReduction_149 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_149 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_Name        happy_var_1 :: 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 r :: CmmReg
r -> CmmReg
r
                                        other :: CmmExpr
other -> [Char] -> SDoc -> CmmReg
forall a. HasCallStack => [Char] -> SDoc -> a
pprPanic "CmmParse:" (FastString -> SDoc
ftext FastString
happy_var_1 SDoc -> SDoc -> SDoc
<> [Char] -> SDoc
text " 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  47# HappyAbsSyn -> HappyAbsSyn
happyReduction_150
happyReduction_150 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_150 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L _ (CmmT_GlobalReg   happy_var_1 :: 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  48# HappyAbsSyn
happyReduction_151
happyReduction_151 :: HappyAbsSyn
happyReduction_151  =  Maybe [CmmParse LocalReg] -> HappyAbsSyn
happyIn52
		 (Maybe [CmmParse LocalReg]
forall k1. Maybe k1
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  48# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p p. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_152
happyReduction_152 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_152 happy_x_3 :: p
happy_x_3
	happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap53
happyOut53 HappyAbsSyn
happy_x_2 of { (HappyWrap53 happy_var_2 :: [CmmParse LocalReg]
happy_var_2) -> 
	Maybe [CmmParse LocalReg] -> HappyAbsSyn
happyIn52
		 ([CmmParse LocalReg] -> Maybe [CmmParse LocalReg]
forall k1. k1 -> Maybe k1
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  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  49# HappyAbsSyn -> HappyAbsSyn
happyReduction_154
happyReduction_154 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_154 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap54
happyOut54 HappyAbsSyn
happy_x_1 of { (HappyWrap54 happy_var_1 :: [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  50# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_155
happyReduction_155 :: p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_155 happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap55
happyOut55 HappyAbsSyn
happy_x_1 of { (HappyWrap55 happy_var_1 :: 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  50# HappyAbsSyn -> HappyAbsSyn
happyReduction_156
happyReduction_156 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_156 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap55
happyOut55 HappyAbsSyn
happy_x_1 of { (HappyWrap55 happy_var_1 :: 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  50# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall p. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_157
happyReduction_157 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_157 happy_x_3 :: HappyAbsSyn
happy_x_3
	happy_x_2 :: p
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap55
happyOut55 HappyAbsSyn
happy_x_1 of { (HappyWrap55 happy_var_1 :: CmmParse LocalReg
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap54
happyOut54 HappyAbsSyn
happy_x_3 of { (HappyWrap54 happy_var_3 :: [CmmParse LocalReg]
happy_var_3) -> 
	[CmmParse LocalReg] -> HappyAbsSyn
happyIn54
		 (CmmParse LocalReg
happy_var_1 CmmParse LocalReg -> [CmmParse LocalReg] -> [CmmParse LocalReg]
forall k1. k1 -> [k1] -> [k1]
: [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  51# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_158
happyReduction_158 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_158 happy_x_2 :: HappyAbsSyn
happy_x_2
	happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
happy_x_1 of { (HappyWrap56 happy_var_1 :: CmmType
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L _ (CmmT_Name        happy_var_2 :: 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  52# HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn
happyReduction_159
happyReduction_159 :: p -> HappyAbsSyn
happyReduction_159 happy_x_1 :: 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  52# HappyAbsSyn -> HappyAbsSyn
happyReduction_160
happyReduction_160 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_160 happy_x_1 :: HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap57
happyOut57 HappyAbsSyn
happy_x_1 of { (HappyWrap57 happy_var_1 :: 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  53# HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn
happyReduction_161
happyReduction_161 :: p -> HappyAbsSyn
happyReduction_161 happy_x_1 :: 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  53# HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn
happyReduction_162
happyReduction_162 :: p -> HappyAbsSyn
happyReduction_162 happy_x_1 :: 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  53# HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn
happyReduction_163
happyReduction_163 :: p -> HappyAbsSyn
happyReduction_163 happy_x_1 :: 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  53# HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn
happyReduction_164
happyReduction_164 :: p -> HappyAbsSyn
happyReduction_164 happy_x_1 :: 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  53# HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn
happyReduction_165
happyReduction_165 :: p -> HappyAbsSyn
happyReduction_165 happy_x_1 :: 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  53# HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn
happyReduction_166
happyReduction_166 :: p -> HappyAbsSyn
happyReduction_166 happy_x_1 :: 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  53# HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn
happyReduction_167
happyReduction_167 :: p -> HappyAbsSyn
happyReduction_167 happy_x_1 :: 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  53# HappyAbsSyn -> HappyAbsSyn
forall p. p -> HappyAbsSyn
happyReduction_168
happyReduction_168 :: p -> HappyAbsSyn
happyReduction_168 happy_x_1 :: 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 1# 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 (happy_x_1 :: a
happy_x_1 `HappyStk`
	happyRest :: HappyStk a
happyRest) tk :: 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
$ DynFlags -> CmmType
gcWord DynFlags
dflags))
	) (\r :: 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 action :: Int#
action sts :: Happy_IntList
sts stk :: HappyStk HappyAbsSyn
stk
	= (Located CmmToken -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a. (Located CmmToken -> PD a) -> PD a
cmmlex(\tk :: Located CmmToken
tk -> 
	let cont :: Int# -> PD HappyAbsSyn
cont i :: 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 _ CmmT_EOF -> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyDoAction 77# Located CmmToken
tk Int#
action Happy_IntList
sts HappyStk HappyAbsSyn
stk;
	L _ (CmmT_SpecChar ':') -> Int# -> PD HappyAbsSyn
cont 1#;
	L _ (CmmT_SpecChar ';') -> Int# -> PD HappyAbsSyn
cont 2#;
	L _ (CmmT_SpecChar '{') -> Int# -> PD HappyAbsSyn
cont 3#;
	L _ (CmmT_SpecChar '}') -> Int# -> PD HappyAbsSyn
cont 4#;
	L _ (CmmT_SpecChar '[') -> Int# -> PD HappyAbsSyn
cont 5#;
	L _ (CmmT_SpecChar ']') -> Int# -> PD HappyAbsSyn
cont 6#;
	L _ (CmmT_SpecChar '(') -> Int# -> PD HappyAbsSyn
cont 7#;
	L _ (CmmT_SpecChar ')') -> Int# -> PD HappyAbsSyn
cont 8#;
	L _ (CmmT_SpecChar '=') -> Int# -> PD HappyAbsSyn
cont 9#;
	L _ (CmmT_SpecChar '`') -> Int# -> PD HappyAbsSyn
cont 10#;
	L _ (CmmT_SpecChar '~') -> Int# -> PD HappyAbsSyn
cont 11#;
	L _ (CmmT_SpecChar '/') -> Int# -> PD HappyAbsSyn
cont 12#;
	L _ (CmmT_SpecChar '*') -> Int# -> PD HappyAbsSyn
cont 13#;
	L _ (CmmT_SpecChar '%') -> Int# -> PD HappyAbsSyn
cont 14#;
	L _ (CmmT_SpecChar '-') -> Int# -> PD HappyAbsSyn
cont 15#;
	L _ (CmmT_SpecChar '+') -> Int# -> PD HappyAbsSyn
cont 16#;
	L _ (CmmT_SpecChar '&') -> Int# -> PD HappyAbsSyn
cont 17#;
	L _ (CmmT_SpecChar '^') -> Int# -> PD HappyAbsSyn
cont 18#;
	L _ (CmmT_SpecChar '|') -> Int# -> PD HappyAbsSyn
cont 19#;
	L _ (CmmT_SpecChar '>') -> Int# -> PD HappyAbsSyn
cont 20#;
	L _ (CmmT_SpecChar '<') -> Int# -> PD HappyAbsSyn
cont 21#;
	L _ (CmmT_SpecChar ',') -> Int# -> PD HappyAbsSyn
cont 22#;
	L _ (CmmT_SpecChar '!') -> Int# -> PD HappyAbsSyn
cont 23#;
	L _ (CmmToken
CmmT_DotDot) -> Int# -> PD HappyAbsSyn
cont 24#;
	L _ (CmmToken
CmmT_DoubleColon) -> Int# -> PD HappyAbsSyn
cont 25#;
	L _ (CmmToken
CmmT_Shr) -> Int# -> PD HappyAbsSyn
cont 26#;
	L _ (CmmToken
CmmT_Shl) -> Int# -> PD HappyAbsSyn
cont 27#;
	L _ (CmmToken
CmmT_Ge) -> Int# -> PD HappyAbsSyn
cont 28#;
	L _ (CmmToken
CmmT_Le) -> Int# -> PD HappyAbsSyn
cont 29#;
	L _ (CmmToken
CmmT_Eq) -> Int# -> PD HappyAbsSyn
cont 30#;
	L _ (CmmToken
CmmT_Ne) -> Int# -> PD HappyAbsSyn
cont 31#;
	L _ (CmmToken
CmmT_BoolAnd) -> Int# -> PD HappyAbsSyn
cont 32#;
	L _ (CmmToken
CmmT_BoolOr) -> Int# -> PD HappyAbsSyn
cont 33#;
	L _ (CmmToken
CmmT_True ) -> Int# -> PD HappyAbsSyn
cont 34#;
	L _ (CmmToken
CmmT_False) -> Int# -> PD HappyAbsSyn
cont 35#;
	L _ (CmmToken
CmmT_likely) -> Int# -> PD HappyAbsSyn
cont 36#;
	L _ (CmmToken
CmmT_CLOSURE) -> Int# -> PD HappyAbsSyn
cont 37#;
	L _ (CmmToken
CmmT_INFO_TABLE) -> Int# -> PD HappyAbsSyn
cont 38#;
	L _ (CmmToken
CmmT_INFO_TABLE_RET) -> Int# -> PD HappyAbsSyn
cont 39#;
	L _ (CmmToken
CmmT_INFO_TABLE_FUN) -> Int# -> PD HappyAbsSyn
cont 40#;
	L _ (CmmToken
CmmT_INFO_TABLE_CONSTR) -> Int# -> PD HappyAbsSyn
cont 41#;
	L _ (CmmToken
CmmT_INFO_TABLE_SELECTOR) -> Int# -> PD HappyAbsSyn
cont 42#;
	L _ (CmmToken
CmmT_else) -> Int# -> PD HappyAbsSyn
cont 43#;
	L _ (CmmToken
CmmT_export) -> Int# -> PD HappyAbsSyn
cont 44#;
	L _ (CmmToken
CmmT_section) -> Int# -> PD HappyAbsSyn
cont 45#;
	L _ (CmmToken
CmmT_goto) -> Int# -> PD HappyAbsSyn
cont 46#;
	L _ (CmmToken
CmmT_if) -> Int# -> PD HappyAbsSyn
cont 47#;
	L _ (CmmToken
CmmT_call) -> Int# -> PD HappyAbsSyn
cont 48#;
	L _ (CmmToken
CmmT_jump) -> Int# -> PD HappyAbsSyn
cont 49#;
	L _ (CmmToken
CmmT_foreign) -> Int# -> PD HappyAbsSyn
cont 50#;
	L _ (CmmToken
CmmT_never) -> Int# -> PD HappyAbsSyn
cont 51#;
	L _ (CmmToken
CmmT_prim) -> Int# -> PD HappyAbsSyn
cont 52#;
	L _ (CmmToken
CmmT_reserve) -> Int# -> PD HappyAbsSyn
cont 53#;
	L _ (CmmToken
CmmT_return) -> Int# -> PD HappyAbsSyn
cont 54#;
	L _ (CmmToken
CmmT_returns) -> Int# -> PD HappyAbsSyn
cont 55#;
	L _ (CmmToken
CmmT_import) -> Int# -> PD HappyAbsSyn
cont 56#;
	L _ (CmmToken
CmmT_switch) -> Int# -> PD HappyAbsSyn
cont 57#;
	L _ (CmmToken
CmmT_case) -> Int# -> PD HappyAbsSyn
cont 58#;
	L _ (CmmToken
CmmT_default) -> Int# -> PD HappyAbsSyn
cont 59#;
	L _ (CmmToken
CmmT_push) -> Int# -> PD HappyAbsSyn
cont 60#;
	L _ (CmmToken
CmmT_unwind) -> Int# -> PD HappyAbsSyn
cont 61#;
	L _ (CmmToken
CmmT_bits8) -> Int# -> PD HappyAbsSyn
cont 62#;
	L _ (CmmToken
CmmT_bits16) -> Int# -> PD HappyAbsSyn
cont 63#;
	L _ (CmmToken
CmmT_bits32) -> Int# -> PD HappyAbsSyn
cont 64#;
	L _ (CmmToken
CmmT_bits64) -> Int# -> PD HappyAbsSyn
cont 65#;
	L _ (CmmToken
CmmT_bits128) -> Int# -> PD HappyAbsSyn
cont 66#;
	L _ (CmmToken
CmmT_bits256) -> Int# -> PD HappyAbsSyn
cont 67#;
	L _ (CmmToken
CmmT_bits512) -> Int# -> PD HappyAbsSyn
cont 68#;
	L _ (CmmToken
CmmT_float32) -> Int# -> PD HappyAbsSyn
cont 69#;
	L _ (CmmToken
CmmT_float64) -> Int# -> PD HappyAbsSyn
cont 70#;
	L _ (CmmToken
CmmT_gcptr) -> Int# -> PD HappyAbsSyn
cont 71#;
	L _ (CmmT_GlobalReg   happy_dollar_dollar :: GlobalReg
happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
cont 72#;
	L _ (CmmT_Name        happy_dollar_dollar :: FastString
happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
cont 73#;
	L _ (CmmT_String      happy_dollar_dollar :: [Char]
happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
cont 74#;
	L _ (CmmT_Int         happy_dollar_dollar :: Integer
happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
cont 75#;
	L _ (CmmT_Float       happy_dollar_dollar :: Rational
happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
cont 76#;
	_ -> (Located CmmToken, [[Char]]) -> PD HappyAbsSyn
forall a. (Located CmmToken, [[Char]]) -> PD a
happyError' (Located CmmToken
tk, [])
	})

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

happyThen :: () => PD a -> (a -> PD b) -> PD b
happyThen :: 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 :: 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 :: 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 :: a -> PD a
happyReturn1 = a -> PD a
forall a. a -> PD a
happyReturn
happyError' :: () => ((Located CmmToken), [String]) -> PD a
happyError' :: (Located CmmToken, [[Char]]) -> PD a
happyError' tk :: (Located CmmToken, [[Char]])
tk = (\(tokens :: Located CmmToken
tokens, explist :: [[Char]]
explist) -> PD a
forall a. PD a
happyError) (Located CmmToken, [[Char]])
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 0#) (\x :: HappyAbsSyn
x -> CmmParse () -> PD (CmmParse ())
forall a. a -> PD a
happyReturn (let {(HappyWrap4 x' :: 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 :: [Char] -> SectionType
section "text"      = SectionType
Text
section "data"      = SectionType
Data
section "rodata"    = SectionType
ReadOnlyData
section "relrodata" = SectionType
RelocatableReadOnlyData
section "bss"       = SectionType
UninitialisedData
section s :: [Char]
s           = [Char] -> SectionType
OtherSection [Char]
s

mkString :: String -> CmmStatic
mkString :: [Char] -> CmmStatic
mkString s :: [Char]
s = ConstrDescription -> CmmStatic
CmmString ((Char -> Word8) -> [Char] -> ConstrDescription
forall a b. (a -> b) -> [a] -> [b]
map (Int -> Word8
forall a b. (Integral a, Num b) => a -> b
fromIntegral(Int -> Word8) -> (Char -> Int) -> Char -> Word8
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Char -> Int
ord) [Char]
s)

-- |
-- Given an info table, decide what the entry convention for the proc
-- is.  That is, for an INFO_TABLE_RET we want the return convention,
-- otherwise it is a NativeNodeCall.
--
infoConv :: Maybe CmmInfoTable -> Convention
infoConv :: Maybe CmmInfoTable -> Convention
infoConv Nothing = Convention
NativeNodeCall
infoConv (Just info :: CmmInfoTable
info)
  | SMRep -> Bool
isStackRep (CmmInfoTable -> SMRep
cit_rep CmmInfoTable
info) = Convention
NativeReturn
  | Bool
otherwise                 = Convention
NativeNodeCall

-- 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 fn :: Width -> MachOp
fn args :: [CmmParse CmmExpr]
args = do
  DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
  [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 (DynFlags -> CmmExpr -> CmmType
cmmExprType DynFlags
dflags ([CmmExpr] -> CmmExpr
forall a. [a] -> a
head [CmmExpr]
arg_exprs)))) [CmmExpr]
arg_exprs)

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

nameToMachOp :: FastString -> PD (Width -> MachOp)
nameToMachOp :: FastString -> PD (Width -> MachOp)
nameToMachOp name :: FastString
name =
  case UniqFM (Width -> MachOp) -> FastString -> Maybe (Width -> MachOp)
forall key elt. Uniquable key => UniqFM elt -> key -> Maybe elt
lookupUFM UniqFM (Width -> MachOp)
machOps FastString
name of
        Nothing -> [Char] -> PD (Width -> MachOp)
forall (m :: * -> *) a. MonadFail m => [Char] -> m a
fail ("unknown primitive " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ FastString -> [Char]
unpackFS FastString
name)
        Just m :: 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 name :: FastString
name args_code :: [CmmParse CmmExpr]
args_code = do
  DynFlags
dflags <- PD DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
  case UniqFM ([CmmExpr] -> CmmExpr)
-> FastString -> Maybe ([CmmExpr] -> CmmExpr)
forall key elt. Uniquable key => UniqFM elt -> key -> Maybe elt
lookupUFM (DynFlags -> UniqFM ([CmmExpr] -> CmmExpr)
exprMacros DynFlags
dflags) FastString
name of
     Just f :: [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)
     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 ([CmmExpr] -> CmmExpr)
exprMacros :: DynFlags -> UniqFM ([CmmExpr] -> CmmExpr)
exprMacros dflags :: DynFlags
dflags = [(FastString, [CmmExpr] -> CmmExpr)]
-> UniqFM ([CmmExpr] -> CmmExpr)
forall key elt. Uniquable key => [(key, elt)] -> UniqFM elt
listToUFM [
  ( [Char] -> FastString
fsLit "ENTRY_CODE",   \ [x :: CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
entryCode DynFlags
dflags CmmExpr
x ),
  ( [Char] -> FastString
fsLit "INFO_PTR",     \ [x :: CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
closureInfoPtr DynFlags
dflags CmmExpr
x ),
  ( [Char] -> FastString
fsLit "STD_INFO",     \ [x :: CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
infoTable DynFlags
dflags CmmExpr
x ),
  ( [Char] -> FastString
fsLit "FUN_INFO",     \ [x :: CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
funInfoTable DynFlags
dflags CmmExpr
x ),
  ( [Char] -> FastString
fsLit "GET_ENTRY",    \ [x :: CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
entryCode DynFlags
dflags (DynFlags -> CmmExpr -> CmmExpr
closureInfoPtr DynFlags
dflags CmmExpr
x) ),
  ( [Char] -> FastString
fsLit "GET_STD_INFO", \ [x :: CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
infoTable DynFlags
dflags (DynFlags -> CmmExpr -> CmmExpr
closureInfoPtr DynFlags
dflags CmmExpr
x) ),
  ( [Char] -> FastString
fsLit "GET_FUN_INFO", \ [x :: CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
funInfoTable DynFlags
dflags (DynFlags -> CmmExpr -> CmmExpr
closureInfoPtr DynFlags
dflags CmmExpr
x) ),
  ( [Char] -> FastString
fsLit "INFO_TYPE",    \ [x :: CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
infoTableClosureType DynFlags
dflags CmmExpr
x ),
  ( [Char] -> FastString
fsLit "INFO_PTRS",    \ [x :: CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
infoTablePtrs DynFlags
dflags CmmExpr
x ),
  ( [Char] -> FastString
fsLit "INFO_NPTRS",   \ [x :: CmmExpr
x] -> DynFlags -> CmmExpr -> CmmExpr
infoTableNonPtrs DynFlags
dflags CmmExpr
x )
  ]

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

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

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

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

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

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

        ( "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  ),
        ( "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 ),
        ( "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 ),
        ( "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 ),

        ( "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 ),
        ( "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 ),
        ( "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 ),

        ( "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 ),
        ( "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 ),
        ( "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 ),

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

        ("prefetch0", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Int -> CallishMachOp
MO_Prefetch_Data 0),
        ("prefetch1", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Int -> CallishMachOp
MO_Prefetch_Data 1),
        ("prefetch2", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Int -> CallishMachOp
MO_Prefetch_Data 2),
        ("prefetch3", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Int -> CallishMachOp
MO_Prefetch_Data 3),

        ( "popcnt8",  (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_PopCnt Width
W8  ),
        ( "popcnt16", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_PopCnt Width
W16 ),
        ( "popcnt32", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_PopCnt Width
W32 ),
        ( "popcnt64", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_PopCnt Width
W64 ),

        ( "pdep8",  (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_Pdep Width
W8  ),
        ( "pdep16", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_Pdep Width
W16 ),
        ( "pdep32", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_Pdep Width
W32 ),
        ( "pdep64", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_Pdep Width
W64 ),

        ( "pext8",  (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_Pext Width
W8  ),
        ( "pext16", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_Pext Width
W16 ),
        ( "pext32", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_Pext Width
W32 ),
        ( "pext64", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_Pext Width
W64 ),

        ( "cmpxchg8",  (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_Cmpxchg Width
W8  ),
        ( "cmpxchg16", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_Cmpxchg Width
W16 ),
        ( "cmpxchg32", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_Cmpxchg Width
W32 ),
        ( "cmpxchg64", (,) (CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> CallishMachOp -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
forall a b. (a -> b) -> a -> b
$ Width -> CallishMachOp
MO_Cmpxchg 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 :: (Int -> CallishMachOp) -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
memcpyLikeTweakArgs op :: Int -> CallishMachOp
op [] = [Char] -> (CallishMachOp, [CmmExpr])
forall a. [Char] -> a
pgmError "memcpy-like function requires at least one argument"
    memcpyLikeTweakArgs op :: Int -> CallishMachOp
op args :: [CmmExpr]
args@(_:_) =
        (Int -> CallishMachOp
op Int
align, [CmmExpr]
args')
      where
        args' :: [CmmExpr]
args' = [CmmExpr] -> [CmmExpr]
forall a. [a] -> [a]
init [CmmExpr]
args
        align :: Int
align = case [CmmExpr] -> CmmExpr
forall a. [a] -> a
last [CmmExpr]
args of
          CmmLit (CmmInt alignInteger :: Integer
alignInteger _) -> Integer -> Int
forall a. Num a => Integer -> a
fromInteger Integer
alignInteger
          e :: CmmExpr
e -> [Char] -> SDoc -> Int
forall a. [Char] -> SDoc -> a
pprPgmError "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 :: [Char] -> PD Safety
parseSafety "safe"   = Safety -> PD Safety
forall (m :: * -> *) a. Monad m => a -> m a
return Safety
PlaySafe
parseSafety "unsafe" = Safety -> PD Safety
forall (m :: * -> *) a. Monad m => a -> m a
return Safety
PlayRisky
parseSafety "interruptible" = Safety -> PD Safety
forall (m :: * -> *) a. Monad m => a -> m a
return Safety
PlayInterruptible
parseSafety str :: [Char]
str      = [Char] -> PD Safety
forall (m :: * -> *) a. MonadFail m => [Char] -> m a
fail ("unrecognised safety: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
str)

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

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

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

happyError :: PD a
happyError :: 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
$ \_ s :: 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 fun :: FastString
fun args_code :: [CmmParse CmmExpr]
args_code = do
  case UniqFM ([CmmExpr] -> FCode ())
-> FastString -> Maybe ([CmmExpr] -> FCode ())
forall key elt. Uniquable key => UniqFM elt -> key -> Maybe elt
lookupUFM UniqFM ([CmmExpr] -> FCode ())
stmtMacros FastString
fun of
    Nothing -> [Char] -> PD (CmmParse ())
forall (m :: * -> *) a. MonadFail m => [Char] -> m a
fail ("unknown macro: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ FastString -> [Char]
unpackFS FastString
fun)
    Just fcode :: [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 ([CmmExpr] -> FCode ())
stmtMacros :: UniqFM ([CmmExpr] -> FCode ())
stmtMacros = [(FastString, [CmmExpr] -> FCode ())]
-> UniqFM ([CmmExpr] -> FCode ())
forall key elt. Uniquable key => [(key, elt)] -> UniqFM elt
listToUFM [
  ( [Char] -> FastString
fsLit "CCS_ALLOC",             \[words :: CmmExpr
words,ccs :: CmmExpr
ccs]  -> CmmExpr -> CmmExpr -> FCode ()
profAlloc CmmExpr
words CmmExpr
ccs ),
  ( [Char] -> FastString
fsLit "ENTER_CCS_THUNK",       \[e :: CmmExpr
e] -> CmmExpr -> FCode ()
enterCostCentreThunk CmmExpr
e ),

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

  -- completely generic heap and stack checks, for use in high-level cmm.
  ( [Char] -> FastString
fsLit "HP_CHK_GEN",            \[bytes :: CmmExpr
bytes] ->
                                      Maybe CmmExpr -> Maybe CmmExpr -> FCode ()
heapStackCheckGen Maybe CmmExpr
forall k1. Maybe k1
Nothing (CmmExpr -> Maybe CmmExpr
forall k1. k1 -> Maybe k1
Just CmmExpr
bytes) ),
  ( [Char] -> FastString
fsLit "STK_CHK_GEN",           \[] ->
                                      Maybe CmmExpr -> Maybe CmmExpr -> FCode ()
heapStackCheckGen (CmmExpr -> Maybe CmmExpr
forall k1. k1 -> Maybe k1
Just (CmmLit -> CmmExpr
CmmLit CmmLit
CmmHighStackMark)) Maybe CmmExpr
forall k1. Maybe k1
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
  ( [Char] -> FastString
fsLit "STK_CHK_GEN_N",         \[bytes :: CmmExpr
bytes] ->
                                      Maybe CmmExpr -> Maybe CmmExpr -> FCode ()
heapStackCheckGen (CmmExpr -> Maybe CmmExpr
forall k1. k1 -> Maybe k1
Just CmmExpr
bytes) Maybe CmmExpr
forall k1. Maybe k1
Nothing ),

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

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

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

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

emitPushUpdateFrame :: CmmExpr -> CmmExpr -> FCode ()
emitPushUpdateFrame :: CmmExpr -> CmmExpr -> FCode ()
emitPushUpdateFrame sp :: CmmExpr
sp e :: 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 fields :: [CmmParse CmmExpr]
fields body :: 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
  Int
updfr_off <- CmmParse Int
getUpdFrameOff
  let (new_updfr_off :: Int
new_updfr_off, _, g :: CmmAGraph
g) = DynFlags
-> Convention
-> Transfer
-> Area
-> [CmmExpr]
-> Int
-> [CmmExpr]
-> (Int, [GlobalReg], CmmAGraph)
copyOutOflow DynFlags
dflags Convention
NativeReturn Transfer
Ret Area
Old
                                           [] Int
updfr_off [CmmExpr]
exprs
  CmmAGraph -> CmmParse ()
emit CmmAGraph
g
  Int -> CmmParse () -> CmmParse ()
withUpdFrameOff Int
new_updfr_off CmmParse ()
body

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

profilingInfo :: DynFlags -> [Char] -> [Char] -> ProfilingInfo
profilingInfo dflags :: DynFlags
dflags desc_str :: [Char]
desc_str ty_str :: [Char]
ty_str
  = if Bool -> Bool
not (GeneralFlag -> DynFlags -> Bool
gopt GeneralFlag
Opt_SccProfilingOn DynFlags
dflags)
    then ProfilingInfo
NoProfilingInfo
    else ConstrDescription -> ConstrDescription -> ProfilingInfo
ProfilingInfo ([Char] -> ConstrDescription
stringToWord8s [Char]
desc_str)
                       ([Char] -> ConstrDescription
stringToWord8s [Char]
ty_str)

staticClosure :: UnitId -> FastString -> FastString -> [CmmLit] -> CmmParse ()
staticClosure :: UnitId -> FastString -> FastString -> [CmmLit] -> CmmParse ()
staticClosure pkg :: UnitId
pkg cl_label :: FastString
cl_label info :: FastString
info payload :: [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 -> FastString -> CLabel
mkCmmDataLabel UnitId
pkg FastString
cl_label) [CmmLit]
lits

foreignCall
        :: String
        -> [CmmParse (LocalReg, ForeignHint)]
        -> CmmParse CmmExpr
        -> [CmmParse (CmmExpr, ForeignHint)]
        -> Safety
        -> CmmReturnInfo
        -> PD (CmmParse ())
foreignCall :: [Char]
-> [CmmParse (LocalReg, ForeignHint)]
-> CmmParse CmmExpr
-> [CmmParse (CmmExpr, ForeignHint)]
-> Safety
-> CmmReturnInfo
-> PD (CmmParse ())
foreignCall conv_string :: [Char]
conv_string results_code :: [CmmParse (LocalReg, ForeignHint)]
results_code expr_code :: CmmParse CmmExpr
expr_code args_code :: [CmmParse (CmmExpr, ForeignHint)]
args_code safety :: Safety
safety ret :: CmmReturnInfo
ret
  = do  CCallConv
conv <- case [Char]
conv_string of
          "C" -> CCallConv -> PD CCallConv
forall (m :: * -> *) a. Monad m => a -> m a
return CCallConv
CCallConv
          "stdcall" -> CCallConv -> PD CCallConv
forall (m :: * -> *) a. Monad m => a -> m a
return CCallConv
StdCallConv
          _ -> [Char] -> PD CCallConv
forall (m :: * -> *) a. MonadFail m => [Char] -> m a
fail ("unknown calling convention: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
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
                  expr' :: CmmExpr
expr' = DynFlags
-> CCallConv -> CmmExpr -> [(CmmExpr, ForeignHint)] -> CmmExpr
adjCallTarget DynFlags
dflags CCallConv
conv CmmExpr
expr [(CmmExpr, ForeignHint)]
args
                  (arg_exprs :: [CmmExpr]
arg_exprs, arg_hints :: [ForeignHint]
arg_hints) = [(CmmExpr, ForeignHint)] -> ([CmmExpr], [ForeignHint])
forall a b. [(a, b)] -> ([a], [b])
unzip [(CmmExpr, ForeignHint)]
args
                  (res_regs :: [LocalReg]
res_regs,  res_hints :: [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 exprs_code :: [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
  Int
updfr_off <- CmmParse Int
getUpdFrameOff
  CmmAGraph -> CmmParse ()
emit (DynFlags -> [CmmExpr] -> Int -> CmmAGraph
mkReturnSimple DynFlags
dflags [CmmExpr]
exprs Int
updfr_off)

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

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

doJumpWithStack :: CmmParse CmmExpr -> [CmmParse CmmExpr]
                -> [CmmParse CmmExpr] -> CmmParse ()
doJumpWithStack :: CmmParse CmmExpr
-> [CmmParse CmmExpr] -> [CmmParse CmmExpr] -> CmmParse ()
doJumpWithStack expr_code :: CmmParse CmmExpr
expr_code stk_code :: [CmmParse CmmExpr]
stk_code args_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
  Int
updfr_off <- CmmParse Int
getUpdFrameOff
  CmmAGraph -> CmmParse ()
emit (DynFlags
-> Convention
-> CmmExpr
-> [CmmExpr]
-> Int
-> [CmmExpr]
-> CmmAGraph
mkJumpExtra DynFlags
dflags Convention
NativeNodeCall CmmExpr
expr [CmmExpr]
args Int
updfr_off [CmmExpr]
stk_args)

doCall :: CmmParse CmmExpr -> [CmmParse LocalReg] -> [CmmParse CmmExpr]
       -> CmmParse ()
doCall :: CmmParse CmmExpr
-> [CmmParse LocalReg] -> [CmmParse CmmExpr] -> CmmParse ()
doCall expr_code :: CmmParse CmmExpr
expr_code res_code :: [CmmParse LocalReg]
res_code args_code :: [CmmParse CmmExpr]
args_code = do
  DynFlags
dflags <- CmmParse DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
  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
  Int
updfr_off <- CmmParse Int
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]
-> Int
-> [CmmExpr]
-> FCode CmmAGraph
mkCall CmmExpr
expr (Convention
NativeNodeCall,Convention
NativeReturn) [LocalReg]
ress [CmmExpr]
args Int
updfr_off []
  CmmAGraph -> CmmParse ()
emit CmmAGraph
c

adjCallTarget :: DynFlags -> 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 :: DynFlags
-> CCallConv -> CmmExpr -> [(CmmExpr, ForeignHint)] -> CmmExpr
adjCallTarget dflags :: DynFlags
dflags StdCallConv (CmmLit (CmmLabel lbl :: CLabel
lbl)) args :: [(CmmExpr, ForeignHint)]
args
 | Platform -> OS
platformOS (DynFlags -> Platform
targetPlatform DynFlags
dflags) OS -> OS -> Bool
forall a. Eq a => a -> a -> Bool
== OS
OSMinGW32
  = CmmLit -> CmmExpr
CmmLit (CLabel -> CmmLit
CmmLabel (CLabel -> Int -> CLabel
addLabelSize CLabel
lbl ([Int] -> Int
forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
sum (((CmmExpr, ForeignHint) -> Int)
-> [(CmmExpr, ForeignHint)] -> [Int]
forall a b. (a -> b) -> [a] -> [b]
map (CmmExpr, ForeignHint) -> Int
forall b. (CmmExpr, b) -> Int
size [(CmmExpr, ForeignHint)]
args))))
  where size :: (CmmExpr, b) -> Int
size (e :: CmmExpr
e, _) = Int -> Int -> Int
forall a. Ord a => a -> a -> a
max (DynFlags -> Int
wORD_SIZE DynFlags
dflags) (Width -> Int
widthInBytes (CmmType -> Width
typeWidth (DynFlags -> CmmExpr -> CmmType
cmmExprType DynFlags
dflags CmmExpr
e)))
                 -- c.f. CgForeignCall.emitForeignCall
adjCallTarget _ _ expr :: CmmExpr
expr _
  = CmmExpr
expr

primCall
        :: [CmmParse (CmmFormal, ForeignHint)]
        -> FastString
        -> [CmmParse CmmExpr]
        -> PD (CmmParse ())
primCall :: [CmmParse (LocalReg, ForeignHint)]
-> FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
primCall results_code :: [CmmParse (LocalReg, ForeignHint)]
results_code name :: FastString
name args_code :: [CmmParse CmmExpr]
args_code
  = case UniqFM ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> FastString -> Maybe ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
forall key elt. Uniquable key => UniqFM elt -> key -> Maybe elt
lookupUFM UniqFM ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
callishMachOps FastString
name of
        Nothing -> [Char] -> PD (CmmParse ())
forall (m :: * -> *) a. MonadFail m => [Char] -> m a
fail ("unknown primitive " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ FastString -> [Char]
unpackFS FastString
name)
        Just f :: [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 (p :: CallishMachOp
p, args' :: [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 rep :: CmmType
rep addr_code :: CmmParse CmmExpr
addr_code val_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 (DynFlags -> CmmExpr -> CmmType
cmmExprType DynFlags
dflags CmmExpr
val)
           rep_width :: Width
rep_width = CmmType -> Width
typeWidth CmmType
rep
       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 cond :: CmmParse BoolExpr
cond then_part :: CmmParse a
then_part else_part :: CmmParse a
else_part likely :: 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 cond :: CmmParse BoolExpr
cond then_id :: BlockId
then_id likely :: 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 e :: CmmExpr
e) then_id :: BlockId
then_id likely :: 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 op :: MachOp
op args :: [CmmExpr]
args))) then_id :: BlockId
then_id likely :: Maybe Bool
likely
  | Just op' :: 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 e :: BoolExpr
e) then_id :: BlockId
then_id likely :: 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 (e1 :: BoolExpr
e1 `BoolOr` e2 :: BoolExpr
e2) then_id :: BlockId
then_id likely :: 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 (e1 :: BoolExpr
e1 `BoolAnd` e2 :: BoolExpr
e2) then_id :: BlockId
then_id likely :: 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 :: Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote a :: Located a
a b :: Located b
b parse :: CmmParse c
parse = do
  [Char]
name <- CmmParse [Char]
getName
  case SrcSpan -> SrcSpan -> SrcSpan
combineSrcSpans (Located a -> SrcSpan
forall a. HasSrcSpan a => a -> SrcSpan
getLoc Located a
a) (Located b -> SrcSpan
forall a. HasSrcSpan a => a -> SrcSpan
getLoc Located b
b) of
    RealSrcSpan span :: RealSrcSpan
span -> FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code (CmmTickish -> FCode ()
emitTick (RealSrcSpan -> [Char] -> CmmTickish
forall id. RealSrcSpan -> [Char] -> Tickish id
SourceNote RealSrcSpan
span [Char]
name)) CmmParse () -> CmmParse c -> CmmParse c
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> CmmParse c
parse
    _other :: 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 mb_range :: Maybe (Integer, Integer)
mb_range scrut :: CmmParse CmmExpr
scrut arms :: [([Integer], Either BlockId (CmmParse ()))]
arms deflt :: Maybe (CmmParse ())
deflt
   = do
        -- Compile code for the default branch
        Maybe BlockId
dflt_entry <- 
                case Maybe (CmmParse ())
deflt of
                  Nothing -> Maybe BlockId -> CmmParse (Maybe BlockId)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe BlockId
forall k1. Maybe k1
Nothing
                  Just e :: 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 k1. k1 -> Maybe k1
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 range :: (Integer, Integer)
range = (Integer, Integer)
-> Maybe (Integer, Integer) -> (Integer, Integer)
forall a. a -> Maybe a -> a
fromMaybe (0, DynFlags -> Integer
tARGET_MAX_WORD DynFlags
dflags) 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 (ints :: [Integer]
ints,Left blockid :: 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 (ints :: [Integer]
ints,Right code :: 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 p :: CmmParse ()
p = do
  (_,ag :: 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 dflags :: DynFlags
dflags = [(FastString, Named)] -> Env
forall key elt. Uniquable key => [(key, elt)] -> UniqFM elt
listToUFM [
  ( [Char] -> FastString
fsLit "SIZEOF_StgHeader",
    CmmExpr -> Named
VarN (CmmLit -> CmmExpr
CmmLit (Integer -> Width -> CmmLit
CmmInt (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (DynFlags -> Int
fixedHdrSize DynFlags
dflags)) (DynFlags -> Width
wordWidth DynFlags
dflags)) )),
  ( [Char] -> FastString
fsLit "SIZEOF_StgInfoTable",
    CmmExpr -> Named
VarN (CmmLit -> CmmExpr
CmmLit (Integer -> Width -> CmmLit
CmmInt (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (DynFlags -> Int
stdInfoTableSizeB DynFlags
dflags)) (DynFlags -> Width
wordWidth DynFlags
dflags)) ))
  ]

parseCmmFile :: DynFlags -> FilePath -> IO (Messages, Maybe CmmGroup)
parseCmmFile :: DynFlags -> [Char] -> IO (Messages, Maybe CmmGroup)
parseCmmFile dflags :: DynFlags
dflags filename :: [Char]
filename = IO DynFlags
-> SDoc
-> ((Messages, Maybe CmmGroup) -> ())
-> IO (Messages, Maybe CmmGroup)
-> IO (Messages, Maybe CmmGroup)
forall (m :: * -> *) a.
MonadIO m =>
m DynFlags -> SDoc -> (a -> ()) -> m a -> m a
withTiming (DynFlags -> IO DynFlags
forall (f :: * -> *) a. Applicative f => a -> f a
pure DynFlags
dflags) ([Char] -> SDoc
text "ParseCmm"SDoc -> SDoc -> SDoc
<+>SDoc -> SDoc
brackets ([Char] -> SDoc
text [Char]
filename)) (\_ -> ()) (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 <- [Char] -> IO StringBuffer
hGetStringBuffer [Char]
filename
  let
        init_loc :: RealSrcLoc
init_loc = FastString -> Int -> Int -> RealSrcLoc
mkRealSrcLoc ([Char] -> FastString
mkFastString [Char]
filename) 1 1
        init_state :: PState
init_state = (DynFlags -> StringBuffer -> RealSrcLoc -> PState
mkPState DynFlags
dflags StringBuffer
buf RealSrcLoc
init_loc) { lex_state :: [Int]
lex_state = [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 warnFn :: DynFlags -> Messages
warnFn span :: SrcSpan
span err :: SDoc
err -> do
        let msg :: ErrMsg
msg = DynFlags -> SrcSpan -> SDoc -> ErrMsg
mkPlainErrMsg DynFlags
dflags SrcSpan
span SDoc
err
            errMsgs :: (Bag a, Bag ErrMsg)
errMsgs = (Bag a
forall a. Bag a
emptyBag, ErrMsg -> Bag ErrMsg
forall a. a -> Bag a
unitBag ErrMsg
msg)
            warnMsgs :: Messages
warnMsgs = DynFlags -> Messages
warnFn DynFlags
dflags
        (Messages, Maybe CmmGroup) -> IO (Messages, Maybe CmmGroup)
forall (m :: * -> *) a. Monad m => a -> m a
return (Messages -> Messages -> Messages
unionMessages Messages
warnMsgs Messages
forall a. (Bag a, Bag ErrMsg)
errMsgs, Maybe CmmGroup
forall k1. Maybe k1
Nothing)
    POk pst :: PState
pst code :: 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 ()
-> [Char]
-> Env
-> [(FastString, Named)]
-> FCode ([(FastString, Named)], ())
forall a.
CmmParse a
-> [Char]
-> Env
-> [(FastString, Named)]
-> FCode ([(FastString, Named)], a)
unEC CmmParse ()
code "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 ()
            (cmm :: CmmGroup
cmm,_) = 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 k1. Maybe k1
Nothing)
         else (Messages, Maybe CmmGroup) -> IO (Messages, Maybe CmmGroup)
forall (m :: * -> *) a. Monad m => a -> m a
return (Messages
ms, CmmGroup -> Maybe CmmGroup
forall k1. k1 -> Maybe k1
Just CmmGroup
cmm)
  where
        no_module :: a
no_module = [Char] -> a
forall a. [Char] -> a
panic "parseCmmFile: no module"
{-# LINE 1 "templates/GenericTemplate.hs" #-}
{-# LINE 1 "templates/GenericTemplate.hs" #-}
{-# LINE 1 "<built-in>" #-}
{-# LINE 1 "<command-line>" #-}
{-# LINE 10 "<command-line>" #-}
# 1 "/usr/include/stdc-predef.h" 1 3 4

# 17 "/usr/include/stdc-predef.h" 3 4













































{-# LINE 10 "<command-line>" #-}
{-# LINE 1 "/opt/ghc/8.4.4/lib/ghc-8.4.4/include/ghcversion.h" #-}















{-# LINE 10 "<command-line>" #-}
{-# 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
{-# LINE 43 "templates/GenericTemplate.hs" #-}

data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList







{-# LINE 65 "templates/GenericTemplate.hs" #-}

{-# LINE 75 "templates/GenericTemplate.hs" #-}

{-# LINE 84 "templates/GenericTemplate.hs" #-}

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 0#, 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)

{-# LINE 180 "templates/GenericTemplate.hs" #-}

-----------------------------------------------------------------------------
-- 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 (0# 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  0# tk old_st (HappyCons ((action)) (sts)) 
                                                (saved_tok `HappyStk` _ `HappyStk` stk) =
--      trace ("discarding state, depth " ++ show (length stk))  $
        happyDoAction 0# tk action 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.