hm it just occurred to me… if you design functions around structs instead of individual arguments, then the compiler probably won't/can't omit any unused fields. it probably has to allocate the entire struct and thereby can't inline as aggressively. this could matter for math libraries. guess it's time to play with godbolt
alright nevermind, it seems to treat the struct argument and many argument cases the same with -O1 and above. with floats, though, you need to pass -funsafe-math-optimizations for the full effect, but it still treats them the same.