ã¯ããã«
ããã°ã©ã ãç¹å®ã®ãµã€ãºã«éãããšãæå®ãäžååã§ããã1人ãå®å šã«ç解ã§ããªãããšãä¿èšŒãããŸãã ããã¯ããäºãã®ä»äºã«ããŸãæ°ã¥ããŠããªã人ã ã«ãã£ãŠ1æ¥ã«äœåºŠã確èªãããŠããŸãã ãã®ããã°ã©ã ã«ã¯ãã³ã³ãã€ã©ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãã©ã€ãã©ãªãªã©ãå€ãã®äŸåé¢ä¿ããããããããã«ç¬èªã®ãã°ãå«ãŸããŠããããããã¯ãã¹ãŠéææŽæ°ãããŸãã ããã«ããœãããŠã§ã¢ã¯éåžžãããã€ãã®ç°ãªããã©ãããã©ãŒã ã§åäœããå¿ èŠããããåãã©ãããã©ãŒã ã«ã¯ç¬èªã®ç¹æ§ããããŸãã äžæ£è¡çºã®æ©äŒãå€æ°ããããšãèãããšããªãç§ãã¡ã®å€§èŠæš¡ãªããã°ã©ã ãæåŸ ã©ããã«æ©èœãããšæåŸ ã§ããã®ã§ããããïŒ æãéèŠãªããšã®1ã€ã¯ãã¹ãã§ãã ãããã£ãŠãç§ãã¡ã«ãšã£ãŠéèŠãªæ§æãšãã©ãããã©ãŒã ã§ãœãããŠã§ã¢ãæ£åžžã«åäœããããšã確èªã§ããŸããåäœããªãå Žåã¯ãåé¡ã远跡ããŠä¿®æ£ã§ããåªç§ãªäººãããŸãã
ä»æ¥ã¯ãLLVMãã¹ãã«ã€ããŠèª¬æããŸãã å€ãã®ç¹ã§ãã³ã³ãã€ã©ã¯ãã¹ãããã®ã«é©ãããªããžã§ã¯ãã§ãã
- å ¥å圢åŒïŒãœãŒã¹ã³ãŒãïŒãšåºå圢åŒïŒã¢ã»ã³ãã©ã³ãŒãïŒã¯ããç解ãããŠãããç¬ç«ããä»æ§ããããŸãã
- å€ãã®ã³ã³ãã€ã©ã«ã¯äžéè¡šçŸïŒIRïŒããããããèªäœãææžåãããæšè«ããã³è§£æã§ãããããå éšãã¹ãã容æã«ãªããŸãïŒåžžã«ã§ã¯ãããŸãããïŒã
- å€ãã®å Žåãã³ã³ãã€ã©ãŒã¯C ++æšæºãªã©ã®ä»æ§ã®ç¬ç«ããå®è£ ã®1ã€ã§ãããããã«ããå·®åãã¹ããå¯èœã«ãªããŸãã å€ãã®å®è£ ãå©çšã§ããªãå Žåã§ããèªåèªèº«ãšæ¯èŒããç°ãªãããã¯ãšã³ããŸãã¯ç°ãªãæé©åã¢ãŒãã®åºåãæ¯èŒããããšã«ãããå€ãã®å Žåã³ã³ãã€ã©ããã¹ãã§ããŸãã
- ã³ã³ãã€ã©ã¯éåžžããããã¯ãŒã¯æ©èœã競äºåãæéäŸåæ§ãæãããéåžžã«éãããæ¹æ³ã§åžžã«å€éšãšããåãããŸãã ããã«ãã³ã³ãã€ã©ã¯é垞決å®è«çã§ãã
- ã³ã³ãã€ã©ã¯éåžžãé·æéåäœããŸããããŸãããªãœãŒã¹ãªãŒã¯ããšã©ãŒããã®å埩ã«ã€ããŠå¿é ããå¿ èŠã¯ãããŸããã
ãããäžæ¹ã§ãã³ã³ãã€ã©ãŒã¯ããã»ã©ç°¡åã«ãã¹ãã§ããŸããã
- ã³ã³ãã€ã©ã¯é«éã§ããå¿ èŠããããå€ãã®å Žåãå®å šã§ãªãèšèªã§èšè¿°ãããŠãããã¢ãµãŒã·ã§ã³ãäžååã§ãã å¯èœãªå Žåã¯åžžã«ãã£ãã·ã¥ãšã¬ã€ãžãŒã³ã³ãã¥ãŒãã£ã³ã°ã䜿çšãããããè€éããå¢ããŸãã ããã«ãã³ã³ãã€ã©ãŒé¢æ°ãå€ãã®æ確ã§ç¬ç«ããå°ããªããã»ãŒãžã«åé¢ãããšãã³ã³ãã€ã©ãŒã®é床ãäœäžããç¡é¢ä¿ãŸãã¯ççµåã®é¢æ°ãçµåããåŸåããããã³ã³ãã€ã©ãŒã®ç解ããã¹ããããã³ä¿å®ãããé£ãããªããŸãã
- å éšã³ã³ãã€ã©ã®ããŒã¿æ§é ã®äžå€åŒã¯ãå®å šã«å°çã§ãããå®å šã«ææžåãããŠããªãå ŽåããããŸãã
- äžéšã®ã³ã³ãã€ã«ã¢ã«ãŽãªãºã ã¯è€éã§ãã»ãšãã©æ±ºããŠã³ã³ãã€ã©ãŒãæç§æžã®ã¢ã«ãŽãªãºã ãæ£ç¢ºã«å®è£ ããŠããŸããããå€å°ã®éãã¯ãããŸãã
- ã³ã³ãã€ã©ã®æé©åã¯è€éãªæ¹æ³ã§çžäºäœçšããŸãã
- å®å šã§ãªãèšèªã®ã³ã³ãã€ã©ãŒã¯ãæªå®çŸ©ã®åäœãã³ã³ãã€ã«ããéã«çŸ©åãè² ãããã³ã³ãã€ã©ãŒã®å€éšïŒããã³ã³ã³ãã€ã©ãŒã®ãã¹ããäœæãããŠãŒã¶ãŒïŒã«UBã®æ¬ åŠã«å¯Ÿãã責任ã移ããŸãã ããã«ãããå·®åãã¹ããè€éã«ãªããŸãã
- æ£ããã³ã³ãã€ã«ãããŠããªãããã°ã©ã ã¯ãããã°ãå°é£ã§ãããã³ã³ãã€ã©ã¯ã³ã³ãã€ã«ãããã³ãŒãã«éãã«è匱æ§ãè¿œå ã§ãããããã³ã³ãã€ã©ã®æ£ç¢ºãã®åºæºã¯éåžžã«é«ããªã£ãŠããŸãã
ãããã£ãŠããããã®åºæ¬çãªããšãç¥ã£ãŠãããLLVMã®ãã¹ãæ¹æ³ãæ€èšããŠãã ããã
åäœãã¹ããšååž°ãã¹ã
LLVMã®ãã°ã«å¯Ÿããæåã®é²è¡ç·ã¯ãéçºè ããã§ãã¯å¯Ÿè±¡ãåéãããšãã«å®è¡ããããã¹ãã¹ã€ãŒãã§ãã éçºè ãLLVMã«ããããã³ãããããåã«ããããã®ãã¹ãŠã®ãã¹ããå®äºããå¿ èŠããããŸãïŒãã¡ãããå€ãã®ãããã«ã¯æ°ãããã¹ããå«ãŸããå ŽåããããŸãïŒã ããªãé«éãªãã¹ã¯ãããã§ã¯ã19,267åã®ãã¹ãã96ç§ã§åæ ŒããŸãã å®è¡ããããã¹ãã®æ°ã¯ãããŠã³ããŒãããè¿œå ã®LLVMãããžã§ã¯ãïŒcompiler-rtãlibcxxãªã©ïŒãããã³çšåºŠã¯äœããããã·ã³ã§èªåçã«æ€åºããããœãããŠã§ã¢ïŒãã³ãã«ãªã©ïŒã«ãã£ãŠç°ãªããŸãOCamlã®ã€ã³ã¹ããŒã«ã¯ãOCamlãã€ã³ã¹ããŒã«ããããŸã§ãã¹ããããŸããã ããã§è¿°ã¹ãããã«ããããã®ãã¹ãã¯è¿ éã§ããå¿ èŠããããéçºè ã¯é »ç¹ã«ãã¹ããå®è¡ã§ããŸã ã check-allãcheck-clangãªã©ã®ã¿ãŒã²ããããã«ããããšãã«è¿œå ã®ãã¹ããå®è¡ãããŸãã
äžéšã®åäœãã¹ããšååž°ãã¹ãã¯APIã¬ãã«ã§å®è¡ããããã¹ããã¬ãŒã ã¯ãŒã¯ãæ¥ç¶ããããã®C ++ãã¯ããæäŸãã軜éãã¬ãŒã ã¯ãŒã¯ã§ããGoogle Testã䜿çšããŸã ã ãã¹ãäŸã次ã«ç€ºããŸãã
TEST_F(MatchSelectPatternTest, FMinConstantZero) { parseAssembly( "define float @test(float %a) {\n" " %1 = fcmp ole float %a, 0.0\n" " %A = select i1 %1, float %a, float 0.0\n" " ret float %A\n" "}\n"); // This shouldn't be matched, as %a could be -0.0. expectPattern({SPF_UNKNOWN, SPNB_NA, false}); }
TEST_Fãã¯ãã®æåã®åŒæ°ã¯ãã¹ãã³ã¬ã¯ã·ã§ã³ã®ååã瀺ãã2çªç®ã¯ç¹å®ã®ãã¹ãã®ååã§ãã parseAssemblyïŒïŒããã³expectPatternïŒïŒã¡ãœããã¯LLVM APIãåŒã³åºããçµæã確èªããŸãã ãã®äŸã¯ValueTrackingTest.cppããåãããŠããŸãã 1ã€ã®ãã¡ã€ã«ã«è€æ°ã®ãã¹ããå«ããããšãã§ããfork / execããªãããã«ãã¹ãã®ééãå éããŸãã
LLVMã¯ã€ãã¯ãã¹ãã¹ã€ãŒãã§äœ¿çšãããå¥ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ã lit LLVM Integrated Testerã§ãã litã¯ã·ã§ã«ããŒã¹ã§ããããã¹ãã³ãã³ããå®è¡ãããã¹ãŠã®ã³ãã³ããæ£åžžã«å®äºããå Žåã«ãã¹ããæåãããšçµè«ä»ããŸãã
ç¹ç¯ãã¹ãã®äŸã次ã«ç€ºããŸãïŒ ãã®ãã¡ã€ã«ã®æåããååŸããŸããããããã«ã¯ä»ã¯é¢ä¿ãªãè¿œå ã®ãã¹ããå«ãŸããŠããŸãïŒã
; RUN: opt < %s -instcombine -S | FileCheck %s define i64 @test1(i64 %A, i32 %B) { %tmp12 = zext i32 %B to i64 %tmp3 = shl i64 %tmp12, 32 %tmp5 = add i64 %tmp3, %A %tmp6 = and i64 %tmp5, 123 ret i64 %tmp6 ; CHECK-LABEL: @test1( ; CHECK-NEXT: and i64 %A, 123 ; CHECK-NEXT: ret i64 }
ãã®ãã¹ãã¯ãäžéã³ãŒãã®èŠãç©Žã¬ãã«ã®æé©åãã¹ã¹ã«ãŒã§ããInstCombineããããã§ã¯zextãshlãããã³addãäžèŠãªåœä»€ã«æ°ä»ãããšãã§ããããšãæ€èšŒããŸãã CHECK-LABELè¡ã¯ãæé©åãããã³ãŒãé¢æ°ãéå§ããè¡ãæ€çŽ¢ããæåã®CHECK-NEXTã¯andã¹ããŒãã¡ã³ãã次ã«ç§»åããããšã確èªãã2çªç®ã®CHECK-NEXTã¯retã¹ããŒãã¡ã³ãã次ã«ç§»åããããšã確èªããŸãïŒæ£ç¢ºã§ã¿ã€ã ãªãŒãªèª¬æãããŠãããMichael Kupersteinã«æè¬ããŸãïŒãã®ãã¹ãïŒã
ãã¹ããå®è¡ããããã«ããã¡ã€ã«ã¯3å解éãããŸãã ãŸããã¹ãã£ã³ããããRUNïŒããå«ãè¡ãæ€çŽ¢ããã察å¿ãããã¹ãŠã®ã³ãã³ããå®è¡ãããŸãã 次ã«ããã¡ã€ã«ã¯optãŠãŒãã£ãªãã£ãLLVM IRãªããã£ãã€ã¶ãŒã«ãã£ãŠè§£éãããŸããããã¯ã litã¯ãïŒ så€æ°ãåŠçäžã®ãã¡ã€ã«ã®ååã«çœ®ãæããŸããã ããã¹ã圢åŒã®LLVM IRã®ã³ã¡ã³ãã¯ã»ãã³ãã³ã§å§ãŸããããã©ã€ããã£ã¬ã¯ãã£ãã¯ãªããã£ãã€ã¶ãŒã«ãã£ãŠç¡èŠãããŸãã ãªããã£ãã€ã¶ãŒã®åºåã¯FileCheckãŠãŒãã£ãªãã£ã«éããããã¡ã€ã«ãå床解æããCHECKãCHECK-NEXTãªã©ã®ã³ãã³ããæ¢ãããããã®ãŠãŒãã£ãªãã£ãstdinã®è¡ãæ¢ãããã«åŒ·å¶ããç¹å®ã®è¡ãèŠã€ãããªãå Žåã¯ãŒã以å€ã®çµäºã³ãŒããè¿ããŸãïŒCHECK-LABELã䜿çšãããŸããã¡ã€ã«ãè«ççã«å¥åã®ãã¹ãã®ã»ããã«åå²ããŸãïŒã
ãã¹ãã®éèŠãªæŠç¥ç®æšã¯ãã«ãã¬ããžåæããŒã«ã䜿çšããŠããã¹ãã§ã«ããŒãããŠããªãã³ãŒãããŒã¹ã®éšåãèŠã€ããããšã§ãã 以äžã¯ããŠããã/ãªã°ã¬ãã·ã§ã³ãã¹ãã®éå§ã«åºã¥ããææ°ã®LLVMã«ãã¬ããžã¬ããŒãã§ãã ãããã®ããŒã¿ã¯ããããããã詳现ã«ç 究ããã®ã«ååèå³æ·±ããã®ã§ãã InstCombineã®ã«ãã¬ããžãèŠãŠã¿ãŸããããããã¯äžè¬çã«éåžžã«åªããŠããŸãïŒ æ®å¿µãªãããªã³ã¯ã¯å©çšã§ããŸãããã³ã¡ã³ãperev ïŒã LLVMã䜿ãå§ããã人ã«ãšã£ãŠèå³æ·±ããããžã§ã¯ãã¯ãInstCombineã®ãã¹ããããŠããªãéšåãã«ããŒãããã¹ããæžãããšã§ãã ããšãã°ãInstCombineAndOrXor.cppã®ãã¹ãïŒèµ€ã§åŒ·èª¿è¡šç€ºïŒã§çºèŠãããæåã®ã³ãŒãã¯æ¬¡ã®ãšããã§ãã
ãã®ã³ã¡ã³ãã¯ãå€æãã¹ãæ¢ããŠããããšã瀺ããŠããããã®ã³ãŒãã®ãã¹ããæžãã®ã¯ããªãç°¡åãªã¯ãã§ãã ãã¹ãã§ããªãã³ãŒãã¯ãããã§ããæã«ã¯ããããã³ãŒããåé€ããããšããå§ãããŸããä»ã®ã±ãŒã¹ã§ã¯ããã®äŸã®ããã«ïŒåããã¡ã€ã«ããïŒããã°ãçŸããå Žåã«ã®ã¿ã³ãŒãã¯ãããã«ãªããŸãã
ãããã®è¡ãã«ããŒããããšããããšã¯è¯ãèãã§ããããã®å Žåã¯ããã¹ãã¹ã€ãŒããæ¹åããã ãã§ãªããLLVMã®ãã°ãèŠã€ããããšããŠããŸãã å°éäžèœãšããŠããŒã¯ãããè¡ã«ã€ããŠæããŠãããªãããã«ãã«ãã¬ããžåæããŒã«ãæããããšã¯è¯ãèããããããŸããã
LLVMãã¹ãã¹ã€ãŒã
LLVMãªããžããªã®äžéšã§ãããè¿ éã«å®è¡ã§ããååž°/åäœãã¹ããšã¯å¯Ÿç §çã«ã ãã¹ãã¹ã€ãŒãã¯å€éšã§ãããæéãããããŸãã éçºè ã¯ãã³ãããããåã«ãããã®ãã¹ããå®è¡ããããšã¯æåŸ ãããŠããŸãããããããã®ãã¹ãã¯èªåçã«å®è¡ãããå€ãã®å ŽåLNTã䜿çšããŸãïŒæ¬¡ã®ã»ã¯ã·ã§ã³ãåç §ïŒã LLVMãã¹ãã¹ã€ãŒãã«ã¯ãã³ã³ãã€ã«ããã³å®è¡ãããããã°ã©ã å šäœãå«ãŸããŠããŸããããã¯ãç¹å®ã®æé©åãç®çãšãããã®ã§ã¯ãªããçæãããã³ãŒãå šäœã®å質ãšæ£ç¢ºæ§ã確èªããããã®ãã®ã§ãã
åãã³ãããŒã¯ã«ã€ããŠããã¹ãã¹ã€ãŒãã«ã¯ãã¹ãå ¥åãšå¯Ÿå¿ããäºæ³åºåãå«ãŸããŠããŸãã ãã¹ãã¹ã€ãŒãã®äžéšã¯å€éšã§ããã€ãŸãããããã®ãã¹ãã®åŒã³åºãããµããŒããããŠããŸããããã¹ãèªäœã¯ãã¹ãã¹ã€ãŒãã®äžéšã§ã¯ãªããéåžžã¯ããªãŒã§ãªããœãããŠã§ã¢ã䜿çšãããããåå¥ã«ããŠã³ããŒãããå¿ èŠããããŸãã
Lnt
LNTïŒLLVM Nightly TestïŒã«ã¯ãã¹ããå«ãŸããŠããŸãã;ã³ã³ãã€ã©ã«ãã£ãŠçæãããã³ãŒãã®å質ãç£èŠããããšã«çŠç¹ãåããããã¹ãçµæã®éçŽããã³åæããŒã«ã§ãã ãã¹ããå®è¡ããŠçµæã確èªããããã®ããŒã«ã«ãŠãŒãã£ãªãã£ãšãçµæãç°¡åã«è¡šç€ºã§ãããµãŒããŒããŒã¿ããŒã¹ããã³Webããã³ããšã³ããå«ãŸããŠããŸãã NTSïŒNightly Test SuiteïŒã®çµæã¯ãã¡ãã§ãã
Buildbot
Linux / Windows BuiltBotããã³Darwin BuiltBotïŒãããã2ã€ããçç±ã¯ããããŸããïŒã䜿çšããŠãLLVMãæ§æããããã«ããããå€æ°ã®ç°ãªããã©ãããã©ãŒã ããã³ããŸããŸãªæ§æã§ãŠããã/ååž°ãã¹ãã«åæ Œããããã«ããŸãã BuildBotã¯ãåé¡ã®ã³ããããèŠã€ããŠäœæè ã«æçŽãéä¿¡ããããã«ãblameã³ãã³ãããµããŒãããŠããŸãã
æTestingçãªãã¹ãã®åãçµã¿
LLVMã³ãã¥ããã£ã®ã³ã¢ã®å€åŽã§ããã€ãã®ãã¹ãäœæ¥ãè¡ãããã©ã®ããŒãžã§ã³ã®LLVMããã¹ããããŠããããšããæå³ã§äœç³»çã§ã¯ãããŸããã ãããã®ãã¹ãã¯ãç¹å®ã®ããŒã«ãŸãã¯ãã¯ããã¯ãè©ŠããŠã¿ããåã ã®éçºè ã®åªåã«ããçŸããŸããã ããšãã°ãé·ãéãç§ã®ã°ã«ãŒãã¯Csmithã䜿çšããŠClang + LLVMããã¹ãã ãèŠã€ãã£ããšã©ãŒãå ±åããŸããïŒ é«ã¬ãã«ã®èª¬æãåç §ïŒã Sam Liedes ã¯afl-fuzzã䜿çšã㊠Clangããã¹ãããŸããã Zhendong SuãšåœŒã®ã°ã«ãŒãã¯ãéåžžã«å°è±¡çãªãã°ãçºèŠããŸããã Nuno Lopes㯠ãæé©åãã¹ã®é©ãã¹ã圢åŒçææ³ã®ãã¹ããè¡ããŸãããããã«ã€ããŠã¯ãããã«æžããããšæããŸãã
éççç©è©Šéš
ãã¡ãããæåŸã®ã¬ãã«ã®ãã¹ãã¯LLVMãŠãŒã¶ãŒã«ãã£ãŠå®è¡ãããŸããLLVMãŠãŒã¶ãŒã¯ãã¯ã©ãã·ã¥ãäžé©åãªã³ã³ãã€ã«ãåŒãèµ·ããããšããããŸãããä»ã®ãã¹ãæ¹æ³ã§ã¯èŠéããŠããŸããã ã³ã³ãã€ã©ã®ãã°ã®çºçãããããç解ãããã£ãããšããããããŸããã ãã°ã®åå ãç¹å®ããããã«ã³ãŒããåæžããããšã¯å°é£ã§ããããããŠãŒã¶ãŒã³ãŒãã®äžæ£ãªã³ã³ãã€ã«ã®çç±ãç¹å®ããããšã¯å°é£ã§ãã ãããã人ã ã¯ãããã°ããã»ã¹äžã«ã³ãŒãã®æ¬äŒŒã©ã³ãã å€æŽã䜿çšããå¶ç¶ã«ããåé¡ã«å¯ŸåŠããããã«ãããå¿ããŸãã
倧ããªé©æ°ã¯ãLLVMã«ç¿»èš³æ€èšŒã¹ããŒã ãå°å ¥ããSMTãœã«ããŒã䜿çšããŠã³ã³ãã€ã©ãŒåºåãå ¥åãšäžèŽããããšã蚌æããããšã§ãã ããã«ã¯ãæªå®çŸ©ã®åäœããå®éã«ã¯ã³ã³ãã€ã«ãšã©ãŒãåŒãèµ·ãã倧ããªé¢æ°ã«æ€èšŒãæ¡å€§ããããšãé£ãããšããäºå®ãªã©ãå€ãã®åé¡ããããŸãã
代æ¿ãã¹ããªã©ã¯ã«
ãã¹ãOracleã¯ããã¹ãã«åæ Œãããã©ãããå€æããæ¹æ³ã§ãã åçŽãªãªã©ã¯ã«ã«ã¯ããã³ã³ãã€ã©ãã³ãŒã0ã§çµäºããããŸãã¯ãã³ã³ãã€ã«ããããã³ãããŒã¯ãæåŸ ãããåºåãè¿ããããªã©ã®ãã§ãã¯ãå«ãŸããŸãã ãã ããããªãªãŒã¹åŸã®äœ¿çšããªã©ãããã°ã©ã ã®ã¯ã©ãã·ã¥ããªãŒããŒãããŒå šäœãåŒãèµ·ãããªãã£ãèå³æ·±ããã°ã®å€ãã¯èŠéãããŸãïŒGCCã®äŸã«ã€ããŠã¯ã ãã®èšäºã® 7ããŒãžãåç §ããŠãã ããïŒã ASanãUBSanãValgrindãªã©ã®ãã°æ€åºåšã¯ãããã°ã©ã ã«Cããã³C ++æšæºãã掟çãããªã©ã¯ã«ãè£ åããããšãã§ãããã°ãèŠã€ããããã®å€ãã®æçšãªæ©äŒãæäŸããŸãã Valgrindã§LLVMãå®è¡ãããã¹ãã¹ã€ãŒããå®è¡ããã«ã¯ã-DLLVM_LIT_ARGS = "-v --vg"ãCMakeã«æž¡ããŸãããValgrindãé€å»ãå°é£ãªèª€æ€ç¥ãçæã§ããããã«æºåããŠãã ããã UBSanã§LLVMããã¹ãããã«ã¯ãDLLVM_USE_SANITIZER = UndefinedãCMakeã«æž¡ããŸãã ããã¯ãã°ãããããšã§ãããUBSan / ASan / MSanã¯æªå®çŸ©ã®åäœã®ãã¹ãŠã®ã±ãŒã¹ããã£ããããããã§ã¯ãªããäžèšã®äŸã®GCCã§ç¬Šå·ãªãæŽæ°ããªãŒããŒãããŒããããªã©ã®ç¹å®ã®èª€ã£ãåäœããã£ããããªããããå€ãã®äœæ¥ãå¿ èŠã§ãã
ãã¹ãã倱æãããšã©ããªããŸããïŒ
ã³ããããå£ãããšãã©ã®ã¬ãã«ã§ããã¹ããã¯ã©ãã·ã¥ããå¯èœæ§ããããŸãã ãã®ãããªã³ãããã¯ãïŒãããå°é£ã§ãªãå ŽåïŒä¿®åŸ©ãããããæ·±ãæ¬ é¥ãããå ŽåããŸãã¯èœäžãã¹ãã«ãã£ãŠæäŸãããæ°ããæ å ±ã«ç §ãããŠæãŸãããªãå Žåã¯æåŠãããŸãã ããã¯ãå€ãã®å®éã®ãŠãŒã¶ãŒãååšãã倧èŠæš¡ã§è€éãªã³ãŒãããŒã¹ã倧ããªå€æŽããä¿è·ããããã«é »ç¹ã«çºçããŸãã
ãã¹ããã¯ã©ãã·ã¥ããåé¡ãããã«ä¿®æ£ããã®ãé£ããå Žåãããšãã°æ°ããæ©èœãå®äºãããšãã«ä¿®æ£ã§ããå Žåããã¹ãã¯XFAILãŸãã¯ãäºæ³ããã倱æããšããŠããŒã¯ã§ããŸãã ãã®ãããªãã¹ãã¯ãã¹ãããŒã«ã«ãã£ãŠåå¥ã«èæ ®ãããããããæ¿èªãããåã«ä¿®æ£ããå¿ èŠãããäžè¬çãªãã©ãŒã«ããã¹ãã®ã¹ã³ã¢ã«ã¯å«ãŸããŸããã
ãããã«
LLVMãŠãŒã¶ãŒããã°ããä¿è·ãããå Žåã倧èŠæš¡ã§ç§»æ€æ§ãé«ããåºã䜿çšãããŠãããœãããŠã§ã¢ã·ã¹ãã ã®ãã¹ãã¯ãå€ãã®äœæ¥ã䌎ãå°é£ãªäœæ¥ã§ãã ãã¡ãããé«å質ã®ã³ãŒããç¶æããããã«å¿ èŠãªä»ã®éåžžã«éèŠãªããšããããŸãïŒè¯ããã¶ã€ã³ãã³ãŒãã®ã¬ãã¥ãŒãäžéãã¬ãŒã³ããŒã·ã§ã³ã®ã»ãã³ãã£ã¯ã¹ãéçåæãåé¡é åã®å®æçãªåŠçã