They changed compilers and the new one is aggressively implementing __fastcall. The previous compiler only did it to standalone integers, but this one is doing, always, to the first 2 4-byte elements. So even if you have:
struct pos { DWORD x, y, z; }
func(pos)
pos.x and pos.y still get passed using registers.