The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

14.08.2017 23:58  Выпуск набора компиляторов GCC 7.2

Доступен корректирующий релиз набора компиляторов GCC 7.2, в котором проведена работа по исправлению ошибок, регрессивных изменений и проблем с совместимостью. По сравнению с версией GCC 7.1 в GCC 7.2 отмечено 95 исправлений, в основном связанных с устранением регрессивных изменений. Напомним, что начиная с ветки GCC 5.x в проекте внедрена новая схема нумерации выпусков: версия x.0 используется в процессе разработки, корректирующие выпуски формируются с номерами x.2.0, x.3.0 и т.д. Новые возможности развиваются в экспериментальной ветке GCC 8.0, на базе которой будет сформирован следующий значительный релиз GCC 8.1.

  1. Главная ссылка к новости (https://gcc.gnu.org/ml/gcc-ann...)
  2. OpenNews: Релиз набора компиляторов GCC 7
  3. OpenNews: В состав GCC одобрено включение языка программирования D
  4. OpenNews: Ошибка в GCC привела к игнорированию режима выявления проблем с форматированием строк
  5. OpenNews: Для GCC представлен бэкенд c реализацией WebAssembly
Лицензия: CC-BY
Тип: Программы
Ключевые слова: gcc
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.2, Аноним (-), 00:40, 15/08/2017 [ответить] [показать ветку] [···]    [к модератору]
  • –14 +/
    А позор типа
    for (int n = 0; n < arr_length; ++n) make_zashibis(arr[n]);
    ...
    if (arr) { ... } /* выкинуто gcc по причине undefined behaivour */

    GNU-макаки исправили или нет ??

     
     
  • 2.3, Аноним (-), 00:46, 15/08/2017 [^] [ответить]    [к модератору]
  • +12 +/
    Выкинуть нужно анонима. А gcc всё сделал правильно
     
     
     
    Часть нити удалена модератором

  • 4.7, Crazy Alex (ok), 01:36, 15/08/2017 [ответить]    [к модератору]
  • +2 +/
    Ты полный пример можешь дать? И версию компилятора заодно...

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

     
     
  • 5.9, Аноним (-), 01:58, 15/08/2017 [^] [ответить]    [к модератору]
  • –3 +/
    GCC6.3 и старая opera , моя прелесть
     
     
  • 6.12, Ordu (ok), 04:03, 15/08/2017 [^] [ответить]     [к модератору]
  • +/
    Это просто сотрясения воздуха, а не ответ на вопрос Смотри, берём такой код vo... весь текст скрыт [показать]
     
     
  • 7.18, Другойаноним (?), 09:45, 15/08/2017 [^] [ответить]    [к модератору]  
  • –3 +/
    Тем не менее,было такое дело , было  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49820
     
     
  • 8.28, pripolz (?), 12:16, 15/08/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    так та бага вообще не о том.
    Там юзер хотел "проверить int на переполнение". Ему и объяснили, что это UB.
     
  • 7.27, Iaaa (ok), 12:16, 15/08/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Можно было просто дать ссылку https://godbolt.org/g/Wy4TPn
    И нагляднее, и проще.
     
  • 4.29, Аноним (-), 13:08, 15/08/2017 [ответить]    [к модератору]  
  • +/
    То есть ты сначала разыменовываешь указатель, а потом проверяешь, не нулевой ли он? Молодец, чё.
     
     
  • 5.52, УЖАС СОВКА (?), 12:57, 16/08/2017 [^] [ответить]    [к модератору]  
  • +/
    А в чем проблема ?? Если N<0, он и не разименовывается.
     
  • 2.8, asdasdasd (?), 01:56, 15/08/2017 [^] [ответить]    [к модератору]  
  • +/
    Вы сами написали: "/* выкинуто gcc по причине undefined behaivour */".
    Неопределенное поведение потому оным и зовется, что оно неопределенное и в стандарте не прописано.
     
     
     
    Часть нити удалена модератором

  • 4.11, Crazy Alex (ok), 03:07, 15/08/2017 [ответить]    [к модератору]  
  • +8 +/
    Не, нормальные люди не допускают UB. Хотя выше пример исковеркан - к примеру, там, вероятно, if (!arr) имелось в виду. И навреняка ещё куча всего покалечена, так что не понять. Где там те исходники оперы ловить - не знаю и разбираться не хочу. Охота возиться с варезом - флаг в руки. Или ещё куда.
     
     
  • 5.17, Аноним (-), 09:28, 15/08/2017 [^] [ответить]     [к модератору]  
  • –3 +/
    ИМХО UB должно не компилироваться или компилироваться, но не выкидываться, т к ... весь текст скрыт [показать]
     
  • 3.24, anonymous (??), 11:16, 15/08/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    Вообще-то, в стандарте С как раз описано неопределённое поведение.
     
  • 2.16, Аноним (-), 09:15, 15/08/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    Используй clang, какие проблемы то?
     
  • 2.22, Comdiv (ok), 11:08, 15/08/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Да, это ошибка компилятора, но что тут позорного Хорошую оптимизацию сделать сл... весь текст скрыт [показать]
     
  • 2.31, freehck (ok), 14:44, 15/08/2017 [^] [ответить]    [к модератору]  
  • +/
    > GNU-макаки исправили или нет ??

    Ну макак я, допустим, ещё пропущу, но вот пи#####ов держите пожалуйста при себе. ;)
    Нецензурщину в треде вырезал.

     
     
  • 3.35, Ан (??), 15:42, 15/08/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Ты конечно молодец, но у тебя это вышло откровенно говоря фигово Лучше бы ты её... весь текст скрыт [показать]
     
  • 2.48, УЖАС СОВКА (?), 20:13, 15/08/2017 [^] [ответить]    [к модератору]  
  • +/
    В общем, на сей случай есть набор ключей,который придется теперь писать везде
    -fno-strict-aliasing
    -fno-strict-overflow
    -fwrapv
    -fno-delete-null-pointer-checks
     
  • 1.13, Аноним (-), 04:57, 15/08/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +8 +/
    Диванные хаятели gcc в треде! все в машину!

    Сколько себя помню, уже 15 лет сознательной окололинуксовой жизни, натурально считается образцом поведения невзначай упомянуть фразу "глюки GCC". Это поднимает ЧСВ у хацкеров. Ведь не ваш г0внокод виноват, а нехороший такой компилятор!

     
     
  • 2.14, Аноним (-), 08:01, 15/08/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Чаще всего все глюки из-за оптимизации И они действительно есть Один очень хор... весь текст скрыт [показать]
     
  • 2.15, Аноним (15), 09:14, 15/08/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    Если бы не gcc - где бы час находился бы наш мир!!
    А гляки/баги есть везде!(в оприори) - где то больше где то меньше, но это не важно для ядерной станции....

     
     
  • 3.34, Аноним (-), 15:15, 15/08/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Он был бы несомненно лучше и удобнее
     
  • 2.32, Аноним (-), 14:53, 15/08/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Учитывая, что я лично нашёл не менее 5 примёров, когда GCC генерировал плохой ко... весь текст скрыт [показать]
     
     
  • 3.47, llolik (ok), 20:06, 15/08/2017 [^] [ответить]     [к модератору]  
  • +/
    Есть такой линкер под оффтопик UniLink ftp ftp styx cabel net pub UniLink ... весь текст скрыт [показать]
     
  • 1.36, pripolz (?), 15:48, 15/08/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Наткнулся на такую засадку небольшую в ГЦЦ:
    Не считает поле "int" в "const union" за "const int".

    Из-за этого такое поле нельзя вставить в switch/case...
    Мелочь, а неприятно.

    Вот например такой код не компилится.

    http://rextester.com/EOQCD80556

    Со мной всё в порядке?

     
     
  • 2.37, pripolz (?), 15:55, 15/08/2017 [^] [ответить]    [к модератору]  
  • +/
    > Не считает поле "int" в "const union" за "const int".

    Если копнуть эту тему глубже, то получается, что он скорее всего собирает этот const union в рантайме, что тоже не хорошо..

     
     
  • 3.38, pripolz (?), 16:03, 15/08/2017 [^] [ответить]    [к модератору]  
  • +/
    > скорее всего собирает этот const union в рантайме

    не, не подтвердилось

    https://godbolt.org/g/P15iqG

     
     
  • 4.39, pripolz (?), 16:10, 15/08/2017 [^] [ответить]    [к модератору]  
  • +/
    Вообще ни один компилер не компилит.

    https://godbolt.org/g/RhZjwA

    Щас на раст перейду с джавой.

     
  • 2.40, Аноним84701 (ok), 16:17, 15/08/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Все правильно www open-std org jtc1 sc22 wg14 www docs n1256 pdf constant expr ... весь текст скрыт [показать]
     
     
  • 3.41, pripolz (?), 16:38, 15/08/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Приведённая цитата из стандарта не о том Переводится как в case должен быть co... весь текст скрыт [показать]
     
     
  • 4.43, Аноним84701 (ok), 16:48, 15/08/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Вы серьезно или издеваетесь o_O Еще раз сonst var только на чтение, но значе... весь текст скрыт [показать]
     
     
  • 5.44, pripolz (?), 17:01, 15/08/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    И что в данной ситуации пошло так?
    Почему const union считается constexpr?

    Кстати, если заменить union на struct - тогда ситуация переменная в зависимости от версии компилятора.

     
  • 4.45, dq0s4y71 (ok), 18:07, 15/08/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    О том Вы почитайте теперь, что, с точки зрения стандарта, есть const int An i... весь текст скрыт [показать]
     
     
  • 5.53, pripolz (?), 18:05, 16/08/2017 [^] [ответить]    [к модератору]  
  • +/
    > Вы почитайте теперь, что, с точки зрения стандарта, есть const int

    Да, всё именно так, спасибо.

     
  • 3.42, pripolz (?), 16:45, 15/08/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    Раскомментируйте "case z":

    https://godbolt.org/g/CAvAzb

     
  • 2.46, Аноним (-), 19:41, 15/08/2017 [^] [ответить]     [к модератору]  
  • +2 +/
    Во-первых, в case, как уже выше сказали, должен быть constant expression Const-... весь текст скрыт [показать]
     
     
  • 3.49, pripolz (?), 22:26, 15/08/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    > запись в один член union и чтение из другого - undefined behavior

    откуда такие глубокие познания в С++ ?

     
     
  • 4.54, Аноним (-), 18:11, 16/08/2017 [^] [ответить]    [к модератору]  
  • +/
    Из стандарта. [class.union], [basic.life].
     
  • 3.51, pripolz (?), 11:56, 16/08/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    > компилятор обязан рассматривать его как
    > runtime код).

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

    https://godbolt.org/g/zxEwSn

    Компилятор clang превращает её в 0x04030201 , т.е. воспринимает как const-expr, а gcc кастит в рантайме.


    П.С. Создал баг на gcc. Закрыли с комментом "it has to be a constant literal".

     
     
  • 4.55, Аноним (-), 18:17, 16/08/2017 [^] [ответить]     [к модератору]  
  • +/
    Это не меняет ровным счетом ничего template int N struct foo ... весь текст скрыт [показать]
     
  • 1.50, Аноним (-), 10:49, 16/08/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    А одобренный D где?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor