Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix several compile issues with Visual Studio toolchains #2219

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

bashbaug
Copy link
Contributor

@bashbaug bashbaug commented Jan 9, 2025

Fixes several compile issues I am seeing for my version of Visual Studio related to an ambiguous call to fpclassify, which is called by isnan and other similar functions, specifically for the cl_half type:

19>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_math.h(401,1): error C2668: 'fpclassify': ambiguous call to overloaded function
19>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_math.h(298,31): message : could be 'int fpclassify(long double) throw()'
19>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_math.h(293,31): message : or       'int fpclassify(double) throw()'
19>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_math.h(288,31): message : or       'int fpclassify(float) throw()'
19>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_math.h(401,1): message : while trying to match the argument list '(_Ty)'

Some of these issues seem like differences in compiler behavior, but at least one appears to have identified a legitimate bug.

Specifically, this change:

  • Removes the special-case checks for finite half numbers for commonfns, since this is already handled by UlpFn. (test with: test_commonfns degrees radians)
  • Assigns to temporary variables to eliminate the ambiguous function call for relationals. (test with: test_relationals relational*)
  • Properly converts from half to float when checking for NaNs for select. This is the one that seems like a legitimate bug. (test with: test_select select_half_ushort select_half_short)
  • Uses std::enable_if to disambiguate a function call for spirv_new. (test with: test_spirv_new decorate_saturated*)

If it's helpful, my specific Visual Studio version is:

Microsoft Visual Studio Professional 2019
Version 16.11.20
VisualStudio.16.Release/16.11.20+32929.386

I also have the Windows Software Development Kit 10.0.19041.685 installed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant