Having a compiler that recognizes sequences like if(x.y.z.elt1 == t.y.z.elt1 && x.y.z.elt2 == t.y.z.elt2 ...) and generates a single block compare if appropriate instead of implementing struct compares *because we want to keep C simple* would seem to me to defeate the purpose.