Port-vax archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pbulk bootstrap: `awk` running into FP overflow during bison build (Grater picture: How to bootstrap pkgsrc / pbulk?)
On Sun, 6 Aug 2023, Mouse wrote:
> > I think it's more likely that an algorithm expects a division by zero
> > or a range overflow to silently produce an infinity or NaN rather
> > than trap.
>
> Possibly, but I'd expect that to produce a divide-by-zero trap. Divide
> by zero and floating overflow are distinct when generated by the
> hardware (the both use the "arithmetic exception" SCB slot, but they
> push different type codes). I don't have a recent VAX trap.c at hand
> to check, but the 5.2 one does draw the distinction:
>
> case T_ARITHFLT|T_USER:
> sig = SIGFPE;
> switch (frame->code) {
> ...
> case ATRP_FLTOVF: code = FPE_FLTOVF; break;
> case ATRP_FLTDIV: code = FPE_FLTDIV; break;
> ...
> }
>
> Of course, I also have no specific reason to think that the message
> printed is accurate, just general faith that nobody would commit code
> that maps FPE_FLTDIV into "Floating point overflow".
Good point, but that leaves a range overflow expecting to produce an
infinity still a valid possibility.
Though, hmm, it has struck me that the program might expect the IEEE 754
exponent range of the double FP type, which raises a question: which of
D_floating and G_floating format has our port chosen? If it's G_floating,
then I'd expect the very narrow difference from IEEE 754 double highly
unlikely to hit, however with D_floating where the width of the exponent
is the same as with F_floating, i.e. the single FP type, it's actually
very likely.
Overall I think we ought to support both, but it might be a bit tricky on
the toolchain side, as it's an ABI issue to sort out. Did any machine
actually implement H_floating in hardware, or was it only ever emulated?
Maciej
Home |
Main Index |
Thread Index |
Old Index