aidengrossman added reviewers: aaron.ballman, glandium, mstorsjo, craig.topper. aidengrossman added a comment.
This is an updated version of https://reviews.llvm.org/D150646 that uses `__has_builtin` instead of checking for a definition of `_MSC_EXTENSIONS`. This fixes the cases that I have received so far and shouldn't cause any other issues. There is one thing that needs some discussion: include order relating to `intrin.h`. When using a MSVC target triple with `-fms-extensions` (and maybe in other cases), `intrin.h` needs to be included to get the declaration of the built-in (or otherwise `__has_builtin` won't detect it and it will error out later). This means that the way the patch is setup currently `intrin.h` needs to be included before `cpuid.h`. The only way I see to fix this is to use the MSVC `__cpuidex` signature which drops the `static` keyword. This makes the implementation slightly different from the GCC implementation (where they include `static`), but it would allow us to declare the function outside of the preprocessor conditional in `cpuid.h` which would make `cpuid.h` include-order-agnostic again with respect to `intrin.h`. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D158348/new/ https://reviews.llvm.org/D158348 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits