On Wed, Apr 04, 2018 at 04:31:11PM -0700, Matthias Kaehlcke wrote: > From some experiments it looks like clang, in difference to gcc, does > not treat constant values passed as parameters to inline function as > constants.
Then you're also missing a heap of optimizations in code like rb_erase_augmented() which is specifically constructed to take advantage of constant propagation like that. Other sites where we expect that to happen is __mutex_lock_common(), __update_load_sum() and a bunch of others. There isn't strictly a bug here, but not doing that constant propagation will still result in shit code gen.