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

GCC #pragma warning warnings #133

Closed
sbd1138 opened this issue Oct 16, 2021 · 3 comments · Fixed by #134 or #135
Closed

GCC #pragma warning warnings #133

sbd1138 opened this issue Oct 16, 2021 · 3 comments · Fixed by #134 or #135
Assignees
Labels
complier Issue related to compiler codegen

Comments

@sbd1138
Copy link
Contributor

sbd1138 commented Oct 16, 2021

When using DirectXMath with GCC, it generates a handful of warnings dealing with unguarded #pragma warning statements in the headers.

These are impossible to truly disable via

#pragma GCC diagnostic ignored "-Wunknown-pragmas"

as these are processed during the preprocessor stage, before GCC deals with warnings (see the output below).

Fortunately, these should be easy to fix by simply wrapping the pragma warnings in question with #if defined( _MSC_VER ) and/or the appropriate MSC version.

Warnings/locations below, (these are with trying the above ignored -Wunknown-pragmas):

DirectXMath.h(100): warning : ignoring #pragma warning [-Wunknown-pragmas]
DirectXMath.h(100): warning : 100 | #pragma warning(push)
DirectXMath.h(101): warning : ignoring #pragma warning [-Wunknown-pragmas]
DirectXMath.h(105): warning : ignoring #pragma warning [-Wunknown-pragmas]
DirectXMath.h(105): warning : 105 | #pragma warning(pop)
DirectXMath.h(149): warning : ignoring #pragma warning [-Wunknown-pragmas]
DirectXMath.h(149): warning : 149 | #pragma warning(push)
DirectXMath.h(150): warning : ignoring #pragma warning [-Wunknown-pragmas]
DirectXMath.h(153): warning : ignoring #pragma warning [-Wunknown-pragmas]
DirectXMath.h(153): warning : 153 | #pragma warning(pop)
DirectXMath.h(315): warning : ignoring #pragma warning [-Wunknown-pragmas]
DirectXMath.h(315): warning : 315 | #pragma warning(push)
DirectXMath.h(316): warning : ignoring #pragma warning [-Wunknown-pragmas]
DirectXMath.h(1001): warning : ignoring #pragma warning [-Wunknown-pragmas]
DirectXMath.h(1001): warning : 1001 | #pragma warning(pop)
DirectXMath.h(2120): warning : ignoring #pragma warning [-Wunknown-pragmas]
DirectXMath.h(2120): warning : 2120 | #pragma warning(push)
DirectXMath.h(2121): warning : ignoring #pragma warning [-Wunknown-pragmas]
DirectXMathConvert.inl(20): warning : ignoring #pragma warning [-Wunknown-pragmas]
DirectXMathConvert.inl(20): warning : 20 | #pragma warning(push)
DirectXMathConvert.inl(21): warning : ignoring #pragma warning [-Wunknown-pragmas]
DirectXMathConvert.inl(221): warning : ignoring #pragma warning [-Wunknown-pragmas]
DirectXMathConvert.inl(221): warning : 221 | #pragma warning(pop)
DirectXMath.h(2242): warning : ignoring #pragma warning [-Wunknown-pragmas]
DirectXMath.h(2242): warning : 2242 | #pragma warning(pop)

@sbd1138
Copy link
Contributor Author

sbd1138 commented Oct 16, 2021

Patched and created pull pull requests for this; sbd1138-patch1 and sbd1138-patch2

@walbourn
Copy link
Member

For clang/LLVM and GNUC I generally just always use a bunch of disables including -Wno-unknown-pragmas.

#ifdef __clang__
#pragma clang diagnostic ignored "-Wc++98-compat"
#pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
#pragma clang diagnostic ignored "-Wc++98-compat-local-type-template-args"
#pragma clang diagnostic ignored "-Wcovered-switch-default"
#pragma clang diagnostic ignored "-Wfloat-equal"
#pragma clang diagnostic ignored "-Wglobal-constructors"
#pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
#pragma clang diagnostic ignored "-Wlanguage-extension-token"
#pragma clang diagnostic ignored "-Wmissing-variable-declarations"
#pragma clang diagnostic ignored "-Wnested-anon-types"
#pragma clang diagnostic ignored "-Wreserved-id-macro"
#pragma clang diagnostic ignored "-Wswitch-enum"
#pragma clang diagnostic ignored "-Wtautological-type-limit-compare"
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#endif

That said, I can look at adding these specific edits.

@sbd1138
Copy link
Contributor Author

sbd1138 commented Oct 17, 2021

Yep, I also have various diagnostic ignored additions in my DirectXMath.h wrapper include. The pragma one is a bit of a special case, because it deals with a preprocessor warning, and thus doesn't really disable the warning due to the way GCC deals with the diagnostics/warnings in the compile phase (as you can see in my original post, it just changes the warning from "unknown pragma" to "ignoring unknown pragma"). It's a known GCC issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
complier Issue related to compiler codegen
Projects
None yet
2 participants