- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
return instruction emitted twice with branch target inbetween
function
unsigned int fact( unsigned int n) { return n < 1 ? 1 : n*fact(n-1); }
produces
fact:
.LFB0:
.cfi_startproc
testl %edi, %edi
movl $1, %eax
je .L4
.p2align 4,,10
.p2align 3
.L3:
imull %edi, %eax
subl $1, %edi
jne .L3
rep ret # <-- this instruction can be removed
.L4:
rep ret
.cfi_endproc
.LFE0:
.size fact, .-fact
.section .text.unlikely
Сейчас в шапке видны разделы Асма и Руби?
Мне видна манящая необъятность твоих ягодиц.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66152 suboptimal load bytes to stack
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71343 missed optimization (can't "prove" shift and multiplication equivalence)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68027 conditional statement and unnecessary register assignment
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66123 [4.8 Regression] Array of labels as values + ternary operator + pointer arithmetic = internal compiler error
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66178 [4.9/5/6 Regression] Another label as values ICE in gen_reg_rtx, at emit-rtl.c:1059
Кстати вы не подумайте, что это только gcc, в clang тоже хватает хуйни, просто я туда не репорчу и их компилятор не юзаю. Хотя кое-какие баги оптимизаций я находил, и internal compiler error вызывал даже
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66123 [4.8 Regression] Array of labels as values + ternary operator + pointer arithmetic = internal compiler error
был обнаружен в результате зверских экспериментов борманда http://govnokod.ru/13512#comment190010
потом я еще подумал, и еще обнаружил похожую хуйню:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66178 [4.9/5/6 Regression] Another label as values ICE in gen_reg_rtx, at emit-rtl.c:1059
Наверняка еще много чего можно найти
по моему ты фигней страдаешь. на 4.9/4.8 код выглядит нормально. а в продакшн пихать самую свежую версию компилера - тем более гцц - это ты просто напрашиваешься.
с другой стороны: спасибо за усилия по тестированию :D
Это как? А какую тогда версию пихать? Предпоследнюю?
с 5/6 версиями пока не приходилось работать - но это как по мне экспериментальные бранчи: народ инфраструктуру (в 5ке) и оптимайзер (в 6ке) перехуячивают.
кошмары мискомпайлов с 4.9.1 все еще свежи в памяти. а 4.9.2 & 4.9.3 вроде в порядке. в chroot'овой системе у нас с 4.9.1 только сам GCC и собрался - все остальное сыпалось. в 4.9.2 были какие-то грабли с хидерами и пара прикладух не собиралась. 4.9.3 вроде работает - но внедренее отложили - продакшн тулчейн все еще на 4.8.2 сидит.
Типа гцц неправильный машинный код сгенерил?
меня больше поразила реакция девелов на это - а именно спокойная и размереная: ну подумаешь что свеже выпущеный релиз из коробки не работает... фикс уже закомитили, просто нужно запустить апдейт - до которого добраться из-за этих багов не возможно - и все будет чики-пыки.
на самом деле если ты баги gcc от j123123 пролистывал, то ты бы заметил что он там реально очень сильно чем то страдает (то ли интерпретер, то ли генератор какой-то пишет). поэтому его баги достаточно уникальны.
у gcc достаточно большая коллекция тестов, и настоящие серьёзные баги встречаются крайне редко. (к примеру: clang в молодые году мог работающий софт компилировать (включая себя), но все равно обламывался на многих gcc тестах.) хотя у меня складывается впечатлнение что gcc-шники не так часто смотрятся в результаты "make test". смотрят может быть и да - но облом тестов не останавливает релиза.
Для меня скорее повод поискать проезд по памяти в соседнем потоке))
А почему мы говорим об однопоточном приложении?
Если код так легко выносится - может стоит там его и оставить и получить юнит-тест?
Вот примерно в таком положении сидит: http://png.clipart.me/graphics/previews/106/the-outline-of-a-girl-sitting-near-a-tree_106617848.jpg
У того хуй перемоло блендер
Этруски — “Это – Русские” — называли себя Туранцами. То, что они были голубоглазыми блондинами, никто не сомневается. А ШотландцЫ и Англо-Саксы в своих генеалогиях так и пишут своего первопредка как СКИФ. Тамара, изолганная как “Томирис” изображается на картине Итальянского художника Андреа дель Кастаньи (Andrea del Castagno) 1400 года, как Русская женщина с длинной русой косой и большими голубыми глазами. Итальянцы хорошо знали, кто есть кто, и Царя Соломона, например, они изображали, как негра.
В слове “Томирис”, “ис” – это Греческое окончание, а так как наши Праматери Сар-Матки / Царь Матери / Амазонки всегда били Греков, то, конечно же, её имя было Тамара, а не Томирис. Тамара буквально означает ТА-МА-РА = “та/то/эта Мать РА / Русского”.
А Кай-САКИ Киргиз-Стана и К