Re:Compilers are hard
by drivebycomment on Thursday January 21, 2021 @12:40AM
(#25855845)
Not that surprising given that it seems specific to asan mode and only in the presence of setjmp/longjmp. I.e. this cant be that important unless the same bug shows also in non-asan Setjmp/longjmp case. Setjmp/longjmp are often a source of trouble for the register allocator or related optimization due to its unique properties. Often the optimizing compilers treat set/longjmp as "give up almost everything around those functions" but maybe llvm is trying hard to model it precisely and failing. But I haven't personally looked at the relevant code in llvm so this is mostly a speculation.
[ Parent
| on HN ]
The bug shows up without asan. We literally tripped over it in production with code compiled with "clang -O2".
Re:Compilers are hard
by drivebycomment on Thursday January 21, 2021 @12:53AM
(#25855939)
Then I agree that this is surprising. That means clang/llvm is not modeling set/longjmp correctly in general and that is not acceptable as a C compiler.
That's apparent from your ticket (which is marked as a duplicate) but on the one you linked to, all the offending compiler lines contain asan. Is there a chance this is impacting prioritization?
Could be. I'm not an LLVM developer so I don't know how they prioritize issues.