llvm-project/clang/test/Frontend/noderef_templates.cpp
Leonard Chan ad7ac964e5 [Sema/Attribute] Check for noderef attribute
This patch adds the noderef attribute in clang and checks for dereferences of
types that have this attribute. This attribute is currently used by sparse and
would like to be ported to clang.

Differential Revision: https://reviews.llvm.org/D49511

llvm-svn: 348442
2018-12-06 01:05:54 +00:00

16 lines
543 B
C++

// RUN: %clang_cc1 -verify %s
#define NODEREF __attribute__((noderef))
template <typename T>
int func(T NODEREF *a) { // expected-note 2 {{a declared here}}
return *a + 1; // expected-warning 2 {{dereferencing a; was declared with a 'noderef' type}}
}
void func() {
float NODEREF *f;
int NODEREF *i;
func(f); // expected-note{{in instantiation of function template specialization 'func<float>' requested here}}
func(i); // expected-note{{in instantiation of function template specialization 'func<int>' requested here}}
}