Ar ôl chwe mis o ddatblygiad wedi'i gyflwyno rhyddhau prosiect LLVM 11.0 - Offer sy'n gydnaws â GCC (cyfunwyr, optimizers a generaduron cod), llunio rhaglenni i god did canolradd o gyfarwyddiadau rhithwir tebyg i RISC (peiriant rhithwir lefel isel gyda system optimeiddio aml-lefel). Gellir trosi'r ffuggod a gynhyrchir gan ddefnyddio casglwr JIT yn gyfarwyddiadau peiriant yn uniongyrchol ar adeg gweithredu'r rhaglen.
Y newid allweddol yn y datganiad newydd oedd cynnwys Ystlys, frontend ar gyfer yr iaith Fortran. Mae Flang yn cefnogi Fortran 2018, OpenMP 4.5 ac OpenACC 3.0, ond nid yw datblygiad y prosiect wedi'i gwblhau eto ac mae'r pen blaen yn gyfyngedig i dosrannu cod a gwirio cywirdeb. Nid yw cynhyrchu cod canolradd LLVM wedi'i gefnogi eto ac i gynhyrchu ffeiliau gweithredadwy, mae cod canonaidd yn cael ei gynhyrchu a'i drosglwyddo i gasglwr Fortran allanol.
Ychwanegwyd y gallu i adfer y goeden gystrawen haniaethol (AST) ar gyfer cod C++ wedi'i dorri, y gellir ei ddefnyddio i helpu i wneud diagnosis o wallau ac sy'n darparu gwybodaeth ychwanegol i gyfleustodau allanol fel clang-tidy a clangd. Mae'r nodwedd wedi'i galluogi yn ddiofyn ar gyfer cod C++ ac fe'i rheolir trwy'r opsiynau "-Xclang -f[no-]recovery-ast".
Ychwanegwyd moddau diagnostig newydd:
Mae “-Wpointer-to-int-cast” yn grŵp o rybuddion ynghylch castio awgrymiadau at int math cyfanrif nad yw'n cynnwys yr holl werthoedd posibl.
“-Wuninitialized-const-reference” - rhybudd am basio newidynnau anghyfarwydd mewn paramedrau swyddogaeth sy'n derbyn dadleuon cyfeirio gyda'r priodoledd “const”.
" -Wimplicit-const-int-float-conversion" - wedi'i alluogi gan rybudd rhagosodedig ynghylch trosi cysonyn go iawn yn fath cyfanrif ymhlyg.
Ar gyfer y platfform ARM, darperir swyddogaethau C sydd wedi'u cynnwys yn y casglwr (Cynhenid), wedi'i ddisodli gan gyfarwyddiadau fector effeithlon Arm v8.1-M MVE a CDE. Mae'r swyddogaethau sydd ar gael wedi'u diffinio yn y ffeiliau pennyn arm_mve.h a arm_cde.h.
Wedi adio set o fathau cyfanrif estynedig _ExtInt(N), sy'n eich galluogi i greu mathau nad ydynt yn luosrifau o bwerau o ddau, y gellir eu prosesu'n effeithlon ar FPGA/HLS. Er enghraifft,, _ExtInt(7) yn diffinio math cyfanrif sy'n cynnwys 7 did.
Ychwanegwyd macros sy'n diffinio cefnogaeth ar gyfer swyddogaethau C adeiledig yn seiliedig ar gyfarwyddiadau ARM SVE (Estyniad Fector Scalable):
__ARM_FEATURE_SVE, __ARM_FEATURE_SVE_BF16,
__ARM_FEATURE_SVE_MATMUL_FP32, __ARM_FEATURE_SVE_MATMUL_FP64,
_ARM_FEATURE_SVE_MATMUL_INT8,
__ARM_FEATURE_SVE2, __ARM_FEATURE_SVE2_AES,
_ARM_FEATURE_SVE2_BITPERM,
_ARM_FEATURE_SVE2_SHA3,
_ARM_FEATURE_SVE2_SM4. Er enghraifft, diffinnir y macro __ARM_FEATURE_SVE wrth gynhyrchu cod AArch64 trwy osod yr opsiwn llinell orchymyn "-march=armv8-a+sve".
Mae'r faner "-O" bellach wedi'i nodi gyda'r modd optimeiddio "-O1" yn lle "-O2".
" -ffp-exception-behavior = {anwybyddu,maytrap, llym}" - yn caniatáu i chi ddewis y modd trin eithriadau ar gyfer rhifau pwynt arnawf.
"-ffp-model={cywir, llym, cyflym}" - Yn symleiddio mynediad i gyfres o opsiynau arbenigol ar gyfer rhifau pwynt arnawf.
"-fpch-codegen" a "-fpch-debuginfo" i gynhyrchu pennyn wedi'i lunio ymlaen llaw (PCH) gyda ffeiliau gwrthrych ar wahân ar gyfer cod a debuginfo.
“-fsanitize-coverage-allowlist” a “-fsanitize-coverage-blocklist” ar gyfer gwirio cwmpas sy'n profi rhestrau gwyn a du.
“-mtls-size={12,24,32,48}” i ddewis maint TLS (storfa edau-lleol).
"-menable-experimental-extension" i alluogi estyniadau RISC-V arbrofol.
Y modd rhagosodedig ar gyfer C yw "-fno-common", sy'n caniatáu mynediad mwy effeithlon i newidynnau byd-eang ar rai platfformau.
Mae'r storfa modiwl rhagosodedig wedi'i symud o /tmp i'r cyfeiriadur ~/.cache. I ddiystyru, gallwch ddefnyddio'r faner “-fmodules-cache-path =”.
Mae'r safon iaith C rhagosodedig wedi'i diweddaru o gnu11 i gnu17.
Ychwanegwyd cefnogaeth ragarweiniol ar gyfer estyniad GNU C "asm mewn llinell» ychwanegu mewnosodiadau cydosodwr. Mae'r estyniad yn dal i gael ei ddadansoddi, ond nid yw'n cael ei brosesu mewn unrhyw ffordd.
Mae'r galluoedd sy'n gysylltiedig â chymorth OpenCL a CUDA wedi'u hehangu. Ychwanegwyd cefnogaeth ar gyfer diagnosteg bloc OpenCL 2.0 a gweithredu nodweddion OpenMP 5.0 newydd.
Ychwanegwyd opsiwn IndentExternBlock i gyfleustodau fformat clang ar gyfer aliniad o fewn blociau allanol "C" ac allanol "C ++".
Mae'r dadansoddwr statig wedi gwella'r modd yr ymdrinnir ag adeiladwyr etifeddol yn C++. Ychwanegwyd sieciau newydd alpha.core.C11Lock ac alpha.fuchsia.Lock i wirio am gloeon, alpha.security.cert.pos.34c i ganfod defnydd anniogel o putenv, webkit.NoUncountedMemberChecker a webkit.RefCntblBaseVirtualDtor i ganfod problemau gyda mathau angyfrifol, alpha .cplusplus .SmartPtr i wirio am null cyfeirio pwyntydd clyfar.
Yn linter clang-taclus wedi adio cyfran fawr o sieciau newydd.
Mae'r gweinydd caching clangd (Clang Server) wedi gwella perfformiad ac wedi ychwanegu galluoedd diagnostig newydd.
Mae'r system adeiladu wedi'i newid i ddefnyddio Python 3. Os nad yw Python 3 ar gael, mae'n bosibl dychwelyd i ddefnyddio Python 2.
Mae'r pen blaen gyda'r casglwr ar gyfer yr iaith Go (llgo) wedi'i eithrio o'r datganiad, a all gael ei ailstrwythuro yn y dyfodol.
Mae'r priodoledd fector-swyddogaeth-abi-amrywiad wedi'i ychwanegu at y cynrychioliad canolradd (IR) i ddisgrifio'r mapio rhwng ffwythiannau sgalar a fector i fectoreiddio galwadau. O llvm::VectorType mae dau fath o fector ar wahân llvm::FixedVectorType a llvm::ScalableVectorType.
Mae canghennu yn seiliedig ar werthoedd udef a phasio gwerthoedd undef i swyddogaethau llyfrgell safonol yn cael ei gydnabod fel ymddygiad heb ei ddiffinio. YN
memset/memcpy/memmove yn caniatáu pasio awgrymiadau undef, ond os yw'r paramedr â maint yn sero.
Mae LLJIT wedi ychwanegu cefnogaeth ar gyfer perfformio cychwyniadau statig trwy'r LLJIT::cychwyn a LLJIT::deinitialize methods. Mae'r gallu i ychwanegu llyfrgelloedd sefydlog at JITDylib gan ddefnyddio'r dosbarth StaticLibraryDefinitionGenerator wedi'i weithredu. Ychwanegwyd C API ar gyfer ORCv2 (API ar gyfer adeiladu casglwyr JIT).
Mae cefnogaeth ar gyfer proseswyr Cortex-A64, Cortex-A34, Cortex-A77 a Cortex-X78 wedi'i ychwanegu at gefnlen pensaernïaeth AArch1. Wedi gweithredu estyniadau ARMv8.2-BF16 (BFloat16) ac ARMv8.6-A, gan gynnwys RMv8.6-ECV (Rhithwiroli Gwell), ARMv8.6-FGT (Trapiau Graenog), ARMv8.6-AMU (Rhithwiroli Gweithgaredd Monitor) ac ARMv8.0-DGH (awgrym casglu data). Darperir y gallu i gynhyrchu cod ar gyfer swyddogaethau adeiledig sy'n rhwymo cyfarwyddiadau fector SVE.
Mae cefnogaeth ar gyfer proseswyr Cortex-M55, Cortex-A77, Cortex-A78 a Cortex-X1 wedi'i ychwanegu at gefnlen pensaernïaeth ARM. Estyniadau wedi'u gweithredu
Armv8.6-A Matrics Lluosi a RMv8.2-AA32BF16 BFloat16.
Mae cefnogaeth ar gyfer cynhyrchu cod ar gyfer proseswyr POWER10 wedi'i ychwanegu at gefnlen pensaernïaeth PowerPC. Mae optimeiddio dolen wedi'i ehangu ac mae cymorth pwynt arnawf wedi'i wella.
Mae'r backend ar gyfer pensaernïaeth RISC-V yn caniatáu derbyn clytiau sy'n cefnogi setiau cyfarwyddiadau estynedig arbrofol nad ydynt wedi'u cymeradwyo'n swyddogol eto.
Mae'r backend ar gyfer y bensaernïaeth AVR wedi'i drosglwyddo o'r categori arbrofol i sefydlog, wedi'i gynnwys yn y dosbarthiad sylfaenol.
Mae'r backend ar gyfer pensaernïaeth x86 yn cefnogi cyfarwyddiadau Intel AMX a TSXLDTRK. Ychwanegwyd amddiffyniad rhag ymosodiadau LVI (Chwistrelliad Gwerth Llwyth), ac mae hefyd yn gweithredu mecanwaith Ataliad Ochr-Effaith Gweithredu Sbectol cyffredinol i rwystro ymosodiadau a achosir gan gyflawni gweithrediadau ar hap ar y CPU.
Yn y cefn ar gyfer pensaernïaeth SystemZ, mae cefnogaeth ar gyfer MemorySanitizer a LeakSanitizer wedi'i ychwanegu.
Cefnogaeth ychwanegol ar gyfer ffeil pennawd gyda chysonion mathemategol i Libc++ .
Ehangwyd Galluoedd cysylltydd LLD. Gwell cefnogaeth i fformat ELF, gan gynnwys yr opsiynau ychwanegol "--lto-emit-asm", "--lto-whole-program-visibility", "-print-archive-stats", "-shuffle-sections", " -thinlto- single-module", "-unique", "-rosegment", "-threads=N". Ychwanegwyd opsiwn "--time-trace" i arbed yr olrhain i ffeil, y gellir ei ddadansoddi wedyn trwy'r rhyngwyneb olrhain chrome://yn Chrome.