The troubled POLY instruction of the VAX [pdf]
simh.trailing-edge.com
simh.trailing-edge.com
Open-source VAX OSes weren't so lucky. BSD's libm used EMOD pretty heavily (for modf() and the like), and this caused problems in unexpected places if you happened to be running on a newer machine that didn't have these instructions (stuff like: awk would crash!). So the OSes had to follow suit as well, at least for the instructions that libraries / compilers would emit (which fortunately excluded most uses of the G and H floating types). The documentation available at the time was okay but.. imprecise.
source: I wrote the EMOD implementation for OpenBSD/vax a long time ago; POLY had already been done by NetBSD. It's still there! http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/...
I worked on a VMS device driver in 1990. We had to resolve every single crash, because DEC support tracked the outcome of each crash dump file.
Our driver was crashing a VAX 9000 at Abbot Labs, a nightmare because it was a mainframe-class machine. In every crash dump I could show that the registers contained impossible values for the code sequence, always traced back to code involving an EDIV instruction (used to get a remainder).
DEC decided the problem was "alpha particles penetrating the encapsulant". At first I thought they were joking, but they were serious. They replaced the water cooling module around the CPU. That didn't fix the problem, so they pushed it back to us.
After much back and forth, they realized it was a microcode bug in the EDIV instruction, and their microcode patch fixed it.
[1] https://www.cs.auckland.ac.nz/references/macvax/op-codes/VAX...
John Mashey made some interesting comments on the (lack of) future prospects for the VAX here: http://yarchive.net/comp/vax.html
x86 string ops, which are a lot simpler, were slow until pretty recently.
[1] https://archive.org/stream/bitsavers_dectechrep_207144/WRL-8...
-Doug Humphrey (DIGEX)
Mac C compilers added "pascal" as a reserved word, this enabled one to link to toolbox apis that had the pascal calling convention.
I wrote a c++ test tool for MacTCP in which a member function returned a pointer to a pascal C function, for use as a callback from the network driver.
My first attempt produced faulty machine code. While regressing the bug I found that increasing the lengths of the names of the member function or of its parameters would crash the compiler. Not the resulting binary - the compiler itself.
On the old mac os that took down the entire machine.
After they shipped the guy who did the timing changed careers, to take up farming.