This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: gcc compiles assert() to code that requires linking with gcc


>>>>> "MvL" == Martin v Loewis <martin@loewis.home.cs.tu-berlin.de> writes:

MvL> long long was taken just as an example. For another example,
MvL> multiplication of integer values always leads to a libgcc call on
MvL> SPARC v7 (as this chip has no hardware multiply). Are you saying
MvL> portable code should not multiply integers?

I thought that in practice, the vast majority of machines running
Solaris on Sparc today have integer multiply.

However, the gcc multiply support on Solaris should be implemented in
such a way that it is binary compatible with the functions in libc.
That is, if libc.a has a magic symbol

.div_integer

then gcc should implement its integer multiply using a .div_integer
with an identical (binary) interface.  A modest amount of reverse
engineering might be necessary.

But assert() is more important, because it affects *every* Sparc
Solaris machine, while integer multiply affects only (I'm speculating)
< 10% of Sparc Solaris machines, and `long long' only affects
libraries using non-portable features.

Martin

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]