LINUX.ORG.RU
ФорумTalks

GCC 4.9.0-RC1

 ,


0

2

We have reached zero P1 regressions today (and < 100 important regressions) and the branches/gcc-4_9-branch has been created today and GCC 4.9.0-rc1 built and announced.

  • Support for a number of older systems and recently unmaintained or untested target ports of GCC has been declared obsolete in GCC 4.9. Unless there is activity to revive them, the next release of GCC will have their sources permanently removed.
  • AddressSanitizer, a fast memory error detector, is now available on ARM.
  • UndefinedBehaviorSanitizer (ubsan), a fast undefined behavior detector, has been added and can be enabled via -fsanitize=undefined. Various computations will be instrumented to detect undefined behavior at runtime. UndefinedBehaviorSanitizer is currently available for the C and C++ languages.
  • Major Link-time optimization (LTO) improvements. Memory usage building Firefox with debug enabled was reduced from 15GB to 3.5GB; link time from 1700 seconds to 350 seconds.
  • Version 4.0 of the OpenMP specification is now supported for the C and C++ compilers. The new -fopenmp-simd option can be used to enable OpenMP's SIMD directives, while ignoring other OpenMP directives. The new -fsimd-cost-model= option permits to tune the vectorization cost model for loops annotated with OpenMP and Cilk Plus simd directives; -Wopenmp-simd warns when the current costmodel overrides simd directives set by the user.
  • Support for colorizing diagnostics emitted by GCC has been added. The -fdiagnostics-color=auto will enable it when outputting to terminals, -fdiagnostics-color=always unconditionally. The GCC_COLORS environment variable can be used to customize the colors or disable coloring.
  • ISO C11 atomics, thread-local storage, generic selections are now supported.
  • A new C extension __auto_type provides a subset of the functionality of C++11 auto in GNU C.
  • G++ supports C++1y lambda capture initializers, polymorphic lambdas, variable length arrays, and digit separators.
  • Improved support for C++11, improved experimental support for the upcoming ISO C++ standard, C++14.
  • GCC 4.9 provides a complete implementation of the Go 1.2.1 release.
  • A number of infrastructural changes have been made to both the ARM and AArch64 backends to facilitate improved code-generation.
  • Intel AVX-512 support was added to GCC. That includes inline assembly support, new registers and extending existing ones, new intrinsics (covered by corresponding testsuite), and basic autovectorization. AVX-512 instructions are available via the following GCC switches: AVX-512 foundation instructions: -mavx512f, AVX-512 prefetch instructions: -mavx512pf, AVX-512 exponential and reciprocal instructions: -mavx512er, AVX-512 conflict detection instructions: -mavx512cd.
  • Better inlining of memcpy and memset that is aware of value ranges and produces shorter alignment prologues.
  • GCC now supports the new Intel microarchitecture named Silvermont through -march=silvermont, Broadwell through -march=broadwell, optimizing for other Intel microarchitectures have been renamed to -march=nehalem, westmere, sandybridge, ivybridge, haswell, bonnell.

>>> Status Report
>>> Changes, New Features, and Fixes

★★★★★

РК это хорошо, но интересно лишь авторам компиляторов и тем немногим у кого улей в жопе.
Тем более, что очень уж важных изменений я не вижу.
Ок, ждём релиза.

Stahl ★★☆ ()
Ответ на: комментарий от Stahl

Stahl

...важных изменений я не вижу...

Но ведь:

Support for colorizing diagnostics emitted by GCC has been added

!!!

А вообще, как-то мало, да...

jeuta ★★★★ ()
Ответ на: комментарий от Stahl

А это:

AddressSanitizer, a fast memory error detector, is now available on ARM.

По-моему тянет на важное

pylin ★★★★★ ()
Ответ на: комментарий от pylin

ARM

По-моему тянет на важное

Ну не знаю. По-моему это сродни ускорению компиляции под PowerPC на 0.5%. Для кого-то это конечно хорошо, но для 95% пользователей GCC это пофиг.

Stahl ★★☆ ()
Ответ на: комментарий от Stahl

Ну если по такой логике рассуждать, то и сам-то GCC важен 5% пользователей ЭВМ:)

pylin ★★★★★ ()
Ответ на: комментарий от Stahl

Тем более, что очень уж важных изменений я не вижу.

Major Link-time optimization (LTO) improvements. Memory usage building Firefox with debug enabled was reduced from 15GB to 3.5GB; link time from 1700 seconds to 350 seconds.

Stil ★★★★★ ()
Ответ на: комментарий от Stil

И? Ну выдали подсрачник линкеру.
Время линковки пренебрежимо мало по сравнению со временем собственно компиляции.
Ну стало быстрее. Это так важно? Это мелочи.

Stahl ★★☆ ()

LTO

Очень нужно. Ещё если бы с ним всё собиралось, было бы вообще прекрасно.

optimizing .. have been renamed to

Мелочь, а приятно. Всегда путал corei7, corei7-avx, core-avx-i и core-avx2.

colorized diagnostics

Ещё бы они были понятнее, как у clang...

Полагаю, что нужно. Но с надеждой смотрю на Clang.
Sylvia, что скажешь? :D

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 2)

Но как же -fstack-protector-strong? Впрочем, -flto&co. достаточно прекрасно, теперь бы ещё уменьшить деструктивность. :>

wakuwaku ★★★★ ()
Ответ на: комментарий от Stahl

Время линковки пренебрежимо мало по сравнению со временем собственно компиляции

30 минут пренебрежимо мало, а использование 15 гигов памяти тоже пренебрежимо мало, ведь у всех вагон времени и терабайты оперативы.

false ★★★★★ ()

polymorphic lambdas

Это как это?

GAMer ★★★★★ ()
Ответ на: комментарий от GAMer
// a functional object that will increment any type
auto incr = [](auto x) { return x++; };
mix_mix ★★★★★ ()

Выглядит занятно.

Deleted ()
Ответ на: комментарий от mix_mix

А если к типу неприменима эта операция?

Deleted ()
Ответ на: комментарий от Deleted
int main() {
	auto incr = [](auto x){ return x*2; };
	return incr(&incr), 0;
}
1.cpp: In instantiation of 'main()::<lambda(auto:1)> [with auto:1 = main()::<lambda(auto:1)>*]':
1.cpp:3:19:   required from here
1.cpp:2:34: error: invalid operands of types 'main()::<lambda(auto:1)>*' and 'int' to binary 'operator*'
  auto incr = [](auto x){ return x*2; };
                                  ^
mix_mix ★★★★★ ()
Ответ на: комментарий от Deleted

Это кресты, мой друг, здесь всё через жопу. Ты ещё не видел что будет, если этот incr засунуть в std::cout.

$ g++-4.9 -std=c++1y 1.cpp 2>&1 | wc -c
   23058

mix_mix ★★★★★ ()
Ответ на: комментарий от mix_mix

Не надо было им лезть в область нормальных языков с лямбдами, наверное. Выглдяит, как будто на жопер прилепили эмблему мерседеса.

Deleted ()
Ответ на: комментарий от mix_mix

"... и сообщения об ошибках подняли мертвых из могил" (с) Microsoft

ncrmnt ★★★★★ ()
Ответ на: комментарий от intelfx

LTO
Очень нужно.

я слоупок, поэтому у меня до сих пор x86, если LTO действительно нужно, то на x86 оно с GCC 4.9 сломано, сломано сильно и судя по в последнее время заниженному приоритету поддержки x86 чинить его пока никто не собирается.

optimizing .. have been renamed to
Мелочь, а приятно. Всегда путал corei7, corei7-avx, core-avx-i и core-avx2.

это да, удобно

colorized diagnostics
Ещё бы они были понятнее, как у clang...

только надо еще сделать в окружение
GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

Sylvia ★★★★★ ()
Ответ на: комментарий от devl547

и тебе тоже привет.
правда кастовать меня в тему и правда бесполезно,
могу 2 раза в неделю зайти, могу раз в три месяца...

Sylvia ★★★★★ ()
Ответ на: комментарий от Sylvia

Привет, Сильви. Ты сейчас вообще где обитаешь заместо лора?

devl547 ★★★★★ ()
Ответ на: комментарий от devl547

я предпочитаю более не тратить время на какие-либо интернет сообщества, нервы и время целее, а кому-то что-то доказывать или помогать с чем-либо - дело крайне неблагодарное

Sylvia ★★★★★ ()
Ответ на: комментарий от Sylvia

x86

и правда слоупок.
Сломано == генерит некорректный код или падает?

Кстати, а скажи (если знаешь), почему некоторые вещи вроде ffmpeg или mplayer не собираются с LTO (unresolved reference в больших количествах)? Кого винить?

GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

Спасибо, схоронил.

intelfx ★★★★★ ()
Ответ на: комментарий от intelfx

Сломано == генерит некорректный код или падает?

чаще просто не линкуется,

[code]
gcc -march=corei7 -mtune=corei7 -mssse3 -msse4.2 -mcx16 -msahf -mpopcnt -mfpmath=sse -fomit-frame-pointer -O3 -flto -fno-tree-vectorize -maccumulate-outgoing-args --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=2048 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o example example.o -L. libz.a
/var/tmp/portage/sys-libs/zlib-1.2.8-r1/temp/ccol1QMi.ltrans0.ltrans.o: In function `main':
ccol1QMi.ltrans0.o:(.text.startup+0xd): undefined reference to `zlibVersion'
ccol1QMi.ltrans0.o:(.text.startup+0x1b): undefined reference to `zlibVersion'
ccol1QMi.ltrans0.o:(.text.startup+0x34): undefined reference to `zlibCompileFlags'
ccol1QMi.ltrans0.o:(.text.startup+0xd3): undefined reference to `compress'
ccol1QMi.ltrans0.o:(.text.startup+0x108): undefined reference to `uncompress'
ccol1QMi.ltrans0.o:(.text.startup+0x16b): undefined reference to `gzopen'
[/code]

реже сегфолты в приложениях (nginx например, с зависимостью только на glibc)

почему некоторые вещи вроде ffmpeg или mplayer не собираются с LTO

если честно, не знаю, там много ассемблера, да и не особенно вижу необходимость все это собирать в кучу и оптимизировать LTO
заметно быстрее не будет, компактнее тоже

Sylvia ★★★★★ ()
Ответ на: комментарий от intelfx

libavcodec/jpegls.h:46:0: warning: type of 'ff_log2_run' does not match original declaration [enabled by default]
libavcodec/jpegls.h:46:0: warning: type of 'ff_log2_run' does not match original declaration [enabled by default]
libavcodec/bitstream.c:38:0: note: previously declared here
libswscale/x86/rgb2rgb_template.c: In function 'rgb24toyv12_mmx':
libswscale/x86/rgb2rgb_template.c:1698:9: error: 'asm' operand has impossible constraints
lto-wrapper: cc48 returned 1 exit status

mplayer-export-2014-04-15 + ffmpeg 2.2.1
на x86 другие ошибки c ffmpeg'ом

Sylvia ★★★★★ ()
Ответ на: комментарий от Sylvia

--param l1-cache-line-size=64

А, кстати, починили эту регрессию?

mix_mix ★★★★★ ()
Ответ на: комментарий от Sylvia

Что-то вроде этого (и undefined reference в твоём сообщении выше) я и имел в виду. Иногда бывает и на «обычных» проектах, не асмосодержащих. И кто виноват? LTO?

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

С 4.8.2 собирается, если что.

~ $ cat /var/db/pkg/media-video/libav-9.12/CFLAGS 
-march=native -O2 -pipe -fomit-frame-pointer -fstack-protector --param=ssp-buffer-size=4 -mavx -msse2avx -mfpmath=both -floop-block -flto -Ofast
Хотя с какими флагами оно собирается на самом деле, утверждать не возьмусь. Вроде там что-то с -O3.

wakuwaku ★★★★ ()
Последнее исправление: wakuwaku (всего исправлений: 1)
Ответ на: комментарий от intelfx

было бы хорошо отрапортовать баг в официальный багтрекер,
тогда может быть им бы и занялись, к сожалению общие тенденции в развитии софта сейчас таковы, что сокращается время между релизами, уменьшается тестирование и долговременная поддержка уже вышедшего, gcc в «соперничестве» с clang тоже поддается этим тенденциям.
Забавно что сообщая о улучшениях в LTO и приводя примеры с Firefox на не столь в последнее время популярной, но пока еще одной из основных архитектур тот же GCC не может слинковать zlib, cairo, в binutils регрессий понаделали

Я по отношению к IT и Linux всего лишь домохозяйка, я разбираться не стану, меня больше беспокоит то, что запретили ввоз «греческого» йогурта из польши, а значит я не смогу делать дзадзыки

Sylvia ★★★★★ ()
Ответ на: комментарий от mix_mix

посмотрите сами багтрекер, я не в курсе о регрессиях с этим.
меня больше интересует почему Ричард Гюнтер теперь Ричард Бинер :D

Sylvia ★★★★★ ()
Ответ на: комментарий от Sylvia

Я по отношению к IT и Linux всего лишь домохозяйка

И это говорит завсегдатай GCC'шной багзиллы. Ну окей.

Да, надо отписать. Но там кучу всего нужно приложить к репорту, а мне влом.

intelfx ★★★★★ ()
Ответ на: комментарий от Sylvia

меня больше интересует почему Ричард Гюнтер теперь Ричард Бинер :D

Говорят замуж вышел.

Gumanoid ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.