Quantcast
Channel: Intel® Software - Intel® C++ Compiler
Viewing all articles
Browse latest Browse all 1175

Bug: _DecimalXXX not defined in dfp754.h with /Qintel-extensions-

$
0
0

In Intel 2018 Update 1 under VS2017 15.5.0:

Setting /Qintel-extensions- (disable Intel extensions) caused a flood of errors related to decimal floating point values referenced in dfp754.h:

Error        identifier "_Decimal32" is undefined    sstask    C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018\windows\compiler\include\dfp754.h    55    
Error        identifier "_Decimal64" is undefined    sstask    C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018\windows\compiler\include\dfp754.h    56    
Error        identifier "_Decimal128" is undefined    sstask    C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018\windows\compiler\include\dfp754.h    57    
Error        identifier "_Decimal32" is undefined    sstask    C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018\windows\compiler\include\dfp754.h    58    
Error        identifier "_Decimal64" is undefined    sstask    C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018\windows\compiler\include\dfp754.h    59    
Error        identifier "_Decimal128" is undefined    sstask    C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018\windows\compiler\include\dfp754.h    60    
Error        "_Decimal32" is not a type name    sstask    C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018\windows\compiler\include\dfp754.h    63    

This file is #included at the bottom of <math.h> which is a general purpose #include that should not be predicated upon the presence of Intel intrinsics and extensions. Many standard headers implicitly pull in math.h.

This behavior is new to ICC 18 and does not occur in prior releases.

The source of the error appears to be this preprocessor directive in dfp754.h:

#if (((defined __cplusplus) && ((defined(_GLIBCXX_DECIMAL)) || ((defined(__INTEL_COMPILER)) && ((defined(_WIN32)) || (defined(_WIN64)))))) || ((!defined __cplusplus) && (defined __STDC_WANT_DEC_FP__) && (defined __STDC_DEC_FP__)))

This clause "((defined(__INTEL_COMPILER)) && ((defined(_WIN32)) || (defined(_WIN64))))))" universally qualifies the inclusion of this header for all Windows targets.

Workaround:

Add /D__DFP754_H_INCLUDED to suppress inclusion of this header or enable Intel intrinsics and extensions.

 


Viewing all articles
Browse latest Browse all 1175

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>