Conversation

This Tweet was deleted by the Tweet author. Learn more
This Tweet was deleted by the Tweet author. Learn more
Replying to
If they're casting to unsigned long as you wrote, there's nothing unspecified. The result of the cast is implementation-defined, and the resulting integer obeys the laws of integer comparison. LLVM's IR is just broken and unable to represent this right, so it applies ptr rules.
1
Replying to
They're casting to unsigned long in this case but not in others. I'm making some similar test cases for Clang and GCC to test it outside of the kernel with simpler examples and the results aren't pretty. I'm not sure what to do about this. Don't know a way to disable this stuff.
Replying to
I think I screwed up debugging this and need to go back to what I originally thought was the problem: twitter.com/DanielMicay/st I just got sidetracked because it started looking at bugs.llvm.org/show_bug.cgi?i but I don't think it's the actual problem after all.
Quote Tweet
It seems to be a linker bug introduced by the kernel LLVM being updated to 12.0.x for Android 12. It doesn't impact 3rd generation Pixels despite them using the same LLVM toolchain because they still use ld.gold from an old version of binutils rather than ld.lld.
Show this thread