3 ms·
> when I can narrow it down to a single offending function, that gets optnone slapped on it and done If you're able to narrow it down that far why not then fix
by kllrnohj 9y ago
> when I can narrow it down to a single offending function, that gets optnone slapped on it and done
If you're able to narrow it down that far why not then fix your bug?
- revelation 9y agoWell, the last case I can recall where I had to resort to this used inline NEON assembly for what is essentially a fancy 2D memcpy. With optimization on textures were corrupted. I spent an hour diffing objdump output and got nowhere. Essentially, it was not worth more of my time to figure out how aggressive optimizations were breaking the parts of a memory bandwidth constrained function that aren't worth optimizing in the first place. For GCC inline assembly means "take your grubby hands off". For clang it's essentially an invitation to do whatever.
- kllrnohj 9y ago> For GCC inline assembly means "take your grubby hands off". For clang it's essentially an invitation to do whatever. That's not true at all. Clang respects the clobbers entry on inline assembly and does not do whatever it wants. See GCC's documentation on it: https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Clobbers-and-Scratch-Registers https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Clobber... Based off of your description you probably just needed to add the "memory" clobber to tell the compiler that any registers it might have kept are no longer valid.
- deleted 9y ago[deleted]