- As variadic parameters have the lowest rank in overload resolution, without real usage of va_arg, they are commonly used as the catch-all fallbacks in SFINAE. As the front-end still reports errors on calls to va_arg, the declaration of functions with variadic arguments should be allowed in general.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
- Build Status
Buildable 40017 Build 40092: arc lint + arc unit
Event Timeline
clang/lib/CodeGen/TargetInfo.cpp | ||
---|---|---|
7764 | llvm_unreachable() should be used to indicate an error in compiler's own code, not in the user code that we're compiling. I think what you need to do is to issue a postponed diagnostics in Sema where we're currently checking for varargs functions and materialize them if we attempt to codegen such function. |
clang/lib/CodeGen/TargetInfo.cpp | ||
---|---|---|
7764 | this is just a stub to assert that there won't be codegen for va_arg. the real diagnosing is @ lib/Sema/SemaExpr.cpp around L14438. I just want to add an assertion to capture them if anything goes wrong. Error on va_arg use is already there for a while. |
Perhaps we should rename -fcuda-allow-variadic-functions to -fgpu-allow-variadic-functions after this patch.
llvm_unreachable() should be used to indicate an error in compiler's own code, not in the user code that we're compiling.
I think what you need to do is to issue a postponed diagnostics in Sema where we're currently checking for varargs functions and materialize them if we attempt to codegen such function.