URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 92430
[ Назад ]

Исходное сообщение
"Наиболее интересные новшества, ожидаемые в GCC 4.9"

Отправлено opennews , 01-Ноя-13 21:11 
Хотя релиз GCC 4.9 вероятнее всего состоится не ранее первой половины 2014 года, ресурс Phoronix проанализировал (http://www.phoronix.com/scan.php?page=news_item&px=MTQ5NjM) наиболее интересные возможности, которые появятся в новой версии популярного компилятора.


Наиболее заметными нововведениями (http://gcc.gnu.org/gcc-4.9/changes.html) в версии GCC 4.9 станут:


-  Портирование Undefined Behavior Sanitizer ("UBSAN", -fsanitize=undefined) - анализатор неопределенного поведения, пытающийся обнаруживать во время выполнения программы ситуации, когда поведение программы окажется неопределенным из-за ошибки программиста.

-  Поддержка Address Sanitizer ("ASAN"), ранее реализованная в GCC 4.8, была улучшена и доработана, наиболее видной доработкой стала поддержка архитектуры ARM в дополнение к x86/x86_64.

-  Улучшения, касающиеся языков ADA и Fortran. GNAT теперь использует по умолчанию стандарт ADA 2012, а не ADA 2005. Для Fortran реализована поддержка Fortran 2003 finalization. Внесены улучшения в поддержке Fortran 2008.

-  Улучшена поддержка стандарта C++14. Ряд улучшений, касающихся C++11;

-  Реализована поддержка процессоров RX100, RX200 и RX600.

-  Поддержка чипов Intel Silvermont.

Кроме этого, в состав GCC 4.9 имеют шанс попасть библиотеки (http://www.opennet.ru/opennews/art.shtml?num=38075) для поддержки JIT-компиляции средствами GCC, код с поддержкой OpenMP 4.0 (http://www.opennet.ru/opennews/art.shtml?num=38110) и реализация технологии параллельного программирования Intel Cilk Plus (http://www.opennet.ru/opennews/art.shtml?num=31517).

URL: http://www.phoronix.com/scan.php?page=news_item&px=MTQ5NjM
Новость: http://www.opennet.ru/opennews/art.shtml?num=38319


Содержание

Сообщения в этом обсуждении
"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 01-Ноя-13 21:11 
> Undefined Behavior Sanitizer ("UBSAN", -fsanitize=undefined) - анализатор неопределенного поведения, пытающийся обнаруживать во время выполнения программы ситуации, когда поведение программы окажется неопределенным из-за ошибки программиста.

Достойный ответ на http://www.opennet.ru/opennews/art.shtml?num=38293 (хотя некоторые комментаторы в том обсуждении и придерживались мнения, что компилятор не должен заниматься этими вещами).


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Crazy Alex , 02-Ноя-13 01:02 
Оно в РАНТАЙМЕ это делает. Понимаешь разницу между статическим анализатором и рантайм-проверками?

И да, статические проверки лучше делать отдельно - не при сборке, а перед коммитом, например.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 11:00 
> Оно в РАНТАЙМЕ это делает. Понимаешь разницу между статическим анализатором и рантайм-проверками?

Склонен полагать, что это все же неточность. Самые опасные UB можно отловить еще на стадии компиляции.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 02-Ноя-13 12:34 
А не нужно полагать. Это не слёт юных Ванг.
Читать чендж-логи надо:
>Various computations will be instrumented to detect undefined behavior at runtime.

.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 02-Ноя-13 01:12 
Потому что и там, и тут вы путаете анализатор, оптимизатор и собственно компилятор.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 10:59 
Скорее, это _вы_ их путаете. Причем преднамеренно.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 02-Ноя-13 12:18 
От накрутки плюсов и минусов _вы_ умнее не станете.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 01-Ноя-13 21:16 
Очень жаль что до сих пор тратятся силы на поддержку ADA.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 01-Ноя-13 21:50 
Жаль всем, кроме разработчиков ADA

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 01-Ноя-13 22:22 
Ну на С++ же тратят, а он гораздо хуже. Почему бы и на Аду не потратить?

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 01-Ноя-13 23:54 
> Ну на С++ же тратят, а он гораздо хуже

Пофиг на объективные достоинства и недостатки, все определяет популярность.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 00:05 
> Пофиг на объективные достоинства и недостатки, все определяет популярность.

Ну тогда гaвно вне конкуренции: миллионы мух не могут ошибаться!


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено chinarulezzz , 02-Ноя-13 01:54 
мы всё еще о с++?

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 11:00 
> мы всё еще о с++?

Ну о ком же еще.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено arisu , 02-Ноя-13 11:16 
> мы всё еще о с++?

согласен, «говно» для c++ — слишком мягко и ласково.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Ytch , 02-Ноя-13 02:05 
> а он гораздо хуже.

А где "по моему скромному мнению" или "на мой вкус" (в этом случае это хотя бы не было наглым враньем)?


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 11:16 
А оно и так им не является. С++ объективно хуже.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено arisu , 02-Ноя-13 11:21 
> (в этом случае это хотя бы не было наглым враньем)?

а оно и без этого не враньё.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 01:31 
>Очень жаль что до сих пор тратятся силы на поддержку ADA.

А что вы тогда скажите про Fortran ? ;)


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 11:04 
> А что вы тогда скажите про Fortran ? ;)

Что он как язык для математических расчетов до сих пор вне конкуренции?


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноням , 02-Ноя-13 13:48 
Ну тогда Ada, по степени надёжности программ на нём, до сих пор вне конкуренции для Пентагоновской военки.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 01-Ноя-13 21:49 
А как же самое значимое нововведение? ЦВЕТНОЙ ВЫВОД СООБЩЕНИЙ ОБ ОШИБКАХ!

Включается через -fdiagnostics-color=auto


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено arisu , 01-Ноя-13 22:00 
> А как же самое значимое нововведение? ЦВЕТНОЙ ВЫВОД СООБЩЕНИЙ ОБ ОШИБКАХ!
> Включается через -fdiagnostics-color=auto

наверняка сделают по умолчанию включеным — так же, как и идиотскую каретку. два патча надо будет накладывать.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено noname11 , 01-Ноя-13 23:25 
каретка - супер тема

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 01-Ноя-13 23:53 
> наверняка сделают по умолчанию включеным — так же, как и идиoтскую каретку. два патча надо будет накладывать.

Зачем, если можно просто пользоваться gcc 4.3.3?


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 00:06 
> Зачем, если можно просто пользоваться gcc 4.3.3?

Лучше 2.95 сразу :)


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 01:57 
2.95 был реактивный по скорости сборки. После него 3-я ветка казалось жутко тормозной.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 14:31 
> 2.95 был реактивный по скорости сборки.

- А я могу печатать 1000 знаков в минуту. Правда такая фигня получается...


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено pv47 , 02-Ноя-13 15:03 
> наверняка сделают по умолчанию включеным — так же, как и идиотскую каретку.

*из танка* а что за каретка??


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено arisu , 02-Ноя-13 16:27 
>> наверняка сделают по умолчанию включеным — так же, как и идиотскую каретку.
> *из танка* а что за каретка??

дебильное нововведение в gcc 4.8, упёртое из шланга: выводить кроме места ошибки ещё и строку с ошибкой, а снизу подпирать кареткой.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 22:29 
Да, очень бесит чудаков которые по 20 варнингов сперва наплодят а потом оказывается что теперь мат компилера не влезает на экран.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено arisu , 02-Ноя-13 23:06 
> Да, очень бесит чудаков которые по 20 варнингов сперва наплодят а потом
> оказывается что теперь мат компилера не влезает на экран.

в виде исключения отвечу даже без «ты идиот». видишь ли, визуальный мусор (а строки и каретка являются именно им) затрудняет разбор сообщений компилятора *глазами*. нужно тратить дополнительные усилия для того, чтобы пропускать совершенно бесполезную информацию.

отчего она бесполезная? а потому, что программист или:
а) всё равно пойдёт править код — и тогда строку он увидит в редакторе (вместе с контекстом, что куда как полезней), и курсор обычно редактор поставит куда надо, или
б) править прямо сейчас не будет, и тогда лишняя информация ещё более лишняя.

в итоге получается тупое захламление консоли информацией, которая не нужна. в угоду идиотам-хипстерам.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено pavlinux , 07-Дек-13 18:38 
>> наверняка сделают по умолчанию включеным — так же, как и идиотскую каретку.
> *из танка* а что за каретка??

dfdfd


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 22:43 
Зачем патч? -fno-diagnostics-color -fno-diagnostics-show-caret чем не устраивает?

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено arisu , 02-Ноя-13 23:09 
> Зачем патч? -fno-diagnostics-color -fno-diagnostics-show-caret чем не устраивает?

тем, что старые версии gcc на неизвестные «-f» тупо падают, отказывась компилировать что бы то ни было. а я собираю софт не только у себя на технике. поэтому варианты такие: или жестоко впиливать проверку на версию компилятора и добавлять этот флаг в сборочных скриптах по необходимости, или один раз пропатчить gcc, сменив значение на «по умолчанию — выключено». второй вариант мне нравится больше.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Led , 02-Ноя-13 23:30 
>> Зачем патч? -fno-diagnostics-color -fno-diagnostics-show-caret чем не устраивает?
> тем, что старые версии gcc на неизвестные «-f» тупо падают, отказывась компилировать
> что бы то ни было. а я собираю софт не только
> у себя на технике. поэтому варианты такие: или жестоко впиливать проверку
> на версию компилятора и добавлять этот флаг в сборочных скриптах по
> необходимости, или один раз пропатчить gcc, сменив значение на «по умолчанию
> — выключено». второй вариант мне нравится больше.

А вариант "один раз прописать в *.specs" не рассматривается?


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено arisu , 02-Ноя-13 23:42 
> А вариант «один раз прописать в *.specs» не рассматривается?

нет.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено iZEN , 02-Ноя-13 00:14 
Только что собрал
% pkg info -x gcc
gcc-4.9.0.20131020_1

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 02-Ноя-13 01:09 
Минус один тебе, как шлангисту.
А для жабистов ты теперь вообще еретик.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено arisu , 02-Ноя-13 11:35 
> Только что собрал

мы все ждали этого сообщения — и дождались, наконец!

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


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Andrey Mitrofanov , 02-Ноя-13 14:00 
> изя, собрать программу из исходников подвиг
>надо гордо сообщать на форумах.

"Мы пахали! Язень и пакеж ментейнер."


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 13:59 
> Только что собрал

Круто. И что ты с ним будешь делать? Я не думаю что твоей квалификации хватит тестировать экспериментальный компилер, а компилить пререлизной версией софт... проще в саперы сразу записаться при такой хабрахрабрости :).


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 06-Ноя-13 00:55 
Плюс один Вам, как шлангисту.
Пользуйтесь GCC, он хороший.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено all_glory_to_the_hypnotoad , 02-Ноя-13 00:39 
> Портирование Undefined Behavior Sanitizer ("UBSAN", -fsanitize=undefined) - анализатор неопределенного поведения, пытающийся обнаруживать во время выполнения программы ситуации, когда поведение программы окажется неопределенным из-за ошибки программиста.

какого хрена не на стадии компиляции


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 01:22 
Дyрак, да?

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 11:05 
> Дyрак, да?

Нет ты.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено arisu , 02-Ноя-13 11:40 
> Дyрак, да?

таки да. что странно: раньше, вроде, нормальный был.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Главные Редакторы , 02-Ноя-13 01:28 
> какого хрена не на стадии компиляции

Процессоры шибко быстрыми стали, ресурс их надо чем то нагрузить, очевидно же.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 11:04 
>> какого хрена не на стадии компиляции
> Процессоры шибко быстрыми стали, ресурс их надо чем то нагрузить, очевидно же.

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


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 14:02 
>> какого хрена не на стадии компиляции
> Процессоры шибко быстрыми стали, ресурс их надо чем то нагрузить, очевидно же.

Перепись дубов на опеннете объявляется открытой. Так, кто еще выкладки Тюринга из "програмеров" не знает? А ну дописывайся сюда. Дуралеев надо знать в лицо.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Vkni , 02-Ноя-13 02:39 
> какого хрена не на стадии компиляции

Очень тяжело. Даже бравые парни из PVS-Studio отлавливать ряд undefined behavior проблем не могут. А для компилятора это вообще запредельно.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Crazy Alex , 02-Ноя-13 03:14 
Ну вон товарищи что-то сваяли... http://css.csail.mit.edu/stack/
В отличие от PVS-Studio - под GPLv3. Впрочем, будем надеяться, что это таки разные подмножества UB.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Vkni , 02-Ноя-13 05:22 
> Ну вон товарищи что-то сваяли... http://css.csail.mit.edu/stack/
> В отличие от PVS-Studio - под GPLv3. Впрочем, будем надеяться, что это
> таки разные подмножества UB.

Возможно. Там была программа, в которой требовался довольно глубокий анализ. Возможно, эти MITшники умеют.

Цитирую свой коммент, который не могу найти:

Программа:

typedef struct SSS
{
    int a, b;
} SS;

SS * f( SS* ss)
{
    ss->a = 2;
    return ss;
}

int main( int argv, const char ** argc)
{
   SS ss;
   ss.a = 1;
   ss.b = 3;

   f( &ss)->b = ss.a;

   return ss.b;
}

8><----------------------------------------------><8

Компиляция:

[vkni@t60 Arisu.clang]$ gcc test.c -o gcc
[vkni@t60 Arisu.clang]$ clang test.c -o clang

Как запускать:

[vkni@t60 Arisu.clang]$ ./gcc ; echo $?
2
[vkni@t60 Arisu.clang]$ ./clang ; echo $?
1


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 02-Ноя-13 09:32 
Ну, на мой скромный взгляд, gcc тут справился, а clang нет.
2-а вопроса:
1. Какое это имеет отношение к анализаторам, т.к. (повторю, ИМХО) это валидные конструкции с точки зрения языка и ко всяким переполнениям и пр. не имеют отношения?
2. И что про это говорит ПВС? Типа, можно, но осторожно? Или нельзя? Или что?

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено anonimous , 02-Ноя-13 10:42 
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf
6.5 Expressions
...
2 Between the previous and next sequence point an object shall have its stored value
modified at most once by the evaluation of an expression.72) Furthermore, the prior value
shall be read only to determine the value to be stored.73)
...

73) This paragraph renders undefined statement expressions such as
i=++i + 1;
a[i++] = i;
while allowing
i=i+1;
a[i] = i;



"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 02-Ноя-13 12:22 
Не в тему вообще.


Зыж
Хотелось бы услышать ответы на вопросы от предыдущего оратора.
А вам читать мануал об области видимости переменных.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 02-Ноя-13 12:24 
Ззыж
>А вам читать мануал об области видимости переменных.

Ну о передаче переменных по ссылке.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено anonimous , 02-Ноя-13 13:47 
При чём тут передача переменных по ссылке? Тут интереснее порядок выполнения операций в выражении, что должно быть вычислено раньше - адрес, куда писать результат, или сам результат.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 02-Ноя-13 14:32 
Ещё раз посмотрите пример.
Нет там вычеслений адреса. Есть локальная переменная, маскирующая глобльную, которая передаётся по ссылке в функцию.
Усё.
Если это вы не поняли, то шаблоны, лямбды и вообще обобщённое программирование вам крышу оторвёт.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 02-Ноя-13 15:07 
зыж
>Нет там вычеслений адреса. Есть локальная переменная, маскирующая глобльную, которая передаётся по ссылке в функцию.
>Усё.

Если и этот намк не понятен, то можно рассмотреть вот это подробнее:
>f( &ss)->b = ss.a;

Ассоциативность справа налево, вызов функции "()" во второй группе приоритетов (прочем как и прямое членство "." и косвенное членство "->"), присваивание "=" аж в шестнадцатой (всего их 18).
Поэтому вначале вызывается функция "f", потом "->" в левой части, потом "." в правой части, потом левой части присваивается "=" значение правой.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 02-Ноя-13 15:12 
зззззззззззззззыж
>Ассоциативность справа налево,

Сори, слева направо конечно же. :D
Не в арабских странах C/С++ разрабатывались.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 17:07 
Ага, щас. У присваивания как раз ассоциативность справа налево:

$ cat test.c
#include <stdio.h>
main(){
  int a = 1, b = 2, c = 3;
  a = b = c;
  printf("%d %d %d\n", a, b, c);
}
$ make test
cc     test.c   -o test
$ ./test
3 3 3

Вот и думай теперь, должен компилятор в примере Vkni сначала разбираться с левоассоциативным выражением в левой части правоассоциативного или в правой. Пример с неопределённостью выражения a[++i]=i тут как раз к месту — всё совершенно аналогично.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 02-Ноя-13 22:19 
>Ага, щас. У присваивания как раз ассоциативность справа налево:

Вот только номер его 16, поэтому пусть молчит в тряпочку до своей очереди.

Зыж
Вы так троллите что ли?


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Аноним , 02-Ноя-13 23:30 
>>Ага, щас. У присваивания как раз ассоциативность справа налево:
> Вот только номер его 16, поэтому пусть молчит в тряпочку до своей
> очереди.

Угу. Вот только когда эта очередь наступит: сразу после выполнения его левого операнда (как и положено правоассоциативному оператору) или правого (что облегчает труд создателя компилятора)? Стандарт на этот счёт выражается достаточно ясно: undefined.

> Зыж
> Вы так троллите что ли?

Нет, ты. Спецификации языка не читал, а специалиста из себя корчишь почему-то.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 03-Ноя-13 08:20 
>Угу. Вот только когда эта очередь наступит:

Когда его очередь наступит, все операнды будут определены. И функции посчитаны.
Для отстающих — в ss.а будет 2.
>Нет, ты. Спецификации языка не читал, а специалиста из себя корчишь почему-то.

1. Не ты, а вы.
2. С я ещё в 90-х преподавал. И вы бы точно сессию провалили.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено arisu , 03-Ноя-13 10:14 
> 2. С я ещё в 90-х преподавал. И вы бы точно сессию
> провалили.

судя по всему, у тебя и Керниган с Ричи провалили бы.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 03-Ноя-13 10:39 
судя по всему, ты очень хотел хоть что-нибудь сказать, но так ничего и не придумал.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено arisu , 03-Ноя-13 11:29 
я сказал именно то, что хотел сказать, и именно так, как хотел сказать. но я не удивлён, что ты не понял.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 03-Ноя-13 12:49 
почему же, понял отлично — передёргивание и флэйм, это единственное что ты умеешь.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено arisu , 03-Ноя-13 13:48 
> почему же, понял отлично — передёргивание и флэйм, это единственное что ты
> умеешь.

продолжай демонстрировать непонимание, у тебя хорошо получается.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Crazy Alex , 02-Ноя-13 20:56 
Я, конечно, стар стал, подслеповат, но глобальную переменную там в упор не вижу - есть локальная для main и есть параметр дл f и, соответственно, ничего нигде не маскирует. Налицо именно UB согласно вышеприведенному пункту.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 02-Ноя-13 22:21 
>Я, конечно, стар стал, подслеповат, но глобальную переменную там в упор не вижу

А кто говорил, что о6а есть?

Зыж
А методы то молоденького бычк... трольчика.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Vkni , 02-Ноя-13 16:54 
1. Это в чистом виде undefined behavior, просто несколько другого типа.

Поэтому, кстати, оба компилятора облажались - никто не выдал предупреждения.

2. PVS 5.10 на этой программе тоже ничего не выдаёт.

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


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 02-Ноя-13 22:25 
>1. Это в чистом виде undefined behavior, просто несколько другого типа.

Тогда будьте любезны, поясните в каком месте.
>2. PVS 5.10 на этой программе тоже ничего не выдаёт.

И правильно делает.
Ибо ваш пункт 1 — полная ахинея.
Переменная вполне себе defined.
И ссылка на неё соответсвенно тоже.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Vkni , 02-Ноя-13 23:14 
> Тогда будьте любезны, поясните в каком месте.

Результат зависит от порядка вычисления выражений по разные стороны равенства.

Разработчики стандартов языков С и С++ специально сделали это undefined behavior для того, чтобы в случаях, когда этот порядок не влияет на результат, можно было бы выбрать максимально быстрый порядок.

> И правильно делает.

Вы не поверите, но даже разработчики PVS с вами не согласны.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 03-Ноя-13 09:06 
Я от вас хотел бы услышать аргументы, а не лозунги. Свои я уже приводил тут http://www.opennet.ru/openforum/vsluhforumID3/92430.html#55 Могу повторить более подробно. Берём первый попавшийся учебник, например «Язык программирования С++», Стивен Прата, ISBN 978-5-8459-1778-2. (Стандарт С++ дополнительно приводит ANSI C, если что. Там же, стр. 40) Стр. 1119:
>Если две операции применены к одному и тому же аргументу, то первой будет выполнена операция, имеющая более высокий уровень приоритета. Если две операции имеют одинаковый уровень приоритета, то для выполнения первоочерёдности С++ руководствуется правилами ассоциации. Все операции в одной группе имеют одинаковый уровень приоритета и одинаковую ассоциативность.

Ещё раз, «в одной группе имеют одинаковый уровень приоритета и одинаковую ассоциативность». Смотрим ваш пример. Всё выражение состоит только из операций 2-ой и 16-ой групп. 2-я группа имеет ассоциативность слева направо и выполняется первой.

зыж
>Разработчики стандартов языков С и С++ специально сделали это undefined behavior

Бред. Ахинея и Еритизм. :D
Ваш пример даже не требует последних стандартов и работать должен минимум на компиляторах 15-и летней давности. В общем пруф на стандарт или не было.
ззыж
>Вы не поверите, но даже разработчики PVS с вами не согласны.

Опять же, пруф. И я смело смогу на всех семинарах говорить какого уровня специалисты работают даже в таких, серьёзных организациях.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено Vkni , 03-Ноя-13 20:25 
> Я от вас хотел бы услышать аргументы, а не лозунги.

Играть в социальные игры с анонимными людьми - это идиотизм. Вы своим псевдоанонимным ником показываете, что желали бы подписываться Аноним, поэтому с вами общаться как с отдельной личностью тоже неправильно. Только в рамках вопрос - ответ.

> Если две операции применены к одному и тому же аргументу, то первой будет выполнена операция, имеющая более высокий уровень приоритета. Если две операции имеют одинаковый уровень приоритета, то для выполнения первоочерёдности С++ руководствуется правилами ассоциации. Все операции в одной группе имеют одинаковый уровень приоритета и одинаковую ассоциативность.

Стандарт языка С, последняя версия черновика http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf

"The side effect of updating the stored value of the left operand is
sequenced after the value computations of the left and right operands. The evaluations of
the operands are unsequenced." - страница 101, последний абзац.

Там же, дополнение J.1 (Unspecified behavior), страница 555, пятый пункт сверху

"The order in which the operands of an assignment operator are evaluated (6.5.16)."

Т.е. чётко и недвусмысленно написано, что стандарт не определяет (unspecified) порядок, в котором вычисляются операнды оператора присвоения.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено ананим , 03-Ноя-13 09:29 
Ещё раз, чтобы у остальных посетителей форума не формировались ложные понятия.
Вот это:
>Результат зависит от порядка вычисления выражений по разные стороны равенства.Разработчики стандартов языков С и С++ специально сделали это undefined behavior 

ложь.
Операция присваивания "=" находится в 16 группе приоритетов, которая имеет ассоциативность справа налево и отличается от других операций только этим и ничем более.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено anonimous , 03-Ноя-13 13:47 
В пункте 2 параграфа 6.5 стандарта ISO/IEC 9899:1999 написано следующее:

Between the previous and next sequence point an object shall have its stored value
modified at most once by the evaluation of an expression. Furthermore, the prior value
shall be read only to determine the value to be stored.

Между предыдущей и следующей точкой следования объект должен иметь свое сохраненное значение изменённым не более одного раза в ходе вычисления выражения. Кроме того, предыдущее значение должно быть прочтено только для определения значения для сохранения.

Порядок выполнения тут не важен сам по себе. Компилятор ожидает, что программа соблюдает стандарт, и исходя из этого генерирует машинные инструкции.

В черновике стандарта ISO/IEC 9899:201x этот пункт выглядит иначе:

If a side effect on a scalar object is unsequenced relative to either a different side effect on the same scalar object or a value computation using the value of the same scalar
object, the behavior is undefined. If there are multiple allowable orderings of the subexpressions of an expression, the behavior is undefined if such an unsequenced side
effect occurs in any of the orderings.

Если допускается более одного порядка вычисления выражения, то поведение не определено. Если вы считаете, что порядок выполнения операторов в указанных выше примерах однозначен, то дайте ссылку на соответствующий пункт или пункты в стандарте, а не в учебнике.


"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено anonimous , 03-Ноя-13 13:54 
И, если ссылаетесь на группы приоритетов, было бы здорово увидеть ссылку на пункт или пункты стандарта, где эти группы определены.

"Наиболее интересные новшества, ожидаемые в GCC 4.9"
Отправлено amo , 04-Ноя-13 12:04 
Вы, конечно, извините, но мне кажется, что Вам необходимо взять паузу и хорошо всё обдумать. И ассоциативность тут вообще не в тему. Вы сказали, что что-то преподаете? М-м-м... Успокойтесь и просто подумайте в спокойной обстановке.