Attached is a series of three patches to port Emacs to 'gcc -fcheck-pointer-bounds'. This feature enables hardware bounds checking for some internal pointers of the Emacs interpreter, and I've used it to find a bug in Emacs itself. It's intended primarily for debugging Emacs internals, and is off by default. I would like to install these patches soon unless some problems turn up, and am submitting this as a bug report in case others who care about Emacs low-level internals would like to review the patches. The first patch changes the basic Emacs internal type from an integer to a pointer of the same width. Although this doesn't significantly affect ordinary builds it's essential for -fcheck-pointer-type, where the C compiler must be told the location of every pointer (including tagged pointers) for the checking to work well. (No doubt I'm partial, but I think this patch also cleans up Emacs internals a bit even for typical platforms.) The patch should not change the behavior of the Emacs interpreter; it's mostly just treating some intptr_t values as pointer values instead. The second patch builds on the first to fix Emacs so that it doesn't crash when -fcheck-pointer-bounds is used. The third patch enables more pointer bounds checking. Not every pointer access is checked, just the ones for which -fcheck-pointer-bounds is easy. Although this doesn't catch every pointer-bounds error, it does catch some of them. Perhaps more checking could be added later.