getInstrinct2 :: LMString -> LlvmType -> LlvmM ExprData
getInstrinct2 fname fty@(LMFunction funSig) = do

    let fv   = LMGlobalVar fname fty (funcLinkage funSig) Nothing Nothing Constant

    fn <- funLookup fname
    tops <- case fn of
      Just _  ->
        return []
      Nothing -> do
        funInsert fname fty
        un <- getUniqueM
        let lbl = mkAsmTempLabel un
        return [CmmData (Section Data lbl) [([],[fty])]]

    return (fv, nilOL, tops)
getInstrinct2 :: LMString -> LlvmType -> LlvmM ExprData
getInstrinct2 fname fty@(LMFunction funSig) = do

    let fv   = LMGlobalVar fname fty (funcLinkage funSig) Nothing Nothing Constant

    fn <- funLookup fname
    tops <- case fn of
      Just _  ->
        return []
      Nothing -> do
        funInsert fname fty
        un <- getUniqueM
        let lbl = mkAsmTempLabel un
        return [CmmData (Section Data lbl) [([],[fty])]]

    return (fv, nilOL, tops)
getInstrinct2 fname fty@(LMFunction funSig) = do

    let fv   = LMGlobalVar fname fty (funcLinkage funSig) Nothing Nothing Constant

    fn <- funLookup fname
    tops <- case fn of
      Just _  ->
        return []
      Nothing -> do
        funInsert fname fty
        un <- getUniqueM
        let lbl = mkAsmTempLabel un
        return [CmmData (Section Data lbl) [([],[fty])]]

    return (fv, nilOL, tops)