makc 231 21 марта, 2023 Опубликовано 21 марта, 2023 · Жалоба 37 минут назад, ericN сказал: Может какой-нибудь директивой сказать компилятору, чтоб он не оптимизировал и сделал то, что от него просят? Ни как не могу заставить компилятор пройти по циклу 4 раза! Попробуйте скомпилировать модуль с отключенной оптимизацией (опция -O0). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ericN 3 21 марта, 2023 Опубликовано 21 марта, 2023 · Жалоба В 21.03.2023 в 14:15, makc сказал: Попробуйте скомпилировать модуль с отключенной оптимизацией (опция -O0). помогло. добавил #pragma GCC optimize("O0") static int ch423_probe(struct i2c_client *client) { Тело for стало выполняться как положено 4 раза. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 231 21 марта, 2023 Опубликовано 21 марта, 2023 · Жалоба 1 час назад, ericN сказал: помогло. добавил #pragma GCC optimize("O0") static int ch423_probe(struct i2c_client *client) { Тело for стало выполняться как положено 4 раза. Какая у вас версия компилятора, который творит такой беспредел? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ericN 3 21 марта, 2023 Опубликовано 21 марта, 2023 · Жалоба вообще собираю на хосте с помощью buildroot. в опциях билрута стоит версия 10. этим же buildroot-ом собрал кросскомпилятор для хоста. кросскомпилятор выдает следующее Цитата ~/tools/arm-rez2-linux-gnueabihf_sdk-buildroot/bin/arm-linux-gcc --version arm-linux-gcc.br_real (Buildroot 2021.11-1126-gfeb9185fc1-dirty) 10.3.0 Copyright (C) 2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. думаю, что этим же gcc собирается ядро. ps удалил лишние printk, несколько раз собрал с прагмой O0 и без неё. результат подтвердился. с прагмой O0 цикл выполняется 4 раза, без неё - 5 раз. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться