yes, i definitely have discovered compiler problems in the past. there's another
message in which i wrote about this yesterday, i think. when expressions got too
complicated, gcc failed to do structure assignments completely in parallel. the bugs only
occur usually when you turn on error-checking and mule, because these options greatly
increase the complexity of the expressions. OCaml may simply not have any code with the
expression complexity that we have.
------- Original Message -------
On
Fri, 20 Dec 2002 23:52:22 +0300 Dmitry Bely?wrote:
"Ben Wing" <ben(a)666.com> writes:
> --use-union-type Enable or disable use of a union, instead of an
> int, for the fundamental Lisp_Object type; this
> provides stricter type-checking. WARNING: This has
> a tendency to trigger compiler bugs, especially in
> combination with other features that increase the
> complexity of expressions, for example `--with-mule'
> and `--error-checking=all'. Crashes have been
> observed with union type in combination with the
> two options just mentioned under various versions of
> GCC as well as MSVC++ 6.0. Furthermore, many
> debuggers have problems (i.e. bugs) dealing with
> unions, and even for those that don't, debugging can
> be inconvenient because of no syntax for entering a
> union. We recommend `--use-union-type' *ONLY* for
> testing purposes, not for production builds. If you
> are using `-use-union-type' and get some weird
> crash, try redoing without union type.
I am probably too late to jump into the discussion, but are you absolutely
sure that it was _compiler_ bug but not the poorly written code whose
behaviour is undefined? Do you have a small example showing such _compiler_
problem? There is a language (OCaml) those datastructures are almost
entirely based on the union type, and I never heard of compiler problems
related to that, although Ocaml can be build with gcc, VC++ and other C
compilers under all major OSes.
- Dmitry Bely