Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

Some problems when build firefox 25b2 using ICC 14

xunxun
Beginner
390 Views

Hi,

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

   My icc version is 14.0.0.103 Build 20130728.

   The preprocess source and output log can be downloaded from http://sourceforge.net/projects/pcxfirefox/files/Test/Others/icc-bug-report/icc-bug-20130926.zip/download

  1) deflickering.cc 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.



0 Kudos
4 Replies
Judith_W_Intel
Employee
390 Views

 

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(...);
public:
 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
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
5

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,
Judy

0 Kudos
xunxun
Beginner
390 Views

Thanks, Judith Ward.

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

0 Kudos
xunxun
Beginner
390 Views

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
  #define MOZILLA_PRESUME_SSE
#endif
#if _M_IX86_FP >= 2
  // It's ok to use SSE2 instructions based on the /arch option
  #define MOZILLA_PRESUME_SSE2
#endif

This cause some linker errors.

0 Kudos
Judith_W_Intel
Employee
390 Views

 

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

http://software.intel.com/en-us/forums/topic/474065

 

0 Kudos
Reply