Ohjelmointi

GCC 10 -sarjan kääntäjät saapuvat merkittävään päivitykseen

GCC (GNU Compiler Collection) 10.1, alustan merkittävä julkaisu, julkaistiin 7. toukokuuta 2020, ja siinä oli kohokohtia, mukaan lukien C ++ 20 -ominaisuudet ja C2X-kielituki. C2X on seuraava merkittävä C-kielen versio, joka on tarkoitus saada aikaan vuonna 2022.

GCC 10: n julkaisutiedot osoittavat, että lukuisia C ++ 20 -ominaisuuksia on toteutettu, mukaan lukien salliminen inline-kokoonpano constexpr-funktioissa ja strukturoitujen sidosten laajentaminen. Myös C ++ 20: lle GCC 10 sallii muunnokset tuntemattomasti sidotuiksi matriiseiksi, sallii triviaalin oletusalustamisen kontekstikonteksteissa, jatkuva avainsana ja vanhentanuthaihtuva avainsana.

C2X: ssä, joka on tuleva ISO C -standardin versio, syntaksissa tuetaan useita ominaisuuksia-std = c2x ja -std + gnu2x. Näitä ovat strftime tiedostoa tukeva muodon tarkistus % OB ja % Ob muodot ja UTF-8-merkkivakiot u8 '' -syntaksilla.

GCC, joka on ollut käytössä yli 33 vuotta, sisältää käyttöliittymät ja kirjastot C: lle, C ++: lle, Fortranille, Adalle, Go: lle ja D: lle. Tiedotus on lähetetty GCC 10: een siirtämisestä. Muita GCC 10.1: n uusia ominaisuuksia ovat

  • Sisäänrakennettuja toimintoja on lisätty, mukaan lukien a has_builtin esiprosessorioperaattori, jota voidaan käyttää GCC: n ja muiden sitä tukevien kääntäjien tarjoamien sisäänrakennettujen toimintojen tuen kyselyyn.
  • Komento-vaihtoehdot on lisätty. Nämä sisältävät-asetus-dce, poistaa tarpeettomat parit Uusi ja poistaa - operaattorit ja -fanalysaattori, jotta uusi staattinen analyysilippu ja siihen liittyvät varoitukset voidaan ottaa käyttöön. Viimeksi mainitun vaihtoehdon olisi katsottava olevan kokeellisessa vaiheessa.
  • Menettelyjen välisiä optimointiparannuksia tehtiin. Näihin kuuluu toimenpiteiden välisten skalaarikorvausten (IPA-SRA) uudelleen käyttöönotto, joka toteutettiin uudelleen toimimaan linkkiaikana. IPA-SRA voi nyt myös poistaa laskelmat ja palauttaa käyttämättömät palautusarvot.
  • Linkkiajan optimointiparannuksiin sisältyy uusi binääri ito-dump. Ohjelma voi lähettää erilaisia ​​tietoja LTO: sta tavu objektitiedosto.
  • Profiiliin perustuvia optimointiparannuksia on tehty, mukaan lukien profiilin ylläpidon parantaminen kokoamisen aikana ja kuuma / kylmä osiointi.
  • C-perheelle pääsy toiminto ja tyyppi attribuutti on lisätty kuvaamaan, kuinka funktio käyttää osoitteen tai viitteen avulla sille välitettyjä objekteja, ja liittämään tällaiset argumentit objektin kokoa ilmaiseviin kokonaislukuargumentteihin. Määritettä käytetään mahdollistamaan virheellisten käyttöoikeuksien havaitseminen käyttäjän määrittelemillä toiminnoilla. Olemassa oleviin varoituksiin on myös uusia varoituksia ja parannuksia. Yksi varoitus, -Nollatut pituudet, varoittaa pääsystä nollapituisten taulukoiden elementteihin, jotka saattavat olla päällekkäisiä saman objektin muiden jäsenten kanssa.
  • C ++ 14: n ja C ++ 17: n välinen ABI-yhteensopimattomuus korjattiin. Joillakin kohteilla luokka, jolla on nollakokoinen alaobjekti, läpäistään väärin, kun se kootaan muodossa C ++ 17 tai C ++ 20.
$config[zx-auto] not found$config[zx-overlay] not found