Originally, the Lisp_Object type was a struct containing bitfields. This was significantly slower than using integer shifting and masking on many platforms, so long ago the default Lisp_Object type was changed to be an integer. Nowadays Lisp_Object no longer contains bitfields even when --enable-check-lisp-object-type is used, so this old motivation is no longer relevant. For x86-64 there should be little difference nowadays when --enable-check-lisp-object-type is used. For other platforms (e.g., x86), however, I suppose there can still be a significant (though small) difference. So when compiling emacs for production, it makes sense to omit --enable-check-lisp-object-type, for the benefit of x86 and similar platforms. When developing, the advantages of --enable-check-lisp-object-type outweigh the small increase in runtime cost, particularly considering that x86-64 is the most common development platform nowadays and there the runtime cost is insignificant. So it makes sense to default --enable-check-lisp-object-type to "yes" if --enable-gcc-warnings is also enabled (which it is by default, in developer builds). I did this by installing the attached patch; comments welcome. As a result, if you build master from a developer (Git-based) directory, --enable-check-lisp-object-type should now be the default. If you don't build from Git, I suggest configuring with --enable-gcc-warnings.