Steve Williams wrote:
Hi Benjamin,

The IntelC 7.1 compiler error is as follows :-

d:/dev/mozilla/xpcom/build/dlldeps.cpp(114): error: expression must be an
lvalue or a function designator
      nsIDHashKey::HashKey(&nsID());

Well, this is definitely a compiler bug, as nsID() is a constructor that creates an lvalue on the stack, but switching it to nsnull is fine, it if helps.


As far as performance is concerned, the IntelC compiler has a great many
optimization options that no doubt others will experiment with in the near
future, once we get the compile nasties out of the way.

I am assuming that you are compiling without any optimization at the moment?


PS.  If you have time, could you add a comment to the source along the lines
of your final paragraph for future reference.

If you write a patch with a little comment, I'll get it reviewed and checked in. File a bug and cc me.


Current xul compile issue
../../../../dist/include/xpcom/nsIClassInfo.h(111): warning #68: integer
conversion resulted in a change of sign
    enum { RESERVED = 2147483648U };
                      ^

../../../../dist/include/string/nsXPIDLString.h(191): warning #69: integer
conversion resulted in truncation
            return (mBuffer->GetImplementationFlags() &
shared_buffer_handle_type::kIsNULL)

These are incorrect warnings: the underlying type of an enumeration must be stored by the compiler in a manner that preserves the full range of values, in this case an unsigned int. See the ISO-ANSI C++ specification section 7.2 #5.





Reply via email to