Some problems when build firefox 25b2 using ICC 14

Some problems when build firefox 25b2 using ICC 14


    I try to build firefox 25b2 using ICC 14 and VC2010 SP1/Win8 SDK.

   My icc version is Build 20130728.

   The preprocess source and output log can be downloaded from

  1) from webrtc cause a backend signals error

  2) nsJSEventListener.cpp and all source code including BindingUtils.h can cause

BindingUtils.h(422): error: class "nsISupports" has no member "WrapObject"  HAS_MEMBER(WrapObject) 

    This error cause most dom/binding code can't be build using icc.

  3) nsNavHistory.cpp can cause identifier "__func__" is undefined similar errors.

All the code above can be built using VC2010 SP1 / Win8 SDK.

5 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.


Hi xunxun,

Thank you for your preprocessed files and command line logs.

Details on the specific problems:

(1) I was able to reproduce this internal error and submitted DPD200248456
in our internal bug tracking database. This seems to be caused by our runtime checking for effective parallelization
code. If I change -Qpar-runtime-control3 to -Qpar-runtime-control1 the problem
goes away.

(2) This was reproducible with this small example below. I have reported this in
our internal bug tracking database as DPD200248459. We will work on it ASAP.
It seems to be SFINAE problem involving pointer to members.

!% cat bug.cpp

template<typename T>
class HasWrapObjectMember {
 typedef char yes[1];
 typedef char no[2];
 template<typename V> static yes& Check(char (*)[(&V::WrapObject == 0) + 1]);
 template<typename V> static no& Check(...);
 static bool const Value = sizeof(Check<T>(nullptr)) == sizeof(yes);

class C {};

HasWrapObjectMember<C> c;

!% icl -c bug.cpp
Intel(R) C++ Compiler XE for applications running on IA-32, Version 14.0 Beta Bu
ild x
Built Sep 12 2013 15:50:00 by jward4 on JWARD4-DESK in D:/workspaces/14_0cfe/dev

Copyright (C) 1985-2013 Intel Corporation.  All rights reserved.

bug.cpp(7): error: class "C" has no member "WrapObject"
   template<typename V> static yes& Check(char (*)[(&V::WrapObject == 0) + 1]);

          detected during:
            instantiation of "HasWrapObjectMember<T>::Check [with T=C]" based on
 template argument <C> at line 10
            instantiation of class "HasWrapObjectMember<T> [with T=C]" at line 1

compilation aborted for bug.cpp (code 2)


(3) undeclared identifier __func__

This is not a bug -- it is expected. On Windows by default we match the
Microsoft compiler which doesn't define this symbol either. If you would
like it defined on Windows by icl you need to specify the /Qstd=c++11
(since it was added to the C++11 standard and was not in the C++98 or C++03 standard).

thanks again,

Thanks, Judith Ward.

Hope Intel fix the second error quickly, which can cause many code build error.

And another problem, it seems intel doesn't define _M_IX86_FP, which cause the mozilla code below is invalid:

#if _M_IX86_FP >= 1
  // It's ok to use SSE instructions based on the /arch option
#if _M_IX86_FP >= 2
  // It's ok to use SSE2 instructions based on the /arch option

This cause some linker errors.


Yes the macro problem has already been reported in a previous thread here:


Leave a Comment

Please sign in to add a comment. Not a member? Join today