Skip to content

Commit d96c32c

Browse files
LuoYuankeYuanke Luo
andauthored
[CUDA] Enable variadic argument support in front-end (#161305)
Variadice argument for NVPTX as been support in 486d00e We can enable it in front-end. Co-authored-by: Yuanke Luo <[email protected]>
1 parent eb1960c commit d96c32c

File tree

2 files changed

+3
-4
lines changed

2 files changed

+3
-4
lines changed

clang/lib/Sema/SemaExpr.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16791,12 +16791,11 @@ ExprResult Sema::BuildVAArgExpr(SourceLocation BuiltinLoc,
1679116791
Expr *OrigExpr = E;
1679216792
bool IsMS = false;
1679316793

16794-
// CUDA device code does not support varargs.
16794+
// CUDA device global function does not support varargs.
1679516795
if (getLangOpts().CUDA && getLangOpts().CUDAIsDevice) {
1679616796
if (const FunctionDecl *F = dyn_cast<FunctionDecl>(CurContext)) {
1679716797
CUDAFunctionTarget T = CUDA().IdentifyTarget(F);
16798-
if (T == CUDAFunctionTarget::Global || T == CUDAFunctionTarget::Device ||
16799-
T == CUDAFunctionTarget::HostDevice)
16798+
if (T == CUDAFunctionTarget::Global)
1680016799
return ExprError(Diag(E->getBeginLoc(), diag::err_va_arg_in_device));
1680116800
}
1680216801
}

clang/test/SemaCUDA/vararg.cu

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#include <stdarg.h>
1111
#include "Inputs/cuda.h"
1212

13-
__device__ void foo() {
13+
__global__ void foo() {
1414
va_list list;
1515
va_arg(list, int);
1616
#ifdef EXPECT_VA_ARG_ERR

0 commit comments

Comments
 (0)