зеркало из https://github.com/microsoft/clang-1.git
Correct the order of the parameters to CheckAssignmentConstraints in
cleanup attribute checking. The difference isn't normally visible, but it can make a difference... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70104 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
259a565e3c
Коммит
d5e3e8ec50
|
@ -1013,7 +1013,7 @@ static void HandleCleanupAttr(Decl *d, const AttributeList &Attr, Sema &S) {
|
|||
// If this ever proves to be a problem it should be easy to fix.
|
||||
QualType Ty = S.Context.getPointerType(VD->getType());
|
||||
QualType ParamTy = FD->getParamDecl(0)->getType();
|
||||
if (S.CheckAssignmentConstraints(Ty, ParamTy) != Sema::Compatible) {
|
||||
if (S.CheckAssignmentConstraints(ParamTy, Ty) != Sema::Compatible) {
|
||||
S.Diag(Attr.getLoc(),
|
||||
diag::err_attribute_cleanup_func_arg_incompatible_type) <<
|
||||
Attr.getParameterName() << ParamTy << Ty;
|
||||
|
|
|
@ -31,3 +31,10 @@ void t2()
|
|||
int v1 __attribute__((cleanup(c2))); // expected-error {{'cleanup' function 'c2' must take 1 parameter}}
|
||||
int v2 __attribute__((cleanup(c3))); // expected-error {{'cleanup' function 'c3' parameter has type 'struct s' which is incompatible with type 'int *'}}
|
||||
}
|
||||
|
||||
// This is a manufactured testcase, but gcc accepts it...
|
||||
void c4(_Bool a);
|
||||
void t4() {
|
||||
__attribute((cleanup(c4))) void* g;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче