Require a bang pattern when unlifted types are where/let bound; #3182
[ghc.git] / compiler / cmm / CmmLex.x
index a1aa276..7724565 100644 (file)
 -----------------------------------------------------------------------------
 
 {
+{-# OPTIONS -Wwarn #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+--     http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
+-- for details
+
 module CmmLex (
    CmmToken(..), cmmlex,
   ) where
@@ -29,7 +36,7 @@ import Util
 --import TRACE
 }
 
-$whitechar   = [\ \t\n\r\f\v\xa0]
+$whitechar   = [\ \t\n\r\f\v\xa0] -- \xa0 is Unicode no-break space
 $white_no_nl = $whitechar # \n
 
 $ascdigit  = 0-9
@@ -88,7 +95,8 @@ $white_no_nl+         ;
   "&&"                 { kw CmmT_BoolAnd }
   "||"                 { kw CmmT_BoolOr }
   
-  R@decimal            { global_regN VanillaReg }
+  P@decimal            { global_regN (\n -> VanillaReg n VGcPtr) }
+  R@decimal            { global_regN (\n -> VanillaReg n VNonGcPtr) }
   F@decimal            { global_regN FloatReg }
   D@decimal            { global_regN DoubleReg }
   L@decimal            { global_regN LongReg }
@@ -138,7 +146,10 @@ data CmmToken
   | CmmT_if
   | CmmT_jump
   | CmmT_foreign
+  | CmmT_never
   | CmmT_prim
+  | CmmT_return
+  | CmmT_returns
   | CmmT_import
   | CmmT_switch
   | CmmT_case
@@ -149,6 +160,7 @@ data CmmToken
   | CmmT_bits64
   | CmmT_float32
   | CmmT_float64
+  | CmmT_gcptr
   | CmmT_GlobalReg GlobalReg
   | CmmT_Name     FastString
   | CmmT_String           String
@@ -213,7 +225,10 @@ reservedWordsFM = listToUFM $
        ( "if",                 CmmT_if ),
        ( "jump",               CmmT_jump ),
        ( "foreign",            CmmT_foreign ),
+       ( "never",              CmmT_never ),
        ( "prim",               CmmT_prim ),
+       ( "return",             CmmT_return ),
+       ( "returns",            CmmT_returns ),
        ( "import",             CmmT_import ),
        ( "switch",             CmmT_switch ),
        ( "case",               CmmT_case ),
@@ -223,7 +238,15 @@ reservedWordsFM = listToUFM $
        ( "bits32",             CmmT_bits32 ),
        ( "bits64",             CmmT_bits64 ),
        ( "float32",            CmmT_float32 ),
-       ( "float64",            CmmT_float64 )
+       ( "float64",            CmmT_float64 ),
+-- New forms
+       ( "b8",                 CmmT_bits8 ),
+       ( "b16",                CmmT_bits16 ),
+       ( "b32",                CmmT_bits32 ),
+       ( "b64",                CmmT_bits64 ),
+       ( "f32",                CmmT_float32 ),
+       ( "f64",                CmmT_float64 ),
+       ( "gcptr",              CmmT_gcptr )
        ]
 
 tok_decimal span buf len