Пакет включающий компиляторы языков C, C++, Objective-C, Fortran, Java и Ada. Лицензия: GPL.
Основные изменения в GCC 4.4.0 по сравнению с веткой GCC 4.3.x: - Добавлен
оптимизатор Graphite, основанный на полиэдральном промежуточном
представлении - технологии оптимизации для обеспечения параллельного
выполнения циклических операций. Оптимизация касается всех языков,
поддерживаемых GCC. Разработка позволяет значительно увеличить
производительность обычных приложений на многоядерных процессорах,
созданных без использования специальных библиотек распараллеливания,
например, Threading Building Blocks.
- Добавлены новый аллокатор регистров (IRA - integrated register allocator) и новый планировщик расстановки инструкций.
- Новые опции оптимизации: "-findirect-inlining", "-ftree-switch-conversion", "-ftree-builtin-call-dce" и "-fconserve-stack";
- Новые
опции предупреждения о потенциальных ошибках в коде: "-Wparentheses",
"-Wsequence-points", "-Wconversion", "-Wuninitialized" и т.д.
- Реализована поддержка версии 3 спецификации OpenMP (API для параллельных вычислений);
- Улучшена
поддержка грядущего С++ стандарта C++0x, например, в libstdc++
добавлены заголовочные файлы chrono, condition_variable, cstdatomic,
forward_list, initializer_list, mutex, ratio, system_error и thread;
- Произошли множественные изменения в поддержке языков C/C++/Fortran;
- Улучшена
поддержка уже поддерживаемых архитектур: добавлены средства оптимизации
для CPU ARM Cortex-A9, Cortex-R4 и Cortex-R4F, PowerPC e300c2, e300c3,
e500mc, IBM System z10 EC/BC; добавлена поддержка встроенных функций
Intel AES, Intel PCLMUL, Intel AVX; улучшена поддержка архитектур MIPS,
AVR, IA-32/x86-64, IA-32/IA64, PowerPC и т.д.
- GCC стал считать
ошибками некоторые программисткие "решения", который компилировались
ранее. Например, теперь не работает "#elif" без аргумента; "cstdio"
больше не подразумевает включение "string.h", "ios.h", "iomanip.h",
"streambuf.h" и "locale.h", а "stdint.h" не включает "string.h" и
"ios.h". ; строковые функции больше не принимают "char*" вместо "const
char*"; ужесточены требования к инициализации C++ классов.
|