LINUX.ORG.RU

[gcc 4.6.1]Ошибка при оптимизации.


0

1

Есть одна программа.
В коде происходит подсчет композиций функций и декомпозиций, при включенной оптимизации насчитано 2307 комп. функций и 885 декомп. При выключенной 3167 и 3167 - что уже по идее правильно.
Ошибка 99% в двух функциях(циклические сдвиги) написаны на extended asm. Gcc похоже криво оптимизируют их.
Баг или можно как-то поправить компиляцию?(не переписывая функции)



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

сам спросил - сам починил. Исправил constraint «r» на «a». потом понял, что ошибка в правильном написании input/output operands. Правильный вариант:

uint8_t cshift(uint8_t a, uint8_t b) {
	__asm__ __volatile__("rolb  %2, %1"
						:"=r"(a)
						:"0"(a), "c"(b)
						:
						);
	return a;[br]
}

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