Hi everyone,
This is kind of a follow-up to my previous email about compiling JSC using clang for ARMv7: when I build JSC using either -O2 or -O3, I get random garbage when querying for the “Infinity” constant from javascript, as if the constant was not being initialized. The variable is being initialized correctly, that I’m sure.
Some tests I did:
- Using -O1 or no optimization doesn’t trigger the issue.
- Using either -O2 or -O3 with address or the undef behavior sanitizers doesn’t trigger the issue.
- Building JSC with clang 11.0.1-2 (from Debian) and clang 12.0.1 (from github) doesn’t trigger the issue.
- The issue happens with clang 13.0.0 (from github) and the 13.0.1-rc1 (also from github).
It seems like some optimization introduced by -O2 is causing the issue.
Does anyone have any tips I can follow to improve this bug report? I’ll try to compile JSC with -O2 and disable the optimizations manually to pinpoint what’s causing the issue (hopefully it’s a single optimization and not a combination of them). Is there a flag in clang to print which optimizations are enabled for -O1 and -O2 so I can diff them?
I wish I had more information, but I’m still trying to debug why this is happening. I wanted to try to get more information first before opening a github issue.
Thanks in advance,