Tags Posts tagged with "clang"

clang

przez -
4 931
LLVM

Chris Lattner ogłosił wydanie LLVM 3.2 razem z z front-endem kompilatora dla języków C, C++ oraz Objective-C – Clang 3.2. Projekt LLVM obejmuje narzędzia takie jak kompilator języków C/C++/Objective-C – Clang, bibliotekę kompilatora czasu pracy (runtime compiler) compiler-rt, niskopoziomowy debugger LLDB, biblioteka standardowa libc++ dla C++ i VMKit JVM używająca LLVM dla kompilacji statycznej i JIT. Celem projektu jest stworzenie alternatywy dla kompilatora z projektu GCC. Prace nad projektami sponsorowane są przez Apple, a wszystko wydawane jest na licencji BSD.

W nowej wersji dodano nowy potężniejszy zamiennik skalara dla modelu agregatorów (SROA). Generował on kod, który mógł być optymalizowano o wiele łatwiej, podczas dalszego łańcucha kompilacji. W przeszłości skalowanie powodowało problemy i SROA został ograniczony do małych agregatów. Dzięki nowym algorytmom owe limity zostały zdjęte.

Backend NVPTX zastąpił obecny do tej pory backend PTX. Bazuje na kodzie LLVM, używanym w kompilatorach nVidia CUDA i OpenCL. NVPTX jest kompatybilny ze starszymi backendami i wspiera funkcje NVVM intrinsics, zdefiniowane w nVidia Compiler SDK. Dodano nowy wektoryzer pętli, który lepiej współgra z małymi pętlami, ale został on domyślnie wyłączony. Można go uruchomić za pomocą flagi: -mllvm-vectorize-loops.

Clang otrzymał lepsze raportowanie diagnostyczne, które wyłapuje więcej błędów i wiadomości informujących o nich. Pojawiło się wsparcie atrybutu tls_model, który pozwala ustawić, jakie ma być używane sortowanie trybu pamięci lokalnej wątku. Udoskonalono bezpieczeństwo typów.

Dodano wtyczkę DragonEgg GCC, która pozwala wspiera ładowanie trybu pamięci lokalnej wątku. Dodatkowo DragonEgg nie wymaga więcej GCC, do budowania ze wsparciem LTO. Biblioteka uruchomieniowa compiler-rt zawiera wykrywacz trasy daty ThreadSanitizer oraz udoskonalenia dla AddressSanitizer.

przez -
1 882
LLVM

Chris Lattner ogłosił wydanie LLVM 3.1 razem z językiem programowania Clang. LLVM jest kompilatorem napisanym w C++, który został zaprojektowany do optymalizacji compile-time, link-time, run-time, i idle-time programów napisanych w dowolnych językach programowania. Clang to frontend kompilatora dla języków C, C++ oraz Objective-C, stworzony w ramach projektu LLVM, który jest używany jako back-end (generator kodu natywnego i optymalizator). Celem projektu jest stworzenie alternatywy dla kompilatora z projektu GCC. Prace nad projektami sponsorowane są przez Apple, a wszystko wydawane jest na licencji BSD.

Clang:

  • Mocno udoskonalone rozszerzone wsparcie dla C++11, w tym lambdas, listy inicjalizacyjne, literały zdefiniowane przez użytkownika i operacje atomowe (zmiany muszą zostać w całości zatwierdzone lub zmiana obiektów współdzielonych jest, z punktu widzenia procesu jest niepodzielna)
  • Nowa biblioteka narzędziowa do łatwego budowania niezależnych narzędzi clang
  • Rozszerzone wsparcie dla literałów w Objective C

DragonEgg:

  • Częściowe wsparcie dla GCC 4.7. Wsparcie dla Ada jest nadal kiepskie, ale reszta języków ma się dobrze
  • Wsparcie dla procesorów ARM
  • Lepsza optymalizacja dla Fortrana i innych języków
  • Dodano pakiet testowania regresji/błędów w oprogramowaniu

Polly – Polyhedral Optimizer:

  • Polly stała się częścią projektu LLVM
  • Można ładować polly bezpośrednio do clang (uruchamiane przez polecenie -O3 -mllvm -polly)
  • Zintegrowano automatyczny optymalizator harmonogramu

przez -
1 840
LLVM

Wydano LLVM 3.0 razem z językiem programowania Clang. LLVM jest kompilatorem napisanym w C++, który został zaprojektowany do optymalizacji compile-time, link-time, run-time, i „idle-time” programów napisanych w dowolnych językach programowania. Clang to frontend kompilatora dla języków C, C++ oraz Objective-C, stworzony w ramach projektu LLVM, który jest używany jako back-end (generator kodu natywnego i optymalizator). Celem projektu jest stworzenie alternatywy dla kompilatora z projektu GCC. Prace nad projektami sponsorowane są przez Apple, a wszystko wydawane jest na licencji BSD.

Kompilator Clang C/C++ w LLVM 3.0:

  • Usprawnione wsparcie C++ w budowaniu oprogramowania, szczególnie stabilność i diagnostyka błędów w C++
  • Ulepszone wsparcie C++0x, jednakże nadal niepełne
  • Wsparcie kilku funkcjonalności standardu C1x
  • Ulepszone wsparcie Objective-C

DragonEgg dla LLVM 3.0:

  • Pełne wsparcie GCC 4.6 w celu zastąpienia optymalizatorów GCC z LLVM
  • DragonEgg nie wymaga więcej łatek GCC, jednakże wtyczka ta może być bez problemu ładowana z wersjami GCC 4.5/GCC 4.6
  • Dodano opcje, które pozwalają używać optymalizatorów zarówno GCC, jak i LLVM. Opcja ta pozwala dostarczyć maksymalną wydajność, jednakże jest nadal eksperymentalna
  • Frontend DragonEgg dla GCC w pełni wspiera języki programowania C, C++, Fortran, i ADA. Dodano także częściowe wsparcie dla Java, Objective-C, Objective-C++, i Google Go.

Inne zmiany LLVM:

  • Standardowa biblioteka C++ libc++ i compiler_rt są od teraz licencjonowane na zasadach MIT i UIUC
  • Standardowa biblioteka LLVM C++ będzie oczekiwana, jako domyślna implementacja STL we FreeBSD 10.0
  • VMKit – Wirtualna Maszyna Javy dla LLVM od teraz wspiera pre-compilation, własne metody wirtualne, lepsze wsparcie wcięcia i nowy model wyjątków
  • LLVM IR posiada pełne wsparcie dla atomowych operacji na pamięci, które są wymagane do wspierania C++11 (C++0x) and C1x
  • Nowy „greedy” alokator rejestrów zastąpił linear-scan alokator rejestrów
  • Pomniejsze usprawnienia dla backendu MIPS
  • Ulepszono nieznacznie architekturę backendu MIPS do LLVM
  • AVX – Advanced Vector Extensions posiadają pełne wsparcie w LLVM i są używane w procesorach AMD Bulldozer oraz Intel Sandy Bridge
  • Assembler/Diassebler posiada nowy zestaw instrukcji dla Intel Atom, Intel Ivy Bridge, SSE4a/BMI, rdrand i innych
  • Niewielki wzrost wydajności dla SoC ARM Cortex-A9. Ulepszono także wsparcie serii Cortex-M i wydajność kodu ARM NEON

Polecane

fritz3000

0 66
Jeśli mamy problem z wifi należy najpierw popróbować z rozwiązaniami lokalizacyjnym, czasami kanały mogą być zapchane i to powoduje problemy z łącznością....