Το LLVM 12.0 έχει ήδη κυκλοφορήσει και αυτά είναι τα νέα του

LLVM

Μετά από έξι μήνες ανάπτυξης παρουσιάστηκε η έναρξη της νέας έκδοσης του έργου LLVM 12.0 Συμβατό με το GCC (Compilers, Optimizers και Code Generators) που μεταγλωττίζει προγράμματα σε ενδιάμεσο bitcode εικονικών οδηγιών παρόμοιο με το RISC (μια εικονική μηχανή χαμηλού επιπέδου με σύστημα βελτιστοποίησης πολλαπλών επιπέδων).

Σε αυτήν τη νέα έκδοση μπορούμε να βρούμε διάφορες βελτιώσεις και νέα, από το οποίο μπορούμε να επισημάνουμε ένα νέο χαρακτηριστικό συνάρτησης "tune-cpu" για υποστήριξη -mune ως gcc, καθώς και βελτιώσεις στις διάφορες πλατφόρμες.

Σημαντικά νέα χαρακτηριστικά του LLVM 12.0

Σε αυτήν τη νέα έκδοση, μπορούμε να το βρούμε υποστήριξη για το κιτ εργαλείων build llvm-build γραμμένο σε python έχει διακοπεί, αντί για το οποίο το έργο έχει αλλάξει εντελώς στη χρήση του συστήματος κατασκευής CMake.

Το backend για την αρχιτεκτονική AArch64 έχει βελτιωμένη υποστήριξη για την πλατφόρμα των Windows: η σωστή παραγωγή εξόδου συναρμολόγησης παρέχεται για συστήματα Windows στόχου, η παραγωγή δεδομένων σε κλήσεις ξετυλίγματος έχει βελτιστοποιηθεί (το μέγεθος αυτών των δεδομένων έχει μειωθεί κατά 60%), η δυνατότητα δημιουργίας δεδομένων έχει προστεθεί χαλαρώστε χρησιμοποιώντας οδηγίες seh.

ενώ Το backend αρχιτεκτονικής PowerPC περιλαμβάνει νέες βελτιστοποιήσεις για ενσωματωμένες και βρόγχες εφαρμογές, βελτιώσεις στην υποστήριξη για επεξεργαστές Power10, πρόσθετη υποστήριξη για οδηγίες MMA για χειρισμό συστοιχιών και βελτιωμένη υποστήριξη για το λειτουργικό σύστημα AIX.

να Το x86 πρόσθεσε υποστήριξη για επεξεργαστές AMD Zen 3, Intel Alder Lake και Intel Sapphire Rapids, καθώς και οδηγίες για επεξεργαστές HRESET, UINTR και AVXVNNI. Καταργήθηκε υποστήριξη για επεκτάσεις MPX (επεκτάσεις προστασίας μνήμης) για έλεγχο σημείων έναντι ορίων περιοχής μνήμης (αυτή η τεχνολογία δεν έχει χρησιμοποιηθεί ευρέως και έχει ήδη αφαιρεθεί από το GCC και το clang). Το assembler έχει προσθέσει υποστήριξη για τα προθέματα {disp32} και {disp8} και τα επίθημα .d32 και .d8 για τον έλεγχο του μεγέθους της μετατόπισης τελεστών και μεταβάσεων. Προστέθηκε ένα νέο χαρακτηριστικό "tune-cpu" για τον έλεγχο της ενεργοποίησης των μικρο-αρχιτεκτονικών βελτιστοποιήσεων.

Μια άλλη αλλαγή που ξεχωρίζει είναι ότι προστέθηκε μια νέα λειτουργία "-fsanitize = unsigned-shift-base" για την ανίχνευση ακέραιων υπερχείλισης ακέραιου μετά από μια μικρή μετατόπιση προς τα αριστερά. Για τη μορφή Mach-O (macOS), εφαρμόζεται υποστήριξη για αρχιτεκτονικές arm64, arm και i386, βελτιστοποίηση σταδίου σύνδεσης (LTO) και στοίβες ξεκούρασης κατά το χειρισμό εξαιρέσεων.

επίσης επισημαίνεται ένα νέο χαρακτηριστικό "tune-cpu" που επιτρέπει το oΟι βελτιστοποιήσεις μικροαρχιτεκτονικής εφαρμόζονται ανεξάρτητα από το χαρακτηριστικό "target-cpu" ή από το TargetMachine CPU που θα χρησιμοποιηθεί για την επιλογή του συνόλου εντολών. Εάν το χαρακτηριστικό δεν υπάρχει, η CPU συντονισμού θα ακολουθήσει τη CPU προορισμού.

Το Libc ++ εφαρμόζει νέες δυνατότητες του προτύπου C ++ 20 και άρχισε να αναπτύσσει χαρακτηριστικά της προδιαγραφής C ++ 2b, συν πρόσθετη υποστήριξη για συναρμολόγηση με απενεργοποίηση υποστήριξης για εντοπισμό ("-DLIBCXX_ENABLE_LOCALIZATION = OFF") και συσκευές για τη δημιουργία ψευδο-τυχαίων αριθμών.

ενώ των βελτιώσεων για το Clang 12, για την αρχιτεκτονική AArch64, προστέθηκαν νέες σημαίες μεταγλωττιστή "-Moutline-atomics" και "-mno-outline-atomics" για ενεργοποίηση και απενεργοποίηση ατομικών βοηθητικών λειτουργιών όπως "__aarch64_cas8_relax". Αυτές οι συναρτήσεις χρόνου εκτέλεσης καθορίζουν εάν υπάρχει υποστήριξη για μεγάλες επεκτάσεις συστήματος (LSE) και χρησιμοποιήστε τις παρεχόμενες οδηγίες ατομικού επεξεργαστή ή επαναφορά για να χρησιμοποιήσετε οδηγίες LL / SC (Load-link / store-conditional) για συγχρονισμό.

Ο δείκτης «αυτό» υποβάλλεται πλέον σε επεξεργασία με μηδενικούς και απαράδεκτους ελέγχους (Ν). Η επιλογή "-fdelete-null-pointer -ecks" μπορεί να χρησιμοποιηθεί για την κατάργηση του μη μηδενικού χαρακτηριστικού όταν απαιτούνται τιμές null.

Στο Linux για τις αρχιτεκτονικές AArch64 και PowerPC, το "-fasynchronous -wind-tables" έχει τη δυνατότητα δημιουργίας πινάκων ρολών κλήσεων, όπως στο GCC.

Στο "#pragma clang loop vectorize_width" προστέθηκε η δυνατότητα καθορισμού των επιλογών "fixed" (default) και "scalable" για να επιλέξετε τη μέθοδο vectorization.

Στον διακομιστή προσωρινής αποθήκευσης clangd (Clang Server) σε Linux, η κατανάλωση μνήμης κατά τη μακροχρόνια λειτουργία μειώνεται σημαντικά (παρέχεται περιοδική κλήση στο malloc_trim για την επιστροφή δωρεάν σελίδων μνήμης στο λειτουργικό σύστημα).

Τελικά αν ενδιαφέρεστε να μάθετε περισσότερα γι 'αυτό σχετικά με αυτήν τη νέα έκδοση, μπορείτε Ανατρέξτε στις λεπτομέρειες παρακάτω. σύνδεσμο


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: AB Internet Networks 2008 SL
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.