Hello! I work on the Intel C++ compiler, and part of my work involves investigating bug reports about compilation failures involving boost. We've been developing a patch for the "intel.hpp" and "common_edg.hpp" configuration files which relate to the topic that you were discussing in this email. I'd like to sketch out the patch to see if you think it would be acceptable to the boost community. Separately, I'm curious if you plan to change boost to take advantage of the C++ "feature test" macros N3694. In this email thread, you used the term "emulate". At Intel we call it "compatibility", and we endeavor to be compatible with our host compiler, e.g. gcc on Linux and Visual Studio on Windows. For example, if the host compiler is vs2013, there are different c++ features available than if the host compiler is vs2015. Also, although we take the C++ implementation from EDG we make customizations in-house, at times implementing a C++ feature ahead of when we get it from EDG. Down to the nuts and bolts question about the Intel compiler configuration. The patch we've been investigating basically looks like this _boost/boost_1_57_0/boost/config/compiler/intel.hpp 2014-10-26 08:36:42.000000000 -0400 +++ _boost_patch/boost_1_57_0/boost/config/compiler/intel.hpp 2015-04-17 09:40:42.000000000 -0400 @@ -16,6 +16,26 @@ #include "boost/config/compiler/common_edg.hpp" +#if defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1500 +/* Intel(R) C++ Compiler (CQ358241 -- internal bug database reference) */ +/* 1) Add any Intel-specific generic pre-adjustments HERE */ +#ifdef __GNUC__ +/* 2) Add any Intel-specific gcc pre-adjustments HERE */ +#include "boost/config/compiler/gcc.hpp" +/* 3) Add any Intel-specific gcc post-adjustments HERE */ +#elif _MSC_VER +/* 4) Add any Intel-specific MS pre-adjustments HERE */ +#include "boost/config/compiler/visualc.hpp" +/* 5) Add any Intel-specific MS post-adjustments HERE */ Many of the boost compilation failures that we've received can be solved using this change to the configuration files. Our investigation starts like this: 1. preprocess the problematic source file with Intel configuration, compile with gcc, observe that gcc complains about the same source construct as the Intel compiler. 2. Likewise, preprocess problematic source file with gcc, compile with Intel, and see that the compilation succeeds. From this we conclude that there's a real problem in the boost source, but it's very difficult to track down. We'd rather have boost configured for our host compiler compatibility like this, and have bugs opened against the Intel compiler when boost finds problems that they would typically code around using compiler-specific configuration macros. -----Original Message----- From: Boost [mailto:boost-bounces@lists.boost.org] On Behalf Of Hal Finkel Sent: Sunday, July 12, 2015 6:03 PM To: boost@lists.boost.org Subject: Re: [boost] [predef] Fails on Intel/win ----- Original Message -----
From: "Peter Dimov"
To: boost@lists.boost.org Sent: Sunday, July 12, 2015 3:00:03 PM Subject: Re: [boost] [predef] Fails on Intel/win Rene Rivera wrote:
So are EDG and clang the only frontends?
EDG is only a frontend; there is no EDG compiler. clang is apparently both a compiler and a frontend.
Technically, Clang is only a frontend, and LLVM is the compiler. Upstream Clang only supports one backend compiler: LLVM. It defines __llvm__ (and I hope that none of the non-LLVM forks continue to do this, but I'm not sure). As has been mentioned, there are a number of private forks of Clang used by various vendors, often with non-LLVM backends (as well as other changes/additions). Here are a few of the public ones of which I'm aware: Pathscale (http://www.pathscale.com/node/288) IBM (http://www-03.ibm.com/software/products/en/xlcpp-linux) Intel (for OS X) (http://llvm.org/devmtg/2014-04/PDFs/Posters/ClangIntel.pdf) -Hal
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- Hal Finkel Assistant Computational Scientist Leadership Computing Facility Argonne National Laboratory _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost