- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Is there a reason that __builtin_nand32, __builtin_nand64, __builtin_nand128, __builtin_infd32, __builtin_infd64, __builtin_infd128 aren't exposed in icc, even with gcc compatibility turned on?
While it may seem pedantic, those are needed to initialise globals in C, e.g.:
static _Decimal32 foo = __builtin_infd32(); static _Decimal64 bar = __builtin_nand64("");
In gcc those are considered constant expressions. GNU libc uses a similar trick to provide NAN and INFINTIY in bits/nan.h and bits/inf.h
I know to work around this one could use
static _Decimal32 foo = (_Decimal32)__builtin_inf(); static _Decimal64 bar = (_Decimal64)__builtin_nan("");
the double equivalent, which is then cast to the target type, but this feels rather hacky.
icc (ICC) 17.0.4 20170411
openSUSE 13.1 (Bottle) (x86_64)
- Tags:
- CC++
- Development Tools
- Intel® C++ Compiler
- Intel® Parallel Studio XE
- Intel® System Studio
- Optimization
- Parallel Computing
- Vectorization
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Sebastian,
It looks like a GCC compatibility issue. Can you report it at https://supporttickets.intel.com
Regards,
Viet Hoang

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page