[clang] [llvm] [CUDA][HIP] warn incompatible redeclare (PR #77359)

Yaxun Liu via cfe-commits cfe-commits at lists.llvm.org
Fri Jun 7 10:08:18 PDT 2024


================
@@ -0,0 +1,19 @@
+// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fsyntax-only \
+// RUN:   -isystem %S/Inputs -verify %s
+// RUN: %clang_cc1 -triple nvptx64-nvidia-cuda -fsyntax-only \
+// RUN:   -isystem %S/Inputs -fcuda-is-device -verify %s
+// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fsyntax-only \
+// RUN:   -isystem %S/Inputs -verify=redecl -Woffload-incompatible-redeclare %s
+// RUN: %clang_cc1 -triple nvptx64-nvidia-cuda -fsyntax-only \
+// RUN:   -isystem %S/Inputs -fcuda-is-device -Woffload-incompatible-redeclare -verify=redecl %s
+
+// expected-no-diagnostics
+#include "cuda.h"
+
+__device__ void f(); // redecl-note {{previous declaration is here}}
+
+void f() {} // redecl-warning {{incompatible host/device attribute with redeclaration: new declaration is __host__ function, old declaration is __device__ function. It will cause warning with nvcc}}
----------------
yxsamliu wrote:

> IMO that looks like a nice "this is incompatible with X" warning like we have for GCC, different C/C++ versions etc., but I'm not an expert here, so maybe this isn't actually an incompatibility? FWIW neither the diagnostic nor your comment make this really clear to me. (Also I'd drop the `It will cause warning with nvcc` and make the flag something like `-Wnvcc-compat`)

sorry. I missed your comments. will rename the flag

https://github.com/llvm/llvm-project/pull/77359


More information about the cfe-commits mailing list