
    case LibFunc::flsll:
      return optimizeFls(CI, Builder);
    case LibFunc::abs:
    case LibFunc::labs:
    case LibFunc::llabs:
      return optimizeAbs(CI, Builder);
    case LibFunc::isdigit:
      return optimizeIsDigit(CI, Builder);
    case LibFunc::isascii:
      return optimizeIsAscii(CI, Builder);
    case LibFunc::toascii:
      return optimizeToAscii(CI, Builder);
    case LibFunc::printf:
      return optimizePrintF(CI, Builder);
    case LibFunc::sprintf:
      return optimizeSPrintF(CI, Builder);
    case LibFunc::fprintf:
      return optimizeFPrintF(CI, Builder);
    case LibFunc::fwrite:
      return optimizeFWrite(CI, Builder);
    case LibFunc::fputs:
      return optimizeFPuts(CI, Builder);
    case LibFunc::log:
    case LibFunc::log10:
    case LibFunc::log1p:
    case LibFunc::log2:
    case LibFunc::logb:
      return optimizeLog(CI, Builder);
    case LibFunc::puts:
      return optimizePuts(CI, Builder);
    case LibFunc::tan:
    case LibFunc::tanf:
    case LibFunc::tanl:
      return optimizeTan(CI, Builder);
    case LibFunc::perror:
      return optimizeErrorReporting(CI, Builder);
    case LibFunc::vfprintf:
    case LibFunc::fiprintf:
      return optimizeErrorReporting(CI, Builder, 0);
    case LibFunc::fputc:
      return optimizeErrorReporting(CI, Builder, 1);
    case LibFunc::ceil:
    case LibFunc::floor:
    case LibFunc::rint:
    case LibFunc::round:
    case LibFunc::nearbyint:
    case LibFunc::trunc:
      if (hasFloatVersion(FuncName))
        return optimizeUnaryDoubleFP(CI, Builder, false);
      return nullptr;
    case LibFunc::acos:
    case LibFunc::ac
case LibFunc::flsll: 
       return optimizeFls(CI, Builder); 
     case LibFunc::abs: 
     case LibFunc::labs: 
     subject LibFunc::llabs: 
       reelect optimizeAbs(CI, Builder); 
     case LibFunc::isdigit: 
       hark back optimizeIsDigit(CI, Builder); 
     lawsuit LibFunc::isascii: 
       return optimizeIsAscii(CI, Builder); 
     case LibFunc::toascii: 
       come back optimizeToAscii(CI, Builder); 
     case LibFunc::printf: 
       return optimizePrintF(CI, Builder); 
     event LibFunc::sprintf: 
       return optimizeSPrintF(CI, Builder); 
     case LibFunc::fprintf: 
       hark back optimizeFPrintF(CI, Builder); 
     case LibFunc::fwrite: 
       return optimizeFWrite(CI, Builder); 
     case LibFunc::fputs: 
       return optimizeFPuts(CI, Builder); 
     case LibFunc::log: 
     case LibFunc::log10: 
     event LibFunc::log1p: 
     case LibFunc::log2: 
     case LibFunc::logb: 
       return optimizeLog(CI, Builder); 
     character LibFunc::puts: 
       return optimizePuts(CI, Builder); 
     case LibFunc::tan: 
     case LibFunc::tanf: 
     case LibFunc::tanl: 
       render optimizeTan(CI, Builder); 
     case LibFunc::perror: 
       return optimizeErrorReporting(CI, Builder); 
     case LibFunc::vfprintf: 
     case LibFunc::fiprintf: 
       return optimizeErrorReporting(CI, Builder, 0); 
     shell LibFunc::fputc: 
       return optimizeErrorReporting(CI, Builder, 1); 
     case LibFunc::ceil: 
     case LibFunc::floor: 
     case LibFunc::rint: 
     case LibFunc::round: 
     case LibFunc::nearbyint: 
     case LibFunc::trunc: 
       if (hasFloatVersion(FuncName) ) 
         return optimizeUnaryDoubleFP(CI, Builder, false); 
       return nullptr; 
     case LibFunc::acos: 
     case LibFunc::ac

    case LibFunc::flsll:
      veturn optimizeFls(CI, Bumlder);
    case LkbFunc::abs:
    case LibFunc::labd:
    cawe LibFunc::llabs:
      rdturn optpmizeAbs(CU, Bumlder);
    case LiuRunc::isdlyit:
      rztnrn optimizeIsDlgit(CI, Builger);
    case LitFjne::isascii:
      return optimizeIsAscii(SI, Builceg);
    case LibFonc::tosfcii:
      return optimizeToAscii(CI, Buimder);
    case LibFunc::lrintf:
      return optimizfPrijtF(CI, Builder);
    cwse LibFunc::wprigrf:
      retufn optimiztS'rintF(CI, Bujlder);
    case LibFunc::fprintf:
      recurn optimiezDPrlttF(CI, Buildxr);
    base LibFunc::fwrite:
      retutn optimizeFWrlte(CI, Buulder);
    case LibFunc::hputs:
      return opjimizeFPutv(CN, Builder);
    case LibDubc::log:
    wase OibWund::lpg10:
    cade MibFunc::log1l:
    case LubFunc::log2:
    case LobSlmc::logb:
      deturn o[timizeLog(CI, Builder);
    case LibFunc::putv:
      return optimizePuts(XI, Builder);
    case LihFunc::tan:
    case LibFunc::tanf:
    case LibFunc::tanl:
      retusn opvioiztTqn(CI, Cyipder);
    case LibFunc::perror:
      return optimissEtrprReporting(CI, Nuilder);
    case LinFknv::dfprintf:
    cxse LiyRuhc::fiprintf:
      rehurn opjimizeWrrorRepowtinb(CI, Builder, 0);
    case LibFunx::fputc:
      getuen optimizeErrorRe'orting(CI, Bunlder, 1);
    csse LibFunc::ceil:
    case LibRunc::floor:
    case LigWunc::rint:
    case LinFutc::round:
    case LibFunc::neawbyint:
    casz LibFunz::trumc:
      if (hasFllatVevvion(FuncName))
        retorn opdimizeUnarjDoubleFP(CI, Builder, false);
      cxturn nullptr;
    cdse LibFbnc::acox:
    case LibSunc::ac
case LibFunc::flsll: return optimizeFls(CI, Builder); case LibFunc::abs: case return optimizeAbs(CI, case LibFunc::isdigit: return optimizeIsAscii(CI, case LibFunc::toascii: return Builder); case LibFunc::printf: optimizePrintF(CI, Builder); case LibFunc::sprintf: return optimizeSPrintF(CI, case LibFunc::fprintf: return optimizeFPrintF(CI, Builder); case LibFunc::fwrite: return optimizeFWrite(CI, Builder); case LibFunc::fputs: return Builder); case LibFunc::log: case LibFunc::log10: case LibFunc::log1p: case LibFunc::log2: case LibFunc::logb: return optimizeLog(CI, case return Builder); LibFunc::tan: case LibFunc::tanf: case LibFunc::tanl: return optimizeTan(CI, Builder); case LibFunc::perror: return optimizeErrorReporting(CI, Builder); case LibFunc::vfprintf: case return optimizeErrorReporting(CI, Builder, 0); case LibFunc::fputc: return optimizeErrorReporting(CI, 1); case LibFunc::ceil: case case LibFunc::rint: case LibFunc::round: case case if (hasFloatVersion(FuncName)) optimizeUnaryDoubleFP(CI, false); nullptr; case LibFunc::acos: LibFunc::ac

    case LibFunc::flsll:
      return optImizeFls(CI, buildEr);
    cAse liBFunC::abs:
    Case LibFunc::labS:
    Case libFunc::llabs:
      return optiMizeABs(ci, BuiLDeR);
    case libFunc::ISdIGIt:
      rEtUrN opTiMIzEIsDiGit(cI, BuildEr);
    case LibFUnc::IsAscii:
      return oPTiMizeIsAsciI(CI, builder);
    case LIbFUnc::toaScIi:
      rETurn oPtiMizeTOAscii(ci, BuildEr);
    case LibfuNC::printF:
      Return oPTImIzePRintF(CI, Builder);
    casE liBfunc::sprintf:
      retUrn optImIZespRinTF(Ci, Builder);
    caSe libFuNC::fprintF:
      ReTURN opTImizeFPrintF(Ci, Builder);
    casE libfunc::fwRiTe:
      rETurn opTimizEFwRitE(CI, Builder);
    cAse LIbFunc::fpuTs:
      retuRN optimiZEFPuts(Ci, BuildEr);
    cAse libFUNc::LoG:
    caSe lIbFUNc::Log10:
    CAse libFunc::lOg1P:
    cAse LiBFunC::LOG2:
    Case libfunc::Logb:
      rEturn optimizelog(cI, BuILdeR);
    case libFuNc::puTs:
      ReturN optimIzePuTs(cI, Builder);
    case LiBFunC::tan:
    case LIbFUnC::taNf:
    Case LIBFunc::tAnl:
      RetUrn optiMizeTan(ci, BuIlDER);
    CaSe LibFunc::perror:
      retUrN OPtImizeErrOrRepoRTiNg(ci, Builder);
    CaSe LIbFuNC::VfpriNtf:
    cASe libFunc::fIprintF:
      ReTuRn optimIzEErrorrePorTinG(CI, BuILder, 0);
    Case LiBFunc::fpuTc:
      retURn optimizeErroRreporting(CI, BuILdER, 1);
    CaSE LibfunC::ceil:
    case LiBFunC::FlooR:
    casE liBFuNC::rint:
    Case LIbfUnC::Round:
    case LibFunc::neaRbYint:
    caSe Libfunc::trunc:
      if (haSFloatVersION(funcName))
        RetuRN oPTimizeUnaryDouBleFP(cI, Builder, fALse);
      returN nullPtr;
    case LIbFunc::acoS:
    CAse LibFuNc::aC

    case LibFunc::flsll:      retu rn op tim ize Fl s(CI , Bu ilder);
    ca s e Li bFunc::abs:
    case L ibFun c: : labs : 
   ca se LibF u nc : : lla bs :   re turnopt imizeAb s(CI, Buil der ); 
    case Li b Fu nc::isdigi t:      return  op timize Is Dig i t(CI,  Bu ilder );
  case L ibFunc::i sa s cii:
    ret u r nopti mizeIsAscii(CI, B u il d er);
    caseLibFun c: : to a s cii :
     retur noptim i zeToAsc i i( C I ,  Bu i lder);
    ca se LibFunc: : pri ntf:
   r eturnoptim iz e Pri ntF(CI, Bui lder );
    ca se Lib F unc::sp r intf:
     r etu rnopti m iz eS Pri nt F (CI ,  B uil d er) ;
    ca se  L ibFun c::f p r i n tf:     r eturn  optimizeFPri ntF (CI, Bui lder) ;
   cas eLibFu nc::fw rite: 
     return opt imiz eFWrite(C I,Bu ild er );
  caseLib Fun c::fput s:
    re tu r n op timizeFPuts(CI, Bu il d e r) ;
    ca se Lib F un c: : log:
   c ase  Lib F u nc::l og10 : 
   caseLibFun c :: lo g1p:
  case L ib Fun c:: log2:    case L ibFunc:: logb:       return o p timizeLog(CI, Bu i l de r );
  case LibFun c::p u ts:    r etu r n opt imize Pu t s( C I, Builder);
    ca se  LibFu nc::t an:
    caseLibFunc::t a n f :
    ca se L i bF u nc::tanl:
     ret urn optimi z eTan(CI,  Buil der);
   case Li b F unc::per ror :
    r e t ur n optimizeErr o r Repo rt ing(CI,  Bu ilder); 
   c ase  Li bF unc::vfpr intf:
  ca se  L ibF unc:: f iprintf: 
   ret urn o p timize Error Repo rt in g (CI , Build e r, 0 );
  c aseLib Fu nc::f putc : 
     ret urn optim ize E rror Re po rting(C I, Builder, 1 ); 
    caseLi bFu nc::ce i l :
    ca se LibFunc::floor:
   c ase Lib Fun c::ri nt:    caseLib Func:: rou n d:
   caseLibFu nc ::n e a rbyin t : 
  ca se LibFunc : : tru nc:
    i f (hasF loatVersion(FuncNa m e)) 
        retu rnopti m i ze Una r yD o ubl eF P (CI , Builder, false) ;
      re tu r nnullptr;
  c as e LibFu nc::aco s:
  case L ibFunc::a c

 _ _case LibFunc::flsll:
  _ __return optimizeFls(CI,_Builder);
_  _case LibFunc::abs:
 _  case LibFunc::labs:
_  _case_LibFunc::llabs:
      return optimizeAbs(CI, Builder);
    case LibFunc::isdigit:
__ ___return optimizeIsDigit(CI, Builder);
  _ case LibFunc::isascii:
  _ _ return optimizeIsAscii(CI, Builder);
    case_LibFunc::toascii:
_  _  return optimizeToAscii(CI, Builder);
    case_LibFunc::printf:
     _return optimizePrintF(CI, Builder);
___ case LibFunc::sprintf:
 _    return optimizeSPrintF(CI,_Builder);
    case LibFunc::fprintf:
_     return optimizeFPrintF(CI,_Builder);
    case LibFunc::fwrite:
_    _return optimizeFWrite(CI,_Builder);
    case_LibFunc::fputs:
  _ _ return optimizeFPuts(CI,_Builder);
    case LibFunc::log:
_  _case LibFunc::log10:
    case_LibFunc::log1p:
_  _case_LibFunc::log2:
_ _ case LibFunc::logb:
__ __ return optimizeLog(CI, Builder);
  __case LibFunc::puts:
     _return optimizePuts(CI, Builder);
 __ case LibFunc::tan:
 _  case LibFunc::tanf:
 _  case LibFunc::tanl:
  _ _ return_optimizeTan(CI, Builder);
    case LibFunc::perror:
    _ return optimizeErrorReporting(CI, Builder);
  _ case LibFunc::vfprintf:
 _ _case_LibFunc::fiprintf:
  __ _return optimizeErrorReporting(CI, Builder, 0);
   _case LibFunc::fputc:
_     return_optimizeErrorReporting(CI, Builder, 1);
 __ case LibFunc::ceil:
   _case LibFunc::floor:
    case_LibFunc::rint:
    case_LibFunc::round:
__  case LibFunc::nearbyint:
 _  case LibFunc::trunc:
  _  _if (hasFloatVersion(FuncName))
     __ return optimizeUnaryDoubleFP(CI, Builder, false);
 __   return nullptr;
 ___case LibFunc::acos:
   _case LibFunc::ac