> Currently, I believe, GCC combines various calls to abort in a single
    > function, because it knows that none of them returns.

    afaics it is more generic. It merges them because it knows that it doesn't
    make any difference.

Sometimes it is useful to make special exceptions to general features.
This is one such case.  Cross-jumping is a general feature, that is
true, but in the specific case of `abort', it tends to be particularly
annoying.

    In my oppinion that would be pretty ugly. From the compilers point of view
    the abort function is just a normal function with the __noreturn__
    attribute.

The __noreturn__ attribute indicates that I long ago made one kind of
special exception for `abort'.  We can make another special exception
for it which means that calls to this function can't be cross-jumped.

Certainly, this exception should be implemented following the usual
practices for implementing exceptions in GCC.  It could be done with
an attribute such as __no_cross_jump__,

    That's what the user is telling gcc when he is calling the compiler with
    -Os. One great thing of free software is it doesn't try to `patronize' its
    users. Please do not let us start with that now..

If you offer the user a limited set of choices, and the user chooses
the one which is overall preferable to the others, that doesn't mean
the user is completely satisfied.  And when a user is not completely
satisfied, we as developers must be ready to consider changing one or
another alternative so that users overall will be more satisfied.

Listening to user complaints is not patronizing the user.  On the
contrary, refusing to listen, telling the user, "When you selected
that alternative, you asked for it 100%, therefore we won't listen to
complaints that sometimes it causes trouble"--that's patronizing.

Reply via email to