Sakin GCC 9 compiler suite

Bayan shekara guda na ci gaba buga saki na free set na compilers GCC 9.1, babban fitowar farko a sabon reshen GCC 9.x. Daidai da sabon makirci Lambobin sakewa, an yi amfani da sigar 9.0 a cikin tsarin ci gaba, kuma jim kaɗan kafin a fito da GCC 9.1, reshen GCC 10.0 ya rigaya ya rabu, wanda a kan tushensa na gaba mai mahimmanci, GCC 10.1, za a kafa.

GCC 9.1 sananne ne don tabbatar da goyon baya ga ma'aunin C ++17, ci gaba da aiwatar da damar ma'aunin C++20 na gaba (mai suna C++ 2a), haɗawa a gaban gaba don yaren D, tallafi na ɓangare don OpenMP 5.0 , Kusan cikakken goyon baya ga OpenACC 2.5, ƙara haɓaka haɓakar haɓakawa da haɓakawa da haɓakawa a matakin ɗauri, haɓaka kayan aikin bincike da ƙari na sabbin gargaɗi, baya don OpenRISC, C-SKY V2 da AMD GCN GPU.

Main canji:

  • Ƙara goyon baya ga harshen shirye-shirye na D. GCC ya haɗa da gaban gaba tare da mai tarawa GDC (Gnu D Compiler) da ɗakunan karatu na runtime (libphobos), waɗanda ke ba ku damar amfani da daidaitattun GCC don gina shirye-shirye a cikin yaren shirye-shiryen D. Tsarin ba da damar tallafin harshe D a cikin GCC ya fara a 2011, amma ja a kan saboda buƙatar kawo lambar don dacewa da bukatun GCC da matsaloli tare da canja wurin haƙƙin mallakar fasaha zuwa Digital Mars, wanda ke haɓaka harshen shirye-shiryen D;
  • An yi gyare-gyare ga janareta na lambar. Misali, an aiwatar da amfani da dabaru daban-daban don faɗaɗa maganganun Canjawa (tsalle tebur, gwajin bit, bishiyar yanke shawara) dangane da yanayi. Ƙara ikon canza ayyuka na layi wanda ya haɗa da magana mai sauyawa ta amfani da haɓakawa "-ftree-switch-conversion" (misali, saitin yanayi kamar "harka 2: yaya = 205; karya; shari'ar 3: ta yaya = 305; karya). ;" za a canza zuwa "100 * yaya + 5";
  • Ingantattun ingantattun abubuwan ingantawa tsakanin hanyoyin sadarwa. An daidaita saitunan ƙaddamar da layi don manyan lambobin C ++ na zamani kuma an faɗaɗa su tare da sababbin sigogi max-inline-insns-small, max-inline-insns-size, uninline-function-insns, uninline-function-insns, uninline-time-time, uninline-thunk-insns da uninline. -lokaci-lokaci. Ingantattun daidaito da tashin hankali na rabuwar sanyi/zafi. Ingantattun scalability don girma sosai sassan fassara (misali, lokacin amfani da haɓakawa a matakin haɗin kai zuwa manyan shirye-shirye);
  • An inganta tsarin ingantawa dangane da sakamakon bayanan lambar (PGO-Profile-guided ingantawa), wanda ke haifar da mafi kyawun lambobi dangane da nazarin halaye na aiwatar da lambar. Zaɓin taƙaitawa"-fprofile-amfani"yanzu ya haɗa da hanyoyin ingantawa" -fversion-loops-for-strides", "-floop-interchange", "-floop-unroll-and-jam" da "-ftree-loop-distribution". Cire hada da histograms tare da ƙididdiga a cikin fayiloli, wanda ya rage girman fayiloli tare da bayanan martaba (a halin yanzu ana samar da histogram a kan tashi yayin yin haɓakawa yayin haɗawa);
  • Ingantattun Haɗin Lokacin Haɓaka (LTO). An ba da sauƙi na nau'i kafin samar da sakamakon, wanda ya sa ya yiwu a rage girman girman fayilolin LTO, rage yawan ƙwaƙwalwar ajiya a matakin ɗaure, da inganta daidaituwa na ayyuka. An ƙara adadin ɓangarori (-param lto-partitions) daga 32 zuwa 128, wanda ke haɓaka aiki akan tsarin tare da adadi mai yawa na zaren CPU. An ƙara siga don sarrafa adadin hanyoyin ingantawa
    "-param lto-max-streaming-parallelism";

    Sakamakon haka, idan aka kwatanta da GCC 8.3, ingantawar da aka gabatar a cikin GCC 9 yarda rage lokacin tattara Firefox 5 da LibreOffice 66 da kusan 6.2.3%. Girman fayilolin abu ya ragu da kashi 7%. Lokacin ɗaure akan 8-core CPU ya ragu da 11%. Matsayin ingantawa na jerin matakan haɗin kai yanzu shine 28% cikin sauri kuma yana cinye 20% ƙarancin ƙwaƙwalwar ajiya. Amfanin ƙwaƙwalwar ajiya na kowane mai sarrafawa na matakin daidaitacce na LTO ya ragu da 30%;

  • Yawancin ƙayyadaddun ƙayyadaddun shirye-shirye ana aiwatar da su don C, C++ da harsunan Fortran Buɗe ACC 2.5, wanda ke bayyana kayan aikin don sauke ayyukan akan GPUs da na'urori na musamman kamar NVIDIA PTX;
  • An aiwatar da wani ɓangare na tallafi don ma'auni don C da C++ BuɗeMP 5.0 (Buɗe Multi-Processing), wanda ke bayyana API da hanyoyin amfani da hanyoyin shirye-shirye na layi ɗaya don C, C ++ da harsunan Fortran akan tsarin multi-core da matasan (CPU + GPU / DSP) tare da ƙwaƙwalwar ajiyar ajiya da raka'a vectorization (SIMD) ;
  • An ƙara sabbin gargaɗi don yaren C: "-Waddress-na-cushe-memba"(ƙimar ma'auni mara daidaituwa ga ɗimbin memba na tsari ko ƙungiyar) da
    «-Wabsolute-daraja"(lokacin samun damar ayyuka don ƙididdige cikakkiyar ƙima, idan akwai aiki mafi dacewa don ƙayyadadden hujja, alal misali, fabs (3.14) ya kamata a yi amfani da shi maimakon abs (3.14). Sabbin gargaɗin da aka ƙara don C++: "-Kwafi-kwafi",
    "-Winit-jerin-rayuwa", "-Wredundant-move", "-Wpessimizing-move" da "-Wclass-canzawa". An faɗaɗa faɗakarwa da yawa a baya;

  • Ƙara goyan bayan gwaji don wani ɓangare na daidaitaccen harshen C na gaba, mai suna C2x. Don ba da damar tallafin C2x, yi amfani da zaɓuɓɓukan "-std=c2x" da "-std=gnu2x" (don ba da damar kari na GNU). Ma'auni har yanzu yana kan matakin farko na ci gaba, sabili da haka, na iyawar sa, kawai kalmar _Static_assert tare da hujja ɗaya yana goyan bayan (_Static_assert tare da hujjoji guda biyu an daidaita su a cikin C11);
  • An ayyana goyan bayan ma'aunin C++17 barga. A gaban gaba, ikon harshe na C ++ 17 an cika aiwatar da su, kuma a cikin libstdc ++, ayyukan ɗakin karatu da aka ayyana a cikin ma'auni suna kusa da cikakken aiwatarwa;
  • Ci gaba aiwatarwa abubuwa na gaba C ++ 2a misali. Misali, an ƙara ikon haɗawa da jeri a lokacin farawa, an aiwatar da kari don maganganun lambda, tallafi ga membobin komai na tsarin bayanai kuma an ƙara halayen da wataƙila / da ba za a iya yiwuwa ba, an ba da ikon kiran ayyukan kama-da-wane a cikin yanayin yanayi. , da dai sauransu.
    Don kunna goyon bayan C++2a, yi amfani da zaɓuɓɓukan "-std=c++2a" da "-std=gnu++2a". Ƙara bit da sigar fayilolin rubutun zuwa libstdc ++ don C ++ 2a, std :: cire_cvref, std :: unwrap_reference, std :: unwrap_decay_ref, std :: is_nothrow_convertible da std :: nau'in_identity, std :: tsakiyar:: aiki std , std :: daure_gaba,
    std :: ziyarar, std :: is_constant_evaluated da std :: ɗauka_aligned, ƙarin tallafi don nau'in char8_t, aiwatar da ikon duba prefix da ƙari na kirtani (farawa_tare, ƙare_tare);

  • Ƙara tallafi don sabbin na'urori na ARM
    Cortex-A76, Cortex-A55, Cortex-A76 DynamIQ big.LITTLE da Neoverse N1. Ƙara goyon baya don umarnin da aka gabatar a cikin Armv8.3-A don aiki tare da lambobi masu rikitarwa, tsararrun lambar bazuwar (rng) da alamar ƙwaƙwalwar ajiya (memtag), da kuma umarnin don toshe hare-haren da suka danganci kisa da aiki na sashin tsinkayar reshe. . Don gine-ginen AArch64, an ƙara yanayin kariya intersection na tari da tsibi ("-fstack-karo-kariya"). Don amfani da fasalulluka na gine-ginen Armv8.5-A, an ƙara zaɓin “-march=armv8.5-a”

  • Ya haɗa da baya don ƙirƙirar lamba don AMD GPUs dangane da microarchitecture na GCN. Aiwatar da aiwatarwa a halin yanzu yana iyakance ga haɗakar aikace-aikacen zaren guda ɗaya (tallafi don aiwatar da ƙididdiga masu yawa ta hanyar OpenMP da OpenACC za a ba da su daga baya) da goyan bayan GPU Fiji da Vega 10;
  • An ƙara sabon baya don masu sarrafawa BudeRISC;
  • Ƙara baya don masu sarrafawa C-SKY V2, wanda kamfanin kasar Sin mai suna iri daya ya kera na na'urorin masu amfani daban-daban;
  • Duk zaɓuɓɓukan layin umarni waɗanda ke aiki da ƙimar byte suna goyan bayan ƙararrakin kb, KiB, MB, MiB, GB da GiB;
  • An aiwatar zaɓin "-flive-patching=[inline-only-static|inline-clone]" zaɓi yana ba ku damar cimma amintaccen tari don tsarin facin rai saboda sarrafa matakan matakai da yawa akan amfani da tsaka-tsaki (IPA) ingantawa;
  • Ƙara wani zaɓi na "--completion" don ingantaccen iko na kammala zaɓi lokacin amfani da bash;
  • Kayan aikin bincike suna ba da nunin faifan rubutun tushe masu nuna lambar layi da alamar gani da ke da alaƙa, kamar nau'ikan operand. Don musaki nunin lambobi da alamun layi, ana ba da zaɓuɓɓukan "-fno-diagnostics-show-line-lambobi" da "-fno-diagnostics-show-labels";

    Sakin GCC 9 compiler suite

  • Fadada kayan aiki don bincikar kurakurai a cikin lambar C ++, ingantaccen karantawa na bayanai game da abubuwan da ke haifar da kurakurai da kuma nuna alamun matsala;

    Sakin GCC 9 compiler suite

  • Ƙara wani zaɓi "-fdiagnostics-format=json", wanda ke ba da damar samar da kayan aikin bincike a cikin tsarin da ake iya karantawa na inji (JSON);
  • Ƙara sababbin zaɓuɓɓukan bayanin martaba "-fprofile-filter-files" da "-fprofile-exclude-files" don zaɓar fayilolin tushen da za a sarrafa;
  • AdireshinSanitizer yana ba da ƙirƙira mafi ƙarancin lambar tabbatarwa don masu canji ta atomatik, wanda ke rage yawan ƙwaƙwalwar ajiyar fayil ɗin da ake iya aiwatarwa da ake dubawa;
  • Ingantacciyar fitarwa a cikin "-fopt-bayanai» (cikakken bayani game da ƙarin ingantawa). An ƙara sabon prefixes "wanda aka inganta" da "wanda aka rasa", ban da prefix "bayanin kula". Ƙarin fitar da bayanai game da yanke shawara akan buɗewar layin layi da vectorization na hawan keke;
  • Ƙara zaɓin "-fsave-optimization-record", lokacin da aka ƙayyade, GCC yana adana fayil ɗin SRCFILE.opt-record.json.gz tare da bayanin yanke shawara kan amfani da wasu ingantawa. Sabon zaɓi ya bambanta da yanayin "-fopt-info" ta haɗa da ƙarin metadata, kamar bayanai game da bayanin martaba da sarƙoƙin layi;
  • Zaɓuɓɓukan da aka ƙara "-fipa-stack-alignment" da "-fipa-reference-addressable" don sarrafa daidaitawar tari da kuma amfani da hanyoyin magancewa (rubutu-kawai ko karanta-daidai) don masu canji a tsaye yayin haɓakawa tsakanin tsarin aiki;
  • An gabatar da sabbin ayyukan ginanniyar don sarrafa ɗaurin sifa da kuma ɗabi'ar da ke da alaƙa da tsinkayar reshe da aiwatar da ƙayyadaddun umarni: "__builtin_yana da sifa«,«__builtin_ tsammanin_tare da_yiwuwa"Kuma"__builtin_speculation_safe_darajar". An ƙara sabon sifa don ayyuka, masu canji da iri kwafin;
  • An aiwatar da cikakken tallafi don shigarwa/fitarwa asynchronous don yaren Fortran;
  • Taimako ga Solaris 10 (* - * -solaris2.10) da Cell / BE (Cell Broadband Engine SPU) dandamali an lalata su kuma za a cire su a cikin babban sakin na gaba. An daina goyan bayan gine-ginen Armv2, Armv3, Armv5 da Armv5E. An dakatar da goyan bayan Intel MPX (Kariyar Kariyar Memory)

source: budenet.ru

Add a comment