Currently, I believe, GCC combines various calls to abort in a single function, because it knows that none of them returns.
If the goal is simply to make the compiled code as small as possible, this is the way to do it. But that is not the best goal when compiling free software. Merging the various abort calls loses information about what caused the crash, and sometimes (especially with a nonreproducible crash) that can be a big pain. So maybe it would be better to treat abort specially in the opposite way: to inhibit merging two abort calls even in a situation where calls to some unknown function might be merged.
