何やらAndroid NDKのclang++の秘孔を突いた(最適化バグにぶち当たった)ような感じだ。-O1 と -O2 の間にどんだけ違いがあるのかはちょっとどう調べたら良いのかわからんな…(clangのソースのどこかで定義されてるんだろうけど)https://github.com/atsushieno/aap-core/issues/194
すげえ調べたらすぐわかった https://stackoverflow.com/questions/15548023/clang-optimization-levels
更に調べてNDK r23 → r24でリグレッションが発生したところまで突き止めてreproまで作った(minimum reproは無理だ)https://github.com/atsushieno/aap-core/compare/main...issue194-experimentどちらかというとこの差分をもとにLLVMのソースを追っかけたほうが早そう(どうせvectorization自体に大量の変更は無いだろう、という楽観視)
-fno-vectorizeだけ付ければ今まで通りにビルドして使えるようになったからまあいいかと思ってたけど、よく考えたらオーディオ処理でvectorizationが効かないってけっこうデメリットでかいな??
やっぱり最適化外しの影響は可能な限り小さく抑えようと思って、問題箇所をがんがん絞り込んでいって問題を再現できるコードまで特定した https://github.com/atsushieno/cmidi2/commit/4483594うーんこれ最適化に失敗するのは仕方ないか…とはいえコードの最適化が理由で動かないコードが出来上がるのは問題か
様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。
更に調べてNDK r23 → r24でリグレッションが発生したところまで突き止めてreproまで作った(minimum reproは無理だ)
https://github.com/atsushieno/aap-core/compare/main...issue194-experiment
どちらかというとこの差分をもとにLLVMのソースを追っかけたほうが早そう(どうせvectorization自体に大量の変更は無いだろう、という楽観視)