Boost logo

Boost :

Subject: Re: [boost] [predef] Fails on Intel/win
From: Blower, Melanie (melanie.blower_at_[hidden])
Date: 2015-07-20 09:12:35


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_at_[hidden]] On Behalf Of Hal Finkel
Sent: Sunday, July 12, 2015 6:03 PM
To: boost_at_[hidden]
Subject: Re: [boost] [predef] Fails on Intel/win

----- Original Message -----
> From: "Peter Dimov" <lists_at_[hidden]>
> To: boost_at_[hidden]
> 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

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk