Index: clang/lib/Sema/SemaOverload.cpp =================================================================== --- clang/lib/Sema/SemaOverload.cpp +++ clang/lib/Sema/SemaOverload.cpp @@ -12334,6 +12334,7 @@ Diag(MemExpr->getMemberLoc(), diag::err_ref_bad_target) << IdentifyCUDATarget(Method) << Method->getIdentifier() << IdentifyCUDATarget(Caller); + Diag(Method->getLocation(), diag::note_previous_decl) << Method; return ExprError(); } } Index: clang/test/SemaCUDA/method-target.cu =================================================================== --- clang/test/SemaCUDA/method-target.cu +++ clang/test/SemaCUDA/method-target.cu @@ -6,7 +6,7 @@ // Test 1: host method called from device function struct S1 { - void method() {} + void method() {} // expected-note {{'method' declared here}} }; __device__ void foo1(S1& s) { @@ -29,7 +29,7 @@ // Test 3: device method called from host function struct S3 { - __device__ void method() {} + __device__ void method() {} // expected-note {{'method' declared here}}; }; void foo3(S3& s) { @@ -63,7 +63,7 @@ // Test 6: call method through pointer struct S6 { - void method() {} + void method() {} // expected-note {{'method' declared here}}; }; __device__ void foo6(S6* s) {