I muri i nga marama e ono o te whakawhanaketanga, ka whakaatuhia te tukunga o te kaupapa LLVM 12.0 - he kete taputapu hototahi ki te GCC (kaiwhakahiato, kaiwhakatikatika me nga kaihanga waehere) e whakahiato ana i nga kaupapa ki roto i te bitcode takawaenga o nga tohutohu mariko rite-RISC (he miihini mariko taumata-iti me te pūnaha arotautanga taumata-maha). Ka taea te huri i te pseudocode i hangaia ma te whakamahi i te kaitoi JIT ki nga tohutohu miihini tika i te wa e mahia ana te kaupapa.
Whakapai ake i te Clang 12.0:
- Ko te tautoko mo nga huanga "te ahua" me te "kaore pea" e whakaarohia ana i roto i te paerewa C++20 kua whakatinanahia, kua whakahohea ma te taunoa, ka taea te whakamohio i te kaihoroi mo te tupono ka puta te hanga herenga (hei tauira, "[[pea pea" ]] mehemea (tupurangi > 0) {“).
- He tautoko taapiri mo AMD Zen 3 (-march=znver3), Intel Alder Lake (-march=alderlake) me Intel Sapphire Rapids (-march=sapphirerapids) tukatuka.
- He tautoko taapiri mo nga haki "-march=x86-64-v[234]" ki te kowhiri i nga taumata hoahoanga x86-64 (v2 - kapi SSE4.2, SSSE3, POPCNT me CMPXCHG16B toronga; v3 - AVX2 me MOVBE; v4 - AVX-512 ).
- He tautoko taapiri mo Arm Cortex-A78C (cortex-a78c), Arm Cortex-R82 (cortex-r82), Arm Neoverse V1 (neoverse-v1), Arm Neoverse N2 (neoverse-n2) me Fujitsu A64FX (a64fx) pūtukatuka. Hei tauira, kia taea ai te arotautanga mo nga PTM Neoverse-V1, ka taea e koe te tohu "-mcpu=neoverse-v1".
- Mo te hoahoanga AArch64, kua taapirihia nga haki whakahiato hou "-moutline-atomics" me "-mno-outline-atomics" kia taea ai te whakakore ranei i nga mahi kaiawhina mahi ngota, penei "__aarch64_cas8_relax". Ko enei mahinga ka kitea i te wa e mahi ana mena kei te waatea te tautoko LSE (Nga Toronga Pūnaha Nui) me te whakamahi i nga tohutohu tukatuka ngota kua whakaratohia, ka hoki ki te whakamahi i nga tohutohu LL/SC (Uta-hono/toa-ahua) mo te tukutahi.
- Kua taapirihia te whiringa "-fbinutils-version" ki te kowhiri i te putanga whainga o te huinga binutils mo te hototahi ki te hononga hono tawhito me te whanonga assembler.
- Mo nga konae whakahaere ELF, ina tohua te haki "-gz", ka whakahoehia te kopiri o nga korero patuiro ma te whakamahi i te whare pukapuka zlib ma te taunoa (gz=zlib). Ko te hono i nga konae ahanoa me lld, GNU binutils 2.26+ ranei. Hei whakaora i te hototahi ki nga putanga tawhito o nga binutils, ka taea e koe te tohu "-gz=zlib-gnu".
- Ko te atatohu 'tenei' kua tukakina inaianei me nga arowhai korekore me te whakakore (N). Hei tango i te huanga korekore ina hiahia koe ki te whakamahi i nga uara NULL, ka taea e koe te whakamahi i te "-fdelete-null-pointer-checks" kōwhiringa.
- I runga i te kaupapa Linux Mō ngā hoahoanga AArch64 me PowerPC, ka whakahohea te aratau "-fasynchronous-unwind-tables" hei whakaputa i ngā ripanga karanga wetewete, pērā i te GCC.
- I roto i te "#pragma clang loop vectorize_width" i taapirihia te kaha ki te tautuhi i nga whiringa "whakatika" (taunoa) me te "whakaahua" hei whiriwhiri i te tikanga vectorization. Ko te aratau "tauineine", motuhake i te roa o te vector, he whakamatautau, ka taea te whakamahi ki runga i nga taputapu e tautoko ana i te vectorization tauineine.
- Tautoko pūhara kua whakapaitia WindowsKua whakaritea ngā hanganga rua mana mō Windows I runga i ngā pūnaha Arm64, kei roto i tēnei ko te kaiwhakaemi Clang, te hononga LLD, me ngā whare pukapuka wā-oma o te kaiwhakaemi-rt. Ina hangaia mō ngā tūāpapa ūnga MinGW, ka tāpirihia te whakamutunga .exe, ahakoa te whakahiato-whakawhiti.
- Ko nga kaha e pa ana ki te tautoko mo OpenCL, OpenMP me CUDA kua whakawhānuihia. Ko nga whiringa taapiri "-cl-std = CL3.0" me "-cl-std = CL1.0" hei kowhiri i nga whiringa tonotono mo OpenCL 3.0 me OpenCL 1.0. Kua whakawhānuihia nga taputapu taatai.
- He tautoko taapiri mo nga tohutohu HRESET, UITR, me AVXVNNI i whakatinanahia i etahi o nga kai-tukatuka x86.
- I runga i nga punaha x86, ka taea te tautoko mo te "-mtune =" kōwhiringa ", ka whakahohe i nga arotautanga microarchitectural kua tohua, ahakoa te uara o "-march= "
- Kua pai ake te kaitirotiro pateko ki te tukatuka o etahi mahi POSIX me te tino pai ake te whakatau i nga hua o nga mahi herenga ina he maha nga uara tohu kei roto i te whakataurite. Kua taapirihia nga arowhai hou: fuchia.HandleChecker (whakaahua i nga kakau i roto i nga hanganga), webkit.UncountedLambdaCapturesChecker webkit me alpha.webkit.UncountedLocalVarsChecker (ka whai whakaaro ki nga ahuatanga o te mahi me nga tohu tohu i roto i te waehere miihini WebKit).
- I roto i nga korero e whakamahia ana i roto i te horopaki o nga taumau, ko te whakamahi i nga mahi hanga-roto __builtin_bitreverse*, __builtin_rotateleft*, __builtin_rotateright*, _mm_popcnt*, _bit_scan_forward, __bsfd, __bsfq, __bit_scan_reverse,__bsd, __bsd, __bsd, __bsd, __bsd, __bsd, __bsd, __bsd, wapq, _castf* , __rol* me __ror*.
- I taapirihia he whiringa BitFieldColonSpacing ki te whaipainga clang-format hei kowhiri i te mokowhiti huri noa i nga tohu, pou, me nga whakamaramatanga mara.
- Kei te pupuri tūmau clangd (Clang Server) i runga i te pūhara Linux Kua tino whakaitihia te whakamahinga mahara i te wā roa (kua waeahia ngā wā ki te malloc_trim hei whakahoki i ngā whārangi mahara kore utu ki te pūnaha whakahaere).
Nga mea hou i roto i te LLVM 12.0:
- Ko te tautoko mo te taputapu hanga llvm-build kua tuhia ki te Python kua whakamutua, engari kua huri katoa te kaupapa ki te whakamahi i te punaha hanga CMake.
- Kua whakapaitia te tautoko tūāpapa o te papamuri mō te hoahoanga AArch64. WindowsKa whakaritehia te whakaputanga tika o te putanga huihuinga mō ngā pūnaha ūnga Windows, kua arotauhia te whakaputa raraunga mō te "whakakore" (wetewete) o ngā waeatanga (kua whakaitihia te rahi o aua raraunga mā te 60%), kua tāpirihia te kaha ki te waihanga raraunga wetewete mā te whakamahi i ngā tohutohu a te kaiwhakakotahi .seh_*.
- Ko te tuara mo te hoahoanga PowerPC e whakaatu ana i nga arotautanga hou mo nga porowhita me te whakatakotoranga-a-roto, te tautoko i whakawhānuihia mo nga tukatuka Power10, te tautoko taapiri mo nga tohutohu MMA mo te raweke matrix, me te tautoko pai ake mo te punaha whakahaere AIX.
- Ko te tuara x86 he taapiri tautoko mo te AMD Zen 3, Intel Alder Lake me Intel Sapphire Rapids tukatuka, me nga tohutohu HRESET, UITR me AVXVNNI. Tautoko mo te MPX (Whakaaro Whakamaru Mahara) mo te tirotiro i nga tohu tohu kia kore e tautokohia nga rohe mahara (kaore tenei hangarau i te whanui, kua tangohia ketia mai i te GCC me te clang). Kua taapirihia te tautoko ki te kaikohikohi mo nga pimua {disp32} me {disp8} me nga kumara .d32 me .d8 hei whakahaere i te rahi o nga whakatiki operand me nga peke. Kua taapirihia he huanga hou "tune-cpu" hei whakahaere i te whakaurunga o nga arotautanga moroiti.
- He aratau hou “-fsanitize=unsigned-shift-base” kua taapirihia ki te kaitirotiro raru tauoti (integer sanitizer, “-fsanitize=integer”) kia kitea nga puhaketanga o nga tauoti karekau i haina i muri i te neke paku ki te taha maui.
- He tautoko taapiri mo nga momo kaitoro (asan, cfi, lsan, msan, tsan, ubsan sanitizer) Linux-ngā tohatoha me te whare pukapuka Musl paerewa.
- Kua whānuitia ngā āheinga hononga LLD. Kua whakapaitia te tautoko mō te hōputu ELF, tae atu ki te tāpiri i ngā kōwhiringa "--dependency-file", "--error-handling-script", "--lto-pseudo-probe-for-profiling", "--no-lto-whole-program-visibility". Kua whakapaitia te tautoko mō MinGW. Mō te hōputu Mach-O (macOS) kua whakatinanahia te tautoko mō ngā hoahoanga arm64, arm, me te i386, ngā arotautanga wā-hononga (LTO), me te wetewete puranga i te wā e whakahaerea ana te hapa.
- Ka whakatinanahia e Libc++ nga ahuatanga hou o te paerewa C++20, kua timata te whakawhanaketanga o nga ahuatanga o te tohu C++2b. He tautoko taapiri mo te hanga whare me te whakakore i te tautoko rohe (“-DLIBCXX_ENABLE_LOCALIZATION=OFF”) me nga taputapu mo te whakaputa tau pseudo-tupurangi (“-DLIBCXX_ENABLE_RANDOM_DEVICE=OFF”).
Source: opennet.ru
